当前位置:首页 > 企业新闻

NoSQL数据库技术分析与实践:CQ9电子
本文摘要:现在是云计算的时代,传统的关系型数据库的缺点不会慢慢地都反映出来,特别是在是他无法应付大数据量的处置市场需求,造成目前关系型数据库在云计算的平台下早已沦为制约整个WEB架构敏捷性和扩展性的瓶颈。

现在是云计算的时代,传统的关系型数据库的缺点不会慢慢地都反映出来,特别是在是他无法应付大数据量的处置市场需求,造成目前关系型数据库在云计算的平台下早已沦为制约整个WEB架构敏捷性和扩展性的瓶颈。为了填补这些严重不足,NoSQL型数据库应运而生,NoSQL可拓展的松耦合类型数据模式,以及在易用性、高度伸缩性、反对海量数据等方面所展现出出来的优点,使其在云计算领域被广泛应用。大数据的经常出现与发展增进了NoSQL数据库技术的发展及其产品应用于,为大数据的存储、传输与处置建构了生态环境。本论文从最基本的NoSQL数据库的发展过程开始、讲解了memcached、TokyoTyrant、Redis和MongoDB这四种NoSQL数据库的用于背景、分析了NoSQL数据库技术特点,并对目前应用于的几种典型NoSQL数据库展开了分析较为。

关键词:云计算;数据库;非关系型数据库;      1阐述   大家或许早已听闻过“nosql”这个词了,但是这个词的含义究竟是什么?有什么用途?有什么优点?有什么缺点等等一系列问题随之而来。Nosql数据库是为了填补关系型数据库的严重不足而产生的。Nosql数据库所谓关系型数据存储的普遍定义,它超越了长久以来关系型数据库与ACID理论大统一的局面。

Nosql数据存储不必须相同的表格结构,一般来说也不不存在相连操作者。Nosql数据库不用于传统的关系数据库模型,而是用于文档型的、佩存储、图形数据库等方式存储数据模型。      1.1关系型数据库技术特征分析及问题   关系型数据库把所有的数据都通过行和列的二元表现形式回应出来,给人更容易解读的直观感觉。

关系型数据库可以使多条数据值来展开关联,这样就使数据可以独立国家不存在,使得数据结构的更改显得简单易行。   关系型数据库的特征,可以分成优点和缺点两个方面来考虑到。关系型数据库的优点有两种:一种是通用性及高性能。

虽然此篇论文是在讲解NoSQL数据库技术的特点,但是关系型数据库的性能低的这个优点是无法忽略的,它具备十分好的通用性和十分低的性能,当然,这些优点也就使得,在很多应用于的实例面前,关系型数据库是一个很不俗的解决方案,甚至是最差、最有效地的解决方案;另一种是比较突出的优势。关系型数据库是一种应用于非常广泛的,非常标准化的数据库技术,他的比较突出的优势某种程度是一条,比如:能保持数据的一致性(事务处理)这是关系型数据库技术仅次于的优势了,所以说道,在必须严苛保证数据一致性和处置完整性的情况下,用关系型数据库认同是最准确的自由选择;由于以标准化为前提,数据改版的支出较小(完全相同的字段基本上都只有一处);不存在很多实际成果和专业技术信息(成熟期的技术)。   关系型数据库的严重不足是不擅长于的处置操作者。

首先,有大量数据的载入处置。在数据读取方面,由拷贝产生的主从模式(数据的载入由数据库负责管理,数据的读取由从数据库负责管理),可以比较简单地通过减少从数据库来构建规模化。但是,在数据的载入方面却几乎没非常简单的方法来解决问题规模化问题。

其次,为有数据改版的表做索引或表格结构(schema)更改。在用于关系型数据库时,为了减缓查找速度必须创立索引,为了减少适当的字段就一定必须转变表格结构。

为了展开这些处置,必须对表格展开分享瞄准,这期间数据更改(改版、放入、移除等)是无法展开的。如果必须展开一些耗时操作者(例如为数据量较为大的表格创立索引或者更改其表格结构),就必须特别注意:长时间内数据有可能无法展开改版。

再有,字段不相同时应用于。如果字段不相同,利用关系型数据库也是较为艰难的。或许你不会想起,在必须的时候再行特一个字段不就可以了吗,但是在实际的操作者运用中,每次都展开重复的表格结构更改是十分伤痛的。

你也可以预先原作大量的以备字段,但这样的话,时间幸了,很更容易摸不确切字段和数据的对应状态(即哪个字段留存哪些数据),所以不引荐用于。最后,对非常简单查找必须较慢回到结果的处置。只不过这个也远比是缺点,只是关系型数据库并不擅长于对非常简单的查找较慢回到结果,因为关系型数据库是用于专门的SQL语言展开数据加载的,他必须对SQL语言展开解析,同时还有对表的瞄准和关卡这样的额外支出。

