幾種Nosql數據庫對比

Redis

  • 所用語言:C/C++
  • 特點:運行異常快
  • 使用許可: BSD
  • 協議:類 Telnet
  • 有硬盤存儲支持的內存數據庫,
  • 但自2.0版本以後可以將數據交換到硬盤(注意, 2.4以後版本不支持該特性!)
  • Master-slave複製(見編注3)
  • 雖然採用簡單數據或以鍵值索引的哈希表,但也支持複雜操作,例如 ZREVRANGEBYSCORE。
  • INCR & co (適合計算極限值或統計數據)
  • 支持 sets(同時也支持 union/diff/inter)
  • 支持列表(同時也支持隊列;阻塞式 pop操作)
  • 支持哈希表(帶有多個域的對象)
  • 支持排序 sets(高得分表,適用於範圍查詢)
  • Redis支持事務
  • 支持將數據設置成過期數據(類似快速緩衝區設計)
  • Pub/Sub允許用戶實現消息機制

 

最佳應用場景:適用於數據變化快且數據庫大小可遇見(適合內存容量)的應用程序。

例如:股票價格、數據分析、實時數據蒐集、實時通訊。

(編注3:Master-slave複製:如果同一時刻只有一臺服務器處理所有的複製請求,這被稱爲 Master-slave複製,通常應用在需要提供高可用性的服務器集羣。)

MongoDB

  • 所用語言:C++
  • 特點:保留了SQL一些友好的特性(查詢,索引)。
  • 使用許可: AGPL(發起者: Apache)
  • 協議: Custom, binary( BSON)
  • Master/slave複製(支持自動錯誤恢復,使用 sets 複製)
  • 內建分片機制
  • 支持 javascript表達式查詢
  • 可在服務器端執行任意的 javascript函數
  • update-in-place支持比CouchDB更好
  • 在數據存儲時採用內存到文件映射
  • 對性能的關注超過對功能的要求
  • 建議最好打開日誌功能(參數 –journal)
  • 在32位操作系統上,數據庫大小限制在約2.5Gb
  • 空數據庫大約佔 192Mb
  • 採用 GridFS存儲大數據或元數據(不是真正的文件系統)

 

最佳應用場景:適用於需要動態查詢支持;需要使用索引而不是 map/reduce功能;需要對大數據庫有性能要求;需要使用 CouchDB但因爲數據改變太頻繁而佔滿內存的應用程序。

例如:你本打算採用 MySQL或 PostgreSQL,但因爲它們本身自帶的預定義欄讓你望而卻步。



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