XVI_ 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);
?> |
|