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

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

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

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

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

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

Структура данных, специфичная для recno, включена в dbopen
и определена в заголовочном файле следующим
образом:

typedef struct {
u_long flags;
u_int cachesize;
u_int psize;
int lorder;
size_t reclen;
u_char bval;
char *bfname;
} RECNOINFO;

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

flags Значение flag является одним из следующих:

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

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

R_SNAPSHOT
Этот flag требует, чтобы в момент вызова
dbopen была взята копия файла, вместо того,
чтобы разрешить считывать с оригинального
файла какие-либо неизмененные записи.).

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

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

lorder - байтовый порядок для чисел в метаданных,
хранящихся в базе данных. Номер должен
представлять порядок как число, например, порядок
числа big endian - 4,321. Если lorder равен 0
(порядок не определен), то используется порядок,
определенный архитектурой машины.

reclen - фиксированная длина записи.

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

bfname Функция recno хранит в памяти копии записей в
btree. Если bfname не равно нулю, оно определяет
имя btree-файла.

Часть "данные" из пары ключ/данные, использующейся
функцией recno, является такой же, как в других средствах
доступа. Ключ используется иначе. Как следует из описания
файла заголовков библиотеки , поле ключа data должно
служить указателем на расположение памяти типа recno_t.
Этот тип памяти обычно является аналогом наибольшего типа
данных, доступного в данной реализации. Поле ключа size
указывает на размер типа.

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

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

КОДЫ ОШИБОК
Функция recno может завершиться появлением ошибки и
вписать в переменную errno любой код, определенный для
dbopen(3), а также следующие:

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

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