Альтернатива BerkeleyDB? - PullRequest
37 голосов
/ 04 ноября 2008

Я ищу dbm-подобную библиотеку, которую я могу использовать вместо Berkeley DB, которую я сейчас использую. Моя основная причина перехода заключается в том, что лицензионные сборы за BDB довольно высоки (бесплатно для приложений с открытым исходным кодом, но мой работодатель не хочет открывать этот конкретный приложение по различным причинам).

Я кратко посмотрел на qdbm, но не похоже, что он удовлетворит мои потребности - множество ключей (несколько миллионов) и большие элементы данных (> 1-5 мегабайт). Прежде чем продолжить поиск, я решил спросить, потому что, похоже, существует множество dbm-подобных библиотек.

Ответы [ 9 ]

24 голосов
/ 08 августа 2014

C / C ++

Java

18 голосов
/ 14 ноября 2008

Вы можете посмотреть на Токийский кабинет . Это преемник qdbm / gdbm, и если вы решите масштабировать, у вас есть хороший сетевой интерфейс

Edit:

Другой вариант - Киотский кабинет ; разработано тем же человеком, но предположительно проще в использовании.

11 голосов
/ 04 ноября 2008

SQLite является общественным достоянием, то есть вы можете использовать его для любых целей, он широко используется и поддерживается.

8 голосов
/ 14 ноября 2008

Вы можете получить значительно улучшенную производительность от любого dbm (даже qdbm) и улучшенного параллелизма с простым уровнем косвенности: просто возьмите свои ключи и хэшируйте их, и используйте data_dir/H(key)/ в качестве базы данных для хранения этих ключей. Для достижения наилучших результатов ограничьте вывод хеша небольшим значением (скажем) 255.

Этот подход имеет ряд преимуществ, которые можно легко обобщить:

  • Концептуально просто
  • Простота реализации и тестирования
  • Не блокирует всю базу данных для обновлений
  • Может поддерживать гораздо большие базы данных
  • Легко заменить компонент DBM

Хеш, вероятно, даже не должен быть криптографически безопасным; просто в основном униформа. DJB cdb hash хорошо работает в большинстве случаев.

3 голосов
/ 26 февраля 2012

Вы можете попробовать JDBM . Это бесплатное (Apache 2) хранилище значений ключей с сохранением диска. Простой API и высокая производительность

3 голосов
/ 15 декабря 2008

Если вы работаете в Windows, вы можете использовать встроенный движок базы данных. http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx

2 голосов
/ 14 ноября 2008

Postgres или HSQLDB и, возможно, даже база данных H2

0 голосов
/ 04 ноября 2008

Жар-птица ваш лучший друг.

0 голосов
/ 04 ноября 2008

db4o довольно дешев и быстр, но его можно использовать только с Java или .net

...