slide1
Download
Skip this Video
Download Presentation
Universidad Tecnológica Nacional Facultad Regional Buenos Aires

Loading in 2 Seconds...

play fullscreen
1 / 10

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


  • 99 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Universidad Tecnológica Nacional Facultad Regional Buenos Aires' - aggie


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
slide1

Universidad Tecnológica Nacional

Facultad Regional Buenos Aires

Ingeniería en Sistemas de Información

Sistemas Operativos

Introducción a BerkeleyDB

slide2

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
slide3

Puesta en marcha

# apt-get install libdb4.2-dev

# gcc bdb.c –o bdb –ldb

slide4

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

}

}

slide5

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

slide6

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

}

slide7

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

slide8

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

slide9

Corrupción

dbp->sync();

db_dump y db_load

slide10

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

ad