Jump to content

компакт-диск (программное обеспечение)


cdb , сокращение от «постоянная база данных», относится как к библиотеке , так и к формату данных, созданному Дэниелом Дж. Бернштейном . cdb на диске действует как ассоциативный массив , сопоставляя ключи со значениями, и позволяет хранить несколько значений для одного ключа. База данных констант допускает только две операции: создание и чтение. Обе операции разработаны так, чтобы быть очень быстрыми и очень надежными. Поскольку база данных не изменяется во время использования, несколько процессов могут обращаться к одной базе данных без блокировки. Кроме того, поскольку все модификации создают заменяющую базу данных, она может использовать преимущества семантики файловой системы UNIX для обеспечения гарантии надежности.

Позиции записей, длины ключей и значений, а также хеш-значения представляют собой 32-битные величины и поэтому должны умещаться в 4 гигабайта. [1] cdb используется djbdns , fastforward , mess822 , qmail и ucspi-tcp для обеспечения высокоэффективного, надежного и простого доступа к данным.

Структура

[ редактировать ]

База данных содержит весь набор данных (например, один ассоциативный массив) в одном компьютерном файле . Он состоит из трех частей: заголовка фиксированного размера, данных и набора хеш-таблиц . Поиски предназначены только для точных ключей, хотя другие типы поиска могут выполняться путем сканирования всей базы данных. Поиск осуществляется по следующему алгоритму :

  • Хэшируйте ключ.
  • Определите, в какой хеш-таблице и слоте эта запись . должна находиться
  • Проверьте указанный слот в хеш-таблице.
    • Если слот пуст, запись не существует. Прервать поиск.
    • Если хеш слота совпадает с хешем ключа, найдите запись. Прочитайте и сравните ключ. Если они совпадают, данные найдены, поэтому завершите поиск.
    • Запись не в этом слоте. Перейдите к следующему слоту, при необходимости перейдя к началу хеш-таблицы.

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

Все числа — смещения, длины и хеш-значения — представляют собой 32- битные целые числа без знака , хранящиеся в формате с прямым порядком байтов . Ключи и данные считаются непрозрачными байтовыми строками и не требуют специальной обработки.

Заголовок фиксированного размера в начале базы данных описывает 256 хеш-таблиц, указывая их положение в файле и длину в слотах. Данные хранятся в виде серии записей, каждая из которых хранит длину ключа, длину данных, ключ и данные. Нет никаких правил выравнивания или сортировки. За записями следует набор из 256 хэш-таблиц различной длины. Поскольку ноль является допустимой длиной, в базе данных может физически храниться менее 256 хеш-таблиц, но, тем не менее, считается, что их 256. Хэш-таблицы содержат ряд слотов, каждый из которых содержит хэш-значение и смещение записи. «Пустые слоты» имеют нулевое смещение.

Хэши представляют собой 32-битные целые числа без знака и начинаются со значения 5381. Для каждого байта ключа текущий хэш умножается на 33, а затем выполняется операция XOR с текущим байтом ключа. Биты переполнения отбрасываются. Слоты и таблицы тривиально вычисляются на основе хешей. Целевая таблица — это просто младшие восемь бит хеша (т. е. хэш по модулю 256), а слот внутри таблицы — это оставшиеся биты хэша по модулю длины таблицы (т. е. хэш, разделенный на 256 по модулю длины таблицы).

Библиотека

[ редактировать ]

Официальный код библиотеки cdb является общедоступным : отдельные исходные файлы помечены как таковые и также доступны в общедоступном пакете djbdns . Однако остальная часть пакета cdb раньше была безлицензионным программным обеспечением , а это означает, что она должна распространяться дословно. Необычное лицензирование и простота формата побудили других повторно реализовать библиотеку и выпустить ее на более общих условиях, например, библиотеку TinyCDB Михаила Токарева, доступную в свободном доступе. [2] Было несколько повторных реализаций, которые снимают ограничение в 4 ГиБ на размер ключа/значения, однако эти модификации несовместимы с исходным форматом, таким как CDB переменной ширины , который поддерживает исходный формат файла CDB, а также 16-битный и 64-битный формат. битовые версии.

В 2009 году весь компакт-диск стал общественным достоянием. [3]

Примечательно, что создатель cdb не намеревается использовать cdb в качестве общей библиотеки . Это отличается практически от всех аналогичных dbm баз данных, подобных , таких как Berkeley DB . Многие из реализаций можно использовать как разделяемые библиотеки.

  1. ^ Спецификация CDB
  2. ^ «TinyCDB — база данных констант» . www.corpit.ru . Проверено 12 декабря 2016 г.
  3. ^ «Часто задаваемые вопросы от дистрибьюторов» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1dd7bc8ba8a8cd51218137243bc0df5b__1706519700
URL1:https://arc.ask3.ru/arc/aa/1d/5b/1dd7bc8ba8a8cd51218137243bc0df5b.html
Заголовок, (Title) документа по адресу, URL1:
cdb (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)