8种Nosql数据库系统相比

比如说:银行业,金融业(即便对于金融交易不是必须的,但这个产业对数据库的要求会比它们更大)写比读更快,所以一个理所当然的性状就是实时数据解析

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

 

例如:你本打算利用 MySQL或
PostgreSQL,但因为它们自身自带的预定义栏让你害怕。

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

(编注1:NoSQL:是一项崭新的数据库革命性运动,NoSQL的协助者们发起使用非关系型的数额存储。现今的微处理器体系布局在数据存储方面要求
具 备庞大的水平扩 展性,而NoSQL致力于改变这一现状。目前谷歌的 BigTable
和亚马逊 的Dynamo使用的就是NoSQL型数据库。
参见NoSQL词条。)

一级应用场景:适用于需要低顺延数据访问,高并发补助以及高可用性的应用程序

8. HBase

(编注2:master-master复制:是一种数据库同步方法,允许数据在一组总计机之间共享数据,并且可以经过小组中擅自成员在组内举办数据更新。)

一级应用场景:适用于需要动态查询协助;需要接纳索引而不是
map/reduce效用;需要对大数据库有性能要求;需要利用
CouchDB但因为数量变动太频繁而占满内存的应用程序。

  • 所用语言: Java
  • 特征:对大型表格和 Dynamo援助得最好
  • 利用许可: Apache
  • 协议: Custom, binary (节约型)
  • 可调试的分发及复制(N, R, W)
  • 支撑以某个范围的键值通过列查询
  • 仿佛大表格的效果:列,某个特性的列集合
  • 写操作比读操作更快
  • 按照 Apache分布式平台尽可能地 Map/reduce
  • 自身肯定对 Cassandra(Cassandra)有偏见,一部分是因为它本身的交汇和复杂,也因为
    Java的题目(配置,出现万分,等等)

 

编注4:Thrift
是一种接口定义语言,为多种其余语言提供定义和创办服务,由非死不可开发并开源

 

  • 所用语言: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监控

4. Riak

1. CouchDB

  • 所用语言:C++
  • 特点:保留了SQL一些和好的特性(查询,索引)。
  • 运用许可: AGPL(发起者: Apache)
  • 协议: Custom, binary( BSON)
  • Master/slave复制(补助电动错误復苏,使用 sets 复制)
  • 内建分片机制
  • 支撑 javascript表明式查询
  • 可在劳动器端执行任意的 javascript函数
  • update-in-place支持比CouchDB更好
  • 在数量存储时使用内存到文件映射
  • 对性能的关心领先对功用的要求
  • 指出最好打开日志效能(参数 –journal)
  • 在32位操作系统上,数据库大小限制在约2.5Gb
  • 空数据库大约占 192Mb
  • 使用 GridFS存储大数量或元数据(不是真的的文件系统)

至上应用场景:适用于想行使类似
Cassandra(类似Dynamo)数据库但无能为力处理
bloat及复杂性的事态。适用于你打算做多站点复制,但又需要对单个站点的增添性,可用性及出错处理有要求的状态。

 

譬如说:销售数额收集,工厂控制连串;对宕机时间有严酷要求;可以视作易于更新的
web服务器使用。

 

  • 所用语言: 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的任性访问性能

 

(配合 ghshephard使用)

7. Cassandra

例如: CRM、CMS系统。 master-master复制对于多站点布局是相当有效的。

3. MongoDB

