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

NAZWA

       btree - metoda dostępu do bazy btree

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

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

OPIS

       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.

       Funkcja dbopen() stanowi interfejs biblioteczny do plików baz danych. Jednym z obsługiwanych formatów  są
       pliki  btree.  Ogólny  opis metod dostępu do baz danych znajduje się w dbopen(3), a ta strona podręcznika
       opisuje jedynie informacje specyficzne dla btree.

       Struktura danych btree stanowi uporządkowaną, zrównoważoną strukturę drzewiastą, przechowującą  powiązane
       pary klucz/dane.

       Specyficzna  dla  metody dostępu btree struktura danych używana przez dbopen(3) jest zdefiniowana w pliku
       nagłówkowym <db.h> następująco:

           typedef struct {
               unsigned long flags;
               unsigned int  cachesize;
               int           maxkeypage;
               int           minkeypage;
               unsigned int  psize;
               int         (*compare)(const DBT *key1, const DBT *key2);
               size_t      (*prefix)(const DBT *key1, const DBT *key2);
               int           lorder;
           } BTREEINFO;

       Struktura ta zawiera następujące elementy:

       flags  Wartość znacznika jest określona przez alternatywę bitową (OR) dowolnych z następujących wartości:

              R_DUP  Zezwala na powtarzające się w drzewie klucze, tzn. pozwala  dodawać  klucze,  które  już  w
                     drzewie  istnieją.  Domyślnym  zachowaniem,  jak  opisano  w  dbopen(3),  jest nadpisywanie
                     istniejącego  pasującego  klucza  podczas  wprowadzania  nowego  klucza   lub   niepomyślne
                     zakończenie,  gdy podany jest znacznik R_NOOVERWRITE. Znacznik R_DUP jest nadpisywany przez
                     znacznik R_NOOVERWRITE; gdy znacznik R_NOOVERWRITE jest podany,  próba  dodania  do  drzewa
                     klucza, który już istnieje, zakończy się niepowodzeniem.

                     Jeśli  baza  danych  zawiera powtarzające się klucze, kolejność pobierania kluczy/danych za
                     pomocą funkcji get jest niezdefiniowana,  jednakże,  wywołania  funkcji  seq  z  ustawionym
                     znacznikiem R_CURSOR zawsze zwrócą logicznie "pierwszy" z dowolnej grupy powtarzających się
                     kluczy.

       cachesize
              Sugerowany  maksymalny rozmiar (w bajtach) bufora w pamięci. Wartość ta stanowi jedynie zalecenie,
              więc metoda dostępu raczej przydzieli więcej pamięci niż zawiedzie. Ze względu  na  to,  że  każde
              poszukiwanie  bada stronę korzenia drzewa, buforowanie najczęściej używanych stron istotnie skróci
              czas dostępu. Dodatkowo, fizyczne zapisy będą opóźnione na tyle, na ile będzie  to  możliwe,  więc
              umiarkowany   bufor   może   istotnie  zmniejszyć  liczbę  operacji  wejścia/wyjścia.  Oczywiście,
              korzystanie z bufora zwiększa (ale jedynie zwiększa)  prawdopodobieństwo  uszkodzenia  lub  utraty
              danych, jeśli system ulegnie awarii podczas gdy drzewo jest modyfikowane. Jeśli cachesize wynosi 0
              (nie podano rozmiaru) używany jest bufor domyślny.

       maxkeypage
              Maksymalna  liczba  kluczy,  które  będą  przechowywane w ramach pojedynczej strony. Aktualnie nie
              zaimplementowane.

       minkeypage
              Minimalna liczba  kluczy  przechowywanych  w  ramach  pojedynczej  strony.  Wartość  ta  służy  do
              określania,  które  klucze  będą  przechowywane  w  stronach nadmiarowych, to jest jeśli klucz lub
              element danych jest większy niż rozmiar strony podzielony  przez  wartość  minkeypage,  będzie  on
              przechowywany  w  stronie nadmiarowej, zamiast w stronie właściwej. Jeśli minkeypage wynosi 0 (nie
              podano minimalnej liczby kluczy), użyta zostanie wartość 2.

       psize  Rozmiar strony jest rozmiarem (w bajtach) stron używanych przez węzły  drzewa.  Minimalny  rozmiar
              strony  wynosi  512  bajtów,  a maksymalnym rozmiarem jest 64KiB. Jeśli psize wynosi 0 (nie podano
              rozmiaru strony), rozmiar strony jest wybierany  w  oparciu  o  rozmiar  bloku  używanego  systemu
              plików.

       compare
              Compare  jest  funkcją porównywania kluczy.  Musi ona zwracać liczbę całkowitą mniejszą, równą lub
              większą od zera, gdy klucz będący pierwszym argumentem jest, odpowiednio, mniejszy, równy, większy
              niż klucz będący drugim argumentem.  Dla danego drzewa przy każdym jego otwarciu musi być  używana
              ta  sama  funcja  porównawcza.   Jeśli  compare ma wartość NULL (nie podano funkcji porównawczej),
              klucze będą porównywane leksykalnie, przy czym krótsze klucze będą uważane za mniejsze niż  klucze
              dłuższe.

       prefix Prefix  jest  funkcją  porównywania  przedrostków.  Jeśli zostanie podana, musi ona zwracać liczbę
              bajtów argumentu będącego drugim kluczem, które są niezbędne dla określenia czy  jest  on  większy
              niż  klucz  będący  pierwszym  argumentem.  Gdy klucze będą równe, powinna zostać zwrócona długość
              klucza.  Uwaga, przydatność tej funkcji silnie zależy od danych, jednak dla pewnych zbiorów danych
              jej używanie może  prowadzić  do  istotnie  zmniejszonych  rozmiarów  drzewa  i  krótszych  czasów
              poszukiwania.  Jeśli  prefix  ma  wartość NULL (nie podano funkcji prefix) oraz nie podano funkcji
              porównawczej, użyta zostanie domyślna funkcja porównywania leksykalnego.  Jeśli prefix ma  wartość
              NULL i podano funkcję porównawczą, nie będzie wykonywane porównywanie przedrostków.

       lorder Kolejność  bajtów  dla  liczb  całkowitych  w  przechowywanych  metadanych  bazy.   Liczba powinna
              reprezentować kolejność jako liczbę całkowitą;  na  przykład,  porządek  grubokońcy  byłby  liczbą
              4,321.   Jeśli  lorder  wynosi  0  (nie  podano  kolejności)  użyta  zostanie  aktualna, systemowa
              kolejność.

       If the file already exists (and the O_TRUNC  flag  is  not  specified),  the  values  specified  for  the
       arguments flags, lorder, and psize are ignored in favor of the values used when the tree was created.

       Liniowe przeglądanie drzewa "do przodu" odbywa się od najmniejszego klucza do największego.

       Przestrzeń  zwolniona  przez usunięcie par klucz/dane z drzewa nie jest nigdy odzyskiwana, jednakże, jest
       ona normalnie dostępna dla ponownego użycia. Oznacza to, że struktura  przechowująca  drzewo  btree  może
       jedynie  rosnąć.  Jedynym rozwiązaniem jest unikanie nadmiernego usuwania lub okresowe tworzenie świeżego
       drzewa na podstawie przeglądania istniejcego drzewa.

       Przeszukiwania, wstawiania i usunięcia w btree odbywają się w  czasie  O  lg  base  N,  gdzie  base  jest
       czynnikiem średniego wypełnienia.  Często, wprowadzanie do drzew btree danych uporządkowanych prowadzi do
       niskiego  czynnika  wypełnienia.   Ta  implementacja  została  zmodyfikowana,  aby  uczynić uporządkowane
       wprowadzanie najkorzystniejszym przypadkiem, uzyskując w wyniku tego dużo lepszy  niż  normalnie  czynnik
       wypełnienia stron.

BŁĘDY

       Funkcje  metod  dostępu  btree mogą zawieść i ustawić errno dla dowolnego z błędów podanych w podręczniku
       funkcji bibliotecznej dbopen(3).

BŁĘDY

       Obsługuje jedynie ostrokońcy i grubokońcy porządek bajtów.

ZOBACZ TAKŻE

       dbopen(3), hash(3), mpool(3), recno(3)

       The Ubiquitous B-tree, Douglas Comer, ACM Comput. Surv. 11, 2 (czerwiec 1979), 121-138.

       Prefix B-trees, Bayer and Unterauer, ACM Transactions on Database Systems, t. 2, 1 (marzec 1977), 11-26.

       The Art of Computer Programming Vol. 3: Sorting and Searching, D.E. Knuth, 1968, str. 471-480.

TŁUMACZENIE

       Autorami   polskiego   tłumaczenia   niniejszej   strony   podręcznika   są:    Andrzej    Krzysztofowicz
       <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając  się  z  GNU General Public License w wersji 3  lub  nowszej.   Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.03                            4 grudnia 2022 r.                                       btree(3)