Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BerkeleyDB

 BerkeleyDB

Apresentação sobre as propriedades da biblioteca BerkeleyDB em C e Java.

Adriano J. Holanda

September 13, 2010
Tweet

More Decks by Adriano J. Holanda

Other Decks in Programming

Transcript

  1. 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
  2. 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.
  3. 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.
  4. 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).
  5. 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
  6. 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).
  7. 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.
  8. 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
  9. DS – Armazenamento de dados DS – Armazenamento de dados

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

    concorrente concorrente • Única escrita, múltiplas leituras; • Projetado para a maioria dos ambientes.
  11. TDS – Armazenamento transacional TDS – Armazenamento transacional de dados

    de dados • Alta concorrência; • Recuperação dos dados após falha de sistema ou hardware.
  12. 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.
  13. HA – Alta disponibilidade HA – Alta disponibilidade • Replicação

    para melhorar performance, recuperação à falha e escalabilidade.