File: btree.3

package info (click to toggle)
manpages-pl 1%3A0.6-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 20,896 kB
  • ctags: 7
  • sloc: sh: 112; makefile: 59; perl: 32
file content (225 lines) | stat: -rw-r--r-- 11,294 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
.\" Copyright (c) 1990, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\" %%%LICENSE_END
.\"
.\"	@(#)btree.3	8.4 (Berkeley) 8/18/94
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\" This file is distributed under the same license as original manpage
.\" Copyright of the original manpage:
.\" Copyright © 1990,1993 The Regents of the University of California (BSD-4-clause)
.\" Copyright © of Polish translation:
.\" Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, 2001.
.\" Robert Luberda <robert@debian.org>, 2013.
.\" Michał Kułach <michal.kulach@gmail.com>, 2014.
.TH BTREE 3 2012\-04\-23 "" "Podręcznik programisty Linuksa"
.\".UC 7
.SH NAZWA
btree \- metoda dostępu do bazy btree
.SH SKŁADNIA
.nf
\fB#include <sys/types.h>
#include <db.h>\fP
.fi
.SH OPIS
\fIWażna uwaga\fP: Ta strona podręcznika ekranowego opisuje interfejsy
dostarczane przez bibliotekę glibc aż do wersji 2.1. Od wersji 2.2 glibc już
nie zawiera tych interfejsów. Najprawdopodobniej to czego szukasz, to API
dostarczane przez bibliotekę \fIlibdb\fP.

Funkcja \fBdbopen\fP() 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 \fBdbopen\fP(3), a ta strona podręcznika
opisuje jedynie informacje specyficzne dla btree.
.PP
Struktura danych btree stanowi uporządkowaną, zrównoważoną strukturę
drzewiastą, przechowującą powiązane pary klucz/dane.
.PP
Specyficzna dla metody dostępu btree struktura danych używana przez
\fBdbopen\fP(3) jest zdefiniowana w pliku nagłówkowym \fI<db.h>\fP
następująco:
.in +4n
.nf

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;
.fi
.in
.PP
Struktura ta zawiera następujące elementy:
.TP 
\fIflags\fP
Wartość znacznika jest określona przez alternatywę bitową (\fIOR\fP) dowolnych
z następujących wartości:
.RS
.TP 
\fBR_DUP\fP
Zezwala na powtarzające się w drzewie klucze, tzn. pozwala dodawać klucze,
które już w drzewie istnieją. Domyślnym zachowaniem, jak opisano w
\fBdbopen\fP(3), jest nadpisywanie istniejącego pasującego klucza podczas
wprowadzania nowego klucza lub niepomyślne zakończenie, gdy podany jest
znacznik \fBR_NOOVERWRITE\fP. Znacznik \fBR_DUP\fP jest nadpisywany przez znacznik
\fBR_NOOVERWRITE\fP; gdy znacznik \fBR_NOOVERWRITE\fP jest podany, próba dodania
do drzewa klucza, który już istnieje, zakończy się niepowodzeniem.
.IP
Jeśli baza danych zawiera powtarzające się klucze, kolejność pobierania
kluczy/danych za pomocą funkcji \fIget\fP jest niezdefiniowana, jednakże,
wywołania funkcji \fIseq\fP z ustawionym znacznikiem \fBR_CURSOR\fP zawsze zwrócą
logicznie "pierwszy" z dowolnej grupy powtarzających się kluczy.
.RE
.TP 
\fIcachesize\fP
Sugerowany maksymalny rozmiar (w bajtach) bufora w pamięci. Wartość ta
stanowi \fBjedynie\fP 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
\fIcachesize\fP wynosi 0 (nie podano rozmiaru) używany jest bufor domyślny.
.TP 
\fImaxkeypage\fP
.\" The maximum number of keys which will be stored on any single page.
.\" Because of the way the btree data structure works,
.\" .I maxkeypage
.\" must always be greater than or equal to 2.
.\" If
.\" .I maxkeypage
.\" is 0 (no maximum number of keys is specified), the page fill factor is
.\" made as large as possible (which is almost invariably what is wanted).
Maksymalna liczba kluczy, które będą przechowywane w ramach pojedynczej
strony. Aktualnie nie zaimplementowane.
.TP 
\fIminkeypage\fP
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 \fIminkeypage\fP
wynosi 0 (nie podano minimalnej liczby kluczy), użyta zostanie wartość 2.
.TP 
\fIpsize\fP
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 64K. Jeśli \fIpsize\fP wynosi 0 (nie podano rozmiaru strony), rozmiar
strony jest wybierany w oparciu o rozmiar bloku używanego systemu plików.
.TP 
\fIcompare\fP
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 \fIcompare\fP 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.
.TP 
\fIprefix\fP
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 \fIprefix\fP ma wartość
NULL (nie podano funkcji prefix) \fBoraz\fP nie podano funkcji porównawczej,
użyta zostanie domyślna funkcja porównywania leksykalnego.  Jeśli \fIprefix\fP
ma wartość NULL i podano funkcję porównawczą, nie będzie wykonywane
porównywanie przedrostków.
.TP 
\fIlorder\fP
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 \fIlorder\fP wynosi 0 (nie
podano kolejności) użyta zostanie aktualna, systemowa kolejność.
.PP
Jeśli plik już istnieje (i nie podano znacznika \fBO_TRUNC\fP), wartości podane
dla parametrów \fIflags\fP, \fIlorder\fP i \fIpsize\fP zostaną zignorowane na rzecz
wartości używanych w czasie tworzenia drzewa.
.PP
Liniowe przeglądanie drzewa "do przodu" odbywa się od najmniejszego klucza
do największego.
.PP
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.
.PP
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.
.SH BŁĘDY
Funkcje metod dostępu \fIbtree\fP mogą zawieść i ustawić \fIerrno\fP dla dowolnego
z błędów podanych w podręczniku funkcji bibliotecznej \fBdbopen\fP(3).
.SH USTERKI
Obsługuje jedynie ostrokońcy i grubokońcy porządek bajtów.
.SH "ZOBACZ TAKŻE"
\fBdbopen\fP(3), \fBhash\fP(3), \fBmpool\fP(3), \fBrecno\fP(3)

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

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

\fIThe Art of Computer Programming Vol. 3: Sorting and Searching\fP,
D.E. Knuth, 1968, str. 471\-480.
.SH "O STRONIE"
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux
\fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów, oraz
najnowszą wersję oryginału można znaleźć pod adresem
\%http://www.kernel.org/doc/man\-pages/.
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są:
Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>.
.PP
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 3.71 \fPoryginału.