数据库

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

本文主要讲述: 
– 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

相关推荐

  • N28-第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。

    2、编辑/etc/group文件,添加组hadoop。

    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。

    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。

    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。

    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

    9、找出/etc/passwd文件中的一位数或两位数;

    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    Linux干货 2017-12-26
  • 私有IP网子网掩码划分原则及计算方法

    私有IP网子网掩码划分原则及计算方法 最好记下的二进制转换十进制 00000000 0 00000001 1 00000010 2 00000100 4 00001000 8 00010000 16 00100000 32 01000000 64 10000000 128 11000000 192 11100000 224 11110000 240 1111…

    Linux干货 2017-05-02
  • iptables简单概念..

    iptables: 包过滤型的防火墙 Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;    主机防火墙     网络防火墙   &…

    Linux干货 2017-06-19
  • N25-第五周博客作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf      root (hd0,0)…

    Linux干货 2017-01-06
  • 磁盘管理

    磁盘管理

    Linux干货 2017-10-27
  • Linux下的网络配置方法(二)

    Linux下配置网络的方法还可以通过修改配置文件和使用nmcli命令来完成:     1. 修改配置文件:         网络接口的配置文件为:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_…

    Linux干货 2015-12-15