Легкая библиотека B-дерева для Java?
Кто-нибудь может рекомендовать легкую, быструю и, надеюсь, стабильную библиотеку B-дерева (или аналогичную) для Java?
По сути, я ищу карту на диске; что-то вроде строк BerkeleyDB JE, за исключением того, что я не нуждаюсь в транзакциях, отлично с чтением только concurrency, и нужно, чтобы он составлял примерно 1/10 размера (также было бы полезно получить лицензию BSD или Apache).
Нужно быть чистым-Java, поэтому нет Токио/Киотских шкафов.
Реализация соответствующих интерфейсов Collections
будет плюсом (альтернативно, шаблонные интерфейсы для примитивных типов тоже будут хороши).
JDBM выглядит неплохо, но, похоже, он был оставлен в 2005 году (в 1.0, не менее).
Там также DiskBackedMap, но они выпустили альфа год назад, и ничего с тех пор.
Что-нибудь еще там? Или любой опыт с вышеупомянутыми?
Вещи, которые я НЕ ищут:
- В процессе обработки реляционных БД (так нет H2, Derby, SQLite и т.д.)
- Распределенные хранилища ключей (нет Redis, Memcachedb, Cassandra, Voldemort, Dumbledore или что-то еще)
Ответы
Ответ 1
Существует вилка JDBM, которая может вас заинтересовать.
См. http://www.kotek.net/blog/jdbm_2.1_and_beyond
GitHub: https://github.com/jankotek/JDBM3
Кроме того,
Электронная почта: [email protected]
Веб: http://groups.google.com/group/jdbm
RSS: http://groups.google.com/group/jdbm/feed/rss_v2_0_msgs.xml
EDIT:
JDBM4 был переименован в MapDB
Ответ 2
Поздний вклад, я знаю.
Мне самому не нужно волновать выбор библиотеки Java DBM. Мне нужно просто для минимизации использования памяти в некоторых случаях. (Для фактической настойчивости я бы использовал JPA.) В настоящее время в разных штатах существуют 4 разных проекта JDBM.
К счастью, сервер каталогов Apache поставляется с библиотекой JDBM, и мои захватывающие времена, похоже, ушли навсегда! Библиотека может использоваться отдельно и, по-видимому, основана на одной из четырех реализаций. Это также на MVNRepository.
<dependency>
<groupId>org.apache.directory.server</groupId>
<artifactId>apacheds-jdbm</artifactId>
<version>2.0.0-M5</version>
</dependency>
Ответ 3
https://github.com/jankotek/MapDB может сделать часть того, что вы хотите. Эта библиотека предоставляет несколько постоянных списков, наборов и реализаций карт, включая b-tree map.
Ответ 4
Современные проекты, о которых стоит упомянуть:
- LMDBJava позволяет использовать LMDB от Java. LMDB - это не совсем B-дерево, но это древовидная структура, т.е. е. всегда отсортированы.
- Если вы не сортировали свойство, Chronicle Map самый эффективный случайный доступ к неупорядоченному сохраненному хранилищу ключей для кучи для Java теперь