大數(shù)據(jù)時代的 9 大Key-Value存儲數(shù)據(jù)庫
Hive知識庫在過去的十年中,計(jì)算世界已經(jīng)改變。現(xiàn)在不僅在大公司,甚至一些小公司也積累了TB量級的數(shù)據(jù)。各種規(guī)模的組織開始有了處理大數(shù)據(jù)的需求,而目前關(guān)系型數(shù)據(jù)庫在可縮放方面幾乎已經(jīng)達(dá)到極限。
一個解決方案是使用鍵值(Key-Value)存儲數(shù)據(jù)庫,這是一種NoSQL(非關(guān)系型數(shù)據(jù)庫)模型,其數(shù)據(jù)按照鍵值對的形式進(jìn)行組織、索引和存儲。KV存儲非常適合不涉及過多數(shù)據(jù)關(guān)系業(yè)務(wù)關(guān)系的業(yè)務(wù)數(shù)據(jù),同時能有效減少讀寫磁盤的次數(shù),比SQL數(shù)據(jù)庫存儲擁有更好的讀寫性能。
本文就為你介紹9種用于大數(shù)據(jù)處理的免費(fèi)鍵值存儲數(shù)據(jù)庫。
1. Aerospike 社區(qū)版
Aerospike是一個以分布式為核心基礎(chǔ),可基于行隨機(jī)存取內(nèi)存中索引、數(shù)據(jù)或SSD存儲中數(shù)據(jù)的數(shù)據(jù)庫。
Aerospike主要用于廣告業(yè)務(wù),作為一個服務(wù)器端的cookie存儲來使用,在這種場景下讀取和寫入性能是至關(guān)重要的。
官網(wǎng):http://www.aerospike.com/press-releases/aerospike-launches-free-community-edition/
相關(guān)資料:Documentation、FAQ、Blog、Forums
2. LevelDB
Leveldb是Google開發(fā)的一個非常高效的kv數(shù)據(jù)庫,支持billion級別的數(shù)據(jù)量,在這個數(shù)量級別下還有著非常高的性能,主要?dú)w功于它的良好的設(shè)計(jì),特別是LSM算法。Leveldb已經(jīng)作為存儲引擎被Riak和Kyoto Tycoon所支持,在國內(nèi)淘寶的Tair開源key-value存儲也已經(jīng)將LevelDB作為其持久化存儲引擎,并部署在線上使用。
官網(wǎng):http://code.google.com/p/leveldb/
相關(guān)資料:Twitter
3. Scalaris
Scalaris 是一個采用Erlang開發(fā)的分布式 key-value 存儲系統(tǒng),提供的 API 包括:Java、Python、Ruby和JSON。
官網(wǎng):http://scalaris.googlecode.com/
相關(guān)資料:FAQ
4. Project Voldemort
Voldemort是一個分布式鍵值存儲系統(tǒng),是Amazon’s Dynamo的一個開源克隆。特性如下:
- 支持自動復(fù)制數(shù)據(jù)到多個服務(wù)器上。
- 支持?jǐn)?shù)據(jù)自動分割所以每個服務(wù)器只包含總數(shù)據(jù)的一個子集。
- 提供服務(wù)器故障透明處理功能。
- 支持可撥插的序化支持,以實(shí)現(xiàn)復(fù)雜的鍵-值存儲,它能夠很好的5.集成常用的序化框架如:Protocol Buffers、Thrift、Avro和Java Serialization。
- 數(shù)據(jù)項(xiàng)都被標(biāo)識版本能夠在發(fā)生故障時盡量保持?jǐn)?shù)據(jù)的完整性而不會影響系統(tǒng)的可用性。
- 每個節(jié)點(diǎn)相互獨(dú)立,互不影響。
- 支持可插拔的數(shù)據(jù)放置策略
官網(wǎng):http://project-voldemort.com/
相關(guān)資料:Wiki、Github、Project Voldemort: Scaling Simple Storage、Serving Large-scale Batch Computed Data with Project Voldemort
5. HyperDex
HyperDex是一個分布式、可搜索的鍵值存儲系統(tǒng),特性如下:
分布式KV存儲,系統(tǒng)性能能夠隨節(jié)點(diǎn)數(shù)目線性擴(kuò)展
吞吐和延時都能秒殺現(xiàn)在風(fēng)頭正勁的MonogDB,吞吐甚至強(qiáng)于Redis
使用了hyperspace hashing技術(shù),使得對存儲的K-V的任意屬性進(jìn)行查詢成為可能
官網(wǎng):http://hyperdex.org/
6. Berkeley DB
Berkeley DB是一個開源的文件數(shù)據(jù)庫,介于關(guān)系數(shù)據(jù)庫與內(nèi)存數(shù)據(jù)庫之間,使用方式與內(nèi)存數(shù)據(jù)庫類似,它提供的是一系列直接訪問數(shù)據(jù)庫的函數(shù),而不是像關(guān)系數(shù)據(jù)庫那樣需要網(wǎng)絡(luò)通訊、SQL解析等步驟。
官網(wǎng):http://www.oracle.com/technetwork/products/berkeleydb/overview/index.html
相關(guān)資料:Wiki、Forums、Launchpad
7. Apache Accumulo
Apache Accumulo 是一個可靠的、可伸縮的、高性能的排序分布式的 Key-Value 存儲解決方案,基于單元訪問控制以及可定制的服務(wù)器端處理。Accumulo使用 Google BigTable 設(shè)計(jì)思路,基于 Apache Hadoop、Zookeeper 和 Thrift 構(gòu)建。
官網(wǎng):http://accumulo.apache.org/
相關(guān)資料:Manual、Mailing Lists、Apache Accumulo Users Group
8. Redis
Redis是一個高性能的key-value存儲系統(tǒng),和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中,區(qū)別的是Redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了主從同步。
Redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲的不足,在部分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。它提供了Python、Ruby、Erlang、PHP客戶端,使用很方便。
官網(wǎng):http://redis.io/
相關(guān)資料:Documentation、Tutorials、FAQ、Mailing List、Twitter
9. Apache Cassandra
Apache Cassandra是一個混合型的非關(guān)系數(shù)據(jù)庫,它最初由Facebook開發(fā),用于儲存特別大的數(shù)據(jù)。
Cassandra的主要特點(diǎn)就是它不是一個數(shù)據(jù)庫,而是由一堆數(shù)據(jù)庫節(jié)點(diǎn)共同構(gòu)成的一個分布式網(wǎng)絡(luò)服務(wù),對Cassandra 的一個寫操作,會被復(fù)制到其它節(jié)點(diǎn)上去,對Cassandra的讀操作,也會被路由到某個節(jié)點(diǎn)上面去讀取。對于一個Cassandra群集來說,擴(kuò)展性能是比較簡單的事情,只管在群集里面添加節(jié)點(diǎn)就可以了。
官網(wǎng):http://cassandra.apache.org/
相關(guān)資料:Wiki、Getting Started