NOSQL非关系型数据库学习(四)这样对比下HBASE, MEMCACHED, MONGODB, REDIS和SOLR

时间:2022-06-21 08:49:14
Source
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

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#

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