Ответ 1
Возможно, вы захотите проверить Hazelcast. Он распределен/разбит на разделы, сверхлегкий, легкий и бесплатный.
java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");
Привет,
-talip
Мне нужен способ делать поиск по ключевым словам через (потенциально) сотни ГБ данных. Идеально что-то основано на распределенной хэш-таблице, которая хорошо работает с Java. Он должен быть отказоустойчивым и открытым исходным кодом.
Магазин должен быть постоянным, но идеально кэшировать данные в памяти, чтобы ускорить работу.
Он должен иметь возможность поддерживать одновременные чтения и записи с нескольких компьютеров (чтение будет на 100 раз чаще). В основном цель состоит в том, чтобы быстро выполнить первоначальный поиск метаданных пользователя для веб-службы.
Кто-нибудь может что-нибудь рекомендовать?
Возможно, вы захотите проверить Hazelcast. Он распределен/разбит на разделы, сверхлегкий, легкий и бесплатный.
java.util.Map map = Hazelcast.getMap ("mymap");
map.put ("key1", "value1");
Привет,
-talip
Open Chord - это реализация CHORD в Java. Это распределенный хэш-протокол, который должен соответствовать вашим потребностям.
В зависимости от варианта использования Terracotta может быть именно то, что вам нужно.
Вероятно, вам следует указать, нужно ли оно быть постоянным или нет, в памяти или нет, и т.д. Вы можете попробовать: http://www.danga.com/memcached/
Распределенные хеш-таблицы включают Tapestry, Chord и Pastry. Один из них должен соответствовать вашим потребностям.
OpenChord звучит многообещающе; но я бы также рассмотрел BDB или любую другую хэш-таблицу, отличную от SQL, что делает ее распределенной, может быть мертвой (если количество хранилищ узлы являются (почти) постоянными, по крайней мере), просто хэш-ключ на клиенте, чтобы получить соответствующий сервер.
Решения кэширования с открытым исходным кодом в Java
Oracle Coherence (раньше был Tangosol)
nmdb звучит как именно то, что вам нужно. Распределено в кеше памяти с постоянным хранилищем на диске. Текущие back-end включают qdbm, berkeley db и (недавно добавленные после быстрого письма разработчику) кабинет tokyo. однако размер ключа/значения ограничен, но я считаю, что его можно снять, если вам не нужна поддержка TICP.
Попробуйте распределенную структуру карты из Redisson, она основана на 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();
У DNS есть возможность сделать это, я не знаю, насколько велика каждая из ваших записей (8 ГБ тонны небольших данных?), но она может работать.