Альтернатива BerkeleyDB?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
40
0
24 269
9

Ответы 9

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

Хорошая идея, но SQLite явно не рекомендуется для больших баз данных. У нас будет около 50 ГБ; извините, вероятно, это не было ясно в исходном сообщении.

John 04.11.2008 06:49

Другая проблема заключается в том, что BDB - это не СУБД SQL, а механизм хранения. Так что, если он не написал реализацию SQL поверх BDB, кажется, что будет немного больше работы по переносу на SQL, а не на другой механизм хранения.

Ferruccio 04.11.2008 14:56

@Ferruccio, ему не нужно портировать на SQL, он может просто реализовать BDB-подобный API поверх SQL. с легкостью.

lubos hasko 14.11.2008 18:24
sqlite.org/whentouse.html предлагает "несколько десятков ГБ" в порядке. Вы бы хотели, чтобы в файловой системе было хотя бы достаточно места для второй полной копии базы данных для журналов. Я без проблем использовал sqlite в диапазоне 2-5 ГБ; он работает приемлемо.
Dickon Reed 15.12.2008 20:33

Berkeley DB теперь поддерживает SQL, а также API ключ / значение. Фактически, он использует код SQLite поверх B-дерева Berkeley DB, поэтому теперь вы можете запускать базы данных SQLite размером в ТБ не только в тех случаях, когда «несколько десятков ГБ» вполне достаточно. (Отказ от ответственности: я являюсь менеджером по продукту Berkeley DB в Oracle.)

Greg Burd 20.01.2011 23:22

Похоже, что SQLite поддерживает базы данных размером ТБ - sqlite.org/features.html

akostadinov 15.03.2013 16:00

Я обнаружил, что блокировка Berkeley DB ненадежна по сравнению с SQLite.

Erik Aronesty 28.02.2014 23:55

@Greg Hewgill Почему нет официально протестированной вещи для встраивания sqlite в Java-приложение. Не могли бы вы пролить свет на этот вопрос. Это было бы большим подспорьем.

Shreyans jain 09.07.2017 20:28

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

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

lubos hasko 14.11.2008 18:34

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

Firebird - очень хорошая база данных SQL. Не очень хорош в качестве БД для хранения, но, вероятно, лучше, чем у большинства из-за очень хорошей поддержки BLOB.

Simon Buchan 02.03.2009 08:50

Не могли бы вы подробнее рассказать о том, что «не очень хорош в качестве БД для хранения»? Кроме того, я хотел бы узнать больше о том, чем Firebird НЕ хорош (цена? Размер? :))

F.D.Castel 05.07.2009 22:14

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

Редактировать:

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

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

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

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

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

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

Интересное предложение, но оно немного противоречит вопросу. Достоинства использования хеш-таблицы по сравнению с сортированной структурой типа btree - это отдельная тема.

gonzojive 07.08.2011 21:36

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

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

C / C++

Ява

Другие вопросы по теме