Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       recno - метод доступа к базам нумерованных данных

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

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

ОПИСАНИЕ

       Note  well:  This page documents interfaces provided up until glibc 2.1.  Since glibc 2.2,
       glibc no longer provides these  interfaces.   Probably,  you  are  looking  for  the  APIs
       provided by the libdb library instead.

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

       Структура нумерованных данных может описывать записи переменной или  фиксированной  длины,
       хранящиеся  в  файле  в  «плоском»  формате,  и  доступные  по  логическому номеру записи.
       Существование записи с номером пять  подразумевает  существование  записей  от  одного  до
       четырёх  и удаление записи с номером один вызывает перенумеровывание записи с номером пять
       в запись с номером четыре, а также сдвиг курсора вниз на одну запись, если он указывает на
       запись после номера один.

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

           typedef struct {
               unsigned long flags;
               unsigned int  cachesize;
               unsigned int  psize;
               int           lorder;
               size_t        reclen;
               unsigned char bval;
               char         *bfname;
           } RECNOINFO;

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

       flags  Значение флага определяется логическим ИЛИ следующих значений:

              R_FIXEDLEN
                     Записи  фиксированной  длины  без  разделительного   байта.   Полем   reclen
                     определяется  длина записи, а поле bval используется как дополняющий символ.
                     Все вставляемые в базу данных записи, размер  которых  меньше  reclen  байт,
                     автоматически дополняются.

              R_NOKEY
                     В  интерфейсе,  определённом  dbopen(3),  последовательная  выборка  записей
                     заполняет структуры данных и ключа вызывающего. Если указан флаг R_NOKEY, то
                     процедурам  cursor  не  обязательно заполнять структуру ключа. Это позволяет
                     приложениям извлекать записи из конца файлов без чтения  всех  промежуточных
                     записей.

              R_SNAPSHOT
                     Этим  флагом  указывается, чтобы в момент вызова dbopen(3) был сделан снимок
                     (snapshot) файла, а не выполнялось чтение каких-либо не  изменённых  записей
                     из оригинального файла.

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

       psize  Метод доступа recno хранит копии своих записей в памяти в виде  дерева  btree.  Это
              значение  задаёт  размер  страниц (в байтах), используемых для узлов в этом дереве.
              Если значение psize равно 0 (размер страницы не указан), то  размер  выбирается  на
              основе  размера блока ввода-вывода нижележащей файловой системы. Подробней смотрите
              btree(3).

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

       reclen Длина записи фиксированной длины.

       bval   Разделительный байт, для использования в качестве отметки конца записи с переменной
              длиной и как заполняющий символ для записи с фиксированной длиной. Если значение не
              указано, то для отметки конца записи с переменной длиной используется символ  новой
              строки («\n»), а записи с фиксированной длиной дополняются пробелом.

       bfname Метод  доступа  recno  хранит  в  памяти  копии  своих записей в дереве btree. Если
              значение bfname не равно NULL, то им задаётся имя btree-файла в том же виде, что  и
              при доступе dbopen(3) для доступа к btree-файлу.

       Часть «данные» из пары ключ/данные, используемая методом доступа recno, является такой же,
       как в других  методах  доступа.  Ключ  используется  иначе.  Как  следует  из  определения
       заголовочного  файла <db.h>, поле ключа data должно быть указателем на расположение памяти
       типа recno_t. Этот  тип,  обычно,  является  наибольшим  беззнаковым  целочисленным  типом
       данных,  применяемым  в  реализации. Значение поля ключа size должен задавать размер этого
       типа.

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

       В интерфейсе, определённым dbopen(3), использование  интерфейса  put  для  создания  новой
       записи  повлечёт за собой создание множества пустых записей, если номер записи больше, чем
       номер наибольшей записи, имеющейся в базе данных.

ОШИБКИ

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

       EINVAL Попытка добавить слишком большую запись в базу данных фиксированной длины.

ДЕФЕКТЫ

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

СМ. ТАКЖЕ

       btree(3), dbopen(3), hash(3), mpool(3)

       Document  Processing in a Relational Database System, Michael Stonebraker, Heidi Stettner,
       Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.

ПЕРЕВОД

       Русский перевод этой страницы руководства был сделан aereiae  <aereiae@gmail.com>,  Azamat
       Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova
       <blackkatelv@gmail.com>, Lockal <lockalsash@gmail.com>, Yuri Kozlov  <yuray@komyakino.ru>,
       Баринов Владимир и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.