导读:Kristóf Kovács
是千篇一律号软件架构师与提问顾问,他不久前布告了同样切片比较各类类型NoSQL数据库的稿子。

即使SQL数据库是充裕有效之家伙,但更了15年的一样开销独秀之后把即将被打破。那唯有是时空问题:被迫采用关周详据库,但说到底发现未可知适应需求的气象不胜枚举。

但NoSQL数据库里的异,远超越两
SQL数据库中的差距。这意味软件架构师更应有于类型初步通常固然挑选好一个相符之
NoSQL数据库。针对这种状态,这里对
CassandraMongodbCouchDBRedis
RiakMembaseNeo4j 和 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程序库

 

顶尖应用场景:适用于数据变动于少,执行预定义查询,举办数量总括的应用程序。适用于要提供数据版本辅助的应用程序。

例如: CRM、CMS系统。 master-master复制对于多站点布局是很管用之。

(编注2:master-master复制:是同等栽数据库同步方法,允许数据在同等组统计机之间共享数据,并且可透过小组被自由成员在组内举办数据更新。)

 

2. Redis

  • 所用语言:C/C++
  • 特性:运行很快
  • 应用许可: BSD
  • 协议:类 Telnet
  • 暴发硬盘存储辅助之内存数据库,
  • 可由2.0版后可将数据交流来硬盘(注意,
    2.4从此版本不帮助该特性!)
  • Master-slave复制(见编注3)
  • 即便如此用简便易行多少要因键值索引的哈希表,但为扶助复杂操作,例如
    ZREVRANGEBYSCORE。
  • 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监控

 

一级应用场景:适用于想利用类似
Cassandra(Cassandra)(类似Dynamo)数据库可无能为力处理
bloat及复杂性的气象。适用于公打算做多站点复制,但以得针对单个站点的扩大性,可用性和出错处理暴发求的情状。

如:销售数量收集,工厂控制系列;对宕机时间有严峻要求;可以用作爱更新的
web服务器使用。

5. Membase

  • 所用语言: Erlang和C
  • 特性:包容 Memcache,但以所有持久化和支撑集群
  • 使许可: Apache 2.0
  • 协商:分布式缓存及扩张
  • 杀急迅(200k+/秒),通过键值索引数据
  • 而持久化存储到硬盘
  • 持有节点都是绝无仅有的( master-master复制)
  • 当内存中一致支撑类似分布式缓存的復苏存单元
  • 描绘多少平时通过去除重复数据来压缩 IO
  • 供异常好的集群管理 web界面
  • 立异软件时软无需终止数据库服务
  • 支撑连接池和多路复用的连年代理

 

至上应用场景:适用于要低顺延数据看,高并发帮忙与高可用性的应用程序

诸如:低顺延数据访问比如为广告也目的的运,高并发的 web
应用比如网络游戏(例如 Zynga)

 

6. Neo4j

  • 所用言语: Java
  • 特征:基于关系之图片数据库
  • 下许可: GPL,其中一些表征应用 AGPL/商业特许
  • 合计: HTTP/REST(或放在 Java中)
  • 不过独自使用要放到 Java应用程序
  • 图形的节点和限还可以够蕴涵元数据
  • 可怜好的自带web管理职能
  • 以多算法辅助路径搜索
  • 动键值和干举办索引
  • 也念操作举办优化
  • 匡助工作(用 Java api)
  • 应用 Gremlin图形遍历语言
  • 支持 Groovy脚本
  • 支撑在线备份,高级督察及高可靠性协助接纳 AGPL/商业特许

jQuery, 

极品应用场景:适用于图形一接近数据。这是
Neo4j与其它nosql数据库的无比引人注目区别

像:社会关系,公共交通网络,地图及网络拓谱

 

7. Cassandra

  • 所用言语: Java
  • 特征:对大型表格和 Dynamo襄助得太好
  • 采取许可: Apache
  • 协议: Custom, binary (节约型)
  • 但是调试的分发及复制(N, R, W)
  • 支撑以有范围之键值通过列查询
  • 类似大表的效应:列,某个特性的排列集合
  • 描绘操作比读操作更快
  • 据悉 Apache分布式平台尽可能地 Map/reduce
  • 自己认可对 卡Sandra(Cassandra)有偏见,一部分凡是为她自己的叠和错综复杂,也坐
    Java的题目(配置,出现非凡,等等)

 

一级应用场景:当使用写操作多了读操作(记录日志)假设每个系统组建还不可能不用
Java编写(没有丁以选拔 Apache的软件被解雇)

像:银行业,金融业(尽管对金融交易不是必的,但那个产业对数据库的要求碰面比它又特别)写于读更快,所以一个本的性状就是是实时数据解析

 

8. HBase

(配合 ghshephard使用)

  • 所用语言: Java
  • 特点:匡助数十亿行X上百万排列
  • 动许可: Apache
  • 协议:HTTP/REST (支持
    Thrift,见编注4)
  • 每当 BigTable事后建模
  • 选取分布式架构 Map/reduce
  • 本着实时查询举行优化
  • 高性能 Thrift网关
  • 透过当server端扫描与过滤实现对查询操作预判
  • 支持 XML, Protobuf, 和binary的HTTP
  • Cascading, hive, and pig source and sink modules
  • 基于 Jruby( JIRB)的shell
  • 针对安排改变以及比小的升级换代还会见再回滚
  • 勿会师冒出单点故障
  • 堪比MySQL的任性走访性能

 

极品应用场景:适用于偏好BigTable:)并且用对充分数据开展任意、实时访问的场面。

譬如: 非死不可信数据库(更多通用的用例即将面世)

编注4:Thrift
是一律栽接口定义语言,为多旁语言提供定义和成立服务,出于非死不可开发并起先源

本,所有的系统还不只是具备地方列有之那些特色。这里自己只是因自己之看法列有片自己以为的要紧特点。与此同时,技术提升是连忙的,所以上述的情自然用不断更新。我会尽我所能地翻新是列表。

转载至:8种植Nosql数据库系统相比

相关文章

网站地图xml地图