Provided by: manpages-pl-dev_0.6-2_all bug

NAZWA

       dbopen - metody dostępu do baz danych

SKŁADNIA

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

       DB *
       dbopen(const char *plik, int znaczniki, int tryb, DBTYPE rodzaj,
            const void *info_otw);

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       dbopen  jest  funkcją biblioteczną stanowiącą interfejs do plików baz danych.  Obsługiwane
       formaty plików to: btree, rozproszony (hashed) i uniksowy zorientowany na  pliki.   Format
       btree   stanowi   reprezentację   posortoanej,  zrównoważonej  struktury  drzewa.   Format
       rozproszony  (hashed)  jest  rozszerzalnym,  dynamicznym  schematem   mieszania.    Format
       płaskiego pliku jest plikiem stanowiącym strumień bajtów z rekordami o stałej lub zmiennej
       długości.  Informacje o formatach i specyficzne  dla  poszczególnych  formatów  plików  są
       szczegółowo opisane na odpowiednich stronach podręcznika: btree(3), hash(3) i recno(3).

       dbopen  otwiera plik do odczytu i/lub do zapisu.  Pliki, których zachowywanie na dysku nie
       jest zamierzone, mogą być tworzone poprzez ustawienie parametru plik na NULL.

       Argumenty znaczniki i tryb są takie same jak w funkcji open(2), jednakże brane  pod  uwagę
       są  jedynie  znaczniki O_CREAT, O_EXCL, O_EXLOCK, O_NONBLOCK, O_RDONLY, O_RDWR, O_SHLOCK i
       O_TRUNC.  (Należy zauważyć, że otwarcie pliku bazy danych jako O_WRONLY nie jest możliwe.)

       Argument rodzaj jest typu DBTYPE (który jest zdefiniowany w pliku  nagłówkowym  <db.h>)  i
       można przybierać wartości DB_BTREE, DB_HASH lub DB_RECNO.

       Argument  info_otw jest wskaźnikiem do struktury specyficznej dla metody dostępu, opisanej
       n stronie podręcznika danej metody dostępu.  Jeśli info_otw jest równe NULL, każda z metod
       dostępu  będzie  korzystać  z  wartości  domyślnych,  właściwych  dla systemy i tej metody
       dostępu.

       dbopen przy pomyślnym zakończeniu zwraca wskaźnik do struktury  DB,  a  NULL  w  przypadku
       błędu.   Struktura  DB  jest zdefiniowana w pliku nagłówkowym <db.h> i zawiera co najmniej
       następujące pola:

       typedef struct {
              DBTYPE type;
              int (*close)(const DB *db);
              int (*del)(const DB *db, const DBT *klucz, u_int znaczniki);
              int (*fd)(const DB *db);
              int (*get)(const DB *db, DBT *klucz, DBT *dane, u_int znaczniki);
              int (*put)(const DB *db, DBT *klucz, const DBT *dane,
                   u_int znaczniki);
              int (*sync)(const DB *db, u_int znaczniki);
              int (*seq)(const DB *db, DBT *klucz, DBT *dane, u_int znaczniki);
       } DB;

       Elementy te opisują rodzaj bazy danych  i  zestaw  funkcji  wykonyjących  różne  operacje.
       Funkcje  te biorą jako argument wskaźnik do struktury takiej, jak zwracana przez dbopen i,
       czasami, jeden lub więcej wskaźników do struktur klucz/dane oraz wartość znacznika.

       type   Rodzaj właściwej metody dostępu (i format plików).

       close  Wskaźnik do  funkcji  zrzucającej  zbuforowane  informacje  ma  dysk,  zwalniającej
              przydzielone  zasoby  i  zamykającej  podległe  pliki.   Ze  względu na to, że pary
              klucz/dane mogą być buforowane w pamięci, niepomyślne zrzucenie  buforów  pliku  za
              pomocą funkcji close lub sync ,oże prowadzić do niespójności lub utraty informacji.
              Funkcje close zwracają -1 w przypadku błędu (ustawiając errno),  a  0  w  przypadku
              zakończenia pomyślnego.

       del    Wskaźnik do funkcji usuwającej pary klucz/dane z bazy danych.

              Parametr znacznik może mieć jedną z następujących wartości:

              R_CURSOR
                     Usuwa   rekord  wskazywany  przez  kursor.   Kursor  musi  zostać  wcześniej
                     zainicjalizowany.

              Funkcje delete zwracają -1 w przypadku błędu  (ustawiając  errno),  0  w  przypadku
              pomyślnego zakończenia, a 1 gdy podany klucz nie występuje w pliku.

       fd     Wskaźnik  do  funkcji  zwracającej  deskryptor  pliku  odpowiadający używanej bazie
              danych.  Dla wszystkich procesów wywołujących dbopen dla tej samej nazwy pliku plik
              zostanie  zwrócony  deskryptor  pliku wskazujący na ten sam plik.  Tego deskryptora
              pliku można bezpiecznie  używać  jako  argumentu  funkcji  blokujących  fcntl(2)  i
              flock(2).   Deskryptor  pliku  nie  musi  być  związany  z  którymkolwiek  z plików
              używanych przez daną metodę dostępu.  Deskryptor pliku nie jest  dostępny  dla  baz
              danych  zawartych  w pamięci.  Funkcje fd zwracają -1 w przypadku błędu (ustawiając
              errno), a deskryptor pliku w przypadku pomyślnego zakończenia.

       get    Wskaźnik do funkcji stanowiącej interfejs  dla  pobierania  danych  z  bazy  według
              klucza.   Adres  i  rozmiar danych związanych z podanym kluczem klucz są zwracane w
              strukturze wskazywanej przez dane.  Funkcje  get  zwracają  -1  w  przypadku  błędu
              (ustawiając  errno), 0 w przypadku pomyślnego zakończenia, a 1 gdy podany klucz nie
              występuje w pliku.

       put    Wskaźnik do funkcji przechowującej pary klucz/dane w bazie danych.

              Parametr znacznik może mieć jedną z następujących wartości:

              R_CURSOR
                     Zastępuje parę klucz/dane  wskazywaną  przez  kursor.   Kursor  musi  zostać
                     wcześniej zainicjalizowany.

              R_IAFTER
                     Dołącza  dane  bezpośrednio po danych wskazywanych przez klucz, tworząc nową
                     parę klucz/dane.  Numer rekordu dodanej  pary  klucz/dane  jest  zwracany  w
                     strukturze klucz.  (Dotyczy jedynie metody dostępu DB_RECNO.)

              R_IBEFORE
                     Wstawia  dane  bezpośrednio  przed  danymi wskazywanymi przez klucz, tworząc
                     nową  parę  klucz/dane.   Numer  rekordu  wstawionej  pary  klucz/dane  jest
                     zwracany w strukturze klucz.  (Dotyczy jedynie metody dostępu DB_RECNO.)

              R_NOOVERWRITE
                     Wprowadza nową parę klucz/dane tylko gdy klucz wcześniej nie istniał.

              R_SETCURSOR
                     Przechowuje  parę  klucz/dane,  ustawiając lub inicjalizując pozycję kursora
                     tak, aby na nią wskazywała.   (Dotyczy  jedynie  metod  dostępu  DB_BTREE  i
                     DB_RECNO.)

              R_SETCURSOR  jest  dostępne  jedynie  dla  metod  dostępu DB_BTREE i DB_RECNO, gdyż
              zakłada, że klucze mają ustaloną, niezmienną kolejność.

              R_IAFTER i R_IBEFORE są dostępne jedynie dla metody dostępu DB_RECNO, gdyż każde  z
              nich  zakłada, że metoda dostępu umożliwia tworzenie nowych kluczy.  Jest to prawda
              jedynie w przypadku, gdy klucze są uporządkowane i niezależne, na  przykład  numery
              rekordów.

              Domyślne  zachowanie  funkcji  put  polega  na  wprowadzeniu nowej pary klucz/dane,
              zastępując uprzednio istniejący klucz.

              Funkcje put zwracają -1  w  przypadku  błędu  (ustawiając  errno),  0  w  przypadku
              pomyślnego  zakończenia, a 1 gdy ustawiony jest znacznik R_NOOVERWRITE, a klucz już
              istnieje w pliku.

       seq    Wskaźnik do funkcji stanowiącej interfejs dla  sekwencyjnego  pobierania  danych  z
              bazy.  Adres i długość klucza są zwracane w strukturze wskazywanej przez klucz, zaś
              adres i rozmiar danych są zwracane w strukturze wskazywanej przez dane.

              Sekwencyjne pobieranie par klucz/dane może się rozpocząć  w  dowolnym  momencie,  a
              wywołania  funkcji  del,  get,  put, i sync nie mają wpływu na pozycję ``kursora''.
              Zmiany  bazy  danych  podczas  sekwencyjnego  czytania  będą  odwzorowane   podczas
              odczytów, tzn. rekordy wstawione za kursorem nie będą zwrócone, podczas gdy rekordy
              wstawione przed kursorem zostaną zwrócone.

              Wartość znacznik musi być ustawiona jako jedna z poniższych wartości:

              R_CURSOR
                     Zwracane są dane stowarzyszone z podanym kluczem.  Różni się to  od  funkcji
                     get  tym,  że  również  ustawia  lub  inicjalizuje  kursor w pozycji klucza.
                     (Należy zauważyć, że dla metody dostępu DB_BTREE, zwracany  klucz  nie  musi
                     być  identyczny z kluczem podanym.  Zwracany klucz jest najmniejszym kluczem
                     większym lub równym podanemu kluczowi, dopuszczając częściowe  dopasowywanie
                     klucza i przeszukiwanie zakresów.)

              R_FIRST
                     Zwracana  jest  pierwsza  para klucz/dane występująca w bazie danych. Kursor
                     jest ustawiany lub inicjalizowany tak, by wskazywał tę parę.

              R_LAST Zwracana jest ostatnia para klucz/dane występująca w  bazie  danych.  Kursor
                     jest  ustawiany  lub  inicjalizowany  tak,  by  wskazywał tę parę.  (Dotyczy
                     jedynie metod dostępu DB_BTREE i DB_RECNO.)

              R_NEXT Pobiera parę klucz/dane znajdującą  się  bezpośrednio  po  pozycji  kursora.
                     Jeśli  kursor  nie  został  jeszcze  ustawiony,  zachowuje  się tak samo jak
                     znacznik R_FIRST.

              R_PREV Pobiera parę klucz/dane znajdującą się bezpośrednio przed  pozycją  kursora.
                     Jeśli  kursor  nie  został  jeszcze  ustawiony,  zachowuje  się tak samo jak
                     znacznik R_LAST.  (Dotyczy jedynie metod dostępu DB_BTREE i DB_RECNO.)

              R_LAST i R_PREV są dostępne jedynie dla metod dostępu  DB_BTREE  i  DB_RECNO,  gdyż
              zakładają, że klucze mają ustaloną, niezmienną kolejność.

              Funkcje  seq  zwracają  -1  w  przypadku  błędu  (ustawiając  errno), 0 w przypadku
              pomyślnego zakończenia, a 1 gdy brak w bazie pary klucz/dane mniejszej lub większej
              niż  podany  lub aktualny klucz.  Dla metody dostępu DB_RECNO, gdy plik bazy danych
              jest specjalnym plikiem znakowym, a żadna pełna para klucz/dane nie  jest  w  danej
              chwili dostępna, funkcja seq zwraca 2.

       sync   Wskaźnik  do funkcji zrzucającej zbuforowane informacje na dysk.  Jeśli baza danych
              znajduje się wyłącznie w pamięci, to funkcja sync nic nie robi i kończy się  zawsze
              pomyślnie.

              Wartość znacznika może być jedną z następujących wartości:

              R_RECNOSYNC
                     Jeśli  używana  jest metoda DB_RECNO, ten znacznik powoduje, że funkcja sync
                     dotyczy pliku btree stanowiącego bazę pliku numerów rekordów, nie zaś samego
                     pliku  numerów  rekordów.   (Więcej  informacji  znajduje  się w opisie pola
                     bfname na stronie podręcznika recno(3).)

              Funkcje sync zwracają -1 w  przypadku  błędu  (ustawiając  errno),  0  w  przypadku
              pomyślnego zakończenia.

