主流的NOSQL介绍

数据库类型

  

开发语言

特性

应用场景

  

CouchDB

  

Erlang

特点:DB一致性,易于使用

  

使用许可: Apache

  

协议: HTTP/REST

  

双向数据复制

  

持续进行或临时处理

  

处理时带冲突检查

  

因此,采用的是master-master复制(见编注2)

  

MVCC - 写操作不阻塞读操作

  

可保存文件之前的版本

  

Crash-only(可靠的)设计

  

需要不时地进行数据压缩

  

视图:嵌入式 映射/减少

  

格式化视图:列表显示

  

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

  

支持认证

  

根据变化实时更新

  

支持附件处理

  

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

  

需要 jQuery程序库

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

  

  

CMS系统,数据统计汇总

  

Redis

  

C

特点:运行异常快

  

使用许可: BSD

  

协议:类 Telnet

  

1.         读写操作异常快

  

2.         较复杂的数据格式 sets, 链表,hash

  

3.         事务支持

  

4.         消息订阅 pub/sub

  

5.         主从同步复制

  

6.         硬盘回写

  

7.         第三方sharding支持

  

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

  
  

股票价格、数据分析、实时数据搜集、实时通讯

  

  

配置下发,全局实时数据

  

Mongodb

  

C++

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

  

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

  

协议: Custom, binary( BSON)

  

1.         支持javascript表达式

  

2.         硬盘回写

  

3.         主从复制和集群功能

  

4.         内建分片机制

  

5.         较快读写性能

  

6.         大格式数据支持

  

7.空数据库大约占 192Mb

  

8.  事务支持

1.大数据量查询和汇总

  

2.分布式部署,和水平扩展

  

  

数据统计汇总

  

业务数据库,替代Mysql

  

  

Neo4j

  

Java

特点:基于关系的图形数据库

  

使用许可: GPL,其中一些特性使用 AGPL/商业许可

  

协议: HTTP/REST(或嵌入在 Java)

  

1.可独立使用或嵌入到 Java应用程序

  

2.图形的节点和边都可以带有元数据

  

3.很好的自带web管理功能

  

4.使用多种算法支持路径搜索

  

5.使用键值和关系进行索引

  

6.支持事务( Java api)

  

7.使用 Gremlin图形遍历语言

  

8.支持 Groovy脚本

  

9.支持在线备份,高级监控及高可靠性支持使用

适用于图形一类数据。这是 Neo4j与其他nosql数据库的最显著区别

  

  

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

  

HBase

  

Java

特点:支持数十亿行X上百万列

  

使用许可: Apache

  

协议:HTTP/REST (支持 Thrift,见编注4)

  

1.         采用分布式架构 Map/reduce

  

2.         对实时查询进行优化

  

3.         高性能 Thrift网关

  

4.         通过在server端扫描及过滤实现对查询操作预判

  

5.         支持 XML, Protobuf, 和binary的HTTP

  

6.         对配置改变和较小的升级都会重新回滚

  

7.         不会出现单点故障

  

适用于偏好BigTable并且需要对大数据进行随机、实时访问的场合

  

  

报表,数据挖掘

  

Memcache

  

C

1.    快速

  

2.    简单

  

3.    分布式支持和热扩展

KV数据库

  

数据库辅助缓


你可能感兴趣的:(主流的NOSQL介绍)