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