Provided by: manpages-pt-br-dev_4.26.0-1_all bug

NOME

       dbopen - métodos de acesso a banco de dados

BIBLIOTECA

       Biblioteca C Padrão (libc, -lc)

SINOPSE

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

       DB *dbopen(const char *file, int flags, int mode, DBTYPE type,
                  const void *openinfo);

DESCRIÇÃO

       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() é a interface de biblioteca para arquivos de banco de dados. Os formatos de arquivos  suportados
       são  btree,  esmiuçados  e  orientados  a  arquivos  UNIX.  O  formato 'btree' é uma representação de uma
       estrutura de árvore balanceada e ordenada. O formato 'hash' é  um  esquema  de  esmiuçamento  dinâmico  e
       extensível.  O formato 'texto plano' é um arquivo de sequência de bytes com registros de comprimento fixo
       ou variável. Os formatos e as informações específicas de  formato  são  descritas  em  detalhes  em  suas
       respectivas páginas de manual btree(3), hash(3) e recno(3).

       dbopen()   opens  file  for  reading and/or writing.  Files never intended to be preserved on disk may be
       created by setting the file argument to NULL.

       The flags and mode arguments are as specified to the open(2) routine, however, only the O_CREAT,  O_EXCL,
       O_EXLOCK,  O_NONBLOCK,  O_RDONLY,  O_RDWR,  O_SHLOCK, and O_TRUNC flags are meaningful.  (Note, opening a
       database file O_WRONLY is not possible.)

       The type argument is of type DBTYPE (as defined in the <db.h> include file) and may be set  to  DB_BTREE,
       DB_HASH, or DB_RECNO.

       O  argumento openinfo é um ponteiro para uma estrutura de método de acesso específica, descrita na página
       de manual do método de acesso. Se openinfo é NULO, cada método de acesso usará padrões adequados  para  o
       sistema e o método de acesso.

       dbopen()  retorna  um  ponteiro  para  uma  estrutura  DB  se for bem-sucedido, e NULO em caso de erro. A
       estrutura DB é definida no arquivo 'include' <db.h>, é contém pelo menos os seguintes campos:

           typedef struct {
               DBTYPE type;
               int (*close)(const DB *db);
               int (*del)(const DB *db, const DBT *key, unsigned int flags);
               int (*fd)(const DB *db);
               int (*get)(const DB *db, DBT *key, DBT *data,
                          unsigned int flags);
               int (*put)(const DB *db, DBT *key, const DBT *data,
                          unsigned int flags);
               int (*sync)(const DB *db, unsigned int flags);
               int (*seq)(const DB *db, DBT *key, DBT *data,
                          unsigned int flags);
           } DB;

       Estes elementos descrevem um tipo de banco de dados e um conjunto de  funções  realizando  várias  ações.
       Estas  funções  usam  um  ponteiro  para uma estrutura como retornado por dbopen(), e às vezes um ou mais
       ponteiros para estruturas chave/dados e um valor de sinalização.

       type   O tipo de método-base de acesso (e formato de arquivo).

       close  Um ponteiro para uma rotina que esvazia qualquer informação no cache de  disco,  libera  quaisquer
              recursos alocados, e fecha o(s) arquivo(s) de base. Como os pares chave/dados podem ficar no cache
              de  memória,  uma  falha  em  sincronizar  o arquivo com uma função close ou sync pode resultar em
              inconsistência ou perda de informação. Rotinas close retornam -1 em  caso  de  erro  (configurando
              errno), e 0 em caso de sucesso.

       del    Um ponteiro para uma rotina que remove pares chave/dados do banco de dados.

              The argument flag may be set to the following value:

              R_CURSOR
                     Apaga o registro referenciado pelo cursor. O cursor precisa ser inicializado previamente.

              Rotinas  delete  retornam  -1 em caso de erro (configurando errno), 0 em caso de sucesso, e 1 se a
              chave especificada não estiver no arquivo.

       fd     Um ponteiro para uma rotina que retorna um descritor de arquivo representativo do banco  de  dados
              de  base.  Um  descritor  de  arquivo  que referencia o mesmo arquivo será retornado para todos os
              processos que chamam dbopen() com o mesmo nome de arquivo. Este  descritor  de  arquivo  pode  ser
              usado  com  segurança  como  um  argumento  para  as  funções de travamento fcntl(2) e flock(2). O
              descritor de arquivo não é associado necessariamente com qualquer um dos arquivos de  base  usados
              pelo  método  de acesso. Nenhum descritor de arquivo está disponível em banco de dados de memória.
              Rotinas fd retornam -1 em caso de erro (configurando errno), e o descritor de arquivo em  caso  de
              sucesso.

       get    Um  ponteiro para uma rotina que é a interface para buscas chaveadas no banco de dados. O endereço
              e o comprimento dos dados associados com a chave específica na estrutura referenciada pelos dados.
              Rotinas get retornam -1 em caso de erro (configurando errno), 0 em caso de sucesso, e 1 se a chave
              não estava no arquivo.

       put    Um ponteiro para uma rotina que armazena pares chave/dados no banco de dados.

              The argument flag may be set to one of the following values:

              R_CURSOR
                     Substitui os pares chave/dados referenciados pelo cursor. O cursor  deve  ser  inicializado
                     previamente.

              R_IAFTER
                     Acrescenta  o  dado  imediatamente após o dado referenciado pela chave, criando um novo par
                     chave/dado. O número de registro do par chave/dado acrescentado é  retornado  na  estrutura
                     chave. (Aplicável somente para o método de acesso DB_RECNO.)

              R_IBEFORE
                     Insere  o  dado  imediatamente  antes  do dado referenciado pela chave, criando um novo par
                     chave/dado. O número de  registro  do  par  chave/dado  é  retornado  na  estrutura  chave.
                     (Aplicável somente para o método de acesso DB_RECNO.)

              R_NOOVERWRITE
                     Entra o novo par chave/dado somente se a chave não existe anteriormente.

              R_SETCURSOR
                     Armazena  o  par  chave/dado,  configurando  ou  inicializando  a  posição  do  cursor para
                     referenciá-lo. (Aplicável somente para os método de acesso DB_BTREE e DB_RECNO.)

              R_SETCURSOR está disponível somente para os métodos de acesso  DB_BTREE  e  DB_RECNO,  porque  ele
              implica que as chaves têm uma ordem inerente que não se altera.

              R_IAFTER  e  R_IBEFORE  estão  disponíveis  somente  para  o método de acesso DB_RECNO porque elas
              implicam que o método de acesso é capaz de criar novas chaves. Isto é verdade apenas se as  chaves
              são ordenadas e independentes, números de registro por exemplo.

              O comportamento padrão das rotinas put é entrar o novo par chave/dado, substituindo qualquer chave
              existente anteriormente.

              Rotinas  put retornam -1 em caso de erro (configurando errno), 0 em caso de sucesso, e 1 se a flag
              R_NOOVERWRITE foi setada e a chave já existe no arquivo.

       seq    Um ponteiro para uma rotina que é a interface para uma busca  sequencial  no  banco  de  dados.  O
              endereço  e  o  comprimento  da  chave  são  retornados  na estrutura referenciada pela chave, e o
              endereço e o comprimento dos dados são retornados na estrutura referenciada pelo dado.

              Pares chave/dado sequenciais recuperados podem começar a qualquer tempo, e a posição  do  'cursor'
              não  é  afetada pela chamada das rotinas del, get, put, ou sync. As modificações no banco de dados
              durante uma busca se refletirão na busca, isto é, os registros inseridos atrás do cursor não serão
              retornados, enquanto que os registros inseridos na frente do cursor serão.

              O valor da flag precisa ser setado para um dos seguintes valores:

              R_CURSOR
                     São retornados os dados asscociados com a chave especificada. Isto difere das  rotinas  get
                     pelo  fato de ela setar ou inicializar o cursor para o local da chave também. (Note, para o
                     método de acesso DB_BTREE, a chave retornada não é  necessariamente  uma  combinação  exata
                     para  a  chave  especificada.  A  chave retornada é a menor chave que seja maior ou igual à
                     chave especificada, permitindo buscas com combinações de chave e buscas de chave parciais.)

              R_FIRST
                     É retornado o primeiro  par  chave/dado  do  banco  de  dados,  e  o  cursor  é  setado  ou
                     inicializado para referenciá-lo.

              R_LAST É  retornado o último par chave/dado do banco de dados, e o cursor é setado ou inicializado
                     para referenciá-lo. (Aplicável somente para os métodos de acesso DB_BTREE e DB_RECNO.)

              R_NEXT Recupera o par chave/dado imediatamente após o  cursor.  Se  o  cursor  ainda  não  estiver
                     setado, este é o mesmo que o flag R_FIRST.

              R_PREV Recupera  o  par  chave/dado  imediatamente  antes do cursor. Se o cursor ainda não estiver
                     setado, este é o mesmo que o flag R_LAST. (Aplicável somente  para  os  métodos  de  acesso
                     DB_BTREE e DB_RECNO.)

              R_LAST  e  R_PREV  estão disponíveis somente para os métodos de acesso DB_BTREE e DB_RECNO, porque
              eles implicam que as chaves têm uma ordem inerente que não se altera.

              Rotinas seq retornam -1 em caso de erro (configurando errno), 0 em caso de sucesso e 1 se  não  há
              pares  chave/dado  menores  ou  maiores  que  a chave especificada ou atual. Se o método de acesso
              DB_RECNO está sendo usado, e se o arquivo de banco de dados é um arquivo de caracteres  especiais,
              e nenhum par chave/dado completo está disponível no momento, as rotinas seq retornam 2.

       sync   Um  ponteiro  para  uma  rotina que esvazia qualquer informação armazenada em cache no disco. Se o
              banco de dados está somente na memória, a rotina sync não tem efeito e sempre será bem-sucedida.

              O valor da flag será setada para os seguintes valores:

              R_RECNOSYNC
                     Se o método de acesso DB_RECNO estiver sendo usado, esta flag faz com  que  a  rotina  sync
                     seja  aplicada  ao  arquivo  btree  que é a base do arquivo recno, e não ao próprio arquivo
                     recno. (Veja o campo bfname da página de manual recno(3) para mais informações.)

              Rotinas sync retornam -1 em caso de erro (configurando errno), e 0 em caso de sucesso.

   Key/data pairs
       O acesso a todos os tipos de arquivos é baseado em pares chave/dado. Tanto a chave quanto  os  dados  são
       representados pela seguinte estrutura de dados:

           typedef struct {
               void  *data;
               size_t size;
           } DBT;

       Os elementos da estrutura DBT são definidos como segue:

       data   Um ponteiro para uma sequência de bytes.

       size   O comprimento da sequência de bytes.

       Sequências de bytes de chaves e dados podem referenciar comprimentos essencialmente ilimitados, apesar de
       que  quaisquer  dois  deles  precisam  caber  na  memória disponível ao mesmo tempo. Deve-se notar que os
       métodos de acesso não dão garantia de alinhamento das sequências de bytes.