这里不是说道关系型数据库的速度太快,而是想要告诉他大家若期望对非常简单查找展开高速处置,则没适当非用于关系型数据库不能。在这种情况下,我引荐大家用于NoSQL数据库。   1.2NoSQL技术的背景和发展过程。

   为了填补关系型数据库的的不足之处,NoSQL数据库经常出现了,关系型数据库应用于普遍,能展开事务处理和JOIN等简单处置。比较的,NoSQL数据库只应用于在特定领域,基本上不展开简单的处置,但他才是填补了之前所列出的关系型数据库的不足之处。

   1.2.1NoSql的概念   NoSQL数据库所谓关系型数据存储的普遍定义,他超越了长久以来关系型数据库与ACID理论大统一的局面。NoSQL数据存储不必须相同的表格结构,一般来说也不不存在链接操作者。

CQ9电子

NoSQL数据库不限于传统的关系型数据库模型,而是用于如文档型的、佩存储、图形数据库等方式存储。NoSQL数据库基本上来说是为了“使大数据的载入处置更为更容易”而设计的。

但如果不是对大数据量数据展开操作者的话,NoSQL数据库的应用于就没意义了吗?当然,答案是驳斥的。的确,他能在处置大数据量方面有相当大的优势,但实质上NoSQL数据库还有各种各样的优点,到目前为止,居然有122种NoSQL数据库了,如果他们的优点都需要合理的被利用,将不会是十分的简单。

   1.2.2NoSql背景和发展   现在,驳回数据库存储,一般都是针对关系型数据库来说的。但是,关系型数据库并不是万能的,他对于某些处置仍然很是吃力的。

NoSQL数据库就是为了填补关系型数据库的严重不足应运而生的。在必要的情况下用于NoSQL数据库,可以为关系型数据库必须花费大量时间才能已完成的处置,获取高速、合理的解决方案。“NoSQL”不是“NoSQL”的意思,而是“NotOnlySQL”的简写,他的意义是:限于关系型数据库的时候用于关系型数据库,不限于的时候也没有适当非用于关系型数据库不能,可以考虑到限于更为适合的数据库展开存储。NoSQL是在1998年由一个名为CarloStrozzi的人研发的数据库。

并且于2009年,JohanOskarsson发动了一场关于分布式开源数据库的辩论,来自全球三大云计算中心之一的EricEvans再度明确提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不获取ACID的数据库设计模式。2009年在亚特兰大举办的no:sql(east)讨论会是一个里程碑,会上对NoSQL最广泛的说明所谓关系型的,特别强调键——值对存储和文档数据库的优点,而不是全然的关系型数据库。      2存储引擎及数据模型分析      2.1存储引擎分析   存储引擎是存储系统的发动机,必要要求了存储系统需要获取的性能和功能。

存储系统的基本功能还包括:减、稿、读书、改为,其中,加载操作者又分成随机加载和顺序扫瞄。   2.1.1哈希存储引擎   哈希存储引擎是哈希表的长久化构建,反对减、稿、读书、改为,但不反对顺序扫瞄,对应的存储系统为键值(Key-Value)存储系统。

Bitcask是一个基于哈希表格结构的键值存储系统,它仅有反对新增操作者(append-only),即所有的写出操作者只新增而不改动杨家的数据。在Bitcask系统中,每个文件有一定的大小容许,当文件减少到比较不应的大小时,就不会产生一个新的文件,杨家的文件读入不写出。在给定时刻,只有一个文件是可用的,用作数据新增,称作活跃数据文件(activedatafile)。而其他早已超过大小容许的文件,称作杨家数据文件(olderdatafile)。

   2.1.2B树存储引擎   B树(B-tree)存储引擎是B树根的长久化构建,不仅反对单条记录的减、稿、改为、读书操作者,还反对顺序扫瞄,对应的存储系统是关系型数据库。当然,键值系统也可以通过B树存储引擎构建。关系数据库中通过索引采访数据,在MysqlInnoDB中,有一个称作挤满索引的类似索引,讫的数据存于其中,的组织成B+树(B树根的一种)数据结构。   2.1.3LSM树存储引擎   LSM树(Log-StructuredMergeTree)存储引擎和B树存储引擎一样,反对减、稿、改为、随机加载以及顺序扫瞄。

他通过批量转储技术回避磁盘随机载入问题,普遍应用于互联网的后台存储系统。LSM树思想十分朴素,就是将对数据的改动增量维持在内存中,超过登录的大小容许后将这些改动操作者批量载入磁盘,加载时必须拆分磁盘中的历史数据和内存中最近的改动操作者。

LSM树根的优势在于有效地回避了磁盘随机载入问题,但是加载时有可能必须采访较多的磁盘文件。   2.2数据模型分椑   如果说存储引擎相等于存储系统的发动机,那么,数据模型就是存储系统的外壳。

