http://www.infoq.com/cn/news/2014/01/12-free-and-open-source-nosql
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
這是個開源、進階的KVStore for 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
這是個分布式的KVStore for Redis系統,我們不應該將其與緩衝解決方案搞混;相反,它是個持久化儲存引擎,用於資料存放區並以非常快速且可靠的方式檢索資料。它遵循memcache協議。其儲存後端用於Berkeley DB中,支援諸如複製與事務等特性。
11. REVENDB
RAVENDB是第二代開來源資料庫,它面向文檔儲存並且無模式,這樣就可以輕鬆將Object Storage Service到其中了。它提供了非常靈活且快速的查詢,通過對複製、多租與分區提供開箱即用的支援使得我們可以非常輕鬆地實現伸縮功能。它對ACID事務提供了完整的支援,同時又能保證資料的安全性。除了高效能之外,它還通過bundle提供了輕鬆的可擴充性。
12. Voldemort
這是個自動複製的分布式儲存系統。它提供了自動化的資料資料分割函數,透明的伺服器失敗處理、可插拔的序列化功能、獨立的節點、資料版本化以及跨越各種資料中心的資料分發功能。
各位InfoQ讀者,不知在你的項目中曾經、現在或是未來使用了哪些NoSQL資料庫。現今的NoSQL世界紛繁複雜,NoSQL資料庫也多如牛毛,而且有一些資料庫提供了相似的特性,本文所列出的只是其中比較有代表性的12款NoSQL產品。你是否使用過他們呢?是否使用了本文沒有介紹的產品呢?他們有哪些特性打動了你,讓你決定使用他們呢?非常歡迎將你的經曆與看法與我們一起分享。