ERROS

       A rotina dbopen() pode falhar e setar errno para qualquer um dos erros especificados para as  rotinas  de
       biblioteca open(2) e malloc(3), ou o seguinte:

       EFTYPE Um arquivo foi formatado incorretamente.

       EINVAL Foi  especificado  um  parâmetro (função de esmiuçamento, byte de bloco, etc.)  que é incompatível
              com a especificação de arquivos corrente, ou que não é significativo para a função (por exemplo, o
              uso do cursor sem inicialização anterior), ou há incompatibilidade entre o  número  de  versão  do
              arquivo e o software.

       As  rotinas  close podem falhar e setar errno para qualquer um dos erros especificados para as rotinas de
       biblioteca close(2), read(2), write(2), free(3) ou fsync(2).

       As rotinas del, get, put e seq podem falhar e setar errno para qualquer um dos erros  especificados  para
       as rotinas de biblioteca read(2), write(2), free(3) ou malloc(3).

       As rotinas fd falharão e setarão errno para ENOENT nos banco de dados de memória.

       As  rotinas  sync  podem  falhar  e setar errno para qualquer um dos erros especificados para a rotina de
       biblioteca fsync(2).

BUGS

       O tipo definido DBT é um mnemônico para 'data base thing' (objeto de banco de dados), e foi usado  porque
       ninguém conseguiu pensar em um nome razoável que ainda não estivesse em uso.

       A interface de descritor de arquivo é um remendo e será eliminado em uma versão futura da interface.

       Nenhum dos métodos de acessp provê qualquer forma de acesso concorrente, travamento ou transações.

VEJA TAMBÉM

       btree(3), hash(3), mpool(3), recno(3)

       LIBTP:  Portable, Modular Transactions for UNIX, Margo Seltzer, Michael Olson, USENIX proceedings, Winter
       1992.

TRADUÇÃO

       A tradução para  português  brasileiro  desta  página  man  foi  criada  por  Rubens  de  Jesus  Nogueira
       <darkseid99@usa.net> e André Luiz Fassone <lonely_wolf@ig.com.br>

       Esta  tradução  é  uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as
       condições de direitos autorais.  Nenhuma responsabilidade é aceita.

       Se você encontrar algum erro na tradução  desta  página  de  manual,  envie  um  e-mail  para  a lista de
       discussão de tradutores.

4.4 Berkeley Distribution                          2 maio 2024                                         dbopen(3)