Мне нужна структура Map на диске для использования в приложении Java. Он должен иметь следующие критерии:
- Способен хранить миллионы записей (даже миллиарды)
- Быстрый поиск - большинство операций на карте просто проверяют, существует ли ключ. Это и 1 выше являются наиболее важными критериями. Должен быть эффективный механизм кэширования памяти для часто используемых ключей.
- Постоянно, но не обязательно должно быть транзакционным, может жить с некоторой ошибкой. т. е. периодически синхронизируется с диском и не требует транзакций.
- Способен хранить простые примитивные типы, но мне не нужно хранить сериализованные объекты.
- Его не нужно распространять, т. Е. Все будет работать на одной машине.
- Простота установки и бесплатное использование.
- Реляционные запросы не требуются
Ключи записей будут строками или длинными. Как описано выше, чтения будут намного чаще, чем записи, и большинство операций чтения будут просто проверять, существует ли ключ (то есть не нужно читать ключи, связанные с данными). Каждая запись будет обновлена только один раз, и записи не будут удалены.
В настоящее время я использую Bdb JE, но ищу другие варианты.
Обновление
С тех пор улучшена производительность запросов в моей существующей установке BDB за счет уменьшения зависимости от вторичных ключей. В некоторых запросах требовалось объединение двух вторичных ключей, и, объединив их в составной ключ, я удалил уровень косвенности в поиске, что значительно ускоряет процесс.