8种Nosql数据库系统对比

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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(可靠的)设计

∙需要不时地进行数据压缩

∙视图:嵌入式映射/减少

∙格式化视图:列表显示

∙支持进行服务器端文档验证

∙支持认证

∙根据变化实时更新

∙支持附件处理

∙因此,CouchApps(独立的js应用程序)

∙需要jQuery程序库

最佳应用场景:适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。

例如: CRM、CMS系统。master-master复制对于多站点部署是非常有用的。

(编注2:master-master复制:是一种数据库同步方法,允许数据在一组计算机之间共享数据,并且可以通过小组中任意成员在组内进行数据更新。)

2. Redis

∙所用语言:C/C++

∙特点:运行异常快

∙使用许可:BSD

∙协议:类Telnet

∙有硬盘存储支持的内存数据库,

∙但自2.0版本以后可以将数据交换到硬盘(注意,2.4以后版本不支持该特性!)∙Master-slave复制(见编注3)

∙虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如ZREVRANGE BYSCORE。

∙INCR & co (适合计算极限值或统计数据)

∙支持sets(同时也支持union/diff/inter)

∙支持列表(同时也支持队列;阻塞式pop操作)

∙支持哈希表(带有多个域的对象)

∙支持排序sets(高得分表,适用于范围查询)

∙Redis支持事务

∙支持将数据设置成过期数据(类似快速缓冲区设计)

∙Pub/Sub允许用户实现消息机制

最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。

例如:股票价格、数据分析、实时数据搜集、实时通讯。

(编注3:Master-slave复制:如果同一时刻只有一台服务器处理所有的复制请求,这被称为Master-slave复制,通常应用在需要提供高可用性的服务器集群。)

3. MongoDB

∙所用语言:C++

∙特点:保留了SQL一些友好的特性(查询,索引)。

∙使用许可:AGPL(发起者:Apache)

∙协议:Custom, binary(BSON)

∙Master/slave复制(支持自动错误恢复,使用sets 复制)

∙内建分片机制

∙支持javascript表达式查询

∙可在服务器端执行任意的javascript函数

∙update-in-place支持比CouchDB更好

∙在数据存储时采用内存到文件映射

∙对性能的关注超过对功能的要求

∙建议最好打开日志功能(参数–journal)

∙在32位操作系统上,数据库大小限制在约2.5Gb

∙空数据库大约占192Mb

∙采用GridFS存储大数据或元数据(不是真正的文件系统)

最佳应用场景:适用于需要动态查询支持;需要使用索引而不是map/reduce功能;需要对大数据库有性能要求;需要使用CouchDB但因为数据改变太频繁而占满内存的应用程序。

例如:你本打算采用MySQL或PostgreSQL,但因为它们本身自带的预定义栏让你望而却步。

4. Riak

∙所用语言:Erlang和C,以及一些Javascript

∙特点:具备容错能力

∙使用许可:Apache

∙协议:HTTP/REST或者custom binary

∙可调节的分发及复制(N, R, W)

∙用JavaScript or Erlang在操作前或操作后进行验证和安全支持。

∙使用JavaScript或Erlang进行Map/reduce

∙连接及连接遍历:可作为图形数据库使用

∙索引:输入元数据进行搜索(1.0版本即将支持)

∙大数据对象支持(Luwak)

∙提供“开源”和“企业”两个版本

∙全文本搜索,索引,通过Riak搜索服务器查询(beta版)

∙支持Masterless多站点复制及商业许可的SNMP监控

相关文档
最新文档