设为首页 加入收藏

TOP

云计算下的数据库分析以及部分互联网公司目前采用的新型数据库总结(二)
2015-11-21 01:35:47 来源: 作者: 【 】 浏览:1
Tags:计算 数据库分析 以及 部分 互联网 公司 目前 采用 新型 数据库 总结
将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。

5)异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。

6)BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。

NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。

具体优势表现有:

1)数据库的开发效率高,在设计上NoSQL数据库和传统的数据库有很大的不同,传统应用程序的开发中,需要在内存数据结构和福安息数据库的映射上花费大量的精力和时间。NoSQL数据库更符合应用程序的需求,部分NoSQL数据库可以在硬盘上直接操作,简化了数据的交互,减少了编写、调试程序的工作量。

2)数据库的扩展能力强。现在企业通常使用更小,更便宜的计算机组成集群来构建数据库,NoSQL数据库的设计正是针对服务器集群,所以更适合大规模数据的处理。

3)数据库的开发成本低廉。因为NoSQL数据库主要都是开源软件,所以没有昂贵的开发成本。在项目开发中很多企业为了节省开发成本而选择NoSQL数据库。

4)数据模型灵活。在关系数据库中,数据有固定结构,通过各种操作互相关联,对大型的表格增删字段非常麻烦。NoSQL的存储只有一对键值或者数组,无需事先建立字段,任何时候都可以存储自定义的数据格式。

NoSQL数据库的分类:

键值(Key-Value)存储数据库

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3] 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

列存储数据库。

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

文档型数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Grap

(2)NewSQL

NewSQL是对各种新的可扩展/高性能数据库的总称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还有传统数据库支持ACID和SQL等特性。

NewSQL系统虽然在的内部结构变化很大,但是它们有两个显着的共同特点:

(1)它们都支持关系数据模型;

(2) 它们都使用SQL作为其主要的接口。已知的第一个NewSQL系统叫做H-Store,它是一个分布式并行内存数据库系统。

目前NewSQL系统大致分三类:

新架构

第一类型的NewSQL系统是全新的数据库平台,它们均采取了不同的设计方法。它们大概分两类:

(1) 这类数据库工作在一个分布式集群的节点上,其中每个节点拥有一个数据子集。 SQL查询被分成查询片段发送给自己所在的数据的节点上执行。这些数据库可以通过添加额外的节点来线性扩展。现有的这类数据库有: Google Spanner, VoltDB, Clustrix, NuoDB.

(2) 这些数据库系统通常有一个单一的主节点的数据源。它们有一组节点用来做事务处理,这些节点接到特定的SQL查询后,会把它所需的所有数据从主节点上取回来后执行SQL查询,再返回结果。

SQL引擎

第二类是高度优化的SQL存储引擎。这些系统提供了MySQL相同的编程接口,但扩展性比内置的引擎InnoDB更好。这类数据库系统有:TokuDB, MemSQL。

透明分片

这类系统提供了分片的中间件层,数据库自动分割在多个节点运行。这类数据库包扩:ScaleBase,dbShards, Scalearc。

2.4 当今几家主流互联网公司的数据库技术

(1)阿里分布式数据库服务DRDS

DRDS也是一个NewSQL的系统,它与ScaleBase、VoltDB等系统类似,都希望能够找到一条既能保持系统的高扩展性和高性能,又能尽可能保持传统数据库的ACID事务和SQL特性的分布式数据库系统。

?

三层架构,Matrix对应数据库切分场景,对SQL有一定限制,Group对应读写分离和高可用场景,对SQL几乎没有限制。

?

DRDS主要功能介绍

分布式SQL执行引擎
分布式SQL引擎主要的目的,就是实现与单机数据库SQL引擎的完全兼容。目前我们的SQL引擎能够做到与MySQL的SQL引擎全兼容,包括各类join和各类复杂函数等。他主要包含SQL解析、优化、执行和合并四个流程,如图3中绿色部分。

?

虽然SQL是兼容的,但是分布式SQL执行算法与单机SQL的执行算法却完全不同,原因也很简单,网络通信的延迟比单机内通信的延迟大得多。举个 例子说明一下,我们有份文件要从一张纸A上誊写到另外一张纸B上,单机系统就好比两张纸都在同一个办公室里,而分布式数据库则就像是一张纸在北京,一张纸 在杭州。
自然地,如果两张纸在同一个办公室,因为传输距离近,逐行誊写的效率是可以接受的。而如果距离是北京到杭州,用逐行誊写的方式,就立刻显得代价太 高了,我们总不能看一行,就打个“飞的”去杭州写下来吧。在这种情况下,还是把纸A上的信息拍个照片,【一整批的】带到杭州去处理,明显更简单一些。这就 是分布式数据库特别强调吞吐调优的原因,只要是涉及到跨机的所有查询,都必须尽可能的积攒一批后一起发送,以减少系统延迟提高带来的不良影响。

按需数据库集群平滑扩缩

DRDS允许应用按需将新的单机存储加入或移出集群,DRDS则能够保证应用在迁移流程中实现不停机扩容缩容。

?

在内部的数据库使用实践中,这个功能的一个最重要应用场景就是双11了。在双11之前,会将大批的机器加入到我们的数据库集群中,抗过了双11,这批机器就会下线。

因为完全无法预测在什么时间点系统会有爆发性的增长,而如果在这时候系统因为技术原因不能使用,就会给整个业务带来毁灭性的影响,风口一旦错过,就追悔莫及了。我想这就是云计

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hbase-1.0.1安装 下一篇redis主从复制完整同步和部分重同..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: