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

В вычислительной технике DBM - это библиотека и формат файла, обеспечивающие быстрый одноключевой доступ к данным. Базы данных ключ-значение из исходного Unix , дБмВт является ранним примером NoSQL системы.

История

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

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

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

Библиотека dbm и ее производные являются реляционными базами данных  - они управляют ассоциативными массивами , реализованными в виде хеш-таблиц на диске . На практике они могут предложить более практичное решение для высокоскоростного хранилища, доступ к которому осуществляется по ключу, поскольку они не требуют накладных расходов на подключение и подготовку запросов. Это уравновешивается тем фактом, что они могут быть открыты для записи только одним процессом за раз. Демон агента может обрабатывать запросы от нескольких процессов, но имеет дополнительные издержки IPC .

Реализации

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

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

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

  • cdb («постоянная база данных»), база данных Дэниела Дж. Бернштейна , файлы базы данных можно только создавать и читать, но никогда не изменять
  • Tkrzw , лицензированный преемник Apache 2.0 Киотского кабинета и Токийского кабинета
  • WiredTiger : база данных с традиционным хранилищем, ориентированным на строки и столбцы.

Доступность

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

Надежность

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

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

использованная литература

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