常见的几个NO_SQL数据库

来源:互联网 发布:绿色上网软件 编辑:程序博客网 时间:2024/06/03 13:43
各个NO_SQL数据库的比较  CouchDB, Cassandra, Mongodb,Redis, Riak, Membase, Neo4j and HBase: 
1.CouchDB的(V1.1.0)
实现语言:Erlang
要点:DB一致性,易用性
许可证:apache
协议:HTTP / REST
双向的复制,
连续或即席
带有冲突检测,
还有,master-master的复制。 
MVCC(多版本一致性控制)- 写操作不阻止读
文件的以前版本
仅崩溃(可靠)的设计:Crash-only (reliable) design
需要不停的压缩
视图:内嵌的map/reduce
格式化视图:lists & shows
服务器端的文档验证
身份验证
实时更新通过 _changes
附件处理
因此,CouchApps(JS独立应用程序)
包括jQuery的库


最适用于:累积,偶尔变化的数据,预先定义的查询要运行。多用在版本很重要的地方
例如:客户关系管理(CRM),CMS系统。master-master replication是一个特别有趣的的的功能
,便于多站点部署。


2. redis(v2.4)
设计语言: c/c++
优点: 速度非常快
许可证: BSD的
协议:Telnet-like
带有磁盘备份的内存数据库
目前还没有磁盘交换
master-slave replication 
简单的值或者 hash表
NCR & co (对统计和速率限制很有好处)
sets
lists
hash tables
sorted sets
事务的支持 
可以对值进行过期时间设置
发布和订阅消息
最适用于:对于迅速变化的一个可预见的数据库的大小(应该适合大多在内存)的数据。
例如:股票价格。分析。实时数据采集。实时通信。
3. MongoDB
实现语言:c++
优点: 保留了一些友好的SQL属性,比如 查询和索引
许可证:AGPL (Drivers: Apache) 
协议:自定义,二进制(BSON)
Master/slave replication 主从复制
sharding build-in 内置分片
查询javascript的表达式
服务器端执行任意的JavaScript功能
比CouchDB有更好的update-in-place
使用内存映射文件的数据存储
很好的性能
32位的系统 内存限制到2.5G
空数据库占内存高达192M
GridFS存储大数据和其元数据(不是再真正的FS)
最适用于:如果您需要动态查询。如果你喜欢定义索引,而不是Map / Reduce的功能。
如果你需要一个大的DB的性能良好。如果你想CouchDB的,但您的数据变化太大,填补了磁盘。
例如:对于大多数事情,你会做与MySQL或PostgreSQL,但预定义的列的话 还是需要mongoDB。
4.Cassandra
实现语言:java
优点:bigTable的使用
许可证: apache
协议:用户自定义,二进制
Tunable trade-offs for distribution and replication (N, R, W) 
Querying by column, range of keys 
BigTable-like features: columns, column families 
Writes are much faster than reads (!) 
Map/reduce possible with Apache Hadoop 
I admit being a bit biased against it, because of the bloat and complexity it has partly 
ecause of Java (configuration, seeing exceptions, etc) 
Best used: When you write more than you read (logging). If every component of the system 
must be in Java. ("No one gets fired for choosing Apache's stuff.") 
For example: Banking, financial industry (though not necessarily for financial transactions,
 but these industries are much bigger than that.) Writes are faster than reads, so one natural
 niche is real time data analysis.

5.HBase
(With the help of ghshephard) 
Written in: Java 
Main point: Billions of rows X millions of columns 
License: Apache 
Protocol: HTTP/REST (also Thrift) 
Modeled after BigTable 
Map/reduce with Hadoop 
Query predicate push down via server side scan and get filters 
Optimizations for real time queries 
A high performance Thrift gateway 
HTTP supports XML, Protobuf, and binary 
Cascading, hive, and pig source and sink modules 
Jruby-based (JIRB) shell 
No single point of failure 
Rolling restart for configuration changes and minor upgrades 
Random access performance is like MySQL 
Best used: If you're in love with BigTable. :) And when you need random, realtime read/write access to your Big Data. 

For example: Facebook Messaging Database (more general example coming soon) 


注这些只是一些基本的指标,其实每个数据库都还有很多特性,具体使用哪个还是需要具体分析的。



原创粉丝点击