我需要一种方法来做关键的价值查找跨(潜在的)数以百计的GB的数据。理想的东西基于一种分布式散,这工作很好地与Java。应当容错,开放源。

商店应该是持久的,但理想缓存数据存储以加快速度。

它应该能够支持并行读和写从多个机(读将100多个共同though).基本目的是做一个快速初步查询的用户的元数据网络服务。

任何人都可以推荐什么?

有帮助吗?

解决方案

您可能想看看 Hazelcast 。它分布/分配,超级精简版,容易和自由。

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

此致

-talip

其他提示

开弦 是一个实现的 协议。它是一个分布式散列表的协议,该协议应该适合你的需求。

根据不同的使用情况下,兵马俑可能正是你所需要的。

,你或许应该规定,如果它需要持久与否,内存或没有等等。你可以尝试:的 http://www.danga.com/memcached/

分布式哈希表包括挂毯,和弦,和糕点。其中一个应该满足您的需求。

OpenChord听起来有前途;但我还考虑 BDB ,或任何其他非-SQL哈希表,使它分布可以是死容易(如果存储节点的数目为(几乎)恒定,至少),只是散列客户端上的键,以获得适当的服务器。

在Java中开源缓存解决方案

Oracle Coherence的(曾经是Tangosol的)

的JCache JSR

NMDB 听起来像你需要的到底是什么。分布式内存缓存,具有持久的磁盘存储。当前后端包括QDBM,Berkeley DB的,和(最近一个快速的电子邮件给开发商后加入)东京柜。键/值的大小是有限的,虽然,但我相信,如果你不需要合成TiCP支持,可以解除。

尝试分布地图结构 Redisson, 它基于 穿红衣 服务器。采用集群的配置你可分割的数据跨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();

DNS必须做到这一点的能力,我不知道您的记录每一个多大(吨小8GB数据?),但它可能工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top