Universidad Tecnológica Nacional
Sponsored Links
This presentation is the property of its rightful owner.
1 / 10

Universidad Tecnológica Nacional Facultad Regional Buenos Aires PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Universidad Tecnológica Nacional Facultad Regional Buenos Aires

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

  • Bloqueos detallados

  • Copias de seguridad y replicación en caliente.

  • Transacciones ACID.

  • Compatible con dbm, ndbm y hsearch.

  • Snapshots


Puesta en marcha

# apt-get install libdb4.2-dev

# gcc bdb.c –o bdb –ldb


Creación de Base

#include <db.h>

DB *dbp;

u_int32_t flags; int ret;

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

flags = DB_CREATE;

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

if (dbp != NULL)

dbp->close(dbp, 0);

}

}


Construcción de la base

1) Dos punteros de tipo DBT.

a)Dato

b)Clave

2) Asigno el valor al par

3) Invoco el método putpara almacenar en la base


Grabado de datos

long dni = 31190867;

char *nombre = “Pablo Sandoval";

DBT 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->put(dbp, NULL, &key, &data, DB_NOOVERWRITE);

if (ret == DB_KEYEXIST) {

dbp->err(dbp, ret, “La clave %d ya existe!\n", dni);

}


Lectura de datos

long dni = 31190867;

char nombre[50];

DBT 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->get(dbp, NULL, &key, &data, 0);

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


Borrado de datos

long dni = 31190867;

DBT key;

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

key.data = &dni;

key.size = sizeof(long);

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


Corrupción

dbp->sync();

db_dump y db_load


Manejo con estructuras

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.dni);

key.size = sizeof(long);

data.data = &p;

data.size = sizeof(persona);

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


  • Login