DBM (вычисления) - DBM (computing)

В вычислениях DBM это библиотека и формат файла обеспечение быстрого однократного доступа к данным. А база данных ключ-значение из оригинала Unix, dbm это ранний пример NoSQL система.[1][2][3]

История

Оригинал dbm библиотека и формат файла были простыми ядро базы данных, первоначально написано Кен Томпсон и выпущен AT&T в 1979 году. Имя трехбуквенное сокращение за Менеджер базы данных, а также может относиться к семейству механизмов баз данных с API и функциями, унаследованными от оригинального dbm.

В dbm библиотека хранит произвольные данные с помощью одного ключа ( первичный ключ ) в фиксированном размере ведра и использует хеширование методы, позволяющие быстро извлекать данные по ключу.

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

В dbm библиотека и ее производные предварительнореляционные базы данных - они управляют ассоциативные массивы, реализованный как на диске хеш-таблицы. На практике они могут предложить более практичное решение для высокоскоростного хранилища, доступ к которому осуществляется по ключу, поскольку они не требуют накладных расходов на подключение и подготовку запросов. Это уравновешивается тем фактом, что они могут быть открыты для записи только одним процессом за раз. Агент демон может обрабатывать запросы от нескольких процессов, но вводит МПК накладные расходы.

Реализации

Оригинальный AT&T dbm библиотека была заменена множеством последующих реализаций. Известные примеры включают:[3]

  • ndbm («новая база данных»), основанная на исходной базе данных с некоторыми новыми функциями.
  • GDBM ("GNU dbm"), GNU переписать библиотеку, реализующую ndbm особенности и собственный интерфейс.
  • sdbm ("малый dbm"), a всеобщее достояние переписать dbm. Это часть стандартных дистрибутивов для Perl и Рубин.[4][5]
  • qdbm, более производительный dbm используя многие из тех же методов, что и Кабинет Токио / Киото. Написано тем же автором, прежде чем они перешли к шкафам.[6]
  • tdb, простая база данных, используемая Самба который поддерживает несколько писателей. Имеет API на основе gdbm.[7]
  • Berkeley DB, 1991 замена ndbm на Программное обеспечение Sleepycat (сейчас же Oracle ) создан, чтобы обойти авторские права AT&T Unix на BSD. Он имеет множество расширений, таких как параллелизм, управление транзакциями, хеширование и хранилище B-дерева.
  • LMDB: копирование при записи с отображением памяти B + дерево реализация в C с API в стиле Беркли.

Следующие базы данных созданы на основе dbm, но они не предоставляют напрямую интерфейс dbm, хотя было бы тривиально обернуть его:

Доступность

По состоянию на 2001 г. ndbm реализация DBM была стандартной для Solaris и IRIX, тогда как gdbm повсеместно встречается на Linux. Реализации Berkeley DB были стандартными для некоторых бесплатных операционных систем.[2][10] После изменения лицензирования Berkeley DB на GNU AGPL в 2013 году такие проекты, как Debian перешли в LMDB.[11]

Надежность

А 2018 AFL расплывание Тестирование многих баз данных семейства DBM выявило множество проблем при реализации, когда дело доходит до поврежденных или недействительных файлов базы данных. Только freecdb к Дэниел Дж. Бернштейн вылетов не было. Авторам gdbm, tdb и lmdb было предложено ответить. Berkeley DB отстала из-за большого количества других проблем;[10] исправления не будут иметь значения для пользователей программного обеспечения с открытым исходным кодом из-за изменения лицензирования, блокирующего их обратно в старой версии.[11]

Смотрите также

