说“对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈”的原因:1、机械结构限制;2、磁盘寻道和旋转;3、数据量大。机械结构限制是指受到机械限制,I/O速度会显著降低。
一、说“对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈”的原因
1、机械结构限制
硬盘由一片或多片镜面圆盘组成,圆盘上的磁头随着数据读写而在盘片上移动,因此会受到机械限制,I/O速度会显著降低。
2、磁盘寻道和旋转
在进行读写操作时,硬盘需要先从盘片上找到所需数据的位置(寻道),然后等待数据旋转到处于磁头下方的位置,才能开始读写(旋转延迟)。
3、数据量大
随着数据量的增大,磁盘I/O的负载也相应增加。当系统需要处理大量数据时,磁盘I/O速度的瓶颈就会体现得更加明显。
二、关系型数据库介绍
1、简介
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
2、特点
- 存储方式:传统的关系型数据库采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便。
- 存储结构:关系型数据库按照结构化的方法存储数据,每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据,这样做的好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高,但带来的问题就是一旦存入数据后,如果需要修改数据表的结构就会十分困难。
- 存储规范:关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然,当然这主要是一张数据表的情况。如果是多张表情况就不一样了,由于数据涉及到多张数据表,数据表之间存在着复杂的关系,随着数据表数量的增加,数据管理会越来越复杂。
- 扩展方式:由于关系型数据库将数据存储在数据表中,数据操作的瓶颈出现在多张数据表的操作中,而且数据表越多这个问题越严重,如果要缓解这个问题,只能提高处理能力,也就是选择速度更快性能更高的计算机,这样的方法虽然可以一定的拓展空间,但这样的拓展空间一定有非常有限的,也就是关系型数据库只具备纵向扩展能力。
- 查询方式:关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采用类似索引的方法来加快查询操作。
- 规范化:在数据库的设计开发过程中开发人员通常会面对同时需要对一个或者多个数据实体(包括数组、列表和嵌套数据)进行操作,这样在关系型数据库中,一个数据实体一般首先要分割成多个部分,然后再对分割的部分进行规范化,规范化以后再分别存入到多张关系型数据表中,这是一个复杂的过程。好消息是随着软件技术的发展,相当多的软件开发平台都提供一些简单的解决方法,例如,可以利用ORM层(也就是对象关系映射)来将数据库中对象模型映射到基于SQL的关系型数据库中去以及进行不同类型系统的数据之间的转换。
- 事务性:关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。
- 读写性能:关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价,虽然关系型数据库存储数据和处理数据的可靠性很不错,但一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害。
- 授权方式:关系型数据库常见的有 Oracle,SQLServer,DB2,Mysql,除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。
3、设计步骤
关系型数据库设计的过程可大体分为四个时期七个阶段。
- 用户需求分析时期:主要是了解和分析用户对数据的功能需求和应用需求,是整个设计过程的基础,事关整个数据库应用系统设计的成败。
- 数据库设计时期:主要是将用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的数据模型,可用实体—联系模型来表示,然后将其转换为已选好的关系型数据库管理系统RDBMS所支持的一组关系模式并为其选取一个适合应用环境的物理结构,包括存储结构和存取方法。
- 数据库实现时期:包括数据库结构创建阶段和应用行为设计与实现阶段,是根据数据库的物理模型创建数据库、创建表、创建索引、创建聚簇等。
- 数据库运行与维护阶时期:最后一个阶段则是数据库应用系统经过试运行后即可投入正式运行。
4、设计原则
在进行关系型数据库的设计过程中,要遵循以下几个原则,借此可以提高数据库的存储效率、数据完整性和可扩展性。
- 命名规范化:在概念模型设计中,对于出现的实体、属性及相关表的结构要统一。例如在数据库设计中,指定学生Sstudent,专指本科生,相关的属性有:学号、姓名、性别、出生年月等,及每个属性的类型、长度、取值范围等都要进行确定,这样就能保证在命名时不会出现同名异义或异名同义、属性特征及结构冲突等问题。
- 数据的一致性和完整性:在关系型数据库中可以采用域完整性、实体完整性和参照完整性等约束条件来满足其数据的一致性和完整性,用check、default、null、主键和外键约束来实现。
- 数据冗余:数据库中的数据应尽可能地减少冗余,这就意味着重复数据应该减少到最少。例如:若一个部门职员的电话存储在不同的表中,假设该职员的电话号码发生变化时,冗余数据的存在就要求对多个表进行更新操作,若某个表不幸被忽略了,那么就会造成数据不一致的情况。所以在数据库设计中一定要尽可能存在少地冗余。
- 范式理论:在关系数据库设计时,一般是通过设计满足某一范式来获得一个好的数据库模式,通常认为3NF在性能、扩展性和数据完整性方面达到了较好的平衡,因此,一般数据库设计要求达到3NF,消除数据依赖中不合理的部分,最终实现使一个关系仅描述一个实体或者实体间一种联系的目的。
5、常用关系型数据库
主流的关系型数据库有Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access等多个品种,每种数据库的语法、功能和特性也各具特色。
Oracle数据库是由甲骨文公司开发,并于1989年正式进入中国市场。虽然当时的Oracle尚名不见经传,通过多年的发展积聚了众多名列前茅性的数据库系统开发经验,在集群技术、高可用性、安全性、系统管理等方面都取得了较好的成绩。Oracle产品除了数据库系统外,还有应用系统、开发工具等。在数据库可操作平台上,Oracle可在所有主流平台上运行,因而可通过运行于较高稳定性的操作系统平台,提高整个数据库系统的稳定性。MySQL数据库是一种开放源代码的关系型数据库管理系统(RDBMS),可以使用最常用结构化查询语言进行数据库操作。也因为其开源的特性,可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL数据库因其体积小、速度快、总体拥有成本低而受到中小企业的热捧,虽然其功能的多样性和性能的稳定性差强人意,但是在不需要大规模事务化处理的情况下,MySQL也是管理数据内容的好选择之一。
Microsoft SQL Server数据库最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,于1988 年推出了名列前茅个操作系统版本。在Windows NT 推出后,Microsoft 将SQL Server 移植到Windows NT系统上,因而SQL Server数据库伴随着Windows操作系统发展壮大,其用户界面的友好和部署的简捷,都与其运行平台息息相关,通过Microsoft的不断推广,SQL Server数据库的占有率随着Windows操作系统的推广不断攀升。
延伸阅读1:I/O简介
输入/出(英文:Input/Output,简写为 I/O)是信息处理系统(例如计算器)与外部世界(可能是人类或另一信息处理系统)之间的通信。输入是系统接收的信号或数据,输出则是从其发送的信号或数据。该术语也可以用作行动的一部分;到“运行I/O”是运行输入或输出的操作。输入/出设备是硬件中由人(或其他系统)使用与计算器进行通信的部件。例如,键盘或鼠标是计算器的输入设备,而监视器和打印机是输出设备。计算器之间的通信设备(如电信调制解调器和网卡)通常运行输入和输出操作。