以下列表对各类Key-Value 的NoSQL数据库从 备份backup 到 Language API 各个方面进行了比较:
Katana DB | Cassandra | MongoDB | CouchDB | HBase | Voldemort | Redis | Tokyo /Kyoto Cabinet | Riak | RavenDB | CitrusLeaf | BigData | |
License | TDB | Apache 2.0 | AGPLv3 | Apache 2.0 | Apache 2.0 | Apache 2.0 | BSD | GPLv3 | Apache 2.0 | AGPLv3 | Proprietary | GPLv2 |
Price | TDB | Free | Free, Commercial | Free | Free | Free | Free | Free or $12K | Free | Free or $1k/dev/yr | Per TB per month per DataCenter | Free, Commercial |
Support | TDB | Riptano, others, Community | 10gen, Community | CouchBase, Cloudant, Community | Cloudera, Community | Community, LinkedIn* | Community, VMWare* | Community, FallLabs | Community, Basho Tech, Akamai* | Hibernating Rhinos, Community | CitrusLeaf | Community, 3rd Parties |
Data model | Key-value with sub-keys | Columnar + Indexes | Documents + Indices (JSON), Cappable | Documents + Indices, Views | Columnar, ?Indexing? |
Key-value, no sub keys | Key-value, support for sets, lists, hash maps | Key-value, DBM successor (like BDB) | Key-value, Dyanmo-based | Documents + Indices (JSON), Views | Key-value | Graph |
Partitioning | Static Hash in R1, Split nodes evenly | Dynamic Hash, Split busiest node | Sorted Shards with UDSpec, Chunks (200MB) move around | Not supported | Sorted Regions/Shards, automatic Region splits when reaches size X | Consistent Hash, migratable partitions planned | Not supported, although some clients implement consistent hashing | Not supported | Consistent Hash, Shards | UD Key range Shards with round robin | Clustering | |
Language APIs | Java | Multiple, Thrift, RPC | C, C#, JavaScript, Python, PHP, Ruby, Java, C++, Perl, many 3rd party | REST/JSON, many 3rd party | Java, REST, Thrift | Java, Python, C++ | Telnet style, C, C++, C#, Java, Perl, PHP, Python, R, Ruby, Scala, others | C++, C, Java, Python, Ruby, Perl, and Lua | MapReduce, Python, JavaScript, Erlang, Java, PHP, Ruby | C#, HTTP | C, C#, Java, Python, Ruby, PHP | |
Replication | Single Master with configurable durability | Multi-Master with vector clocks | Single Master, configurable durability with early visibility | Bi-directional, delayed or synchronous with conflict resolution and partial replicas | Single Master, delayed WAL log replay | Multi-Master, Read/Write anywhere with data repair | Single Master, writable Slaves, durability is “all”? | Not supported | Multi-Master, Read/Write anywhere with data repair and vector clocks | Multi-Master, R/W anywhere with conflict resolution | ||
Topology Options | None in R1 | Rack Aware & Unaware, DC Aware | Data Center priority | Data Center aware | None | None | Hinted Handoff | None | ||||
Storage | Log-based FS, configurable durability | Log-based FS | Lazy writes to FS, HA for durability | ACID, append-only | Hadoop FS, durable via replication | BDB JE or MySQL | In-memory, w/ Snapshots or Append-only log | Page-based files with WAL and shadow paging | Pluggable storage layer including InnoDB | |||
Transactions | Yes, Autocommit, Major Key + Sub keys | Yes, single record including Super-columns | Yes, autocommit | Document-centric , lockless with client conflict resolution | Record & Multi-record locking transactions (new) | Autocommit operations | None | Yes, single and multiple operations | Autocommit operations, pre & posrt commit hooks | Autocommit & multi-operation | ||
Consistency | Transactional, Configurable | Eventual, with read repair option | Eventual, with delay if master fails | Distributed edits with conflict resolution | Read-committed transaction isolation | Eventual with client-centric conflict resolution | ? | Serializable and Read Committed. | Eventual with client-centric conflict resolution | Eventual with client-centric conflict resolution | Immediate | |
Admin | Web Console, API, CLI | Ganglia, JConsole, CLI | Multiple UIs, Ganglia, REST, HTTP, Java Script | Futon Web Admin tool | ? | Java API, CLI | CLI | CLI and utilities | CLI and utilities | CLI and utilities | ||
Backup | Single or multi-node | All Nodes for consistency | Quiescent, Write Lock or Snapshot | File copy? | Import/export | BDB JE/MySQL backup? | Replication or copy file Snapshots | File copy | Per node or all nodes | Snapshot backups |
其中*符号表示 该软件受到团体的支持(corporate support),这里的团体是指 该数据库的最主要用户和开发基金会,但是并不提供服务支持。
Comment