NoSQL,本来,所有的序列都不只拥有地点列出的这多少个特色。这里自己单独遵照自己的观点列出有些自身觉得的关键特点。与此同时,技术发展是神速的,所以上述的内容自然需要不断更新。我会尽我所能地改进这些列表。

  • 所用语言: Erlang
  • 特点:DB一致性,易于使用
  • 利用许可: Apache
  • 协议: HTTP/REST
  • 双向数据复制,
  • 穿梭举办或临时处理,
  • 处理时带争辩检查,
  • 于是,采用的是master-master复制(见编注2)
  • MVCC – 写操作不打断读操作
  • 可保留文件在此之前的本子
  • Crash-only(可靠的)设计
  • 内需平日地拓展数据压缩
  • 视图:嵌入式 映射/减少
  • 格式化视图:列表展现
  • 协理开展劳动器端文档验证
  • 支撑认证
  • 按照变化实时更新
  • 支撑附件处理
  • 就此, CouchApps(独立的 js应用程序)
  • 需要 jQuery程序库
  • 所用语言:C/C++
  • 特点:运行相当快
  • 拔取许可: BSD
  • 协议:类 Telnet
  • 有硬盘存储协理的内存数据库,
  • 但自2.0本子之后可以将数据交流来硬盘(注意,
    2.4将来版本不协理该特性!)
  • Master-slave复制(见编注3)
  • 尽管接纳简便易行多少或以键值索引的哈希表,但也辅助复杂操作,例如
    ZREVRANGEBYSCORE。
  • INCR & co (适合统计极限值或总括数据)
  • 协助 sets(同时也匡助 union/diff/inter)
  • 辅助列表(同时也支撑队列;阻塞式 pop操作)
  • 扶助哈希表(带有六个域的目的)
  • 辅助排序 sets(高得分表,适用于范围查询)
  • Redis扶助工作
  • 支撑将数据设置成过期数据(类似急速缓冲区设计)
  • Pub/Sub允许用户实现信息机制

 

5. Membase

(编注3:Master-slave复制:假使同样时刻只有一台服务器处理所有的复制请求,那被称之为
Master-slave复制,日常接纳在需要提供高可用性的服务器集群。)

 

但是NoSQL数据库之间的不比,远超过两
SQL数据库之间的差异。这代表软件架构师更应当在类型开始时就挑选好一个合乎的
NoSQL数据库。针对这种气象,这里对
CassandraMongodbCouchDBRedis
RiakMembaseNeo4j 和 HBase 进行了相比较:

6. Neo4j

虽然如此SQL数据库是分外管用的工具,但经历了15年的一支独秀之后垄断即将被打破。这只是岁月问题:被迫接纳关周详据库,但最终发现无法适应需求的景色不胜枚举。

例如:股票价格、数据解析、实时数据搜集、实时报道。

 

极品应用场景:适用于数据变动快且数据库大小可碰着(适合内存容量)的应用程序。

  • 所用语言: Java
  • 特征:基于关系的图形数据库
  • 动用许可: GPL,其中一些特征应用 AGPL/商业特许
  • 协商: HTTP/REST(或嵌入在 Java中)
  • 可单独运用或嵌入到 Java应用程序
  • 图形的节点和边都可以蕴涵元数据
  • 很好的自带web管理职能
  • 拔取多种算法帮忙路径搜索
  • 应用键值和涉及展开索引
  • 为读操作举办优化
  • 支撑工作(用 Java api)
  • 行使 Gremlin图形遍历语言
  • 支持 Groovy脚本
  • 匡助在线备份,高级督察及高可靠性帮助接纳 AGPL/商业特许

 

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

一级应用场景:适用于图形一类数据。这是
Neo4j与另外nosql数据库的最彰着区别

 

顶尖应用场景:适用于偏好BigTable:)并且需要对大数目开展任意、实时访问的场子。

 

至上应用场景:当使用写操作多过读操作(记录日志)假诺每个系统组建都不可能不用
Java编写(没有人因为选取 Apache的软件被解聘)

 

导读:Kristóf Kovács
是一位软件架构师和咨询顾问,他近日发布了一片相比较各类类型NoSQL数据库的随笔。

 

比如说: 脸书音讯数据库(更多通用的用例即将面世)

 

  • 所用语言: Erlang和C
  • 特性:兼容 Memcache,但同时负有持久化和支撑集群
  • 运用许可: Apache 2.0
  • 磋商:分布式缓存及增添
  • 非常快速(200k+/秒),通过键值索引数据
  • 可持久化存储到硬盘
  • 所有节点都是绝无仅有的( master-master复制)
  • 在内存中平等辅助类似分布式缓存的缓存单元
  • 写多少时经过去除重复数据来压缩 IO
  • 提供异常好的集群管理 web界面
  • 更新软件时软无需终止数据库服务
  • 协助连接池和多路复用的总是代理

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

2. Redis

网站地图xml地图