Подтвердить что ты не робот

Нужна распределенная система поиска ключевых значений

Мне нужен способ делать поиск по ключевым словам через (потенциально) сотни ГБ данных. Идеально что-то основано на распределенной хэш-таблице, которая хорошо работает с Java. Он должен быть отказоустойчивым и открытым исходным кодом.

Магазин должен быть постоянным, но идеально кэшировать данные в памяти, чтобы ускорить работу.

Он должен иметь возможность поддерживать одновременные чтения и записи с нескольких компьютеров (чтение будет на 100 раз чаще). В основном цель состоит в том, чтобы быстро выполнить первоначальный поиск метаданных пользователя для веб-службы.

Кто-нибудь может что-нибудь рекомендовать?

4b9b3361

Ответ 1

Возможно, вы захотите проверить Hazelcast. Он распределен/разбит на разделы, сверхлегкий, легкий и бесплатный.

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

Привет,

-talip

Ответ 2

Open Chord - это реализация CHORD в Java. Это распределенный хэш-протокол, который должен соответствовать вашим потребностям.

Ответ 3

В зависимости от варианта использования Terracotta может быть именно то, что вам нужно.

Ответ 4

Вероятно, вам следует указать, нужно ли оно быть постоянным или нет, в памяти или нет, и т.д. Вы можете попробовать: http://www.danga.com/memcached/

Ответ 5

Распределенные хеш-таблицы включают Tapestry, Chord и Pastry. Один из них должен соответствовать вашим потребностям.

Ответ 6

OpenChord звучит многообещающе; но я бы также рассмотрел BDB или любую другую хэш-таблицу, отличную от SQL, что делает ее распределенной, может быть мертвой (если количество хранилищ узлы являются (почти) постоянными, по крайней мере), просто хэш-ключ на клиенте, чтобы получить соответствующий сервер.

Ответ 8

nmdb звучит как именно то, что вам нужно. Распределено в кеше памяти с постоянным хранилищем на диске. Текущие back-end включают qdbm, berkeley db и (недавно добавленные после быстрого письма разработчику) кабинет tokyo. однако размер ключа/значения ограничен, но я считаю, что его можно снять, если вам не нужна поддержка TICP.

Ответ 9

Попробуйте распределенную структуру карты из 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();

Ответ 10

У DNS есть возможность сделать это, я не знаю, насколько велика каждая из ваших записей (8 ГБ тонны небольших данных?), но она может работать.