数据库

数据库系统理论概述(一)

本文主要讲述: 
– 1.数据库和数据库管理系统 
– 2.使用传统的文件系统对大量数据管理存在的问题 
– 3.常见的数据库系统模型 
– 4.数据库视图 
– 5.数据库语言 
– 6.数据存储和查询

1.什么是数据库,什么是数据库管理系统?

如今是一个大数据时代,数据充斥着我们生活的方方面面,那么究竟什么是数据库呢?其实从字面上理解就是数据仓库,就是数据的集合。那么问题来了,当数据的量达到一定程度之后,对数据的管理就会变得十分困难。而数据库的出现就是为了解决这个问题。那什么是数据库呢?数据库就是由互相关联的数据集合和一组用以访问这些数据的程序组成的系统。

2.为什么不用文件系统管理数据呢?

我们都知道,计算机要对数据进行处理,要先把存储在存储设备上的文件数据载入内存,然后才能对其进行处理和加工,那如果我们要把其中某些符合条件的行或列抽取出来,那会是十分困难的事情,使用文件系统对数据进行管理有如下问题:

  • 数据的冗余和不一致:由于不同的文件拥有不同的结构,相同的信息可能在好几个地方重复存储,例如老师属于两个系,老师的信息可能重复记录,导致存储和访问开销增大,还可能导致数据的不一致。

  • 数据访问困难:在一个文件中只需要找出某个符合条件的行或列时,就会显得十分困难。例如,在存储学生信息的文件中找出性别为男的所有学生的全部信息,只使用文件系统几乎是不可能的。

  • 数据孤立:由于数据分散在不同的文件中,所以编写程序来检索信息就会变得十分困难。

  • 原子性问题:所谓原子性就是指操作要么不发生,要么全发生。最经典的就是转账,比如A账户里有500元,B账户里没钱,A要转100到B账户,但是当A转出还没来得及存入B账户时系统出现故障,就造成了严重的后果。而在传统的文件处理系统中是很难保证原子性的。

  • 并发访问控制异常:为了提高系统的总体性能,很多系统都允许多个用户并发更新数据。例如对银行账户的操作,银行账户既允许网络支付,也可以使用银行卡支付,当两个人同时对一个账户进行操作时,就会导致数据的不一致,。

  • 安全性问题:并非数据库中的所有用户都有权限来访问数据。而使用文件系统对其管理的话,应用程序总是会加入到文件处理系统中来,这久带来了安全隐患。

    所以,这些原因就使得人们不得不去开发专业的数据库管理系统,这也正是数据库管理系统出现的原因。

3.常见的数据库系统模型

数据库结构的基础是数据模型。数据模型是描述数据,数据之间的关系,数据语义以及一致性约束的概念工具。常见的数据模型有:

  • 网状模型

  • 层次数据模型

  • 关系模型

  • 实体-联系模型之间的联系构成。

  • 结构化模型

  • 半结构化模型

4.数据库视图

数据库系统的的一个只要目的就是给用户提供数据的抽象视图,为了用户与系统的交互,通过如下几个层次的抽象来屏蔽复杂性: 
– 物理层:最低层次的抽象,描述数据在物理存储设备上如何存储。 
– 逻辑层:描述数据库中存储什么数据以及这些数据之间的联系,逻辑层通过相对简单的结构描述了整个数据库。 
– 视图层:最高层次的抽象,之描述整个数据库的一部分内容,数据库抽象的定义就是为了使用户与数据库系统的交互更简单。

5.数据库语言