Pary KLUCZ/DANE

       Dostęp  do  wszystkich  rodzajów plików jest oparty na parach klucz/dane.  Zarówno klucze,
       jak i dane są reprezentowane za pomocą następującej struktury danych:

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

       Elementy stryktury DBT są zdefiniowane następująco:

       data   Wskaźnik do łańcucha bajtów.

       size   Długość łańcucha bajtów.

       Łańcuchy bajtowe klucza i danych zasadniczo mogą wskazywać na łańcuchy  o  nieograniczonej
       długości,  ale  dowolne  dwa  z  nich  muszą się mieścić jednocześnie w dostępnej pamięci.
       Należy zauważyć, że metody dostępu  nie  dają  żednych  gwarancji  dotyczących  wyrównania
       łańcuchów bajtowych.

BŁĘDY

       Funkcja  dbopen  może  zawieść  i ustawić w errno dowolny z błędów określonych dla funkcji
       bibliotecznych open(2) i malloc(3) lub jeden z następujących:

       [EFTYPE]
              Plik jest nieprawidłowo sformatowany.

       [EINVAL]
              Podano parametr (funkcję mieszającą, bajt wyrównania, itp.)  niezgodny  z  aktualną
              specyfikacją pliku, lub który nie ma sensu dla funkcji (na przykład, użycie kursora
              bez uprzedniej inicjalizacji) lub występuje niezgodność wersji pomiędzy  plikiem  i
              oprogramowaniem.

       Funkcje  close  mogą  zawieść  i  ustawić w errno dowolny z błędów określonych dla funkcji
       bibliotecznych close(2), read(2), write(2), free(3) i fsync(2).

       Funkcje del, get, put i seq mogą zawieść i ustawić w errno dowolny  z  błędów  określonych
       dla funkcji bibliotecznych read(2), write(2), free(3) i malloc(3).

       Funkcje fd mogą zawieść i ustawić errno na ENOENT dla baz danych w pamięci.

       Funkcje  sync  mogą  zawieść  i  ustawić  w errno dowolny z błędów określonych dla funkcji
       bibliotecznej fsync(2).

ZOBACZ TAKŻE

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

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

BUGS

       typedef  DBT jest skrótem od ``data base thang'', który był używany tylko dlatego, że nikt
       nie wymyślił sensownej, jeszcze nie używanej nazwy.

       Interfejs wykorzystujący deskryptory plików  staonowi  obejście  i  będzie  w  przyszłości
       usunięty.

       Żadna  z  metod  dostępu nie zapewnia jakiejkolwiek formy dostępu równoległego, blokowania
       ani transakcji.

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia  Manuali  i  może
       nie  być  aktualne.  W  razie  zauważenia  różnic  między  powyższym opisem a rzeczywistym
       zachowaniem opisywanego programu lub  funkcji,  prosimy  o  zapoznanie  się  z  oryginalną
       (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 3 dbopen

       Prosimy  o  pomoc  w  aktualizacji stron man - więcej informacji można znaleźć pod adresem
       http://sourceforge.net/projects/manpages-pl/.