16

(潜在的に) 数百 GB のデータ全体でキーと値のルックアップを行う方法が必要です。理想的には、Java とうまく連携する分散ハッシュテーブルに基づくものです。耐障害性があり、オープン ソースである必要があります。

ストアは永続的である必要がありますが、速度を上げるためにデータをメモリにキャッシュするのが理想的です。

複数のマシンからの同時読み取りと書き込みをサポートできる必要があります (ただし、読み取りは 100 倍一般的になります)。基本的に、目的は Web サービスのユーザー メタデータの初期ルックアップをすばやく行うことです。

誰でも何かお勧めできますか?

4

10 に答える 10

12

Hazelcastをチェックしてみてください。分散/パーティション化され、超軽量で、簡単で無料です。

java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");

よろしく、

-タリップ

于 2008-10-29T17:10:45.563 に答える
8

Open Chordは、Java でのCHORDプロトコルの実装です。これは、ニーズに完全に適合する分散ハッシュ テーブル プロトコルです。

于 2008-10-13T15:40:02.780 に答える
2

ユースケースによっては、Terracottaが必要な場合があります。

于 2008-10-15T01:11:52.580 に答える
1

おそらく、永続的である必要があるかどうか、メモリ内にあるかどうかなどを指定する必要があります。試すことができます:http://www.danga.com/memcached/

于 2008-10-13T15:37:05.377 に答える
0

nmdbはまさにあなたが必要としているもののように聞こえます。永続的なオンディスクストレージを備えた、メモリキャッシュ内の分散。現在のバックエンドには、qdbm、berkeley db、および(最近、開発者への簡単な電子メールの後に追加された)tokyoキャビネットが含まれます。キー/値のサイズには制限がありますが、TICPサポートが必要ない場合は解除できると思います。

于 2008-10-23T08:32:27.087 に答える
0

OpenChordは有望に聞こえます。しかし、 BDBやその他のSQL以外のハッシュテーブルも検討します。分散させるのは非常に簡単です(少なくともストレージノードの数が(ほぼ)一定の場合)、クライアントのキーをハッシュして取得するだけです。適切なサーバー。

于 2008-10-13T15:55:59.533 に答える
0

Redissonから分散 Map 構造を試してください。これはRedisサーバーに基づいています。Redis クラスター構成を使用すると、データを 1000 台のサーバーに分割できます。

使用例:

Redisson redisson = Redisson.create();

ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");
map.put("123", new SomeObject());
map.putIfAbsent("323", new SomeObject());
map.remove("123");

...

redisson.shutdown();
于 2014-01-12T10:32:35.127 に答える
0

Java でのオープン ソース キャッシュ ソリューション

Oracle Coherence (以前は Tangosol)

JCache JSR

于 2008-10-14T02:30:01.813 に答える
0

分散ハッシュ テーブルには、Tapestry、Chord、および Pastry が含まれます。これらのいずれかがニーズに合うはずです。

于 2008-10-13T15:51:02.197 に答える
-1

DNS にはこれを行う機能があります。各レコードがどのくらい大きいかはわかりませんが (8 GB の小さなデータが 8 GB ?)、うまくいくかもしれません。

于 2008-10-13T15:37:27.170 に答える