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