数据库管理系统选择原则(全文)
胡经国
本文作者的话
本文是根据有关文献和资料编写的《漫话云计算》系列文稿之一。以此作为云计算学习笔录,供云计算业外读者进一步学习和研究参考。希望能够得到大家的指教和喜欢!
下面是正文
通常采用的数据库管理系统的选择原则如下:
一、构建数据库的难易程度
需要分析数据库管理系统有没有范式的要求,即:
是否必须按照数据库管理系统所规定的数据模型分析现实世界,建立相应的模型;
数据库管理语句是否符合国际标准,符合国际标准便于系统的维护、开发和移植;
有没有面向用户的易用的开发工具;常见mpp数据库
所支持的数据库容量,数据库的容量特性决定了数据库管理系统的使用范围。
链接:数据库范式
在设计关系型数据库时,要遵从不同的规范要求,以便设计出合理的关系型数据库。这些不同的规范要求,被称为不同的范式;各种范式呈递次规范,越高的范式,数据库冗余越小。
目前,关系型数据库有以下六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称为完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上,进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需要满足第三范式(3NF)就行了。
范式是为了消除重复数据、减少冗余数据,从而让数据库内的数据更好地组织,让磁盘空间得到更有效利用的一种标准化标准;满足高等级范式的先决条件是满足低等级范式,比如满足2NF一定满足1NF。
应用数据库范式可以带来许多好处,但是最重要的好处归结为以下三点:①、减少数据冗余(这是最主要的好处,其他好处都是由此而附带的);②、消除异常(插入异常,更新异常,删除异常);③、让数据组织得更加和谐。
二、程序开发的难易程度
有无计算机辅助软件工程(Computer Aided Software Engineering,CASE)工具。计算机辅助软件工程工具,可以帮助开发者根据软件工程的方法提供各开发阶段的维护、编码环境,便于复杂软件的开发、维护。
有无第四代语言(Fourth-Generation Language,简称4GL))开发平台。第四代语言具有非过程语言的设计方法,用户不需编写复杂的过程性代码,易学、易懂、易维护。
有无面向对象的设计平台。面向对象的设计思想,十分接近人类的逻辑思维方式,便于开发和维护。
有无对多媒体数据类型的支持。多媒体数据(图形、图像、声音和视频等)需求是今后发展的趋势,支持多媒体数据类型的数据库管理系统必将减少应用程序的开发和维护工作。
链接:计算机辅助软件工程
计算机辅助软件工程(Computer Aided Software Engineering,CASE)是帮助进行应用程序开发的软件,包括分析、设计和代码生成。CASE工具为设计和文件编制传统结构编程技术,提供了自动的方法。CASE是一组工具和方法的集合,可以辅助软件开发生命周期各个阶段进行软件开发。
链接:第四代语言
第四代语言(Fourth-Generation Language,简称4GL)的出现是出于商业需要。4GL这个词最早是在20世纪80年代初期出现在软件厂商的广告和产品介绍中的。因此,这些厂商的4GL产品不论从形式上看还是从功能上看,差别都很大。但是,人们很快发现,这一类语言由于具有“面向问题”、“非过程化程度高”等特点,可以成数量级地提高软件生产率,缩短软件开发周期,因此赢得了很多用户。1985年,美国召开了全国性的4GL研讨会,也正是在这前后,许多著名的计算机科学家对4GL展开了全面研究,从而使4GL进入了计算机科学的研究范畴。
4GL原意是非过程化程序设计语言,是针对以处理过程为中心的第三代语言提出的;希望通过某些标准处理过程的自动生成,使用户只说明要做什么,而把具体的执行步骤的安排交给软件自动处理。
链接:面向对象编程
面向对象编程(Object Oriented Programming,OOP,即面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是:计算机程序是由单个能
够起到子程序作用的单元或对象组合而成的。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。一项由Deborah J. Armstrong 进行的长达40年之久的计算机著作调查,显示出了一系列面向对象程序设计的基本理论。
三、数据库管理系统的性能分析
包括性能评估(响应时间、数据单位时间吞吐量)、性能监控(内、外存使用情况、系统输入/输出速率、SQL语句的执行,数据库元组控制)、性能管理(参数设定与调整)。
链接:响应时间和吞吐量
数据库性能一般用两个方面的指标来衡量:响应时间和吞吐量。响应越快,即响应时间越短,吞吐量越大,数据库性能也就越好。在有些情况下,响应时间和吞吐量不能一起得到改善。
链接:数据库元组
元组(Tuple)是关系数据库中的一个基本概念。关系数据库是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为记录。
四、对分布式应用的支持
包括数据透明与网络透明程度。
数据透明,是指用户在应用中不需指出数据在网络中的什么节点上,数据库管理系统可以自动搜索网络,提取所需数据。
网络透明,是指用户在应用中无需指出网络所采用的协议。数据库管理系统自动将数据包转换成相应的协议数据。
五、并行处理能力
支持多CPU模式的系统(SMP,Cluster,MPP),负载的分配形式,并行处理的颗粒度、范围。
链接:SMP
SMP(Symmetrical Multi-Processing,对称多处理机),是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。它是相对于非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台电脑不再由单个CPU组成,而同时由多个处理器运行操作系统的单一复本,并共享内存和一台计算机的其他资源。虽然同时使用多个CPU,但
是从管理的角度来看,它们的表现就像一台单机一样。系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有的处理器都可以平等地访问内存、I/O和外部中断。在对称多处理系统中,系统资源被系统中所有CPU共享,工作负载能够均匀地分配到所有可用处理器之上。从而,提高了整个系统的数据处理能力。
链接:Cluster
一个计算机集(Cluster),是指一组连接起来的电脑(服务器),它们共同工作,对外界来说就像一台电脑(服务器)一样。集一般由局域网连接,但也有例外。集一般用于单个电脑无法完成的高性能计算,拥有较高的性价比。例如,Baidu和Google的后台服务器就是一个Cluster。
链接:MPP
大规模并行处理计算机(Massive Parallel Processor,MPP),由大量通用微处理器构成的多处理机系统,适合多指令流、多数据流处理。
在计算机体系结构中,MPP在20世纪90年代盛行。如今,世界上排名靠前的大型机,都是MPP。
MPP是由许多松耦合处理单元组成的,要注意的是这里指的是处理单元而不是处理器。每个处理单元内的CPU都有自己私有的资源,如总线、内存、硬盘等。在每个单元内,都有操作系统和管理数据库的实例复本。这种结构最大的特点在于不共享资源。
链接:并行性、并行处理颗粒度
所谓并行性包含同时性和并发性。同时性是指两个或两个以上的事件在同一时刻发生;而并发性则是指两个或多个事件在同一时间段发生。这就是说,在同一时刻或同一时间段内完成两个或两个以上性质相同或性质不同的功能,只要在时间上存在相互重叠,就存在并行性。
并行性又分为粗粒度并行和细粒度并行两类。粗粒度并行,是指在多个处理机上分别运行多个进程,由多台处理机合作完成一个程序,一般用算法实现。细粒度并行,是指在处理机的指令级和操作级的并行性。
相对而言,并行处理的颗粒度分为粗粒度和细粒度。一般来说,细粒度并行度更高,但是通信也更多;而粗粒度则正好相反。因为,在并行计算中,粒度定义为计算与通信之比。
细粒度的并行:计算强度低;没有足够的任务来隐藏长时间的异步通信;容易通过提供大量可管理的(即更小的)工作单元来实现负载均衡。
粗粒度的并行:计算强度高;完整的应用可以作为并行的粒度;难以有效实现负载均衡。
链接:算法
算法(Algorithm),是指对解题方案的准确而完整的描述,是一系列解决问题的清晰指令;算法代表着用系统方法描述解决问题的策略机制。也就是
说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法可以理解为由基本运算及运算规定的运算顺序所构成的完整的解题步骤,或者看成是按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
六、可移植性和可扩展性
可移植性,是指垂直扩展和水平扩展能力。垂直扩展要求新平台能够支持低版本的平台,数据库客户机/服务器机制支持集中式管理模式,这样保证用户以前的投资和系统;而水平扩展则要求满足硬件上的扩展,支持从单CPU模式转换成多CPU并行机模式(SMP,Cluster ,MPP)。
链接:垂直扩展和水平扩展
在数据库设计中,一般把数据库sharding(分片)机制分成水平扩展(横向扩展,或者向外扩展)和垂直扩展两种方式。什么是数据库的水平扩展和垂直扩展呢?我们以下面的例子来说明。
例如,现在有两个数据库表:用户信息表、产品订单表。
水平拆分方案,即:不修改数据库表结构,通过对表中数据的拆分来达到分片的目的。
垂直拆分方案,即:将表和表分离,或者修改表结构,按照访问的差异将某些列拆分出去。
在数据库设计中,一般更关注数据库的水平扩展能力。
七、数据完整性约束
数据完整性,是指数据的正确性和一致性保护,包括:实体完整性、参照完整性、复杂的事务规则。
链接:数据完整性
数据库中的数据是从外界输入的,而数据的输入由于种种原因会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系型数据库系统首要关注的问题。数据完整性因此而提出。
数据完整性(Data Integrity),是指数据的精确性(Accuracy)和可靠性(Reliability)。它是为了防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论