對比主流NoSQL數據庫特性與應用場景

 與關係型數據庫RDBMS的大廠商壟斷不同,NoSQL在發展之初就可謂是百家爭鳴、百花齊放,無論目前如日中天的MongoDB,還是剛剛發佈最新版本的Redis;無論是面向文本的CouchDB,還是基於KV的Cassandra,都有着各自的特點和應用場景。而作爲傳統SQL數據庫的良好補充,DBA有必要了解這些主流NoSQL數據庫的各自特點。在本文中,我們就將對比一下主流NoSQL數據庫,包括了Cassandra、Mongodb、CouchDB、Redis、Riak以及HBase。

 

基本特性:

對比主流NoSQL數據庫特性與應用場景ZT
各自特點與應用場景:

 

Cassandra

 

  • 分佈式與複製的權衡
  • 根據列和鍵範圍進行查詢
  • BigTable類似的功能:列,列族
  • 寫比讀快很多
  • Map/reduce Apache Hadoop
  • Java語言在設置上會有一定複雜度

最佳適用:寫操作較多,讀比較少的時候。如果你的系統都是基於Java的時候。

應用場景:銀行,金融行業。數據分析。

 

MongoDB

 

  • 主從複製
  • 查詢利用javascript表達式
  • 服務器端運行javascript函數
  • 比CouchDB更容易就地升級
  • 內置Sharding
  • 數據存儲使用的是內存映射文件
  • 數據庫崩潰後需要對錶進行修復
  • 持久性更好

最佳適用:如果你需要動態的查詢,如果你更偏向與定義索引而非 map/reduce,如果你針對大數據庫想要更好的性能,如果你想使用CouchDB而數據變化太快,磁盤不夠用的話,可以使用MongoDB。

應用場景:一言以蔽之,MySQL或PostgreSQL的替代品。

 

CouchDB

 

  • 雙向複製
  • 連續或ad-hoc
  • 衝突檢測
  • 主主複製(master-master replication)
  • 多版本併發控制,寫操作不會阻塞讀取
  • 通用的技術文檔
  • 只崩潰設計Crash-only
  • 需要經常壓縮
  • 視圖:嵌入式map/reduce
  • 格式化視圖:lists & shows
  • 服務器端文檔驗證可行
  • 身份驗證可行
  • 通過_changes實時更新
  • 附件處理
  • CouchApps(獨立js應用)
  • 包括jQuery庫

最佳適用:對於數據變化不太頻繁的業務,運行有預先定義的查詢。此外對於版本控制有高要求的業務同樣適用。

應用場景:CRM、CMS系統。主主複製是非常有趣的功能特性,它令多站點部署變得更加容易。

 

 

Riak

  • 分佈式與複製的權衡
  • post-commit 和pre-commit hooks
  • 安全性驗證
  • 內置的全文檢索
  • Javascript或Erlang Map/reduce
  • 開源 與 企業 兩個版本

最佳適用:如果你想要Cassandra或Dynamo類似的功能,但不想太複雜。如果你需要非常好的單點擴展性、可用性和容錯功能可以使用Riak。

應用場景:銷售點數據採集。工廠控制系統。需要零停機時間的場景。

 

Redis

 

  • 內存數據庫
  • 2.0版本之後可以部署到硬盤上
  • 主從複製
  • 簡單的Key-Value
  • 操作符較爲複雜,如ZREVRANGEBYSCORE
  • INCR & co (有利於速率限制和統計)
  • 有集合(union/diff/inter)
  • 有列表(a queue; blocking pop)
  • 有散列(多字段對象)
  • NoSQL中唯一處理交易的數據庫
  • Value可以設定過期
  • 分類集合(有利於範圍查詢)
  • 針對數據變化的Pub/Sub和WATCH

最佳適用:在數據庫大小可預見的前提下,適用於數據變化速度快的應用。

應用場景:股價系統,數據分析,實時數據採集以及實時通信場景。

 

HBase

 

  • 分佈式與複製的權衡
  • 模仿BigTable
  • Map/reduce Hadoop
  • 利用服務器端掃描進行查詢預測疊加並獲取過濾
  • 優化的實時查詢
  • 高性能Thrift網關
  • HTTP支持XML、Protobuf和二進制
  • Cascading、hive、pig source和sink模塊
  • 基於Jruby的shell
  • 無單點故障
  • 類似MySQL的隨機訪問性能

最佳適用:如果你喜歡BigTable,如果你需要隨即、實時的讀寫大數據(Big Data),可以使用HBase。

應用場景:Facebook網站郵件數據庫等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章