数据库系统提供了数据定义语言(DDL,data-definition language)以及数据操纵语言(DML,data-manipulation language)来完成对数据库的管理。提供数据库管理的典型的语言是SQL语言。

  1. 数据库定义语言:定义数据库模式的实现细节,数据库系统所使用的存储结构和访问方式也是通过数据库定义语言来实现,而数据库定义语言中最重要的一个部分就是定义数据属性的约束条件,DDL定义的内容具体包括:

    • 域约束: 每个属性必须对应一个所有可能的取值构成的域,域约束是完整性约束的最基本形式。

    • 参照完整性:一个关系(表)中,给定属性集上的取值也在另一类关系的某一个属性的集的取值中出现。

    • 断言: 一个断言就是数据库设计需要时刻满足的某一条件,域约束和参照完整性是断言的特殊形式,但是,还有好多约束不能仅用这几个特殊的形式来表示。

    • 授权: 对于不同的用户在数据库中的不同数据值的访问上允许不同的访问类型,这些区别通过授权来表达,常见的有读授权,插入授权,更新授权,删除授权。

  2. 数据库操纵语言:用户同过数据库操纵语言来访问或操纵那些按照某种适当数据模型组织起来的数据。访问类型有:

    • 对存储在数据库中的数据进行检索。

    • 向数据库中插入信息

    • 从数据库中删除信息

    • 修改数据库中的信息

6.数据存储和查询

数据库系统划分为不同的模块,每个模块完成整个系统的一部分。数据库系统的功能部件大致分为存储管理器和查询管理处理部件。

1存储管理器

存储管理器是数据库中负责在数据库存储底层数据与应用程序以及向系统提交的查询之间提供借口的部件,负责与文件管理器进行交互,存储管理器将各种DML语句翻译为底层文件系统命令,存储管理器的部件包括:

2查询处理器:

    • DDL解释器:解释DDL语句并将这些定义的语言记录在数据字典中。

    • DML解释器:将查询语言中的DML语句翻译为一个执行方案,包括一系列查询执行引擎能理解的低级指令 。

    • 查询执行引擎:执行由DML编译产生的低级指令。

    • 权限及完整性管理器:检测是否满足完整性约束,并检查试图访问数据的用户的权限。

    • 事务管理器:保证即使发生了故障,数据库也要保持一致的状态。

    • 文件管理器:管理磁盘的存储空间的分配

    • 缓冲区管理器:负责将数据从磁盘上加载至内存,并决定哪些文件应该存储在缓冲区中,缓冲区管理器是系统中关键的部分,因为它可以使数据库可以处理比内存更大的数据。

原创文章,作者:zhangbao,如若转载,请注明出处:http://www.178linux.com/55537

(0)
zhangbaozhangbao
上一篇 2016-10-30
下一篇 2016-10-30

相关推荐

  • 学习宣言

    让学习溶入生活,做一个优秀的专业人才。

    Linux干货 2016-10-30
  • 二叉树的应用详解 – 数据结构

    概述: 平衡树——特点:所有结点左右子树深度差≤1 排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度) 最优树——是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。 1. 二叉排序树(二叉查找树 Bina…

    Linux干货 2015-04-07
  • Linux基础之计算机的组成及其功能

    1、描述计算机的组成及其功能: 答:计算机由 1.1、CPU(运算器、控制器)进行逻辑运算跟控制运算,寄存器、缓存 1.2、输入单元(键盘、鼠标、手写板等)、输出单元(屏幕、打印机) 1.3、存储器(内存、硬盘) 2、按系列罗列linux的发行版,并描述不同发行版之间的联系与区别。 答:debian(ubuntu、mint、knopix)、slackware…

    2017-09-11
  • JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

    摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。     现实企业级Java开发中,有时候我们会碰到下面这些问题: Out…

    2017-08-17
  • 磁盘管理

    磁盘设备 一切皆文件 所有的Linux中的设备都可以使用下面命令进行操作:open(), read(), write(), close()(这些是C的函数) 块设备:随机访问 字符设备:线性访问 设备号码: 主设备号:major number,标识设备类型 8是主要设备编号,代表类型 次设备号:minor number…

    Linux干货 2016-09-01
  • 重定向及tr命令详解及其在管道中的使用简述

    一、标准输入和输出及其重定向         1.标准输入指的是来自键盘的输入,通常用0来表示;标注输出是默认输出到当前终端窗口,用1来表示;标准错误输出同样默认输出到当前终端窗口,用2来表示。除标准输出之外,我们还可以通过重定向来更改默认的输入和输出方式。   &nb…

    Linux干货 2016-08-11