Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <sys/types.h> #include <db.h>

ОПИСАНИЕ

       Примечание: На этой странице описаны интерфейсы, предоставляемые до glibc 2.1. Начиная с glibc 2.2, glibc
       больше не поддерживает эти интерфейсы. Вероятно, вы ищите API, предоставляемое библиотекой libdb.

       Функция  dbopen(3)  —  это  библиотечный  интерфейс  к файлам баз данных. Один из поддерживаемых форматов
       файлов — hash. Общее описание методов доступа к  базам  данных  находится  в  dbopen(3).  Эта  справочная
       страница содержит только информацию, относящуюся к ассоциативным массивам.

       Структура данных ассоциативных массивов (хэш) расширяемая и динамична.

       Специальная  структура  метода  доступа данных, к которой обращается dbopen(3), задана в <db.h> следующим
       образом:

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

       Элементы этой структуры имеют следующее назначение:

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

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

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

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

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

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

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

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

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

ОШИБКИ

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

ОШИБКИ

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

СМОТРИТЕ ТАКЖЕ

       btree(3), dbopen(3), mpool(3), recno(3)

       Dynamic Hash Tables, Per-Ake Larson, Communications of the ACM, April 1988.

       A New Hash Package for UNIX, Margo Seltzer, USENIX Proceedings, Winter 1991.

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал(и) Yuri  Kozlov  <yuray@komyakino.ru>,  Иван  Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

4.4 Berkeley Distribution                         2 мая 2024 г.                                          hash(3)