数据库

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

本文主要讲述: 
– 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 19:55
下一篇 2016-10-30 20:15

相关推荐

  • Linux文本处理工具grep,egrep

    简介:     grep即(Global search REgular expression and Print out the line)全局的搜索正则表达式并且打印显示出来。     通俗点讲:根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。 &n…

    Linux干货 2015-05-11
  • 程序包的编译安装

    程序包的编译安装     程序包的编译安装是比较重要的内容,在之后的网络知识以及服务的配置等学习方面也发挥着重要作用,是我们的必备技能。 一、杂项知识整理 1、which –skip-alias:跳过别名,直接查看原命令 [root@localhost ~]# which –…

    Linux干货 2016-08-24
  • Linux下搭建路由器

    客户端1:CentOS6.9 客户端2:CentOS7.3 路由器:router1(CentOS7.3)、router2(CentOS7.3) r router3(CentOS7.3) 1 准备工作 为了避免干扰,最好建立独立的网络。 打开VMvare的虚拟网络编辑器,点击添加网络按钮,添加VMnet11并且将左下角使用“本地DHCP服务将IP地址分配给虚拟…

    Linux干货 2017-08-20
  • 在CentOS 7上实现私有CA及申请和吊销证书

    – 创建私有CA openssl的配置文件:/etc/pki/tls/openssl.cnf 42 dir     = /etc/pki/CA       # Where everythi…

    Linux干货 2016-12-01
  • linux文件系统目录结构

    FHS标准      文件和目录被组织成一个单根的倒置树结构 文件系统从根目录开始用“/”表示 根文件系统:root filesystem 目录名称vfat格式不敏感大小写 以.开头的为隐藏文件 路径分割的/ /boot:引导文件存放目录,内核文件,引导加载器都存放此目录 /bin:供所有用户使用的基本命令;不能关联到…

    Linux干货 2016-07-29
  • 基于ansible role实现LAMP平台批量部署

    前言 作为运维人员,当面对几十台或上百台服务器需要修改某个参数或部署某个平台,你将从何入手呢?ansible的出现很好的解决了这一困扰,ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。本文带来的是基于Ansible Role…

    Linux干货 2015-06-11