RECNO(3)

NOME
recno - método de acesso a banco de dados por número de registro

SINÓPSE
#include <sys/types.h>
#include <db.h>

DESCRIÇÃO
A rotina dbopen é a interface de biblioteca para arquivos de banco de dados. Um dos formatos de arquivos suportados são os arquivos de número de registros. A descrição geral dos métodos de acesso a banco de dados está em dbopen(3), esta página de manual descreve somente a informação específica de recno.

A estrutura de dados de número de registro são registros variáveis ou de comprimento fixo, armazenados em formato de arquivo liso, acessado por número de registro lógico. A existência do número de registro cinco implica na existência dos registros de um a quatro, e o apagamento do registro um faz com que o registro número cinco seja renumerado para quatro, assim como o cursor, que se estiver posicionado depois do registro número um, é deslocado em um registro para baixo.

A estrutura de dados específico do método de acesso recno fornecida para dbopen é definida no arquivo de inclusão <db.h>, como a seguir:

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

Os elementos desta estrutura são definidos como segue:

flags
    O valor da flag é especificado por ou está especificando qualquer um dos seguintes valores:

    R_FIXEDLEN
        Os registros são de comprimento fixo, não delimitados por byte. O elemento de estrutura reclen especifica o comprimento do registro, e o elemento de estrutura bval é usado como o caractere de preenchimento. Quaisquer registros, inseridos no banco de dados, que têm menos do que reclen bytes de comprimento são completados automaticamente.

    R_NOKEY
        Na interface especificada por dbopen, a recuperação de registros sequenciais preenchem tanto a chave do solicitante quanto as estruturas de dados. Se o sinalizador R_NOKEY é especificada, as rotinas do cursor não são requeridas para preencher a estrutura da chave. Isto permite que as aplicações recuperem registros no fim dos arquivos sem ler todos os registros intermediários.

    R_SNAPSHOT
        Este sinalizador requer que uma imagem instantânea do arquivo seja tomada quando dbopen é chamado, em vez de permitir que qualquer registro não modificado seja lido do arquivo original.

cachesize
    Um tamanho máximo sugerido, em bytes, do cache de memória. Este valor é apenas uma recomendação, e o método de acesso alocará mais memória em vez de falhar. Se cachesize é 0 (nenhum tamanho é especificado), é usado um cache padrão.

psize
    O método de acesso recno armazena as cópias em memória dos seus registros em uma btree. Este valor é o tamanho (em bytes) das páginas usadas para os nós daquela árvore. Se psize é 0 (o tamanho da página não é especificado), é escolhido um tamanho de página baseado no tamanho básico do bloco de E/S do sistema de arquivos. Veja btree(3) para mais informações.

lorder
    A ordem de bytes para inteiros nos metadados armazenados do banco de dados. O número deve representar a ordem como um inteiro; por exemplo, a ordem "big endian" deveria ser o número 4,321. Se lorder é 0 (a ordem não é especificada), a ordem corrente do host é usada.

reclen
    O comprimento de um registro de comprimento fixo.

bval
    O byte delimitante a ser usado para marcar o fim de um registro para registros de comprimento variável, e o caractere de preenchimento para registros de comprimento fixo. Se nenhum valor é especificado, novas linhas (``\n'') são usadas para marcar o fim de registros de comprimento variável, e registros de comprimento fixo são completados com espaços.

bfname
    O método de acesso recno armazena as cópias em memória dos seus registros em uma btree. Se bfname não é NULO, ele especifica o nome do arquivo da btree, como se fosse especificado como um nome de arquivo para um dbopen de um arquivo da btree.

A parte dos dados de um par chave/dados usado para o método de acesso recno é o mesmo que em outros métodos de acesso. A chave é diferente. O campo data da chave deve ser um ponteiro para um local da memória do tipo recno_t, como definido no arquivo de inclusão <db.h>. Este tipo é normalmente o maior tipo integral sem sinal disponível para a inplementação. O campo size da chave deve ser o tamanho daquele tipo.

Como pode não haver metadados associados com os arquivos básicos do método de acesso recno, qualquer mudança feita nos valores padrão (por exemplo, comprimento fixo dos registros ou valor do separador de bytes) precisa ser especificada explicitamente cada vez que o arquivo é aberto.

Na interface especificada por dbopen, usar a interface put para criar um novo registro fará com que sejam criados vários registros vazios se o número do registro é maior, por mais de um, que o maior registro correntemente no banco de dados.

ERROS
As rotinas do método de acesso recno podem falhar e setar errno para qualquer um dos erros especificados para a rotina de biblioteca dbopen(3), ou os seguintes:

[EINVAL]
    Uma tentativa foi feita para acrescentar um registro a um banco de dados de comprimento fixo que era muito grande para caber.

VEJA TAMBÉM
btree(3) dbopen(3), hash(3), mpool(3),

Processamento de Documentos em um Sistema de Banco de Dados Relacional, Michael Stonebraker, Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.

PROBLEMAS
Somente as ordens de byte 'big endian' (primeiro o mais significativo) e 'little endian' (primeiro o byte menos significativo) são suportadas.

TRADUZIDO POR LDP-BR em 03/08/2000.

  Tradução:
Rubens de Jesus Nogueira <darkseid99@usa.net>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>