Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

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

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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-IEȘIRE

       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   făcută   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                          2 mai 2024                                            hash(3)