Легкая библиотека 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 или что-то еще)

Ответы

Ответ 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 теперь