陈娟 李炜
(1.咸阳师范学院 陕西省咸阳市 712000 2.西藏民族大学 陕西省咸阳市 712082)
在当代生活和工作中,随时会产生大量的数据信息需要管理,数据库是最方便、有效的管理工具,目前,数据库分为关系型与非关系型两种,关系型数据库的历史由来已久且应用范围更为广泛,它是采用关系模型来组织数据的数据库。非关系型数据库是非关系型、分布式、不提供ACID(数据库事务处理的四个基本要素)的数据库设计模式。
使用数据库管理系统,根据不同的工作项目设计并建立相应的分散独立的应用数据库,随心所欲。当项目需要扩展时,数据库也会随之变化,但如果事先没有进行规划,大量数据无法正常存储和操作使用,数据库不易扩展和维护,项目将无法正常进行。关系型数据库是一种建立在数据关联性基础上的数据库,但是数据量巨大时,查找数据会产生额外的操作,会花费更多的时间,无法提高效率,所以使用关系型数据库就会变得不再那么高效。
在互联网不断发展壮大的年代,非关系型数据库成为了一个极其热门的新的领域并且发展的十分迅速。特别是在一些超大规模和高并发的社交型的网站中,关系型数据库暴露出了很多难以克服的问题,比如对数据库高并发读写的需求、高效率存储访问的需求、高扩展性及可用性的需求。除此之外,关系型数据库的事务一致性、读写实时性、多表关联查询这些功能由于在此类型的网站的要求不高从而导致其无法发挥它应有的功能,为了解决这类问题,非关系数据库应运而生,它的种类较多且大部分都开源,因此非关系型数据库越来越受欢迎。但由于非关系型数据库出现时间并不长且本身就具有多样性,除了它们的一些共性之外,大部分都是针对不同的问题而采用不同的类型的非关系型数据库。
随着信息技术的发展,最早人工管理数据的方式已经不能适应大量数据的管理需求,此时数据库技术逐步发展起来。数据库(Database)是按照某种数据结构来组织大量数据信息,并对它们进行存储和管理的仓库,简单来说,我们可以把数据库看成是一个电子化的“文件柜”用来存储大量的电子文件,用户可以从“文件柜”中找到相应文件并对其中的数据进行增、删、改、查等操作。在各单位日常管理中常常需要这样的“文件柜”,例如,对某校学生的管理,可以把学生的学号、姓名、年龄、性别、籍贯、系别、联系方式等信息存放在“文件柜”中,可以看成是一个数据库,在这个数据库中我们就可以根据需要随时查询学生的基本信息。因此,通过计算机对数据进行管理能够大大提高办公的效率。数据库技术具有以下特点:
(1)数据共享。多个用户可以同时存取数据库中的数据,也可以通过各种接口使用数据库中的数据,避免了用户存储大量重复数据,减少了数据冗余,避免造成数据之间的不相容性和不一致性。
(2)数据的独立性。数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指数据物理结构的变化不影响数据的逻辑结构;逻辑独立性是指用户的应用程序与数据库中数据相互独立,应用程序修改不会影响数据的使用。
(3)数据实现集中控制。区别于传统文件管理方式中的数据分散状态,数据库技术可对数据进行集中控制和管理,并使用数据模型来表示各数据之间的关系。
(4)数据一致性和可维护性。通过数据的安全性控制、完整性控制和并发控制可以防止数据丢失、错误更新、保证数据的正确性和有效性,使得在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互从而确保了数据的一致性和可维护性。
(5)故障恢复。数据库系统通过相应机制可及时发现系统物理上或逻辑上的故障,从而尽快恢复数据库系统运行,防止数据被破坏。
目前数据库技术分为关系型数据库和非关系型数据库。
关系型数据库是依据关系数据模型(二维表)来创建的数据库,关系模型使用二维表格来存放所有的数据,二维表也称为关系,它是一系列二维数组的集合,用来代表与存储数据对象之间的关系,由行和列组成。二维表之间具有“一对一、一对多、多对多”等关联,所以,一个关系型数据库就是由二维表及表之间的关联组成的一个数据结构。
SQL(Structured Query Language)是结构化查询语言的英文简称,它是建立数据库、修改、查询数据等的程序设计语言,同时也是数据库脚本文件的扩展名。SQL 集数据查询语言、数据操纵语言、数据定义语言和数据控制语言于一体,风格统一,可以完成数据库中的全部操作,包括定义关系模型、录入数据、建立数据库、查询、修改、删除数据库及数据等,它为数据库系统的开发提供了良好的基础。在使用SQL 语言进行数据操作时,用户只需要告诉计算机“做什么”,而不需要说明“怎么做”,其操作过程会由系统自动控制。这种模式减轻了用户的负担,有利于提高数据独立性。关系型数据库中普遍使用了标准数据查询语言SQL,可以对关系数据库中数据进行查询、操纵、定义和控制,是一个通用的且简单易懂的数据库管理语言。
关系型数据库经过数十年的发展,其理论基础和相关技术、产品都非常丰富完善,是数据库领域中的主流产品,且有着原子性、一致性、持久性、隔离性这四种特性(数据库事务的ACID 特性),此外关系型数据库还需要提供事务的恢复、回滚、并发控制、死锁解决等问题。关系型数据库便于使用且易于理解与维护,还具有很强的安全性、事务保证性,所以被广泛使用。但是随着各类互联网的兴起,在生活中各类数据信息都会被我们在线使用或分享,关系型数据库因为它本身的结构特点而难以实现高效的易扩展的架构,这时非关系型数据库相对于关系型就会有更大的用处。
非关系型数据库,也可称之为NoSQL(Not Only SQL),意思是不仅仅是结构化查询语言SQL( Structured QueryLanguage)。NoSQL 不同于关系型数据库的数据库管理方式,它所采用的数据模型并非关系型数据库的关系模型,而是采用键值、列式、文档等的非关系模型。它不支持关系型数据库事务的ACID 特性。它们是建立在非传统关系数据模型之上,它们的存在是为了满足更多的互联网业务,并且一般它们均为开源免费的,因此使用起来更加的简单方便。它主要的优势有两个:
(1)拥有横、纵双向的扩展能力:关系型数据库由于其自身结构特性问题必须布置在多个服务器上,但NoSQL 则可以布置在一个服务器上。
(2)结构自由:在非关系型数据库中一般保存的是键值对。这两点优势可以让NoSQL 更好的融入云计算环境,构建更好的云服务。
关系型数据库和非关系型数据库在使用场景上差别比较大,所以必须要在适合他们的领域应用,才能发挥出这两类数据库的优势。
关系型数据库具有以下优点:
(1)因为关系型数据库采用的是二维表,它更加的符合逻辑世界,所以相对于表的结构更容易理解;
(2)它们是通用的SQL 语言,可以在一个表以及多个表之间做非常复杂的数据查询,所以学习操作更加轻松方便;
(3)它的完整性及事务一致性让它更容易维护。
关系型数据库的缺点:
(1)因为要维护它的一致性,所以它的读写性会较差;
(2)结构固定;
(3)海量数据的读写效率不高。
非关系型数据库具有以下优点:
(1)读写性很高;
(2)基于key-value 键值对,可以想象成表中的主键和值的对应关系,而且不需要经过SQL 层的解析,所以性能较好,易于扩展;
(3)格式灵活,数据类型多种多样,可以是键对值,甚至是文档、图片,应用场景广泛,但是关系型数据库只支持原有的数据类型。
非关系型数据库的缺点:
(1)不提供SQL 支持,学习成本高;
(2)没有事务处理。
目前,关系型数据库应用广泛且拥有许多成功案列,但随着社会的发展,人们对于数据的快速处理、响应及大数据分析有着越来越高的要求,并且对数据的高扩展性的需求也不断提高。关系型数据库已不能满足这些要求,这时候就需要非关系型数据库。由于数据结构设置的方式不同,关系型数据库呈现的是一种数据规范化之后的结果,而非关系型数据库展现的则是一种数据结构化存储方法的集合,对应不同的使用场景,可以选择不同的数据库。
非关系型数据库严格上不是一种数据库,它是一种数据结构化存储方法的集合,主要有以下几类:
基于列式的存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据;列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。这种方式使系统具有更高的可扩展性,使得操作更加简单方便。基于列式的存储方式针对海量的数据有很好的适应性,这个特点与云计算所需的相关需求是相符合的。目前使用基于列式的数据库有Apache HBase,Hypertable 以及Google BigTable。
键值对存储方式是非关系数据库中最简单的一种存储方式,它是一个键-值的集合,好像数据结构中的Hash 表一样,每个键分别对应一个值,键值中所存储的数据的类型是不受限制的,可以是一个字符串,也可以是一个数字,甚至也可以是一系列的键值对封装成的对象等。通过对主键的操作能够大大提高查询和修改的速度,大量数据存放也较为方便。在现实场景中,对大量数据的高访问负载或日志系统中都应用到了键值对存储方式。使用键值对存储数据的数据库有MemcacheDB、BerkeleyDB、Redis 等。
文档存储方式是基于键值对存储方式的,也是每个Key 分别对应一个Value,但是这类方式更加复杂。设计文档存储方式的最初的目的就是用于存储日常文档的,它将一个特定文档的结构使用一种特定的模式来存储,便于进行复杂的查询和计算。对于网站中大量数据、缓存以及JSON(JavaScriptObjectNotations) 数据的存储使用较多。典型代表为MongoDB、CouchDB 等,这类数据库可在海量的数据中快速查询数据。
图数据库所要解决的问题与图和图论相关。图数据库,例如Neo4j,其目的是为用户提供一种更好的方法用于管理结构复杂、呈网状分布的数据。当然,基于图模型实现的解决方案并不仅有Neo4j 图形数据库,有的产品成熟度不同,有的开源或闭源,例如AllegroGraph、FlockDB、InfiniteGraph 和OrientDB 等。在社交网络、推荐系统等环境中会使用到图数据库。
随着网络不断发展,需要处理的数据规模越来越大、越来越复杂,传统的关系型数据库已无法应对更加复杂的模型,非关系数据库凭借其易扩展、高性能和灵活的数据模型得到了非常迅速的发展。非关系数据库的优势相当明显,但同时也存在一些问题,非关系数据库不支持结构化查询语言SQL,这无疑会增大学习和使用成本;非关系数据库无事务处理,这就决定了数据的一致性、完整性很难保存。由于所使用的场景不同,关系型数据库与非关系型数据库并非对立的关系,而应优势互补,共同作用。通常情况可使用关系型数据库,在某些关系数据库无法处理数据时可使用非关系数据库,让非关系数据库作为对关系型数据库补充。