Легкая библиотека B-дерева для Java? - PullRequest
14 голосов
/ 23 марта 2011

Кто-нибудь может порекомендовать легкую, быструю и, надеюсь, стабильную библиотеку B-дерева (или аналогичную) для Java?

По сути, я ищу карту на диске;что-то в духе BerkeleyDB JE, ​​за исключением того, что мне не нужны транзакции, все в порядке с параллелизмом только для чтения, и он должен быть примерно 1/10 размера (лицензия BSD или Apache тоже подойдет).

Нужно быть на чистом Java, поэтому никаких Токио / Киото Кабинетов.

Реализация соответствующих Collections интерфейсов была бы плюсом (альтернативно, шаблонные интерфейсы для примитивных типов тоже подойдут).

JDBM выглядит довольно хорошо, но, похоже, был заброшен в 2005 году (на уровне 1,0, не менее).

Есть также DiskBackedMap , но они выпущеныальфа год назад, и с тех пор ничего.

Есть что-нибудь еще?Или какой-либо опыт работы с вышеупомянутыми?

Вещи, которые я НЕ ищу:

  • Реляционные БД в процессе (так что нет H2, Derby, SQLite и т. Д.)
  • Распределенные хранилища значений ключей (без Redis, Memcachedb, Cassandra, Voldemort, Dumbledore и т. Д.)

Ответы [ 4 ]

7 голосов
/ 23 марта 2011

Существует интересная ветка JDBM.

См. http://www.kotek.net/blog/jdbm_2.1_and_beyond

GitHub: https://github.com/jankotek/JDBM3

Также

Электронная почта: jdbm@googlegroups.com

Интернет: http://groups.google.com/group/jdbm

RSS: http://groups.google.com/group/jdbm/feed/rss_v2_0_msgs.xml

EDIT:

JDBM4 был переименован в MapDB

2 голосов
/ 19 марта 2017

Современные проекты, о которых стоит упомянуть:

  • LMDBJava позволяет использовать LMDB из Java.LMDB - это не совсем B-дерево, но это древовидная структура, т. Е. Всегда отсортированная.
  • Если свойство сортировки не задано, Chronicle Map является наиболее эффективным Неупорядоченное постоянное хранилище значений ключа для Java с произвольным доступом теперь для Java
1 голос
/ 30 апреля 2013

https://github.com/jankotek/MapDB может делать то, что вы хотите. Эта библиотека предоставляет несколько постоянных реализаций списков, множеств и сопоставлений, включая карту b-дерева.

0 голосов
/ 28 января 2013

Поздний вклад, я знаю. Я сам не нуждаюсь в волнении выбора библиотеки 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>
...