我需要一種方法來跨越(可能)數百GB的數據執行鍵值查找。理想情況下,基於分佈式哈希表的東西,這與Java很好地協作。它應該是容錯的,而且是開源的。需要一個分佈式鍵值查找系統
商店應該是持久的,但理想情況下緩存數據在內存中加快速度。
它應該能夠支持來自多臺機器的併發讀取和寫入操作(讀取操作將會比通常多出100倍)。基本上,目的是快速初步查找Web服務的用戶元數據。
任何人都可以推薦任何東西嗎?
我需要一種方法來跨越(可能)數百GB的數據執行鍵值查找。理想情況下,基於分佈式哈希表的東西,這與Java很好地協作。它應該是容錯的,而且是開源的。需要一個分佈式鍵值查找系統
商店應該是持久的,但理想情況下緩存數據在內存中加快速度。
它應該能夠支持來自多臺機器的併發讀取和寫入操作(讀取操作將會比通常多出100倍)。基本上,目的是快速初步查找Web服務的用戶元數據。
任何人都可以推薦任何東西嗎?
您可能想查看Hazelcast。它是分佈式/分區式的,超精簡的,簡單且免費的。
java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");
問候,
-talip
,你或許應該註明,如果它需要持久與否,內存或沒有等等。你可以嘗試:http://www.danga.com/memcached/
DNS必須做到這一點的能力,我不知道有多大每一個你的記錄是(8GB的小數據?),但它可能工作。
Open Chord是Java中的CHORD協議的實現。它是一個分佈式哈希表協議,應該完美地滿足您的需求。
分佈式哈希表包括Tapestry,Chord和Pastry。其中之一應該適合您的需求。
OpenChord聽起來很有前途;但我也會考慮BDB或任何其他非SQL哈希表,使其分佈可能非常容易(如果存儲節點的數量至少是(幾乎)恆定的),只需在客戶端上散列密鑰即可獲得適當的服務器。
根據不同的使用情況下,Terracotta可能正是你所需要的。
nmdb聽起來像它正是你所需要的。在內存緩存中分佈着持久的磁盤存儲。當前的後端包括qdbm,berkeley db和(最近在給開發者的快速電子郵件後添加)tokyo cabinet。鍵/值的大小是有限的,但我相信如果你不需要TICP支持可以取消。
你在優化?例如,讀取吞吐量(從多臺機器併發讀取),面對機器時的容錯性變得不可用,機器數量少...您是否還需要寫入? – Alexander 2008-10-13 15:38:07
謝謝,我用這個信息編輯了這個問題。 – sanity 2008-10-13 15:41:38
你想如何分配你的數據?是否所有的數據都可以在每個節點上/從/來自哪個節點?在第一種情況下,下一個問題是「爲什麼分佈式查找?」。 – Alexander 2008-10-13 15:56:36