对比下HBase, Memcached, MongoDB, Redis和Solr
Name | HBase | Memcached | MongoDB | Redis | Solr | |
Description | Wide-column store based on Apache Hadoop and on concepts of BigTable | In-memory key-value store, originally intended for caching | One of the most popular document stores | In-memory database with configurable options performance vs. persistency | A widely usedenterprise search engine based onApache Lucene | |
Developer | Apache Software Foundation | Danga Interactive | MongoDB, Inc | Salvatore Sanfilippo | Apache Software Foundation | |
Initial release | 2008 | 2003 | 2009 | 2009 | 2004 | |
License | Open Source | Open Source | Open Source | Open Source | Open Source | |
Implementation language | Java | C | C++ | C | Java | |
Server operating systems | Linux | Linux | Linux | Linux | All OS with a Java VM and a servlet container | |
Unix | Unix | |||||
OS X | OS X | |||||
Windows | Windows | Windows | Windows | |||
FreeBSD | Solaris | BSD | ||||
Database model | Wide column store | Key-value store | Document store | Key-value store | Search engine | |
Data scheme | schema-free | schema-free | schema-free | schema-free | yes | |
Typing | no | no | yes | no | yes | |
Secondary indexes | no | no | yes | no | yes | |
SQL | no | no | no | no | no | |
APIs and other access methods | Java API | Proprietary protocol | proprietary protocol using JSON | proprietary protocol | Java API | |
RESTful HTTP API | RESTful HTTP API | |||||
Thrift | ||||||
Supported programming languages | C | C | C | C | ||
C# | .Net | C# | C# | .Net | ||
C++ | C++ | C++ | C++ | |||
Groovy | ColdFusion | Groovy | Clojure | |||
Java | Java | Java | Java | Java | ||
Erlang | Erlang | Erlang | Erlang | |||
Python | Python | Python | Python | Python | ||
Scala | Lua | Scala | Scala | Scala | ||
Ruby | Ruby | Ruby | Ruby | |||
PHP | PHP | PHP | PHP | PHP | ||
JavaScript | JavaScript | JavaScript | ||||
Perl | Perl | Perl | Perl | |||
OCaml | Lua | Lua | any language that supports sockets and either XML or JSON | |||
Lisp | Lisp | Lisp | ||||
Dart | Dart | |||||
ColdFusion | ||||||
Go | Go | |||||
Actionscript | Objective-C | |||||
Haskell | Haskell | |||||
Smalltalk | Smalltalk | |||||
Clojure | Tcl | |||||
MatLab | ||||||
PowerShell | ||||||
Prolog | ||||||
Server-side scripts | yes | no | JavaScript | Lua | Java plugins | |
Triggers | yes | no | no | no | no | |
Partitioning methods | Sharding | none | Sharding | none | Sharding | |
Replication methods | selectable replication factor | none | Master-slave replication | Master-slave replication | cloud/distributed (via Zookeeper) | |
Master-slave replication | ||||||
MapReduce | yes | no | yes | no | no | |
Consistency concepts | Immediate Consistency | Eventual Consistency | Eventual Consistency | |||
Immediate Consistency | ||||||
Foreign keys | no | no | no | no | no | |
Transaction concepts | no | no | no | optimistic locking | optimistic locking | |
Concurrency | yes | yes | yes | yes | yes | |
Durability | yes | no | yes | yes | yes | |
User concepts | Access Control Lists (ACL) | yes | Users can be defined with full access or read-only access | very simple password-based access control | ||
Specific characteristics | Redis very much emphasize performance. In any design decisions performance has priority over features or memory requirements. | Architecture: Lives in web stack, ships by default with Jetty. Connectors, JDBC, multiple languages, true morphological CJK, binary document filters (Tika), Entity Extraction (UIMA) | ||||
Typical application scenarios | Mostly used for caching | Applications that can hold all data in memory, and that have high performance requirements. |
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341