У меня есть проблема, где я должен собрать Карту, возможный размер которой находится в ГБ (идущий на прошлых 64 ГБ), и я не могу предположить, что у пользователя программы будет этот вид машины монстра бродящим вокруг. Хорошее решение состояло бы в том, чтобы распределить эту карту через многие машины для создания намного более скромного объема потребляемой памяти на экземпляр.
Кто-либо знает о библиотеке/комплекте инструментов, которые могут выполнить этот sharding? Я не забочусь о репликации или транзакциях; просто распространив это требование к памяти вокруг.
Я предлагаю начать с Hazelcast:
Это открытый источник, и на мой взгляд, это очень Простота для работы, поэтому это лучшая рамка для быстрой прототипирования.
Насколько я знаю, он выступает быстрее, чем коммерческие альтернативы, поэтому я тоже не буду беспокоиться о производительности.
(Я сам официально официально не сравнил)
Гигассоты DataGrid звучит как та, которую вы ищете. (Не бесплатно)
Должен ли это быть открытым источником? Если нет, Oracle Coherence может сделать это.
терракота может быть полезна, посмотрите здесь
ее кластеризованный jvm будет зависеть от того, как часто вы обновляете карту, я думаю, от того, насколько хорошо она работает.
Вы можете решить свою проблему, используя вместо этого базу данных, что-то вроде http://hsqldb.org/ может обеспечить необходимую функциональность, позволяющую записывать данные на диск, а не хранить все это в памяти.
Я бы определенно сделал шаг назад и спросил себя, является ли карта правильной структурой данных для гигабайт данных.