Provided by: manpages-es-dev_4.13-4_all bug

NOMBRE

       btree - método de acceso a bases de datos árbolB

SINOPSIS

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

DESCRIPCIÓN

       Note  well:  This  page  documents interfaces provided in glibc up until version 2.1.  Since version 2.2,
       glibc no longer provides these interfaces.  Probably, you are looking for the APIs provided by the  libdb
       library instead.

       La rutina dbopen(3) es la interfaz de biblioteca para los ficheros de bases de datos. Uno de los formatos
       de  fichero soportado es el de los ficheros árbolB. La descripción general de los métodos de acceso a las
       bases de datos se  encuentra  en  dbopen(3),  esta  página  de  manual  describe  únicamente  información
       especifíca de árbolB.

       La  estructura  de  datos  árbolB  es  una  estructura  de árbol balanceado y ordenado que almacena pares
       clave/datos asociados.

       La estructura de datos específica del método de acceso a árbolB proporcionada por dbopen(3) se define  en
       el fichero cabecera <db.h> como sigue:

           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;

       Los elementos de esta estructura son los siguientes:

       flags  El  valor del campo de opciones se especifica mediante un O-lógico de cualquiera de los siguientes
              valores:

              R_DUP  Permite claves duplicadas en el árbol, es decir, permite la inserción si  la  clave  a  ser
                     insertada  ya  existen  en  el  árbol.  El  comportamiento por defecto, como se describe en
                     dbopen(3), es sobrescribir una clave coincidente cuando se inserta una nueva clave o fallar
                     si se especifica la opción R_NOOVERWRITE. La opción R_NOOVERWRITE predomina sobre la opción
                     R_DUP y si  se  especifica  la  opción  R_NOOVERWRITE,  los  intentos  de  insertar  claves
                     duplicadas en el árbol fracasarán.

                     Si  la  base  de  datos  contiene  claves duplicadas, el orden de recuperación de los pares
                     clave/datos es indefinido si se usa la rutina get sin embargo, las llamadas a la rutina seq
                     con la opción R_CURSOR activa siempre devolverá el primero "lógico" de cualquier  grupo  de
                     claves duplicadas.

       cachesize
              Un  tamaño  máximo  sugerido  (en  bytes)  de la memoria caché. Este valor es sólo consultivo y el
              método de acceso reservará más memoria antes que fallar. Ya que toda búsqueda  examina  la  página
              raíz  del árbol, ocultar en caché las páginas más recientemente usadas mejorará sustancialmente el
              tiempo de acceso. Además, las escrituras físicas se demorarán tanto como sea posible, por  lo  que
              una  caché  moderada  puede  reducir  el  número  de  operaciones  de  E/S de forma significativa.
              Obviamente, usar una caché incrementa (pero sólo incrementa) la probabilidad de  corrupción  o  de
              pérdida de datos si el sistema cae mientras se está modificando un árbol. Si cachesize es 0 (no se
              especifica un tamaño) se utiliza un tamaño de caché por defecto.

       maxkeypage
              El número máximo de claves que se almacenarán en una única página. No implementado actualmente.

       minkeypage
              El  número  mínimo  de  claves  que  se  almacenarán  en  una única página. Este valor se usa para
              determinar qué claves se almacenarán en páginas de overflow, es decir, si una clave o elementos de
              datos es mayor que el tamaño de página dividido por el  valor  de  minkeypage,  se  almacenará  en
              páginas  de  overflow  en  lugar  de  en la propia página. Si minkeypage es 0 (no se especifica un
              número mínimo de claves) se usa un valor de 2.

       psize  Es el tamaño (en bytes) de las páginas usadas por los nodos del árbol. El tamaño mínimo de  página
              es  512 bytes y el tamaño máximo de página es 64 KiB. Si psize es 0 (no se especifica un tamaño de
              página) se selecciona un tamaño de página basado en el tamaño de bloque  de  E/S  del  sistema  de
              ficheros subyacente.

       compare
              Es  la  función de comparación de claves. Debe devolver un entero menor, igual o mayor que cero si
              se considera que el argumento de la primera clave es, respectivamente, menor, igual o mayor que el
              argumento de la segunda clave. Se debe usar la misma función de comparación  para  un  árbol  dado
              cada  vez que se abre. Si compare es NULL (no se especifica un función de comparación), las claves
              se comparan léxicamente, considerando las claves más cortas menores que las claves más largas.

       prefix Es la función de comparación de prefijos. Si se especifica, esta rutina debe devolver el número de
              bytes del argumento de la segunda clave que se necesitan para  determinar  que  es  mayor  que  el
              argumento  de  la  primera clave. Si las claves son iguales, se debería devolver la longitud de la
              clave. Dese cuenta que la utilidad de esta rutina es muy dependiente de los datos pero, en algunos
              conjuntos de datos, puede producir unos tamaños de árbol y tiempos de búsqueda reducidos de  forma
              significativa.  Si  prefix es NULL (no se especifica una función de prefijo) y no se especifca una
              función de comparación, se usa por defecto una rutina de comparación léxica. Si prefix es  NULL  y
              se especifica una función de comparación, no se hace comparación de prefijos.

       lorder El  orden  de  bytes  para los enteros de los metadatos almacenados en la base de datos. El número
              debería representar el orden como un entero; por ejemplo, el orden  `el  byte  de  mayor  peso  el
              último'  (orden  ascendente)  sería  el número 4321. Si lorder es 0 (no se especifica un orden) se
              utiliza el orden del anfitrión actual.

       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.

       Los recorridos secuenciales hacia adelante de un árbol van desde la clave más pequeña a la más grande.

       El  espacio  liberado  al borrar los pares clave/datos del árbol nunca se recupera, aunque normalmente se
       pone a disposición para su reutilización. Esto significa que la estructura de almacenamiento árbolB es de
       sólo crecimiento. Las únicas soluciones son evitar excesivas  eliminaciones  o  crear  periódicamente  un
       árbol nuevo recorriendo el que ya existe.

       Todas  las  búsquedas, insercciones y eliminaciones de un árbolB se terminarán en un orden O(logaritmo en
       base N) donde `base' es el factor medio de relleno. Con frecuencia, la inserción de datos ordenados en un
       árbolB produce un factor de relleno bajo. Esta implementación se ha modificado para hacer las inserciones
       ordenadas el caso mejor, produciendo un factor de relleno de páginas mucho mejor de lo normal.

ERRORES

       Las rutinas del método de acceso árbolB pueden fracasar y asignar  a  errno  cualquiera  de  los  errores
       especificados en la rutina de biblioteca dbopen(3).

ERRORES

       Sólo  se  soportan los órdenes de bytes ascendente (el byte de mayor peso el último) y descente (el bytes
       de menor peso el último).

VÉASE TAMBIÉN

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

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

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

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

COLOFÓN

       Esta página es parte de la versión 5.10 del proyecto Linux man-pages. Puede encontrar una descripción del
       proyecto,  información  sobre  cómo  informar  errores  y  la  última   versión   de   esta   página   en
       https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La traducción al español de esta página del manual fue creada por Juan Piernas <piernas@ditec.um.es>

       Esta  traducción  es  documentación  libre;  lea  la GNU General Public License Version 3 o posterior con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta página  del  manual,  envíe  un  correo  electrónico  a
       debian-l10n-spanish@lists.debian.org.

                                                21 Diciembre 2020                                       BTREE(3)