У меня есть ниже сценарий:Проблема памяти: Хранение данных больших объемов в карте
- Огромного список сообщений из внешней системы (Сообщение содержит идентификатор и полезную нагрузку)
- Я фильтрацию этих сообщений на основе на идентификаторе и хранения полезной нагрузки в списке и, наконец, идентификатора и списка на карте.
- Позже, на основе идентификатора, я извлекаю список полезной нагрузки с карты и передаю весь список полезной нагрузки для дальнейшей обработки службе-исполнителю.
Ну, мне не нравится этот подход, поскольку во время выполнения у меня есть карта, содержащая все данные (пункт 2). Я мог бы решить проблему с памятью. Есть ли хорошо альтернатива вышеуказанного подхода.
EDIT
Я использую Java. Я получаю сообщения от какой-то внешней системы (я понятия не имею об объеме сообщений, которые могут возникнуть) и, наконец, обрабатываю их на основе их идентификатора. После обработки они сохраняются в базе данных. Однако проблема заключается в том, что я загружаю сообщения в Map на основе ID. Я должен сгруппировать сообщения на основе идентификатора, а затем отправить для обработки. Поэтому я должен хранить всю карту в памяти в течение определенного периода времени.
Заранее спасибо.
Сохранение сообщений в базе данных? (выберите ваш яд: реляционный или noSQL) ... Или покупаете дорогостоящий продукт (например, большую память Terracotta) и много оперативной памяти (сейчас 1TB дешево :) – Augusto
Насколько велики данные? Рассматриваете ли вы использование кеширующих инструментов, таких как hazelcast или cassandra. – dogant