Документация по LinuxLinuxDoc.Ru 🔍

hash - методы доступа к базе данных ассоциативных массивов

НАЗВАНИЕ
hash - методы доступа к базе данных ассоциативных массивов

СИНТАКСИС
#include
#include

ОПИСАНИЕ
Функция dbopen является стандартным методом для работы с
базами данных. Одним из поддерживаемых ей форматов
являются ассоциативные массивы (hash files). Описания
основных методов доступа к базам данных находятся в
dbopen(3), а данная страница руководства описывает только
особенности ассоциативных массивов.

Структура данных массивов гибка и динамична.

Особая структура данных, методы доступа к которой
обеспечивает dbopen, определена в файле :

typedef struct {
u_int bsize;
u_int ffactor;
u_int nelem;
u_int cachesize;
u_int32_t (*hash)(const void *, size_t);
int lorder;
} HASHINFO;

Элементы даной структуры таковы:

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

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

nelem Nelem - это предполагаемый окончательный размер
таблицы массива. Если величина не установлена, или
установлена слишком маленькой, размер таблицы
увеличивается каждый раз, когда добавляется новый
ключ. Это может привести к понижению
производительности и скорости работы. Значение по
умолчанию - 1.

cachesize
Максимальный размер внутреннего кэша таблицы, в
байтах. Эта величина только рекомендация, метод
доступа скорее выделит память, чем завершится с
ошибкой.

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

lorder Порядок байт для целых чисел в метаданных таблицы.
Число должно представлять порядок байт в целом
числе, например, порядок big endian представляется
числом 4321. Если lorder равен 0 (т.е. порядок не
определен) используется порядок байт текущей
архитектуры. Если файл уже существует, то
определенная величина будет игнорирована и
использоваться будет порядок байт определенный при
создании.

Если файл уже существует (и флаг O_TRUNC не определен),
величины определяемые в параметрах bsize, ffactor, lorder
и nelem будут игнорированы и их значения будут получены из
файла.

Если функция для работы с массивом определена, то
hash_open попытается определить, совпадает ли эта функция
с той, что использовалась при создании файла, и
завершается с ошибкой, если это не так.

Обратно совместимый интерфейс определеный в dbm(3), и
ndbm(3) также существует, но он не совместим с предыдущими
реализациями по формату файлов.

КОДЫ ОШИБОК

Метод доступа hash может завершится с ошибкой и установить
переменную errno в любое значение, определенное для
библиотечной функции dbopen(3).

НАЙДЕННЫЕ ОШИБКИ
Поддерживается только big и little endian порядок байтов.
Читать новости Linux в Telegram
Linux - hash - методы доступа к базе данных ассоциативных массивов
Мы в соцсетях ✉