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

NUME

       hash - metoda de acces la baza de date a sumelor ce control (hash)

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

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

DESCRIERE

       Notează  bine:  Această  pagină  documentează  interfețele  furnizate  până  la glibc 2.1.
       Începând cu glibc 2.2, glibc nu mai furnizează aceste interfețe.  Probabil că, în  schimb,
       căutați API-urile furnizate de biblioteca libdbb.

       Rutina  dbopen(3)  este  interfața  bibliotecii  cu fișierele de baze de date. Unul dintre
       formatele de fișiere  acceptate  este  cel  al  fișierelor  hash.  Descrierea  generală  a
       metodelor  de  acces la baza de date se găsește în dbopen(3), iar această pagină de manual
       descrie doar informațiile specifice hash.

       Structura de date de sume de control  este  o  schemă  de  bază  de  date  extensibilă  și
       dinamică.

       Structura  de  date  specifică  metodei  de acces furnizată lui dbopen(3) este definită în
       fișierul de includere <db.h> după cum urmează:

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

       Elementele acestei structuri sunt următoarele:

       bsize     definește dimensiunea „găleții” (bucket) tabelului sumelor de control  și  este,
                 în  mod  implicit,  de  256  de  octeți.  Poate  fi  preferabil  să  se mărească
                 dimensiunea paginii pentru tabelele rezidente pe  disc  și  pentru  tabelele  cu
                 elemente de date mari.

       ffactor   indică  o densitate dorită în cadrul tabelului sumelor de control (hash). Este o
                 aproximare a numărului de chei care pot  fi  acumulate  într-o  singură  găleată
                 (bucket),  determinând momentul în care tabelul sumelor de control crește sau se
                 micșorează. Valoarea implicită este 8.

       nelem     este o estimare a dimensiunii finale a tabelului sumelor  de  control.  Dacă  nu
                 este  definită sau valoarea definită este prea mică, tabelele sumelor de control
                 se vor extinde în mod elegant pe măsură ce sunt introduse chei,  deși  se  poate
                 observa o ușoară degradare a performanței. Valoarea implicită este 1.

       cachesize este  dimensiunea maximă sugerată, în octeți, a spațiului de prestocare (cache).
                 Această valoare este doar consultativă, iar metoda de acces va aloca  mai  multă
                 memorie în loc să eșueze.

       hash      este  o  funcție hash() definită de utilizator. Deoarece nicio funcție hash() nu
                 funcționează la fel de bine pentru toate  datele  posibile,  utilizatorul  poate
                 constata că funcția hash() încorporată nu funcționează bine pentru un anumit set
                 de date. O funcție hash() definită  de  utilizator  trebuie  să  primească  două
                 argumente  (un  indicator  la  un  șir de octeți și o lungime) și să returneze o
                 cantitate de 32 de biți care să fie utilizată ca  valoare  a  sumei  de  control
                 (hash).

       lorder    este ordinea octeților pentru numerele întregi din metadatele stocate în baza de
                 date. Numărul ar trebui să reprezinte  ordinea  ca  număr  întreg;  de  exemplu,
                 ordinea  big endian ar fi numărul 4,321. Dacă lorder este 0 (nu este specificată
                 nicio ordine), se utilizează ordinea curentă  a  gazdei.  Dacă  fișierul  există
                 deja,  valoarea  specificată este ignorată și se utilizează valoarea specificată
                 la crearea arborelui.

       În cazul în care fișierul există deja (și nu este specificat fanionul  O_TRUNC),  valorile
       specificate pentru bsize, ffactor, lorder și nelem sunt ignorate și se utilizează valorile
       specificate la crearea arborelui.

       Dacă este specificată o funcție hash(), hash_open încearcă să determine dacă funcția  hash
       specificată este aceeași cu cea cu care a fost creată baza de date și eșuează dacă nu este
       așa.

       Sunt furnizate interfețe retro-compatibile cu rutinele descrise în dbm(3) și ndbm(3), însă
       aceste interfețe nu sunt compatibile cu formatele de fișiere anterioare.

ERORI

       Rutinele  metodei  de  acces  hash  pot  eșua și pot configura errno pentru oricare dintre
       erorile specificate pentru rutina de bibliotecă dbopen(3).

ERORI

       Se acceptă numai ordinea big și little endian a octeților.

CONSULTAȚI ȘI

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

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

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

TRADUCERE

       Traducerea în limba  română  a  acestui  manual  a  fost  creată  de  Remus-Gabriel  Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară  cu
       privire la condiții privind drepturile de autor.  NU se asumă Nicio RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui  manual,  vă  rugăm să trimiteți un e-mail la
       ⟨translation-team-ro@lists.sourceforge.net⟩.