XVII. Funciones de la capa de abstraccion de bases de datos (dbm-style)

Estas funciones son la base para el acceso a bases de datos del estilo Berkeley DB .

Este es un nivel de abstraccion general para varias bases de datos . Como tal su funcionalidad esta limitada a un grupo de modernas bases de datos como Sleepycat Software' s DB2 . (Esta no debe confundirse con IBM DB2 software , la cual es soportada mediante las funciones ODBC . )

El comportamiento de varios aspectos depende de la implementacion de la base de datos . Funciones como dba_optimize( ) y dba_sync( ) cumpliran su funcionalidad con unas bases de datos pero no con otras .

Los siguientes manejadores ( handlers ) estan soportados :

  • dbm es el mas antiguo ( original ) tipo de base de datos de la familia de Berkeley DB . Se debe evitar su uso , si es posible . Nosotros no soportamos las funciones de compatibilidad de DB2 y gdbm , porque ellas solo son compatibles a nivel de codigo fuente , pero no pueden manejar el formato original dbm .

  • ndbm es un tipo mas nuevo y mas flexible que dbm . Todavia tiene la mayoria de las limitaciones de dbm ( Por lo tanto es descartado ) .

  • gdbm es el gestor de bases de datos de GNU ( database manager ) .

  • db2 es Sleepycat Software ' s DB2 . Es descrito como " un conjunto de herramientas de programacion que proveen acceso de alto nivel a bases de datos en aplicaciones standalone o en el modelo cliente / servidor . "

  • cdb es " una rapida , de confianza , sencilla herramienta para la creacion y lectura de bases de datos constantes . " Fue creada por el autor de qmail y puede encontrarse en here . Como la base es constante solo se soportan las operaciones de lectura .



Ejemplo 1 . Ejemplo de DBA

 
?php

 
$id

 
=

 
dba_open(

 
"

 
/

 
tmp

 
/

 
test.db"

 
,

 
"n"

 
,

 
"db2")

 
;

 
if(!$id

 
)

 
{

 
echo

 
"dba_open

 
failed\n"

 
;

 
exit

 
;

 
}

 
dba_replace("key"

 
,

 
"This

 
is

 
an

 
example

 
!"

 
,

 
$id)

 
;

 
if(dba_exists("key"

 
,

 
$id)

 
)

 
{

 
echo

 
dba_fetch("key"

 
,

 
$id)

 
;

 
dba_delete("key"

 
,

 
$id)

 
;

 
}

 
dba_close($id)

 
;

 
?





DBA es " binary safe " y no tiene ningun limite arbitrario . Hereda todas sus limitaciones de la implementacion de base de datos que tenga .

Todos las bases de datos basadas en ficheros deben proveer un mecanismo para establecer el modo a la hora de crear nuevas bases de datos , si ello es posible . Habitualmente este modo es pasado como el cuarto argumento en dba_open( ) o en dba_popen( ) .

Se puede acceder a todas las entradas de una base de datos de modo secuencial ( lineal ) usando las funciones dba_firstkey( ) y dba_nextkey( ) . No se puede cambiar la base de datos mientras se recorre ( traversing ) por ella .

Ejemplo 2 . Recorriendo una base de datos

 
?php

 
#

 
...open

 
database..

 
.

 
$key

 
=

 
dba_firstkey(

 
$id)

 
;

 
while($key

 
!=

 
false

 
)

 
{

 
if(..

 
.

 
)

 
{

 
#

 
remember

 
the

 
key

 
to

 
perform

 
some

 
action

 
later

 
$handle_later[

 
]

 
=

 
$key

 
;

 
    }

 
$key

 
=

 
dba_nextkey($id)

 
;

 
}

 
for($i

 
=

 
0

 
;

 
$i

 
count($handle_later)

 
;

 
$i++

 
)

 
dba_delete($handle_later[$i]

 
,

 
$id)

 
;

 

?





Tabla de contenidos
dba_close -- Cerrar uba base de datos
dba_delete -- Borra una entrada especificada por la clave key
dba_exists -- Comprueba si la clave key existe
dba_fetch -- Extrae los datos especificados por la clave key
dba_firstkey -- Conseguir la primera clave
dba_handlers -- List handlers available
dba_insert -- Insertar una entrada
dba_list -- List all open database files
dba_nextkey -- Extraer la siguiente clave
dba_open -- Abrir una base de datos
dba_optimize -- Optimiza la base de datos
dba_popen -- Apertura persistente de una base de datos
dba_replace -- Reemplaza o inserta una entrada
dba_sync -- Sincroniza la base de datos