Fundamentos de bancos de dados
(tontinton.com)Noções básicas do bashdb
bashdb, o programa de banco de dados mais simples possível, é composto por duas funções bash.- A função
db_setacrescenta dados a um arquivo, e a funçãodb_getbusca os dados. - Os problemas do
bashdbincluem durabilidade, atomicidade, isolamento e desempenho.
Tornando o bashdb ACID
- ACID representa as propriedades de transações de banco de dados: atomicidade, consistência, isolamento e durabilidade.
- Para melhorar a durabilidade do
bashdb, adiciona-se o comandosyncaodb_set. - Para isolamento, adiciona-se bloqueio de arquivo usando o programa
flock.
Durabilidade
fsyncefdatasyncsão chamadas de sistema que fazem flush do buffer de escrita para o disco.- O comando
syncfaz flush de todas as páginas “sujas” para o disco, e a flag-dchamafdatasync.
Isolamento
- Usa-se
flockpara fornecer isolamento entre múltiplos processos nobashdb. flocké um programa Linux para bloqueio de arquivos, e a flag-spermite leituras simultâneas.
Más notícias
- Não foi encontrada uma forma simples de garantir atomicidade com
bashdb. - Para melhorar o desempenho, é necessário aprimorar o algoritmo
O(n).
Mecanismo de armazenamento
- O objetivo de um mecanismo de armazenamento é fornecer uma abstração para ler e escrever dados em armazenamento persistente.
- O projeto de um mecanismo de armazenamento busca minimizar I/O de disco e buscas no disco.
B-tree mutável
- A B-tree é uma variação da BST com localidade espacial, minimizando I/O de disco e buscas.
- A B-tree é uma BST generalizada em que os nós podem ter mais filhos.
LSM tree imutável
- A LSM tree é uma estrutura de dados imutável escrita sequencialmente, vantajosa para workloads intensivos em escrita.
- A LSM tree armazena dados em buffer na memória e, ao atingir certa capacidade, faz flush para uma SSTable ordenada.
Filtro de Bloom
- O filtro de Bloom é uma estrutura de dados probabilística que permite verificar com eficiência se um item não existe em um conjunto.
- O filtro de Bloom funciona usando funções hash e tem complexidade espacial
O(log n).
Write Ahead Log
- WAL é um arquivo especial que registra todas as operações de transação e reconstrói o estado quando o processo do banco de dados é iniciado.
Isolamento
- Para alcançar isolamento, pode-se usar bloqueio pessimista, bloqueio otimista ou MVCC.
- O padrão ANSI/ISO SQL 92 define vários níveis de isolamento de leitura.
Sistemas distribuídos
- Sistemas distribuídos adicionam complexidade e podem distribuir dados entre várias máquinas para disponibilidade e escalabilidade horizontal.
- De acordo com o teorema CAP, um sistema só pode garantir duas entre consistência, disponibilidade e tolerância a partições.
Hashing consistente
- Hashing consistente é um método de particionamento de dados que reduz a quantidade de itens migrados quando nós são adicionados ou removidos.
Opinião do GN⁺:
- Entender os problemas fundamentais dos bancos de dados e as propriedades ACID é essencial para a engenharia de bancos de dados.
- O exemplo do
bashdbajuda a compreender problemas que surgem em sistemas reais de banco de dados. - O projeto de mecanismos de armazenamento e sistemas distribuídos é um fator importante que determina o desempenho e a confiabilidade de um banco de dados.
1 comentários
Comentários do Hacker News
Resumo do primeiro comentário:
Resumo do segundo comentário:
Resumo do terceiro comentário:
Resumo do quarto comentário:
Resumo do quinto comentário:
Resumo do sexto comentário:
Resumo do sétimo comentário:
sync; mv; sync.Resumo do oitavo comentário:
Resumo do nono comentário:
Resumo do décimo comentário: