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. |
|