当前位置:文档之家› NoSQL数据库总结

NoSQL数据库总结

NoSQL数据库总结
NoSQL数据库总结

数据库

一、N oSQL数据

简介

NoSQL(NoSQL = Not Only SQL ),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动

随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

优点

可以处理超大量的数据

可以运行在便宜的PC服务器集群上

打破了性能的瓶颈

NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。

“SQL并非适用于所有的程序代码,” 对于那些繁重的重复操作的数据,SQL 值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。

没有过多的操作

Bootstrap支持

因为NoSQL项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。

缺点

没有正式的官方支持,万一出了差错会是可怕的

nosql并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验

二、N oSQL数据库开源软件

1.MongoDB:

简介

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson 格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:面向集合存储,易存储对象类型的数据

“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可

以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。

模式自由

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储

在同一个数据库里。

支持动态查询

支持完全索引,包含内部对象

支持查询

支持复制和故障恢复

使用高效的二进制数据存储,包括大型对象(如视频等)

自动处理碎片,以支持云计算层次的扩展性

支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言

文件存储格式为BSON(一种JSON的扩展)

BSON(Binary Serialized dOcument Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则

可以是各中复杂的文件类型。

可通过网络访问

MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运

行时支持的最大文件尺寸为2GB

2.Google BigTable

简介

BigTable是非关系的数据库,是一个稀疏的、分布式的、持久化存储的多维度排序Map。Bigtable的设计目的是可靠的处理PB级别的数据,并且能够部署到上千台机器上。Bigtable已经实现了下面的几个目标:适用性广泛、可扩展、高性能和高可用性。

Bigtable已经在超过60个Google的产品和项目上得到了应用,包括Google Analytics、GoogleFinance、Orkut、Personalized Search、Writely和GoogleEarth。这些产品对Bigtable 提出了迥异的需求,有的需要高吞吐量的批处理,有的则需要及时响应,快速返回数据给最终用户。它们使用的Bigtable集群的配置也有很大的差异,有的集群只有几台服务器,而有的则需要上千台服务器、存储几百TB的数据。

功能

在很多方面,Bigtable和数据库很类似:它使用了很多数据库的实现策略。并行数据库和内存数据库已经具备可扩展性和高性能,但是Bigtable提供了一个和这些系统完全不同的接口。Bigtable不支持完整的关系数据模型;与之相反,Bigtable为客户提供了简单的数据模型,利用这个模型,客户可以动态控制数据的分布和格式(alex注:也就是对BigTable而言,数据是没有格式的,用数据库领域的术语说,就是数据没有

Schema,用户自己去定义Schema),用户也可以自己推测(alex 注:reasonabout)底层存储数据的位置相关性(alex注:位置相关性可以这样理解,比如树状结构,具有相同前缀的数据的存放位置接近。在读取的时候,可以把这些数据一次读取出来)。数据的下标是行和列的名字,名字可以是任意的字符串。Bigtable将存储的数据都视为字符串,但是Bigtable本身不去解析这些字符串,客户程序通常会在把各种结构化或者半结构化的数据串行化到这些字符串里。通过仔细选择数据的模式,客户可以控制数据的位置相关性。最后,可以通过BigTable的模式参数来控制数据是存放在内存中、还是硬盘上。 特点

适合大规模海量数据,PB级数据

分布式、并发数据处理,效率极高

易于扩展,支持动态伸缩

适用于廉价设备

适合于读操作,不适合写操作

不适用于传统关系数据库

应用

BigTable为谷歌旗下的搜索、地图、财经、打印、以及社交网站Orkut、视频共享网站YouTube和博客网站Blogger等业务提供技术支持。

2010年9月,Google宣布将放弃MapReduce 新索引系统将迁移至BigTable平台。

新平台基于Colossus,也被称为GFS2。

3.HyperTable

简介

Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在PC集群上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作,帮助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据,并实现高效的查询。

Hypertable是Bigtable的一个开源实现,并且根据我们的想法进行了一些改进。

4.Amazon Dynamo

简介

Dynamo是亚马逊的key-value模式的存储平台,可用性和扩展性都很好,性能也不错:读写访问中99.9%的响应时间都在300ms内

基本原理

CAP原则

C onsistency(一致性):即数据一致性,简单的说,就是数据复制到了N台

机器,如果有更新,要N机器的数据是一起更新的。

A vailability(可用性):好的响应性能,此项意思主要就是速度。

P artition tolerance(分区容错性):这里是说好的分区方法,体现具体一点,简单地可理解为是节点的可扩展性。

任何分布式系统只可同时满足二点,没法三者兼顾。所以架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

DHT—分布式哈希表

DHT(D istributed H ash T able,分布式哈希表),它是一种分布式存储寻址方法的统称。就像普通的哈希表,里面保存了key与value的对应关系,一般都能根

据一个key去对应到相应的节点,从而得到相对应的value。

在DHT算法中,一致性哈希作为第一个实用的算法,在大多数系统中都使用了它。一致性哈希基本解决了在P2P环境中最为关键的问题—如何在动态的网络

拓扑中分布存储和路由。每个节点仅需维护少量相邻节点的信息,并且在节点加入

/退出系统时,仅有相关的少量节点参与到拓扑的维护中。至于一致性哈希的细节

就不在这里详细说了,要指明的一点是,在Dynamo的数据分区方式之后,其实内

部已然是一个对一致性哈希的改造了。

数据划分

按分布式系统常用的哈希算法切分数据,分放在不同的节点上。读操作时,也是根据key的哈希值寻找对应的节点。Dynamo使用了Consistent Hashing算法,节点对应的不再是一个确定的hash值,而是一个hash值范围,key的hash值落在这个范围内,则顺时针沿环形查找,碰到的第一个node即为所需。

Dynamo对Consistent Hashing算法的改进在于:它放在环上作为一个节点的是一组机器(而不是把一台机器作为节点),这一组机器是通过同步机制保证数据一致的。

如果一个环形内的访问量大了,则可以在两个节点间加入一个新节点以缓解压力,这时会影响到其后继节点的hash范围,需要调整数据。假设一个环形中原本只有node2、node3、node4,在加入新的node1之后,原先从node2查询的部分key将改为从node1查询,node1和node2中的数据就需要调整,主要是node1从node2中提取出属于它的数据,这样做需要选取性能压力不高的时候

假设我们的数据的key的范围是0到2的64次方,然后设置一个常数,比如说1000,将我们的key的范围分成1000份。然后再将这1000份key的范围均匀分配到所有的节点(s个节点),这样每个节点负责的分区数就是1000/s份分区

数据同步

Dynamo的一个节点中的同步是由client端来“解决”的,使用所谓的(N, R, W)模型,其中,N表示节点中机器的总数,R表示一个读请求需要的机器参与总数,W代表一个写请求需要的机器参与总数,这些值由client端配置。

例如,一个节点有5台机器(N=5),client发出写请求——广播到5台机,如果收到3个“写完成”的返回消息,即认为写成功(W=3);client发出读请求——还是广播到5台机,如果收到2个“读完成”的返回消息,即认为读成功(R=2)。对于数据十分重要的应用(如金融),配置可以为(5, 5, 5),即要求node中所有机器的写都成功;而对于数据读写访问量极高的应用,配置可以为(5, 1, 1)。

通常W不等于N,于是,在某些情况下一个节点内的机器上的数据可能会有不一致,这时Dynamo是通过将多个Read的返回结果“合并”来得出最终结果的,使用了所谓Object Version和Vector clock的技术,即跟踪一个Object在不同机器上的版本变化,以确保当多个Read请求结果返回不一致时,能够更具其版本信息得出正确的结果。

Dynamo的这种做法是一种折中,即为了同时保证读和写的效率,写操作不要求绝对同步,而把不同步可能产生的后果推给了读操作。

数据恢复

Dynamo的一个节点中一台机器建有一个Merkle Tree,当两台机器不一致时(如一台机器宕机一段时间),通过这个tree结构,可以快速定位不一致的Object来恢复数据。

Merkle Tree又叫Hash Tree,它把key分成几个范围,每个范围算出一个hash值,作为叶子,再一层层合并计算上去,这样,从根节点开始比较hash值,就可以快速找到哪几段范围中的hash值变化了。

可用性的补救(常见问题的解决方法)

第一个是hinted handoff数据的加入:在一个节点出现临时性故障时,数据会自动进入列表中的下一个节点进行写操作,并标记为handoff数据,在收到通知需要原节点恢复时重新把数据推回去。这能使系统的写入成功大大提升。

第二个是向量时钟来做版本控制:用一个向量(比如说[a,1]表示这个数据在a节点第一次写入)来标记数据的版本,这样在有版本冲突的时候,可以追溯到出现问题的地方。这可以使数据的最终一致成为可能。(Cassandra未用vector clock,而只用client timestamps也达到了同样效果。)

第三个是Merkle tree来提速数据变动时的查找:使用Merkle tree为数据建立索引,只要任意数据有变动,都将快速反馈出来。

第四个是Gossip协议:一种通讯协议,目标是让节点与节点之间通信,省略中心节点的存在,使网络达到去中心化。提高系统的可用性。

5.Apache Cassandra

简介

Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。Facebook目前在使用此系统。

主要特征

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。

Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。

分布式

基于column的结构化

高伸展性

和其它数据库相比,其突出的特点

模式灵活

使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。

真正的可扩展性

Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一

台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。

多数据中心识别

你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制

范围查询

如果你不喜欢全部的键值查询,则可以设置键的范围来查询。

列表数据结构

在混合模式可以将超级列添加到5维。对于每个用户的索引,这是非常方便的。

分布式写操作

有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。

6.HBase

简介

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。

7.MemBase

简介

Membase是开源项目,源代码采用了Apache2.0的使用许可。

Membase容易安装、操作,可以从单节点方便的扩展到集群,而且为memcached (有线协议的兼容性)实现了即插即用功能,在应用方面为开发者和经营者提供了一个比较低的门槛。做为缓存解决方案,Memcached已经在不同类型的领域(特别是大容量的Web应用)有了广泛的使用,其中Memcached的部分基础代码被直接应用到了Membase服务器的前端。

通过兼容多种编程语言和框架,Membase具备了很好的复用性。在安装和配置方面,Membase提供了有效的图形化界面和编程接口,包括可配置的告警信息。

Membase的目标是提供对外的线性扩展能力,包括为了增加集群容量,可以针对统一的节点进行复制。另外,对存储的数据进行再分配仍然是必要的。

这方面的一个有趣的特性是NoSQL解决方案所承诺的可预测的性能,类准确性的延迟和吞吐量。通过如下方式可以获得上面提到的特性:

自动将在线数据迁移到低延迟的存储介质的技术(内存,固态硬盘,磁盘)

可选的写操作一一异步,同步(基于复制,持久化)

反向通道再平衡[未来考虑支持]

多线程低锁争用

尽可能使用异步处理

自动实现重复数据删除

动态再平衡现有集群

通过把数据复制到多个集群单元和支持快速失败转移来提供系统的高可用性。

8种NoSQL数据库比较

2011/08/30 | 分类:工具与资源, 程序员| 4 条评论| 标签:NOSQL, 数据库 分享到:38 导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型nosql 数据库的文章。文章由敏捷翻译–唐尤华编译。如需转载,请参见文后声明。 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破。这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举。 但是NoSQL数据库之间的不同,远超过两SQL数据库之间的差别。这意味着软件架构师更应该在项目开始时就选择好一个适合的NoSQL数据库。针对这种情况,这里对Cassandra、Mongodb、CouchDB、Redis、Riak、Membase、Neo4j和HBase进行了比较: (编注1:NoSQL:是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。目前Google的BigTable 和Amazon 的Dynamo使用的就是NoSQL型数据库。参见NoSQL词条。) 1. CouchDB ?所用语言:Erlang ?特点:DB一致性,易于使用 ?使用许可:Apache ?协议:HTTP/REST ?双向数据复制, ?持续进行或临时处理, ?处理时带冲突检查, ?因此,采用的是master-master复制(见编注2) ?MVCC –写操作不阻塞读操作 ?可保存文件之前的版本 ?Crash-only(可靠的)设计 ?需要不时地进行数据压缩 ?视图:嵌入式映射/减少 ?格式化视图:列表显示 ?支持进行服务器端文档验证 ?支持认证 ?根据变化实时更新 ?支持附件处理 ?因此,CouchApps(独立的js应用程序) ?需要jQuery程序库 最佳应用场景:适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。

NoSQL数据库学习教程

NoSQL数据库学习教程 本文档由https://www.doczj.com/doc/9d16579153.html,整理发布。 1序 2思想篇 2CAP 2最终一致性 2变体 2BASE 2其他 2I/O的五分钟法则 2不要删除数据 2RAM是硬盘,硬盘是磁带 2Amdahl定律和Gustafson定律 2万兆以太网 3手段篇 3一致性哈希 3亚马逊的现状 3算法的选择 3Quorum NRW 3Vector clock 3Virtual node 3gossip 3Gossip (State Transfer Model) 3Gossip (Operation Transfer Model) 3Merkle tree 3Paxos 3背景 3DHT 3Map Reduce Execution 3Handling Deletes 3存储实现 3节点变化 3列存 3描述 3特点 4软件篇 4亚数据库 4MemCached 4特点 4内存分配 4缓存策略 4缓存数据库查询 4数据冗余与故障预防 4Memcached客户端(mc) 4缓存式的Web应用程序架构 4性能测试 4dbcached 4Memcached 和dbcached 在功能上一样吗?

4列存系列 4Hadoop之Hbase 4耶鲁大学之HadoopDB 4GreenPlum 4FaceBook之Cassandra 4Cassandra特点 4Keyspace 4Column family(CF) 4Key 4Column 4Super column 4Sorting 4存储 4API 4Google之BigTable 4Yahoo之PNUTS 4特点 4PNUTS实现 4Record-level mastering 记录级别主节点 4PNUTS的结构 4Tablets寻址与切分 4Write调用示意图 4PNUTS感悟 4微软之SQL数据服务 4非云服务竞争者 4文档存储 4CouchDB 4特性 4Riak 4MongoDB 4Terrastore 4ThruDB 4Key Value / Tuple 存储 4Amazon之SimpleDB 4Chordless 4Redis 4Scalaris 4Tokyo cabinet / Tyrant 4CT.M 4Scalien 4Berkley DB 4MemcacheDB 4Mnesia 4LightCloud 4HamsterDB 4Flare 4最终一致性Key Value存储 4Amazon之Dynamo 4功能特色 4架构特色 4BeansDB

浅析NoSQL数据库_卢冬海

开 发 应 用
浅析NoSQL数据库
卢冬海 何先波
(西华师范大学计算机学院,四川 南充 637002) 摘 要:NoSQL数据库打破了传统的关系模型,以一种模式自由的方式存储数据,提供了新型的访问接口,并克服了传 统RDBMS的缺点。NoSQL数据库可部署在廉价的硬件之上,支持分布式存储,能透明地扩展节点。本文介绍了NoSQL数据 库的基本特点与设计思想,列举了几种流行的NoSQL数据库产品,分析了其应用方向、优缺点及发展前景。 关键词:NoSQL;SQL;关系型数据库 DOI:10.3969/j.issn.1671-6396.2011.02.008 The Analysis of NoSQL Database LU Dong-hai,HE Xian-bo (School of Computer Science,China West Normal University,Nanchong Sichuan 637002) Abstract: NoSQL database that breaks the traditional relational model, stores data as a free style, provides a new type of access interface, and overcomes the shortcomings of RDBMS database to design to be deployed on inexpensive hardware to support distributed storage and to transparent extension node. This article described some common ideas of NoSQL database, listed kinds of popular NoSQL database products, and analyzed their applications, advantages, disadvantages and prospects. Key words:NoSQL;SQL;RDBMS

关系型数据库面临的挑战
明地扩展节点。典型的NoSQL数据库以key-values的形式存 储数据,具有模式自由的特点。 2.1 key-values key-values是指一个键名对应一个键值,可以通过键名 访问键值。例如一条员工的记录信息如图1和图2所示,有 Name、 Age、 Profession等 键 名 , 各 个 键 名 对 应 着 一 个 键 值。
employeeA { “tom”, Name : Age:13, “tearcher ”, Profession : Birth: {year : 1990, month: 9:day:10}, “myemail@https://www.doczj.com/doc/9d16579153.html,” Email : }
1.1 数据库高并发读写需求 在Web2.0时代,网站通常要根据用户的个性化定制实 时生成页面,例如现在流行的SNS网站,微博网站等。网 站几乎要实时地为用户提供信息。该类应用对数据库提出 了很高的并发负载要求,传统的RDBMS面临很大的挑战。 1.2 海量数据的高效存储需求 在Web2.0时代,网站信息的提供者由传统的网站信息 管理员变成了普通的用户,用户提供的信息是海量的。类 似facebook,qq空间等SNS类型的网站,可能每天都会产 生千万级的数据。如果在RDBMS里的一张存有亿级记录的 数据表里作SQL查询,耗费时间巨大。虽然可通过分库、 分表等方法切分数据,部分地解决查询问题,但也带来了 诸如加重程序开发的复杂度和数据备份以及数据库扩容的 复杂度等问题。 1.3 数据库高扩展性和高可用性需求 在云计算时代,一项很重要的任务就是存储交由云 端,云计算供应商需面对存储海量数据的挑战。如果用传 统的RDBMS来保证存储的海量性和高可用性,云计算供应 商必须花费巨额的资金去购置高性能高可靠性的机器。同 时,RDBMS的无缝、不宕机扩容实现难度也大大增加。 2 NoSQL介绍 NoSQL数据库指那些非关系性的、定义不是很明确的
employeeB { Name “ : tom”, Age:13, Profession“ :tearcher” , Birth : {year : 1990, month: 9: day: 10}, }
图1
图2
2.2 模式自由 模式自由是指使用数据库前不再预先定义数据模型。在 传统的RDBMS中,如果想要存储某一员工的信息,必须先定 义一张员工表,表里有各项与员工相关的字段。如果日后需 求有变更,要增加员工的信息就必须去修改原先定义的数据 模型。模式自由的数据库没有预先定义要存储的数据的数据 模型。仍以员工信息为例,并不是所有员工的记录信息里都 有name,age,profession,email这些key,有可能员工B的
数据存储仓库。NoSQL数据库不再使用关系模型的概念, 放弃了SQL数据库操作语句。NoSQL数据库克服了RDBMS的 缺点,可部署在廉价的硬件之上,支持分布式存储,能透
收稿日期:2010-11-20 修回日期:2010-12-17
作者简介:卢冬海(1986-),男,汉族,浙江三门籍,研究生,研究方向为嵌入式系统。
15

NoSQL数据库总结

数据库 一、N oSQL数据 简介 NoSQL(NoSQL = Not Only SQL ),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 优点 可以处理超大量的数据 可以运行在便宜的PC服务器集群上 打破了性能的瓶颈 NoSQL的支持者称,通过NoSQL架构可以省去将Web或Java应用和数据转换成SQL友好格式的时间,执行速度变得更快。 “SQL并非适用于所有的程序代码,” 对于那些繁重的重复操作的数据,SQL 值得花钱。但是当数据库结构非常简单时,SQL可能没有太大用处。 没有过多的操作 Bootstrap支持 因为NoSQL项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。 缺点 没有正式的官方支持,万一出了差错会是可怕的 nosql并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验 二、N oSQL数据库开源软件 1.MongoDB: 简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson 格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

典型的十大NOSQL数据库

分布式系统 论文题目:NOSQL数据库 专业 班级 学生 学号 指导教师 2014 年秋季学期

目录 1.引言 (1) 2. NoSQL数据库类型 (1) 2.1按照NoSQL存储模型和特点分类 (1) 2.2根据CAP原理分类 (2) 3.NoSQL架构 (5) 3.1 纯NoSQL架构 (5) 3.2 以NoSQL作为数据源的架构 (6) 4.典型NoSQL数据库概述 (8) 4.1 HBase简介 (8) 4.2 Redis简介 (9) 4.3 MongoDB简介 (10) 4.4 Cassandra简介 (11) 4.5 CouchDB简介 (11) 5.总结 (12)

NoSQL数据库 1.引言 随着互联网Web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,其相关产品的发展也非常迅速。传统的关系数据库在应付Web2.0网站时暴露了很多难以克服的问题,主要有包括:不能满足对数据库高并发读写的需求;不能满足对海量数据的高效率存储和访问的需求;不能满足对数据库的高可扩展性和高可用性的需求。另外,许多Web2.0网站并不需要关系数据库提供的一些服务,诸如:数据库事务一致性、数据库的写实时性和读实时性、对复杂的SQL查询等。因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生。 NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库. 无法比拟的性能优势。该术语在 2009 年初得到了广泛认同。 2. NoSQL数据库类型 2.1按照NoSQL存储模型和特点分类 按照NoSQL存储模型和特点分类形式如表1所示,表1 参照存储模型的NoSQL分类中根据NoSQL数据库的存储原理,列出了六大类主要的NoSQL数据库分类,分别是:列存储、文档型存储、Key-value存储、图存储、对象存储和xml存储。表1中仅列出了一些比较常见的NoSQL数据库,在所有的这些类型的NoSQL数据库中,当前应用较多的就是前三种类型:列存储类型、文档存储、key-value存储类型。特别需要说明的是,图数据库也可称为面向/基于图的数据库,对应的英文是Graph database。图数据库的基本含义是以“图”这种数据结构存储和查询数据,不是存储图片的数据库。

NoSQL数据库的特点与应用场景

NoSQL数据库的特点与应用场景 MongoDB、HBase、Redis

目录 1.NoSQL的四大种类 (3) 2.MongoDB (4) 3.HBase (6) 4.Redis (8)

1.NoSQL的四大种类 NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务,这时NoSQL凭借易扩展、大数据量和高性能以及灵活的数据模型成功的在数据库领域站稳了脚跟。 目前大家基本认同将NoSQL数据库分为四大类:键值存储数据库,文档型数据库,列存储数据库和图形数据库,其中每一种类型的数据库都能够解决关系型数据不能解决的问题。在实际应用中,NoSQL数据库的分类界限其实没有那么明显,往往会是多种类型的组合体。 主流nosql的详解:MongoDB、Hbase、Redis

2.MongoDB MongoDB 是一个高性能,开源,无模式的文档型数据库,开发语言是C++。它在许多场景下可用于替代统的关系型数据库或键/值存储方式。 1.MongoDB特点 ?所用语言:C++ ?特点:保留了SQL一些友好的特性(查询,索引)。 ?使用许可:AGPL(发起者:Apache) ?协议:Custom, binary(BSON) ?Master/slave复制(支持自动错误恢复,使用sets 复制) ?内建分片机制 ?支持javascript表达式查询 ?可在服务器端执行任意的javascript函数

?update-in-place支持比CouchDB更好 ?在数据存储时采用内存到文件映射 ?对性能的关注超过对功能的要求 ?建议最好打开日志功能(参数--journal) ?在32位操作系统上,数据库大小限制在约2.5Gb ?空数据库大约占192Mb ?采用GridFS存储大数据或元数据(不是真正的文件系统) 2.MongoDB优点: 1)更高的写负载,MongoDB拥有更高的插入速度。 2)处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。 3)高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点(数据中心)故障转移。 4)快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度。 5)非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速。 3.MongoDB缺点: 1)不支持事务。

