2012-11-18 24 views
6

我正在尋找一個可以從EC2實例使用的關鍵值存儲。寫重,複製,大於內存的鍵值存儲

  • 項目僅僅是一個非結構化的字符串,沒有索引需要
  • 項目規模達
  • 很多寫
  • 閱讀並不需要快速的〜5MB,但通常低於10KB,內存緩存能經常需要緩存讀取
  • 數據量太大,以適應到內存放在前面
  • 最終一致性是好的
  • 守護程序可以訪問的FR OM多臺機器需要

理想的東西AWS託管將是完美的,但:

  • S3不會因爲因爲商品尺寸的太多寫
  • 的SimpleDB/DynamoDb不適合的適合限制和索引不是必需的

由於市場上有很多關鍵價值商店很難選擇最好的。你會推薦哪一個?

+0

你不會說如果 – clh

+0

@ caius.howcroft:你是什麼意思? –

+0

對不起的打字錯誤,沒有意識到它承諾 – clh

回答

6

我發現我的使用情況下的完美解決方案:memcachedb

它不會做花哨的文件/索引,它只是一個簡單的鍵值存儲。

雖然我沒有做任何性能測試。

編輯:

我們下降memcachedb由於與複製問題。相反,我們現在運行mongodb。 Mongodb需要更多的磁盤空間和更多的資源。但副本套件工作非常可靠並且易於設置。

+0

您可以使用Couchbase,使您可以使用memcached協議快速訪問密鑰。 Couchbase允許您存儲與密鑰關聯的任何類型的內容。 Couchbase 2.0是面向文檔的數據庫,但您可以存儲任何類型的二進制內容。看看這篇文章,這將幫助你看到一些關鍵的好處: http://www.couchbase.com/memcached –

+0

@TugGrall:我認爲這不會對我的用例起作用,因爲數據太大以適應記憶。 –

+0

如果您選擇「Couchbase Bucket」,它將在必要時自動將內容存儲在磁盤上:http://www.couchbase.com/docs/couchbase-manual-1.8/couchbase-architecture-buckets.html –

2

也許你應該嘗試的MongoDB:
http://www.mongodb.org/display/DOCS/Amazon+EC2

快速入門:
http://www.10gen.com/presentations/nyc-meetup-group/mongodb-and-ec2-a-love-story

其他鍵值儲存:
http://google-opensource.blogspot.com/2011/07/leveldb-fast-persistent-key-value-store.html在10gen公司和視頻演示
http://www.mongodb.org/display/DOCS/Amazon+EC2+Quickstart

免費課程

評論約了Riak和他們的儲存尤其bitcask和innostore:
http://basho.com/blog/technical/2011/07/01/Leveling-the-Field/

RaptorDB:一個非常小的尺寸和高速嵌入式,NOSQL,堅持使用B +樹或雜音哈希索引字典數據庫。它主要用於存儲JSON數據(請參閱我的fastJSON實現),但可以存儲您提供的任何類型的數據。

HamsterDB:一個令人愉快的引擎用C++編寫,而我使用阿倫斯沃特斯代碼爲索引讓我印象深刻一 很多關於它的速度。 (RaptorDB現在還活着吃...... ahem!)在64KB版本中,它的容量很大,爲 。

ESENT PersistentDictionary:CodePlex上的一個項目,是一個 它實現了內置的 的Windows ESENT的數據存儲引擎託管包裝的另一個項目的一部分。在索引了40,000個項目並且索引文件只有 在guid鍵上增長之後,詞典性能以指數方式下降 。顯然在與項目業主談判之後, 這是目前已知的問題。

東京/京都內閣:一個C++ 執行密鑰存儲這是非常快。東京內閣是 b +樹索引器,而京都內閣是MurMur2哈希索引器。

4aTech字典:這是在CodeProject的另一篇文章這確實 同樣的事情,在網站上的商業版本是巨大的(450KB) 和失敗後索引五萬件 慘淡經營性能上的GUID鍵明智的。

的BerkeleyDB:所有數據庫的宏偉爸爸這是由甲骨文 擁有並有3種口味,C++密鑰存儲,Java的密鑰存儲和XML數據庫 。

(報價來源:http://www.codeproject.com/Articles/190504/RaptorDB

+0

我已經考慮過mongodb - 但它看起來過度設計給我:我不需要文檔存儲,索引,地圖縮小等 –

+0

也許Redis或這裏提到:http:// stackoverflow.com/questions/1733619/writing-a-key-value-store – 42n4

+0

我需要一臺服務器。 Redis不起作用,因爲我的數據太大而無法存儲在內存中。 –

2

對於HBase似乎是一個完美的使用案例。它提供了很好的寫入吞吐量,特別是如果插入鍵有些隨機。 HBase通常不會被宣傳爲K/V商店,但它應該工作得很好。 AWS documentation介紹了一些您可能需要仔細研究的用例。缺點是HBase可以做的不僅僅是K/V,所以它可能比你需要的更復雜(也更復雜)。

1

Couchbase聽起來很適合您的需求。這就像使用磁盤存儲的memcached一樣。

優點:

  • 這是一個鍵/值數據庫。你可以存儲你想要的任何二進制blob。從2.0版開始,它支持將數據存儲爲json,並運行一些查詢並映射/減少它。但是,如果你不需要這樣做,那麼將它用作關鍵/值很有用。

  • 在我嘗試過的所有NoSQL數據庫中,它是最快的。這可能是因爲您的寫入不會立即提交到磁盤。相反,一旦在羣集中複製寫入,您將得到確認。數據異步寫入磁盤。所以,一個潛在的缺點是,如果所有節點同時崩潰(例如,您的數據中心失去能力),則可能會丟失數據。根據應用程序的不同,這可能會也可能不是問題(如果整個集羣發生故障,您可能會遇到更大的問題)。

  • 根據我的經驗,它是可靠的。如果某個節點出現故障,羣集繼續工作,並且執行故障轉移非常容易。添加新節點也非常簡單。

  • 數據不需要適應內存。它被存儲在磁盤上並根據需要分頁和分頁。

  • 管理界面非常非常好。它具有漂亮的活動圖表來監視羣集。

  • 它向後兼容memcached協議。如果您已經有使用memcached的代碼,那麼使用Couchbase代替它會非常簡單。

缺點:

  • 該產品還是有點年輕,所以文檔和支持工具上有所欠缺。有時這可能有點煩人。