Los sistemas de gestión de bases de datos

Anuncio
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.)
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.
Tabla 1. Lista de gestores de DBA
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
db4
DB3 es DB3 de Sleepycat Software.
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 http://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.
Este se encuentra disponible desde PHP 5.0.0. La biblioteca qdbm puede encontrarse en
http://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()**.
qdbm
Usando el conmutador de configuración --enable-dba=shared, es posible construir un módule 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.
Aviso
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.
Tabla 2. Gestores DBA soportados
Gestor Conmutador de Configuración
Para habilitar el soporte dbm agregue --with-dbm[=DIR].
Nota: dbm es usualmente una envoltura que con frecuencia resulta en fallos. Esto quiere decir que
únicamente debería usar dbm si está seguro de que funciona y realmente necesita este formato.
Para habilitar soporte para ndbm agregue --with-ndbm[=DIR].
ndbm Nota: ndbm es usualmente una envoltura que con frecuencia resulta en fallos. Esto quiere decir que
únicamente debería usar ndbm si está seguro de que funciona y realmente necesita este formato.
dbm
gdbm Para habilitar el soporte para gdbm agregue --with-gdbm[=DIR].
Para habilitar el soporte para db2 agregue --with-db2[=DIR].
db2
Nota: db2 genera un conflicto con db3 y db4.
db3
Para habilitar el soporte para db3 agregue --with-db3[=DIR].
Nota: db3 genera un conflicto con db2 y db4.
db4
Para habilitar el soporte para db4 agregue --with-db4[=DIR].
Nota: db4 genera un conflicto con db2 y db3.
Nota: Esta opción fue agregada en PHP 4.3.2. En versiones anteriores de PHP, es necesario usar -with-db3=DIR, en donde DIR es la ruta hacia la biblioteca db4. No es posible usar versiones de db
desde 4.1 con versiones de PHP anteriores a 4.3.0. Asimismo, las bibliotecas db con versiones entre
4.1 a 4.1.24 no pueden ser usadas en ninguna versión de PHP.
cdb
Para habilitar el soporte para cdb agregue --with-cdb[=DIR].
Nota: Desde PHP 4.3.0 es posible omitir DIR para usar la biblioceta cdb incorporada, acción que
agrega el gestor cdb_make para permitir la creación de archivos cdb y permite el acceso a archivos
cdb en la red usando secuencias de PHP.
Para habilitar el soporte para archivos planos (flatfile) agregue --with-flatfile.
Nota: Este gestor fue agregado en PHP 4.3.0 para ofrecer compatibilidad con la extensión obsoleta
flatfile
dbm. Use este gestor únicamente cuando no pueda instalar una de las bibliotecas requeridas por los
otros gestores y no pueda usar el gestor cdb incorporado.
Para habilitar el soporte para inifile agregue --with-inifile.
inifile Nota: Este gestor fue agregado en PHP 5.0.0 y le permite leer y definir archivos tipo .ini de
microsoft (como el archivo php.ini).
Para habilitar el soporte para qdbm agregue --with-qdbm[=DIR].
Nota: qdbm genera un conflicto con dbm y gdbm.
qdbm
Nota: Este gestor fue agregado en PHP 5.0.0. La biblioteca qdbm puede obtenerse desde
http://qdbm.sourceforge.net.
Nota: 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.
Esta extensión no tiene directivas de configuración en php.ini.
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.
Esta extensión no tiene ninguna constante definida.
<?php
$id = dba_open("/tmp/prueba.db", "n", "db2");
if (!$id) {
echo "dba_open ha fallado\n";
exit;
}
Ejemplo 1. Ejemplo de DBA
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.
<?php
...abrir base de datos...
$clave = dba_firstkey($id);
Ejemplo 2. Recorrido de una base de
datos
while ($clave != false) {
if (true) { recordar la clave para realizar alguna accion mas
adelante
$manejar_despues[] = $clave;
}
$clave = dba_nextkey($id);
}
foreach ($manejar_despues as $val) {
dba_delete($val, $id);
}
?>
NIVELES DE ABSTRACCIÓN DE UNA BASE DE DATOS.
(Dato) La arquitectura se divide en tres niveles generales: interno, conceptual y externo.
Nivel Interno: es el más cercano al almacenamiento físico, es decir, el que concierne a la manera como los
datos se almacenan en realidad.
Nivel Externo: es el más cercano a los usuarios, es decir, el que atañe a la manera cómo cada usuario ve los
datos.
Nivel Conceptual: es un nivel de mediación entre los otros dos.
(ABRAMHAM, KORTH y SUDARSHAN)
Para que el sistema sea útil, debe recuperar los datos eficientemente. Como muchos usuarios de sistemas
de bases de datos no están familiarizados con computadoras, los desarrolladores esconden la complejidad a
los usuarios a través de varios niveles de abstracción para simplificar la interacción de los usuarios con el
sistema:
Nivel físico: El nivel más bajo de abstracción describe cómo se almacenan realmente los datos. En el nivel
físico se describen en detalle las estructuras de datos complejas de bajo nivel.
Nivel lógico: El siguiente nivel más alto de abstracción describe qué datos se almacenan en la base de
datos y que relaciones existen entre esos datos.
Nivel de vistas: El nivel más alto de abstracción describe sólo parte de la base de datos completa. Los
usuarios necesitan acceder sólo a una parte de la base de datos. El sistema puede proporcionar muchas
vistas para la base de datos.
SISTEMA DE GESTIÓN DE BASES DE DATOS
Los sistemas de gestión de bases de datos (en inglés database management system, abreviado DBMS) son un
tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las
aplicaciones que la utilizan.
Existen distintos objetivos que deben cumplir los SGBD:





Abstracción de la información. Los SGBD ahorran a los usuarios detalles acerca del
almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de
archivos, este hecho se hace transparente al usuario. Así, se definen varios niveles de abstracción.
Independencia. La independencia de los datos consiste en la capacidad de modificar el esquema
(físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se
sirven de ella.
Consistencia. En aquellos casos en los que no se ha logrado eliminar la redundancia, será
necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es
decir, que todos los datos repetidos se actualicen de forma simultánea. Por otra parte, la base de
datos representa una realidad determinada que tiene determinadas condiciones, por ejemplo que
los menores de edad no pueden tener licencia de conducir. El sistema no debería aceptar datos de
un conductor menor de edad. En los SGBD existen herramientas que facilitan la programación
de este tipo de condiciones.
Seguridad. La información almacenada en una base de datos puede llegar a tener un gran valor.
Los SGBD deben garantizar que esta información se encuentra segura de permisos a usuarios y
grupos de usuarios, que permiten otorgar diversas categorías de permisos.
Manejo de transacciones. Una transacción es un programa que se ejecuta como una sola
operación. Esto quiere decir que luego de una ejecución en la que se produce una falla es el mismo
que se obtendría si el programa no se hubiera ejecutado. Los SGBD proveen mecanismos para
programar las modificaciones de los datos de una forma mucho más simple que si no se dispusiera
de ellos.

Tiempo de respuesta. Lógicamente, es deseable minimizar el tiempo que el SGBD demora en
proporcionar la información solicitada y en almacenar los cambios realizados.
APIS (INTERFAZ DE PROGRAMACIÓN DE APLICACIONES)
Una interfaz de programación de aplicaciones o API (del inglés Application Programming Interface) es el
conjunto de funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece
cierta biblioteca para ser utilizado por otro software como una capa de abstracción. Son usados
generalmente en las bibliotecas.
Documentos relacionados
Descargar