8种Nosql数据库系统对比

8种Nosql数据库系统对比 2013/05/01 ·工具与资源, 开发· 128.3K 阅读· 7 评论· NoSQL, 数据库 分享到:240 ?Android-打造万能适配器 ?Android猜歌游戏是这样炼成的 ?Android必学-AsyncTask基础 ?Android高级Root技术原理解析 本文由伯乐在线 - 唐尤华翻译。未经许可,禁止转载! 英文出处:Kristóf Kovács。欢迎加入翻译组。 导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型N oSQL数据库的文章。 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破。这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举。 但是NoSQL数据库之间的不同,远超过两SQL数据库之间的差别。这意味着软件架构师更应该在项目开始时就选择好一个适合的NoSQL数据库。针对这种情况,这里对Cassan dra、Mongodb、CouchDB、Redis、Riak、Membase、Neo4j和HBase进行了比较:(编注1:NoSQL:是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而N oSQL致力于改变这一现状。目前Google的BigTable 和Amazon 的Dynamo使用的就是NoSQL型数据库。参见NoSQL词条。)

1. CouchDB ?所用语言:Erlang ?特点:DB一致性,易于使用 ?使用许可:Apache ?协议:HTTP/REST ?双向数据复制, ?持续进行或临时处理, ?处理时带冲突检查, ?因此,采用的是master-master复制(见编注2)?MVCC –写操作不阻塞读操作 ?可保存文件之前的版本 ?Crash-only(可靠的)设计 ?需要不时地进行数据压缩 ?视图:嵌入式映射/减少 ?格式化视图:列表显示 ?支持进行服务器端文档验证 ?支持认证 ?根据变化实时更新