Рекомендации

  1. ^ Кью 2007, п. 80: «DBM были с нами с первых дней развития вычислительной техники, когда была признана потребность в быстром поиске по ключам. Исходная DBM - это библиотека на основе UNIX и формат файла для быстрого и высокомасштабируемого доступа к данным с ключами. за ним (по порядку) идут NDBM («новая DBM»), GDBM («GNU DBM») и Berkeley DB. Последняя, ​​безусловно, самая продвинутая и единственная DBM, находящаяся в активной разработке сегодня. Тем не менее, все DBM от NDBM и далее предоставляют те же основные функции, которые используются в большинстве программ, включая Apache. SDBM с минимальной реализацией также поставляется в комплекте с APR, и доступен для приложений вместе с другими DBM.
    Хотя NDBM сейчас устарел - как город, названный греками Новый Город («Неаполис») примерно в 600 г. до н.э. и до сих пор называемый Неаполем, - он остается базовым DBM. NDBM использовался ранними модулями Apache, такими как версии Apache 1.x mod_auth_dbm и mod_rewrite. И GDBM, и Berkeley DB предоставляют эмуляции NDBM, и дистрибутивы Linux поставляются с той или иной из этих эмуляций вместо «настоящей» NDBM, которая исключена по причинам лицензирования. К сожалению, различные форматы файлов полностью несовместимы, и есть небольшие различия в поведении, касающемся блокировки базы данных. Эти проблемы побудили пользователей Linux постоянно сообщать о проблемах с DBM в Apache 1.x. "
  2. ^ а б Хейзел 2001, п. 500: «Самый распространенный [одноключевой] формат называется DBM. В большинстве современных версий Unix библиотека DBM установлена ​​как стандартная, хотя это не относится к некоторым более старым системам. Две наиболее распространенные библиотеки DBM - это ndbm (стандарт для Solaris и IRIX) и Berkeley DB версии 2 или 3 (стандарт для нескольких бесплатных операционных систем). Exim поддерживает оба из них, а также более старую Berkeley DB Version 1, gdbm, и tdb."
  3. ^ а б Лэдд и О'Доннелл 2001, стр. 823-824: «Большинство систем UNIX имеют какую-либо базу данных DBM. DBM - это набор библиотечных процедур, которые управляют файлами данных, состоящими из пар ключей и значений. Процедуры DBM управляют тем, как пользователи вводят и извлекают информацию из базы данных. Хотя это не самый мощный механизм для хранения информации, использование DBM является более быстрым методом получения информации, чем использование плоского файла. Поскольку большинство сайтов UNIX используют одну из библиотек DBM, инструменты, необходимые для хранения вашей информации в DBM базы данных легко доступны.
    Существует почти столько же разновидностей библиотек DBM, сколько существует систем UNIX. Хотя большинство этих библиотек совместимы друг с другом, все они в основном работают одинаково ...
    Ниже приводится список некоторых из наиболее популярных доступных библиотек DBM:
    • DBM - DBM хранит базу данных в двух файлах. Первый имеет расширение .Pag и содержит растровое изображение. Второй, имеющий расширение .Dir, содержит данные.
    • NDBM - NDBM очень похож на DBM, но с некоторыми дополнительными функциями; он был написан для обеспечения лучших методов хранения и поиска. Кроме того, NDBM позволяет вам открывать множество баз данных, в отличие от DBM, в котором вам разрешено открывать только одну базу данных в вашем скрипте. Как и DBM, NDBM хранит свою информацию в двух файлах, используя расширения .Pag и .Dir.
    • SDBM - SDBM поставляется с архивом Perl, который был перенесен на многие платформы. Следовательно, вы можете использовать базы данных DBM, пока на вашем компьютере существует версия Perl. SDBM был написан для соответствия функциям, предоставляемым с NDBM, поэтому переносимость кода не должна быть проблемой. Perl доступен практически на всех популярных платформах.
    • GDBM - GDBM - это GNU-версия семейства процедур базы данных DBM. GDBM также позволяет вам кэшировать данные, сокращая время, необходимое для записи в базу данных. База данных не имеет ограничений по размеру; его размер полностью зависит от ресурсов вашей системы. Файлы базы данных GDBM имеют расширение .Db. В отличие от DBM и NDBM, которые используют два файла, GDBM использует только один файл.
    • Berkeley db - Berkeley db значительно расширяет исходные процедуры DBM. База данных Berkeley использует хешированные таблицы так же, как и другие базы данных DBM, но библиотека также может создавать базы данных на основе отсортированного сбалансированного двоичного дерева (BTREE) и хранить информацию с номером строки записи (РЕКНО). Метод, который вы используете, полностью зависит от того, как вы хотите сохранять и извлекать информацию из базы данных. Berkeley db создает только один файл без расширения ".
  4. ^ йигит, озан. "sdbm.bun". cse.yorku.ca. Получено 8 мая, 2019.
  5. ^ «класс SDBM». Документация для Ruby 2.4.0. Обратите внимание, что Ruby поставляется с исходным кодом для SDBM, а стандартные библиотеки DBM и GDBM полагаются на внешние библиотеки и заголовки.
  6. ^ «QDBM: Быстрый менеджер баз данных». fallabs.com. 2006.
  7. ^ "tdb: главная страница". tdb.samba.org.
  8. ^ "Tokyo Cabinet 第 1 様" [Основные характеристики Токийского кабинета, версия 1]. Осенние лаборатории (на японском языке). 5 августа 2010. Архивировано с оригинал 28 октября 2018 г.. Получено 25 мая 2019. Tokyo Cabinet は GDBM や QDBM の 後 継 と 点 を 目標 と し さ れ ま し た。 こ は 達成 さ れ て り Tokyo Cabinet DBM
  9. ^ "Tokyo Cabinet 第 1 様" [Основные характеристики Токийского кабинета, версия 1]. Осенние лаборатории (на японском языке). 5 августа 2010. Архивировано с оригинал 28 октября 2018 г.. Получено 25 мая 2019. Tokyo Cabinet は GDBM や QDBM の 後 継 と 点 を 目標 と し さ れ ま し た。 こ は 達成 さ れ て り Tokyo Cabinet DBM
  10. ^ а б Дебру, Лайонел (16 июня 2018 г.). "oss-security - Развлечение с базами данных типа DBM ..." openwall.com.
  11. ^ а б Суры, Ондржей (19 июня 2014 г.). «Новая цель проекта: избавиться от Berkeley DB (пост Джесси)». debian-devel (Список рассылки). Debian.

Библиография