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  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.

4.4 Berkeley Distribution                       4 decembrie 2022                                         hash(3)