12款免費與開源的NoSQL資料庫介紹

infoq發表於2014-01-10

  Naresh Kumar是位軟體工程師與熱情的博主,對於程式設計與新事物擁有極大的興趣,非常樂於與其他開發者和程式設計師分享技術上的研究成果。近日,Naresh撰文談到了12款知名的免費、開源NoSQL資料庫,並對這些資料庫的特點進行了分析。

  現在,NoSQL資料庫變得越來越流行,我在這裡總結出了一些非常棒的、免費且開源的NoSQL資料庫。在這些資料庫中,MongoDB獨佔鰲頭,擁有相當大的使用量。這些免費且開源的NoSQL資料庫具有很好的可伸縮性與靈活性,非常適合於大資料儲存與處理。相較於傳統的關係型資料庫,這些NoSQL資料庫在效能上具有很大的優勢。然而,這些NoSQL資料庫未必最適合你。大多數常見的應用仍然可以使用傳統的關係型資料庫進行開發。NoSQL資料庫依然不太適合於那些任務關鍵型的事務要求。我對這些資料庫進行了一些簡單介紹,下面就來看看。

  1. MongoDB

  MongoDB是個面向文件的資料庫,使用JSON風格的資料格式。它非常適合於網站的資料儲存、內容管理與快取應用,並且通過配置可以實現複製與高可用性功能。

  MongoDB具有很強的可伸縮性,效能表現優異。它使用C++編寫,基於文件儲存。此外,MongoDB還支援全文檢索、跨WAN與LAN的高可用性、易於實現的複製、水平擴充套件、基於文件的豐富查詢、在資料處理與聚合等方面具有很強的靈活性。

  2. Cassandra

  這是個Apache軟體基金會的專案,Cassandra是個分散式資料庫,支援分散的資料儲存,可以實現容錯以及無單點故障等。換句話說,“Cassandra非常適合於那些無法忍受資料丟失的應用”。

  3. CouchDB

  這也是Apache軟體基金會的一個專案,CouchDB是另一個面向文件的資料庫,以JSON格式儲存資料。它相容於ACID,像MongoDB一樣,CouchDB也可以用於儲存網站的資料與內容,以及提供快取等。你可以通過JavaScript在CouchDB上執行MapReduce查詢。此外,CouchDB還提供了一個非常方便的基於Web的管理控制檯。它非常適合於Web應用。

  4. Hypertable

  Hypertable模仿的是Google的BigTable資料庫系統。Hypertable的建立者將“成為高可用、PB規模的資料庫開源標準”作為Hypertable的目標。換言之,Hypertable的設計目標是跨越多個廉價的伺服器可靠地儲存大量資料。

  5. Redis

  這是個開源、高階的鍵值儲存。由於在鍵中使用了hash、set、string、sorted set及list,因此Redis也稱作資料結構伺服器。這個系統可以幫助你執行原子操作,比如說增加hash中的值、集合的交集運算、字串拼接、差集與並集等。Redis通過記憶體中的資料集實現了高效能。此外,該資料庫還相容於大多數程式語言。

  6. Riak

  Riak是最為強大的分散式資料庫之一,它提供了輕鬆且可預測的伸縮能力,向使用者提供了快速測試、原型與應用部署能力,從而簡化應用的開發過程。

  7. Neo4j

  Neo4j是一款NoSQL圖型資料庫,具有非常高的效能。它擁有一個健壯且成熟的系統的所有特性,向程式設計師提供了靈活且物件導向的網路結構,可以讓開發者充分享受到擁有完整事務特性的資料庫的所有好處。相較於RDBMS,Neo4j還對某些應用提供了不少效能改進。

  8. Hadoop HBase

  HBase是一款可伸縮、分散式的大資料儲存。它可以用在資料的實時與隨機訪問的場景下。HBase擁有模組化與線性的可伸縮性,並且能夠保證讀寫的嚴格一致性。HBase提供了一個Java API,可以實現輕鬆的客戶端訪問;提供了可配置且自動化的表分割槽功能;還有Bloom過濾器以及block快取等特性。

  9. Couchbase

  雖然Couchbase是CouchDB的派生,不過它已經成為了一款功能完善的資料庫產品。它向文件資料庫轉移的趨勢會讓MongoDB感到壓力。每個節點上它都是多執行緒的,這是個非常主要的可伸縮性優勢,特別是當託管在自定義或是Bare-Metal硬體上時更是如此。藉助於一些非常棒的整合特性,諸如與Hadoop的整合,Couchbase對於資料儲存來說是個非常不錯的選擇。

  10. MemcacheDB

  這是個分散式的鍵值儲存系統,我們不應該將其與快取解決方案搞混;相反,它是個持久化儲存引擎,用於資料儲存並以非常快速且可靠的方式檢索資料。它遵循memcache協議。其儲存後端用於Berkeley DB中,支援諸如複製與事務等特性。

  11. REVENDB

  RAVENDB是第二代開源資料庫,它面向文件儲存並且無模式,這樣就可以輕鬆將物件儲存到其中了。它提供了非常靈活且快速的查詢,通過對複製、多租與分片提供開箱即用的支援使得我們可以非常輕鬆地實現伸縮功能。它對ACID事務提供了完整的支援,同時又能保證資料的安全性。除了高效能之外,它還通過bundle提供了輕鬆的可擴充套件性。

  12. Voldemort

  這是個自動複製的分散式儲存系統。它提供了自動化的資料分割槽功能,透明的伺服器失敗處理、可插拔的序列化功能、獨立的節點、資料版本化以及跨越各種資料中心的資料分發功能。

  各位讀者,不知在你的專案中曾經、現在或是未來使用了哪些NoSQL資料庫。現今的NoSQL世界紛繁複雜,NoSQL資料庫也多如牛毛,而且有一些資料庫提供了相似的特性,本文所列出的只是其中比較有代表性的12款NoSQL產品。你是否使用過他們呢?是否使用了本文沒有介紹的產品呢?他們有哪些特性打動了你,讓你決定使用他們呢?非常歡迎將你的經歷與看法與我們一起分享。

相關文章