HBase vs. MongoDB vs. MySQL vs. Oracle vs. Redis,三大主流開源 NoSQL 資料庫的 PK 兩大主流傳統 SQL 資料庫
資料來源: https://www.itread01.com/content/1546511244.html
類別
|
HBase
|
MongoDB
|
MySQL
|
Oracle
|
Redis
|
描述
|
基於 Apache Hadoop 並提供 BigTable 能力的列儲存
|
最受歡迎的文件儲存資料庫之一
|
廣泛使用的開源 RDBMS
|
廣泛使用的 RDBMS
|
記憶體中的資料結構儲存,被用作資料庫,快取以及訊息中介軟體
|
普及度等級(參考下文的趨勢圖)
|
15 級(59.03 分)
|
4 級(300.57 分)
|
2 級(1277.75 分)
|
1 級(1463.37 分)
|
10 級(100.65 分)
|
資料庫模型
|
列儲存
|
文件儲存
|
關係資料庫系統
|
關係資料庫系統
|
鍵-值儲存
|
官網
|
hbase.apache.org
|
www.mongodb.org
|
www.mysql.com
|
www.oracle.com/-us/-products/-database
|
redis.io
|
技術文件
|
hbase.apache.org
|
docs.mongodb.org/-manual
|
dev.mysql.com/-doc
|
www.oracle.com/-technetwork/-indexes/-documentation/-index.html
|
redis.io/-documentation
|
開發者
|
Apache 軟體基金會
|
MongoDB 公司
|
Oracle
|
Oracle
|
Salvatore Sanfilippo(Redis 之父)
|
首次發行
|
2008
|
2009
|
1995
|
1980
|
2009
|
當前版本
|
1.1.0.1,2015 年 5 月
|
3.0.5,2015 年 7 月
|
5.6.26,2015 年 7 月
|
12 Release 1 (12.1.0.2),2014 年 7 月
|
3.0.3,2015 年 6 月
|
許可
|
開源
|
開源
|
開源
|
商業
|
開源
|
是否資料庫即服務(DBaaS)
|
否
|
否
|
否
|
否
|
否
|
實現語言
|
Java
|
C++
|
C 和 C++
|
C 和 C++
|
C
|
伺服器作業系統
|
Linux
Unix
Windows
|
Linux
OS X
Solaris
Windows
|
FreeBSD
Linux
OS X
Solaris
Windows
|
AIX
HP-UX
Linux
OS X
Solaris
Windows
z/OS
|
BSD
Linux
OS X
Windows
|
是否結構化資料
|
自由
|
自由
|
是
|
是
|
自由
|
是否預定義資料型別
|
否
|
是
|
是
|
是
|
部分
|
是否支援 XML
|
否
|
是
|
是
|
否
|
是否支援二級索引
|
否
|
是
|
是
|
是
|
否
|
是否支援 SQL
|
否
|
否
|
是
|
是
|
否
|
API 以及其他訪問方式
|
Java API
RESTful HTTP API
Thrift
|
使用 JSON 的專用協議
|
ADO.NET
JDBC
ODBC
|
ODP.NET
Oracle Call Interface (OCI)
JDBC
ODBC
|
專用協議
|
支援的程式語言
|
C
C#
C++
Groovy
Java
PHP
Python
Scala
|
Actionscript
C
C#
C++
Clojure
ColdFusion
D
Dart
Delphi
Erlang
Go
Groovy
Haskell
Java
JavaScript
Lisp
Lua
MatLab
Perl
PHP
PowerShell
Prolog
Python
R
Ruby
Scala
Smalltalk
|
Ada
C
C#
C++
D
Eiffel
Erlang
Haskell
Java
Objective-C
OCaml
Perl
PHP
Python
Ruby
Scheme
Tcl
|
C
C#
C++
Clojure
Cobol
Eiffel
Erlang
Fortran
Groovy
Haskell
Java
JavaScript
Lisp
Objective C
OCaml
Perl
PHP
Python
R
Ruby
Scala
Tcl
Visual Basic
|
C
C#
C++
Clojure
Crystal
D
Dart
Elixir
Erlang
Fancy
Go
Haskell
Haxe
Java
JavaScript (Node.js)
Lisp
Lua
MatLab
Objective-C
OCaml
Perl
PHP
Prolog
Pure Data
Python
R
Rebol
Ruby
Rust
Scala
Scheme
Smalltalk
Tcl
|
是否支援服務端指令碼
|
是
|
JavaScript
|
是
|
PL/SQL
|
Lua
|
是否支援觸發器
|
是
|
否
|
是
|
是
|
否
|
切分方式
|
分片
|
分片
|
水平切分,使用 MySQL Cluster 或者 MySQL Cluster 進行分片
|
水平切分
|
分片
|
主從複製方式
|
多種主從複製機制
|
主-從複製
|
主-主複製
主-從複製
|
主-主複製
主-從複製
|
主-從複製
|
是否支援 MapReduce
|
是
|
是
|
否
|
否
|
否
|
分散式場景下資料一致性方法
|
立即一致
|
最終一致
立即一致
|
立即一致
|
最終一致
|
是否支援外來鍵
|
否
|
否
|
是
|
是
|
否
|
是否支援事務
|
否
|
否
|
ACID
|
ACID
|
樂觀鎖機制,原子性執行的命令塊和指令碼
|
是否支援併發
|
是
|
是
|
是
|
是
|
是
|
是否支援持久化儲存
|
是
|
是
|
是
|
是
|
是
|
是否支援記憶體儲存
|
否
|
是
|
是
|
是
|
訪問控制
|
訪問控制列表(ACL)
|
基於使用者和角色的訪問許可權
|
細粒度的使用者訪問許可權
|
根據 SQL 標準細粒度的訪問許可權
|
簡單的基於密碼的訪問控制
|