Funciones de la Capa de Abstracción de Bases de Datos (tipo-dbm)
Introducción
Estas funciones forman la base para acceder a bases de datos tipo Berkeley DB.
Esta es una capa general de abstracción para varias bases de datos basadas en archivos. Como tal, su funcionalidad está limitada al sub-conjunto común de caracterÃsticas que soportan bases de datos modernas como » DB2 de Sleepycat Software. (No confundirla con el software DB2 de IBM, el cual es soportado por medio de las funciones ODBC.)
Requisitos
El comportamiento de varios aspectos depende de la implementación de la base de datos interna. Funciones como dba_optimize() y dba_sync() harán lo que prometen para una base de datos y no tendrán efecto sobre otras. Es necesario descargar e instalar los gestores de base de datos soportados.
Gestor | Notas |
---|---|
dbm | Dbm es el tipo más antiguo (original) de bases de datos tipo Berkeley DB. Es recomendable evitarlo, en lo posible. No soportamos las funciones de compatibilidad incorporadas en DB2 y gdbm, ya que solo son compatibles en el nivel de código fuente, pero no pueden gestionar el formato dbm original. |
ndbm | Ndbm es un tipo más reciente y flexible que dbm. Aun tiene muchos de los lÃmites arbitrarios de dbm (y por lo tanto es obsoleto). |
gdbm | Gdbm es el » administrador de bases de datos GNU. |
db2 | DB2 es el formato » DB2 de Sleepycat Software. Es descrito como "un grupo de herramientas programáticas que ofrecen soporte incorporado y de alto rendimiento de bases de datos tanto para aplicaciones independientes como cliente/servidor". |
db3 | DB3 es » DB3 de Sleepycat Software. |
db4 | DB4 es » DB4 de Sleepycat Software. Este se encuentra disponible desde PHP 4.3.2. |
cdb | Cdb es "un paquete rápido, confiable y ligero para crear y leer bases de datos constantes." Es del creador de qmail y puede encontrarse en » https://cr.yp.to/cdb.html. Ya que es constante, sólo soportamos las operaciones de lectura. Y desde PHP 4.3.0 soportamos escritura (no actualización) a través de la biblioteca cdb interna. |
cdb_make | A partir de PHP 4.3.0 soportamos la creación (no actualización) de archivos cdb cuando la biblioteca cdb incorporada es usada. |
flatfile | Este formato está disponible desde PHP 4.3.0 únicamente para efectos de compatibilidad con la extensión obsoleta dbm y deberÃa evitarse. Sin embargo es posible usarlo cuando los archivos fueron creados en este formato. Eso ocurre cuando 'configure' no encuentra alguna biblioteca externa. |
inifile | Este se encuentra disponible desde PHP 4.3.3 y tiene la capacidad de modificar archivos php.ini desde scripts PHP. Cuando se trabaja con archivos ini es posible pasar matrices de la forma array(0=>grupo,1=>nombre_valor) o cadenas de la forma "[grupo]nombre_valor" en donde el grupo es opcional. Dado que las funciones dba_firstkey() y dba_nextkey() devuelven representaciones tipo cadena de la clave, existe una nueva función, dba_key_split(), disponible desde PHP 5 que permite convertir las claves tipo cadena en claves tipo matriz sin perder FALSE. |
qdbm | Este se encuentra disponible desde PHP 5.0.0. La biblioteca qdbm puede encontrarse en » https://qdbm.sourceforge.net. |
Cuando se invocan las funciones dba_open() o dba_popen(), uno de los nombres de gestor debe entregarse como argumento. La lista de gestores realmente disponibles se muestra al invocarse phpinfo() o dba_handlers().
Instalación
Usando el conmutador de configuración --enable-dba=shared, es posible construir un módulo susceptible a ser cargado dinámicamente para habilitar PHP con soporte básico de bases de datos tipo dbm. También es necesario añadir soporte para al menos uno de los siguientes gestores especificando el valor de configuración --with-XXXX en su lÃnea 'configure' de PHP.
Después de configurar y compilar PHP es necesario ejecutar la siguiente prueba desde la lÃnea de comandos: php run-tests.php ext/dba. Ésta muestra si su combinación de gestores funciona. Los más problemáticos son dbm y ndbm, que ocasionan conflictos con varias instalaciones. La razón de esto es que en muchos sistemas aquellas bibliotecas son parte de más de una biblioteca externa. La prueba de configuración solo le previene de configurar gestores sencillos que operen incorrectamente, pero no de las combinaciones.
Gestor | Conmutador de Configuración |
---|---|
dbm |
Para habilitar el soporte dbm agregue --with-dbm[=DIR].
|
ndbm |
Para habilitar soporte para ndbm agregue --with-ndbm[=DIR].
|
gdbm | Para habilitar el soporte para gdbm agregue --with-gdbm[=DIR]. |
db2 |
Para habilitar el soporte para db2 agregue --with-db2[=DIR].
|
db3 |
Para habilitar el soporte para db3 agregue --with-db3[=DIR].
|
db4 |
Para habilitar el soporte para db4 agregue --with-db4[=DIR].
|
cdb |
Para habilitar el soporte para cdb agregue --with-cdb[=DIR].
|
flatfile |
Para habilitar el soporte para archivos planos (flatfile) agregue --with-flatfile.
|
inifile |
Para habilitar el soporte para inifile agregue --with-inifile.
|
qdbm |
Para habilitar el soporte para qdbm agregue --with-qdbm[=DIR].
|
Note: Hasta PHP 4.3.0 es posible agregar tanto db2 como db3 pero solo uno de ellos puede ser usado internamente. Esto quiere decir que no es posible tener ambos formatos de archivo. A partir de PHP 5.0.0 existe un chequeo de configuración para evitar tales errores de configuración.
Configuración en tiempo de ejecución
Esta extensión no tiene directivas de configuración en php.ini.
Tipos de recursos
Las funciones dba_open() y dba_popen() devuelven un gestor al archivo de base de datos a acceder especificado, el cual es usado por todas las otras llamadas a funciones dba.
Constantes predefinidas
Esta extensión no tiene ninguna constante definida.
Ejemplos
Example#1 Ejemplo de DBA
<?php
$id = dba_open("/tmp/prueba.db", "n", "db2");
if (!$id) {
echo "dba_open ha fallado\n";
exit;
}
dba_replace("clave", "¡Este es un ejemplo!", $id);
if (dba_exists("clave", $id)) {
echo dba_fetch("clave", $id);
dba_delete("clave", $id);
}
dba_close($id);
?>
DBA es seguro con material binario y no tiene lÃmites arbitrarios. Sin embargo, hereda todos los lÃmites establecidos por la implementación de la base de datos interna.
Todas las bases de datos basadas en archivo deben ofrecer una forma de establecer el modo de archivo de una base de datos recién creada, si es posible. Un modo de archivo es pasado por lo general como el cuarto argumento a dba_open() o dba_popen().
Es posible acceder a todas las entradas de una base de datos en una forma lineal usando las funciones dba_firstkey() y dba_nextkey(). No debe modificar la base de datos mientras la recorre.
Example#2 Recorrido de una base de datos
<?php
// ...abrir base de datos...
$clave = dba_firstkey($id);
while ($clave != false) {
if (true) { // recordar la clave para realizar alguna acción mas adelante
$manejar_despues[] = $clave;
}
$clave = dba_nextkey($id);
}
foreach ($manejar_despues as $val) {
dba_delete($val, $id);
}
?>
Table of Contents
- dba_close — Cerrar una base de datos DBA
- dba_delete — Elimina una entrada DBA especificada por clave
- dba_exists — Verificar si la clave existe
- dba_fetch — Recuperar datos especificados por clave
- dba_firstkey — Recuperar la primera clave
- dba_handlers — Listar todos los gestores disponibles
- dba_insert — Insertar entrada
- dba_key_split — Separa una clave en representación de cadena en representación de matriz
- dba_list — Listar todos los archivos de base de datos abiertos
- dba_nextkey — Recuperar la siguiente clave
- dba_open — Abrir una base de datos
- dba_optimize — Optimizar base de datos
- dba_popen — Abrir una base de datos de forma persistente
- dba_replace — Reemplazar o insertar una entrada
- dba_sync — Sincronizar base de datos