http://db-engines.com/en/system/HBase%3BMemcached%3BRedis%3BSolr
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 | |||||
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. |
|