NOSQL数据库大比拼

CouchDB Written in: Erlang 关键点Main point: DB consistency一致性, ease of use易用 License: Apache Protocol: HTTP/REST Bi-directional (!) replication, 双向复制 continuous or ad-hoc, with conflict detection,冲突检测 thus, master-master replication. (!)主主复制 MVCC - write operations do not block reads 写操作不会阻塞读操作Previous versions of documents are available文本式 Crash-only (reliable) design 可靠性设计 Needs compacting from time to time Views: embedded map/reduce 内部嵌入Hadoop之类map/reduce算法Formatting views: lists & shows Server-side document validation possible Authentication possible Real-time updates via _changes (!)实时更新 Attachment handling thus, CouchApps (standalone js apps) jQuery library included 适合: 累计堆积计算, 偶尔改变数据, 预先定义的查询. 非常注重版本控制的场合. 举例:: CRM, CMS系统. 主-主复制是其特别亮点,可以易于多个站点部署。 Redis Written in: C/C++ 关键点Main point:超快Blazing fast License: BSD Protocol: Telnet-like Disk-backed in-memory database, 磁盘后备,内存数据库。 but since 2.0, it can swap to disk.但是从2.0开始直接交换到磁盘。Master-slave replication主-从复制 Simple keys and values,简单的key-value形式

