5 数据库设计有哪些步骤
数据库的设计需要考虑很多问题,但主要是数据库模式的设计,这里我们将讨论数据库模式的设计和查询语句的编写。
(1)需求确定。数据库设计的初始阶段是和领域专家、数据库用户充分讨论,形成数据库用户需求说明书文档,说明数据库用户的数据需求,以及将怎样构造数据库用户满足这些需求。
(2)概念设计。下一步,设计者要选择一个数据模型,将需求转换成一个数据库的概念模式,形成企业的详细综述,再复审这个模式,确保满足所有的数据需求并且需求之间没有冲突。
从关系模型角度,这个阶段还需要涉及数据库应该包含哪些属性,以及如何组织这些属性到各个表中。前者主要是决策,后者主要是计算机科学问题,解决方法主要有两种,一种是使用实体-联系模型,另一种是使用一套算法,后续我们将详细介绍。
一个开发完整的概念模式还将指出企业的功能需求。也就是用户需要做哪些增删改查,进行复审,确保其满足需求。
(3)逻辑设计。将高层的概念映射到要实现的数据库系统的系统模型上。
(4)物理设计。说明数据库的物理特性,包括文件的组织形式和内部存储特征。
6.数据库引擎——如何存储、查询并保证数据安全
数据库系统大致可以分为以下功能模块:存储管理器、查询处理器和事务管理部件。
数据库的存储管理十分重要,因为企业数据库的大小通常达到数百个gigabyte(千兆字节),甚至达到terabyte(万亿字节)。最大的企业数据库规模达到数个petabyte(千万亿字节)。计算机主存存储不了这么多信息,而且系统奔溃时主存会丢失,因此,信息被存储在磁盘中。从磁盘读取数据速度是很慢的,因此,固态硬盘也被越来越多的应用到了数据库的存储中。
查询处理器也很重要,他简化和促进了用户对数据的访问,使得用户能够获得很高的性能,同时有不必要了解系统实现的物理层细节和负担。
事务处理器同样也很重要,它使应用开发人员能够把一系列的数据库操作当作一个单元来看待,保证数据的安全性。、
传统的数据库引擎是集中式的计算机系统,而现代数据库引擎则非常注重并发数据存储和并发查询处理。
6.1 存储管理器
存储管理器是存储数据,并对应用程序以及向系统提交的查询之间的提供查询接口的部件。它主要负责数据库中数据的存储、检索和更新。
存储管理器部件主要包括。
权限及完整性管理器。检测用户访问权限与数据是否满足一致性约束。
事务管理器。保证即使系统发生了故障,数据库也保持在一致状态。并且保证并发事务的执行不发生冲突。
文件管理器。管理磁盘存储空间的分配,管理用于磁盘上所存储信息的数据结构。
缓冲区管理器。负责将数据从磁盘上取到内存中,并决定哪些数据应该被缓冲存储在内存中。
数据文件(data file)。存储数据库自身。
数据字典(data dictionary)。它存储关于数据库结构的元数据,特别是数据库模式。
索引。更快的访问数据。
6.2 查询处理器
查询处理器包括。
- DDL解释器。解释DDL并将其记录在数据字典中。
DML编译器。翻译DML语句为存储引擎能够理解的低级指令。它还执行查询优化,选出代价最小的执行计划。
查询执行引擎。执行 DML编译器产生的低级指令。
6.3 事务管理
事务的原子性和持久性都是数据库系统的自身职责,确切的说,是恢复管理器的职责。如果事务总能被成功的执行,那么自然可以保证原子性。但是如果一系列的事务不总成功被执行完毕,为了保证原子性,失败的事务不应该对数据库产生任何影响,在这种情况下,数据库系统需要进行故障恢复,也就是它必须检测系统故障并且将数据库恢复到故障发生以前的状态。
另外,当几个事务并发对数据库进行更新时,即使每个单独的事务是正确的,对数据库的一致性也可能被破坏。并发控制管理器控制并发事务间的相互影响。保证数据库的一致性。事务管理器包括并发控制管理器和恢复管理器。
7 数据库的应用体系结构
现在我们终于可以来给出数据库的体系结构图了。
上面的数据库体系结构是集中式的。虽然有多个cpu进行并行存储,但是所有cpu都i访问一个公共的共享内存。为了扩展到更大的数据库规模和更高的处理速度,研究人员又设计了包括多台机器的集群上的并行数据库(paraller database)。
8 数据库用户和管理员
8.1 数据库用户和用户界面
数据库系统把用户分成了四种,不同用户访问不同类型的数据库界面。
- 初学者用户。提供典型的表格界面。
- 应用程序员,提供工具共应用程序员开发用户界面。
- 老练用户。不需要编写程序来同系统交互。提供查询语句或者数据分析软件。
8.2 数据库管理员
数据库管理员(Database Adminitrator,DBA)对数据和访问数据的程序进行集中控制。他们的作用包括:
模式定义。通过执行DDL编写一系列定义语句来创建最初的数据库模式。
存储结构及存取方法定义,DBA可以具体说明与数据物理组织及索引创建相关的一些参数。
模式及物理组织的修改。由DBA对模式和物理组织进行修改。以反映机构的需求变化,或者为了提高性能选择不同的物理组织。
数据访问授权。授予不同用户类型的权限。
日常维护。数据库管理员的日常维护工作包括:周期性的备份数据库到远程服务器上,确保在正常运转时有足够的存储空间,适时升级存储空间。监视数据库上运行的作业,并确保数据库性能。
9 数据库系统的历史
数据库最早起源于20世纪初,Herman Hollerith发明穿孔卡片,记录美国人口普查数据,采用机械系统来存储卡片的显示结果。
20世纪50年代到60年代初,磁带被开发来数据存储。它只能顺序读取,数据规模可以比内存大很多。
20世纪60年代末和70年代初,硬盘广泛用于存储数据。磁盘任何位置都可以在几十毫秒内访问到,数据摆脱了顺序访问的限制。
Edgar Codd在1970年撰写了关系模型论文,至此关系型数据库诞生,关系型数据库其简单性和对程序员屏蔽所有实现细节对程序员充满了诱惑力。
20世纪70年代末和80年代。第一个关系型数据库SQL/DS诞生,同一时期,Oracle的第一个版本诞生了。到80年代默契,关系型数据库打败了层级和网状数据库,独占鳌头。
80年代,人们还对分布式和并行数据库有了很多研究。
20世纪90年代。数据库最开始设计时时为了支持决策,80年代数据库的支柱却是查询密集、更新密集的事务处理。90年代,数据库决策概念再次大火,数据分析工具有了更加广泛的应用,与此同时,互联网在这一时期爆炸式发展,数据库逐渐要求高性能,高可用,高可靠。
21世纪第一个十年。XML发展成数据交换的标准,紧随其后,适用于javascript与其他语言交换数据的格式JSON开始重要起来。数据库系统增加了对这两种格式数据的支持。空间数据在导航等系统广泛应用,数据库系统也增加了对这些数据的支持。
开源数据PostSQL和MySQL的使用不断增长,“Auto-admin”特性被加到数据库中,使其能够自动重新配置,以适应不断变化的工作负载。减少了数据库管理的工作。
社交网络平台的发展,也促进数据库从表格化到图形数据库的发展。
在第一个十年的后期,数据挖掘应用变得特别普遍,适合数据挖掘市场的数据库系统被开发出来,如“列存储”,将表按列进行存储,而不是按照主流数据库进行行存储。
各种各样的新的数据密集型应用以及对快速开发的需求,特别是新兴的公司的需求,导致了"NoSQL"的诞生。NoSQL的数据脱离关系型的严格一致性支持,是的分布式数据库具有更大的灵活性,它的特点是“最终一致性”。
21世纪的第二个10年,NoSQL尽管带来了高可用性和可伸缩性,但是渐渐被发现其不一致性使得程序员和数据库管理员的工作越来越复杂,应用系统逐渐演化为提供特性以支持一致性的更加严格的概念,并且继续支持高可用和可伸缩性。
各个企业越来越多的外包他们的数据存储和管理,企业开始把数据存储在“云”服务中。这使企业节约了成本,但是也产生了新的问题,主要输数据安全、责任以及所有权的问题。网络安全面临新的挑战。