Universidad Tecnológica Nacional Facultad Regional Buenos Aires

10
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a BerkeleyDB Sistemas Operativos

description

Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información. Sistemas Operativos. Introducción a BerkeleyDB. Introducción. Los datos en formato nativo del lenguaje de programación. No tiene modo cliente-servidor . Caché configurable - PowerPoint PPT Presentation

Transcript of Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Page 1: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Universidad Tecnológica Nacional

Facultad Regional Buenos AiresIngeniería en Sistemas de

Información

Introducción a BerkeleyDBSistemas Operativos

Page 2: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

• Los datos en formato nativonativo del lenguaje de programación.

• No tiene modo cliente-servidorcliente-servidor. • Caché configurable• Bloqueos detallados• Copias de seguridad y replicación en caliente. • Transacciones ACIDACID. • Compatible con dbm, ndbm y hsearch. • Snapshots

Introducción

Page 3: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

# apt-get install libdb4.2-dev

# gcc bdb.c –o bdb –ldb

Puesta en marcha

Page 4: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

#include <db.h>

DB *dbp; u_int32_t flags; int ret;

if (!ret = db_createdb_create(&dbp, NULL, 0) {

flags = DB_CREATEDB_CREATE;

if (!ret = dbp->opendbp->open(dbp, NULL, "my_db.db", NULL, DB_BTREE, flags, 0)) {

if (dbpdbp != NULL) dbp->close(dbpdbp, 0);

}

}

Creación de Base

Page 5: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

1) Dos punteros de tipo DBT.a)Datob)Clave

2) Asigno el valor al par

3) Invoco el método putput para almacenar en la base

Construcción de la base

Page 6: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

long dni = 31190867;char *nombre = “Pablo Sandoval";

DBT key, dataDBT key, data; memset(&key, 0, sizeof(DBT)); memset(&data, 0, sizeof(DBT));

key.data = &dni;key.size = sizeof(long);data.data = nombre;data.size = strlen(nombre) + 1;

ret = dbp->putdbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE);

if (ret == DB_KEYEXIST) {dbp->err(dbp, ret, “La clave %d ya existe!\

n", dni);}

Grabado de datos

Page 7: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

long dni = 31190867;char nombre[50];

DBT key, dataDBT key, data; memset(&key, 0, sizeof(DBT)); memset(&data, 0, sizeof(DBT));

key.data = &dni;key.size = sizeof(long);

data.data = nombre;data.ulen = 50;data.flags = DB_DBT_USERMEM;

dbp->getdbp->get(dbp, NULL, &key, &data, 0);

printf("Clave: %d - Valor: %s\n", dni, nombre);

Lectura de datos

Page 8: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

long dni = 31190867;

DBT keyDBT key; memset(&key, 0, sizeof(DBT));

key.data = &dni;key.size = sizeof(long);

dbp->deldbp->del(dbp, NULL, &key, 0);

Borrado de datos

Page 9: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

dbp->sync();

db_dump y db_load

Corrupción

Page 10: Universidad Tecnológica Nacional Facultad Regional Buenos Aires

typedef struct t_persona {long dni;char nombre[50];char apellido[50];

} persona p;...

strcpy(p.nombre, “Pablo”); strcpy(p.apellido, “Sandoval”);p.dni = 31190867;

key.data = &(p.dnip.dni);key.size = sizeof(long);data.data = &p;data.size = sizeof(persona);

ret = dbp->putdbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE);

Manejo con estructuras