Slide 1

Slide 1 text

BerkeleyDB BerkeleyDB Adriano J. Holanda Adriano J. Holanda Analista de Sistemas Depto Computação e Matemática/FFCLRP/USP Professor FAFRAM – Ituverava 2010-09-13

Slide 2

Slide 2 text

Descrição Descrição ● Biblioteca em C a ser vinculada com a aplicação ou pacotes a serem distribuídos: ● BerkeleyDB C Edition; ● BerkeleyDB Java Edition; ● BerkeleyDB XML Edition. ● Armazena pares arbitrários chave/dado; ● Possui interface para outras linguagens: C++, PHP, Java, Perl, Ruby, TCL, Smalltalk, .Net e muitas outras; ● Oferece um ambiente de armazenamento de dados de alta performance.

Slide 3

Slide 3 text

Histórico Histórico ● 1986: Projeto iniciado na Universidade da Califórnia em Berkeley; ● 1986 – 1994: Processo de transição do sistema operacional BSD 4.3 para o 4.4; ● 1996: Netscape requisita melhorias e modificação para adequá-la ao Netscape e servidor LDAP . É fundada a Sleepcat Software. ● 2006: A Sleepcat é comprada pela Oracle.

Slide 4

Slide 4 text

Versões = mudanças Versões = mudanças ● 1.x – foco no gerenciamento do armazenamento dos pares chave/dado (DA – Data Access); ● 2.x – adicionado sistema de bloqueio, possibilitando acesso concorrente aos dados (CDA – Concurrent Data Access); ● 3.x – adicionado sistema de logging para transações e recuperação de dados (TDS – Transactional Data Store); ● 4.x – adicionado sistema de replicação de dados permitindo alta disponibilidade (HA -- High Availability).

Slide 5

Slide 5 text

Terminologia Terminologia ● Environment: /databases/worktec Pessoas.db Professores.db Estudantes.db Base de dados Base de dados __db.001 __db.001 Memória Memória Compartilhada Compartilhada log .00 0001 log .00 0001 Arquivos Arquivos de de log log

Slide 6

Slide 6 text

Terminologia Terminologia ● Environment – diretório que oculta as bases de dados e a infraestrutura BerkeleyDB; ● Base de dados – coleção de itens que compartilham: ● Estrutura de índices; ● Conjunto de índices secundários; ● Ordem das chaves ou tabela de hash. ● Arquivo – contem uma ou mais base de dados e seu caminho é sempre relativo ao ambiente (Environment).

Slide 7

Slide 7 text

Indexação Indexação Chave Dado 010101 010101001101010101010100101 ● Base de dados possuem chaves primárias e secundárias podem ser especificadas; ● Estruturas de indexação disponíveis: BTree, Recno, Queue, Hash; ● A aplicação gerencia a estrutura de dados , BerkeleyDB só “enxerga” os pares chave/dado.

Slide 8

Slide 8 text

Estrutura em C Estrutura em C typedef struct { void *data; size_t size; } DBT; int *put(const DB *db, DBT *key, const DBT *data, u_int flags); int *close(DB *db); Estrutura da chave ou dado Alguns protótipos

Slide 9

Slide 9 text

DS – Armazenamento de dados DS – Armazenamento de dados ● Uma escrita, múltiplas leituras; ● Armazenamento e recuperação rápidos.

Slide 10

Slide 10 text

CDS – Armazenamento de dados CDS – Armazenamento de dados concorrente concorrente ● Única escrita, múltiplas leituras; ● Projetado para a maioria dos ambientes.

Slide 11

Slide 11 text

TDS – Armazenamento transacional TDS – Armazenamento transacional de dados de dados ● Alta concorrência; ● Recuperação dos dados após falha de sistema ou hardware.

Slide 12

Slide 12 text

Transações → ACID Transações → ACID ● A tomicidade – um grupo de operações são aplicadas à base de dados como uma única unidade; ● C onsistência – cada transação tem uma visão consistente dos dados; ● I solamento – transações são isoladas uma das outras como se elas fossem executadas sequencialmente; ● D urabilidade – uma vez encerradas, as transações persistem após o término da aplicação e falha do sistema.

Slide 13

Slide 13 text

HA – Alta disponibilidade HA – Alta disponibilidade ● Replicação para melhorar performance, recuperação à falha e escalabilidade.

Slide 14

Slide 14 text

Cursores Cursores 010101 0101010011100101 010101 0101010011100101 010101 0101010011100101 010101 0101010011100101 cursor cursor

Slide 15

Slide 15 text

Programando com BerkeleyDB

Slide 16

Slide 16 text

Projetos que utilizam BerkeleyDB Projetos que utilizam BerkeleyDB FreeBSD FreeBSD

Slide 17

Slide 17 text

Referências Referências ● Site da Oracle ● Buscar por BerkeleyDB

Slide 18

Slide 18 text

Muito Obrigado Muito Obrigado http://holanda.xyz http://holanda.xyz