SQL与NoSQL数据库入门基础知识详解

SQL与NoSQL数据库入门基础知识详解 这几年的大数据热潮带动了一激活了一大批hadoop学习爱好者。有自学hadoop的,有报名培训班学习的。所有接触过hadoop的人都知道,单独搭建hadoop里每个组建都需要运行环境、修改配置文件测试等过程。对于我们这些入门级新手来说简直每个都是坑。国内的发行版hadoop那么多,似乎都没有来填这样的坑?不知道是没法解决,还是没有想到? 安装运行环境这样的坑,那些做国产大数据底层开发的,如果不能解决这个问题的话,我觉得不是一个合格的大数据底层开发机构。不过比较幸运的是,三月的时候申请拿到了一个DKHadoop的三节点发行版,大快开源的发行版hadoop。这个国产发行版就把各种常用的组建比如:HDFS,Hbase,Storm,Flume,Kafka,Mahout,Es等集成到了一起,终于不需要绞尽脑汁去折腾底层平台的搭建与配置了,简单的完成安装即可。这对于hadoop初学者来说,可谓是福音了。 扯的稍微多了点,后面在给家分享DKHadoop的安装以及使用,今天想给大家分享的是大数据基础内容中的数据库:SQL与NOSQL。理解这两种数据,只需要搞清楚二者的概念以

及有何不同即可。 二者概念: 1、SQL数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。 2、NoSQL泛指非关系型数据库。主要代表:MongoDB,Redis,CouchDB。 二者区别: SQL数据与NOSQL数据的区别其实还是比较大的,总结起来基本可以从以下几个方面进行对比分析: (1)使用场景:SQL 是数字,它最适合明确的定义,精确规范的独立项目。典型的使用案例是在线商城和银行系统; NoSQL 是模拟,它最适合无固定要求的组织数据。典型的使用案例是社交网络,客户管理和网络分析系统。 (2)存储方式:SQL数据存在特定结构的表中,SQL通常以数据库表形式存储数据。举个例子,存个学生借书数据: NoSQL存储方式比较灵活,存储方式可以是JSON文档、哈希表或者其他方式。比如使用类JSON文件存储上表中熊大的借阅数据: (3)SQL中如果需要增加外部关联数据的话,规范化做法是在原表中增加一个外键关联外部数据表。例如需要在借阅表中增加审核人信息,先建立一个审核人表:

相关主题
文本预览
相关文档 最新文档