2010年10大熱門的開源NoSQL服務器軟件
NoSQL,就是反SQL,是一項全新的數據庫革新運動,特別是在 2010 年得以迅猛發展。而各種開源的 NoSQL 軟件突然間涌現在你面前。目前似乎沒有對 NoSQL 給出一個標準的定義,也沒有相應的規范,但從這些軟件可以看出 NoSQL 軟件的共同點:獨立運行、K/V存儲結構,這之前有人稱之為集中式緩存服務,其實你可以把二者等同起來。
那么多的 NoSQL 軟件,到底哪些更受歡迎呢?為此,開源中國社區為你評選出10款2010年最受關注的 NoSQL 軟件。
1. Cassandra
Cassandra 在 2010 年出盡風頭,但最終都以失敗告終,包括 Twitter 以及 Digg 的案例使我們不得不對 NoSQL 技術是否成熟,是否能在大規模系統中應用產生了懷疑。但這并不影響 Cassandra 拔得頭籌,因為還有 Facebook 的支持。
Apache Cassandra 是一套開源分布式Key-Value存儲系統。它最初由Facebook開發,用于儲存特別大的數據。Facebook目前在使用此系統。
主要特性:
- 分布式
- 基于column的結構化
- 高伸展性
Cassandra 采用 Java 開發,Apache 授權協議。
2. memcached
memcached 是老牌的獨立緩存服務的領頭羊,目前國內使用該系統的網站非常的多,在這基礎上還有國內開發的 memcachedb 是 memcached 支持持久化存儲。
memcached 是一套分布式的快取系統,當初是Danga Interactive為了LiveJournal所發展的,但目前被許多軟件(如MediaWiki)所使用。不過,memcached 缺乏認證以及安全管制
memcached 采用 C 語言開發,可在 Linux 系統下使用,采用 BSD 授權。
3. Membase
Membase 是 NoSQL 家族的一個新的重量級的成員,其完全兼容 memcached 的方式,有望籠絡 memcached 的用戶群。Membase 的可伸縮性、集群、復制以及管理方便等特性又是 memcached 無法匹敵的。
Membase 同樣采用 C 語言開發,支持 Windows 和 Linux 系統,使用 Apache 授權協議。
接下來介紹兩款國產的 NoSQL 軟件:
4. Tair
Tair 是由淘寶網自主開發的分布式Key/Value結構數據存儲系統,在淘寶網有著大規模的應用。您在登錄淘寶、查看商品詳情頁面或者在淘江湖和好友“搗漿糊”的時候,都在直接或間接地和Tair交互。
Tair 采用 C 語言開發,支持 Linux 系統,使用 GPLv2 授權協議。
5. BeansDB
BeansDB 是豆瓣網開發的一個主要針對大數據量、高可用性的分布式Key Value存儲系統,采用HashTree和簡化的版本號來快速同步保證最終一致性(弱),一個簡化版的 Dynamo。
它采用類似memcached的去中心化結構,在客戶端實現數據路由。目前只提供了 Python版本的客戶端,其它語言的客戶端可以由memcached的客戶端稍加改造得到。
主要特性包括:
- 高可用:通過多個可讀寫的用于備份實現高可用;
- 最終一致性:通過哈希樹實現快速完整數據同步(短時間內數據可能不一致);
- 容易擴展:可以在不中斷服務的情況下進行容量擴展;
- 高性能:異步IO和高性能的Key Value數據Tokyo Cabinet;
- 可配置的可用性和一致性:通過N,W,R進行配置;
- 簡單協議:Memcached兼容協議,大量可用客戶端。
BeansDB 采用 Python 語言開發,支持 Linux 系統,使用 BSD 授權協議。
6. Redis
Redis 是一個高性能的key-value數據庫。 redis的 出現,很大程度補償了memcached這類keyvalue存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。
Redis 的短板:
- 這個項目還很新,可能還不足夠穩定,而且沒有在實際的一些大型系統應用的實例。
- 缺乏mc中批量get也是比較大的問題,始終批量獲取跟多次獲取的網絡開銷是不一樣的。
Redis 采用 C 語言開發,支持 Linux 系統,使用 BSD 授權協議。
7. CouchDB
Apache CouchDB 是一個面向文檔的數據庫管理系統。它提供以 JSON 作為數據格式的 REST 接口來對其進行操作,并可以通過視圖來操縱文檔的組織和呈現。 CouchDB 是 Apache 基金會的頂級開源項目。
CouchDB落實到最底層的數據結構就是兩類B+Tree 。
不過最近有消息說 CouchDB 將走一條不同于 NoSQL 的路子,具體情況如何我們只能拭目以待。
CouchDB 是用 ErLang 開發的哦,跨平臺支持,Apache 授權協議。
8. Tokyo Cabinet
Tokyo Cabinet 是一個DBM的實現。這里的數據庫由一系列key-value對的記錄構成。key和value都可以是任意長度的字節序列,既可以是二進制也可以是字符串。這里沒有數據類型和數據表的概念。
當做為Hash表數據庫使用時,每個key必須是不同的,因此無法存儲兩個key相同的值。提供了以下訪問方法:提供key,value參數來存儲,按 key刪除記錄,按key來讀取記錄,另外,遍歷key也被支持,雖然順序是任意的不能被保證。這些方法跟Unix標準的DBM,例如GDBM,NDBM 等等是相同的,但是比它們的性能要好得多(因此可以替代它們)
當按B+樹來存儲時,擁用相同key的記錄也能被存儲。像hash表一 樣的讀取,存儲,刪除函數也都有提供。記錄按照用戶提供的比較函數來存儲。可以采用順序或倒序的游標來讀取每一條記錄。依照這個原理,向前的字符串匹配搜 索和整數區間搜索也實現了。另外,B+樹的事務也是可用的。
Tokyo Cabinet 采用 C 語言開發,支持 Linux 系統,使用 LGPL 授權協議。
9. OrientDB
Orient DB 是一個可伸縮的文檔數據庫,支持 ACID 事務處理。使用 Java 5 實現。OrientDB 最強的一個地方是可以使用 類 SQL 的查詢語句進行數據查詢。
OrientDB 采用 Java 語言開發,跨平臺支持,使用 Apache 授權協議。
10. Hibari
Hibari (在日語中意思為“云雀”)是一個專為高可靠性和大數據存儲的數據庫引擎,可用于云計算環境中,例如 webmail、SNS 和其他要求T/P級數據存儲的環境中。Hibari 支持 Java, C/C++, Python, Ruby, 和 Erlang 語言的客戶端。
Hibari 并不是一個關系數據庫,主要是通過 key-value 的方法進行數據存儲。
Hibari 使用 ErLang 語言開發,支持 Linux/BSD 系統,Apache 授權協議。