Ene 302013
 

En nuestro anterior artículo de Introducción a Berkeley DB hemos presentado este sistema de base de datos y hemos comentado sobre las características y funcionalidad que ofrece. En éste vamos a ver ejempos prácticos de uso de Berkeley DB en un script en lenguaje perl.

Instalación

El software de manejo de bases de datos Berkeley es una librería que debe estar instalada en el sistema, utilizando el procedimiento de instalación que ofrezca el sistema operativo. Por ejemplo, en muchas distribuciones Linux, utilizamos el comando “apt-get”:

Para trabajar en perl con una base de datos Berkeley, debemos instalar también el módulo BerkeleyDB disponible en CPAN

Crear/abrir una base de datos

El siguiente código abre una base de datos Berkeley de tipo Hash contenida en el fichero “/home/datos.db”. Al haber especificado el flag DB_CREATE, si la base de datos no existía previamente se crea una nueva.

Añadir registros

En Berkeley DB, un registro es un conjunto (clave, valor). Para añadir un registro, simplemente llamamos a la función db_put del objeto $dbh:

 

Recorrer el contenido de la base de datos

Para obtener todos los registros de la base de datos, abrimos un cursor:

Determinar si una clave existe, y obtener el valor asociado

Para obtener el valor asociado a una clave, utilizamos una llamada a db_get de la forma:

La llamada a db_get lee de la base de datos el valor asociado a la clave, y lo guarda en la variable $valor. Si se produce algún error, devuelve un mensaje de error. Así, como vemos en el ejemplo, podemos determinar si la clave existe comprobando la variable $status.

Si sólo queremos determinar si una clave existe, pero no necesitamos recuperar su valor, podemos utilizar la función db_exists:

Almacenamiento de estructuras de datos

A menudo, podemos estar interesados en almacenar en la base de datos estructuras de datos: arrays, hashtables, que a su vez pueden contener referencias a otras estructuras de datos. Para ello, debemos serializar la estructura, de forma que se convierte en un único valor que puede ser guardado, y que puede ser convertido de nuevo en la estructura de datos original mediante el proceso inverso de deserialización.

En perl existen varios módulos que implementan esta funcionalidad, entre los cuales JSON::XS es uno de los más populares. En el siguiente ejemplo vemos cómo se utiliza este módulo:

y de la misma manera, podemos recuperar un valor guardado como una cadena json, y recuperar la estructura:

Por otra parte, si los valores a almacenar son de un tamaño considerable (superior a 1 KByte), y la base de datos tiene un gran número de registros, nos puede interesar comprimirlos. Para ello podemos utilizar los módulos IO::Compress::Deflate y IO::Uncompress::Inflate.

 Publicado por en 11:23 pm

 Deja un comentario

(requerido)

(requerido)