存储系统的数据模型主要有三种:文件、关系以及随着NoSQL技术流行起来的键值模型。传统的文件系统和关系型数据库分别使用文件和关系模型。关系模型叙述能力强劲,产业链原始,是存储系统的业界标准。

然而,随着应用于在可扩展性、低所发以及性能上明确提出更加多的拒绝,大而全的关系数据库有时变得力不从心,因此,产生了一些新的数据模型,比如键值模型,关系弱化的表格模型,等等。   2.2.1文件模型   文件系统以目录树根的形式的组织文件,以类UNIX操作系统为事例,根目录是/,包括/usr、/bin、/home等子目录,每个子目录又包括其他子目录或者文件。文件系统的操作者牵涉到目录以及文件,例如:关上/重开文件、读取文件、迭代目录、设置文件属性等。POSIX(PortableOperatingSystemInterface)是应用程序采访文件系统的API标准,它定义了文件系统存储模块及操作者集。

   2.2.2关系模型   每个关系是一个表格,由多个元组(行)包含,而每个元组又包括多个属性(佩)。关系名、属性名以及属性类型称为该关系的模式(schema)。

例如,Movie关系的模式为Movie(title,year,length),其中,title,year,length是属性,假设他们的类型分别为字符串、整数、整数。   2.2.3键值模型   大量的NoSQL系统使用了键值模型(Key-Value模型),每行记录由主键和数值两个部分构成,反对基于主键的如下操作者:   Put:留存一个Key-Value对。   Get:加载一个Key-Value对。

   Delete:移除一个Key-Value对。   4典型的NoSQL数据库存储架构分析   4.1面向佩的存储架构   普通的关系型数据库都是以不道德单位来存储数据的,擅长于展开以不道德单位的读取处置,比如特定条件数据的提供。

因此,关系型数据库也被称作面向讫的数据库,忽略,面向佩的数据库以列入单位来存储数据的,擅长于以列入单位读取数据。面向佩数据库是最风行的一种非关系型数据库。GoogleBigtable和ApacheHBase(Hadop的一部分)都归属于面向佩数据库,Hypertable和Cloudata也是如此。

他们各不相同,但具有联合的基础。面向佩的数据库具备低扩展性,即使数据减少也会减少适当的处理速度(尤其是载入速度),所以它主要应用于必须处置大量数据的情况。另外,利用面向佩的数据库的优势,把它作为批处理程序的存储器来对大量数据展开改版也是十分简单的。但是由于面向佩的数据库跟现行数据库存储的思维方式有相当大有所不同,应用于一起十分困难。

   4.2键/值存储架构   键/值存储的数据是以键值的形式存储的。虽然他的处理速度十分慢,但是基本上不能通过键的完全一致查找获取数据。根据数据的留存方法可以分成临时性、永久性和两者兼备3种。

   临时性就是“数据有可能遗失”的意思,memcached数据库把所有数据都留存在内存中,这样留存和加载的速度不会十分慢,但是,当数据库暂停工作时,数据就不不存在了。由于数据留存在内存中,所以无法操作者远超过内存容量的数据(原有数据不会遗失)。   永久性就是“数据会遗失”的意思,这里的键值不是把数据不存在内存中,而是存储在硬盘上,与memcached在内存中处置数据比一起,由于必定要再次发生对硬盘的I/O操作者,所以性能上还是有差距的。

但数据会遗失是他仅次于的优点。这种类型的数据库有ToKyoTyrant、Flare、ROMA等等。   Redis归属于这种类型。他有些类似,临时性和永久性兼备,且子集了两种的优点。

Redis首先把数据留存在内存中,在符合一定条件下(配置文件15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键再次发生更改)的时候将数据载入到硬盘中,这样既保证了内存中数据的处理速度,有可以通过载入硬盘来保证数据的永久性。这种类型的数据库尤其适合于处置数组类型的数据。   4.3面向文档的存储架构   MongoDB、CouchDB归属于这种类型,他们归属于NoSQL数据库,并且具备面向文档数据库的联合特点。即使不定义表格结构,也可以像定义了表格结构一样用于。

关系型数据库在更改表格结构的时候,较为费事,而且为了维持一致性还须要改动程序。然而NoSQL数据库则可以省却这些困难(一般来说程序都是准确的),显然是方便快捷。   跟键值有所不同的是,面向文档的数据库可以通过简单的查找条件来获取数据。

虽然不具备事务处理和JOIN这些关系型数据库所具备的处置能力,但除此之外的其他处置基本上都能构建。这是非常容易用于的NoSQL数据库。


本文关键词:CQ9电子,CQ9电子官网

本文来源:CQ9电子-www.alnhdah.com