Conceitos-chave na arquitetura de armazenamento dos data-stores Apache HBase e MongoDB. Sobre o HBase, são apresentados sua arquitetura master-slave e o conceito de regions. Sobre MongoDB apresentamos o formato BSON e a alocação de arquivos.
5. HBase
Banco de dados orientados a colunas:
Tabelas agrupam famílias de colunas
Uma família de colunas possui n colunas
Uma linha é um conjunto de valores de colunas
identificado por uma chave única
Linhas são ordenadas de acordo com a chave única
5
7. Padrão master-worker
Arquitetura compostar por:
Master : nó central que coordena e configura os demais
nós;
Workers : são submetidos à coordenação e distribuição
do master;
Na arquitetura Hbase:
Master é o responsável por manter os metadados e
distribuir os nós entre os Region Servers
Por sua vez, os Region Servers armazenam as
Regions (regiões de dados)
7
8. Master Node
Na arquitetura Hbase, o node Master :
Mantém e distribui os metadados
Oferece a interface para criação de tabelas, colunas,
etc.
Mantém as tabelas -ROOT- e .META.
Executa os seguintes processos:
LoadBalancer: realiza o balanceamento de carga
movendo e atribuindo Regions entre os nós
CatalogJanitor : de tempos em tempos faz a limpeza
dos metadados
8
9. Region Servers
São os nós que armazenam cada region de cada tabela
Processos:
CompactSplitThread : verifica necessidade splits e
compactações ocasionais
MajorCompactionChecker : verifica compactações
maiores
MemStoreFlusher : descarrega alterações em memória
para arquivos
LogRoller : faz a limpeza de logs antigos
9
10. Regions
São as unidades de dados nas quais são dividas as
tabelas (ou seja, as tabelas são divididas em regions )
A cada region corresponde um intervalo de chaves (rowkeys ) atribuídas pelo master
Cada region é atribuída pelo master a um regionserver. As atribuições são mantidas no arquivo .META.
Podem sofrer split (quando ultrapassa um treshold) ou
também merge
10
11. Region
Cada region engloba uma ou mais stores
Cada store armazena exatamente uma família de
colunas (column family)
Cada store é composta por:
Uma MemStore : armazenamento em memória das
operações sobre os dados
Um ou mais Hfiles : arquivos de dados propriamente
ditos. Formato inspirado no SSTable (proposto pela
Google)
11
12. Write-Ahead-Log
Utilizado para manter a consistências dos dados
Alterações são escritas primeiros no arquivo WAL (podem
ser conferidos no diretório hbase/logs)
WAL
MemStore
FileStore
12
14. MongoDB
Armazenagem de documentos (BSON)
Arquivos Mapeados em Memória
Coleções e índices
Confiabilidade e durabilidade
Escalabilidade horizontal
14
15. Armazenagem de Documentos
O formato JSON é conveniente para leitura, mas
ineficiente para armazenagem e transmissão
O formato BSON (Binary jSON) mantém a semântica
dos documentos mas é mais eficiente
Forma serializada do JSON
Especificação completa em:
http://bsonspec.org/#/specification
15
16. JSON x BSON
JSON: {hello:”world”}
BSON:
x16
x00
Tamanho variável
x00
x00
<conteúdo do documento >
4 bytes: tamanho do
documento
x02
Tipo do
valor
x00
1 Byte x00: fim do
documento
hello
Chave
“world”
Valor
16
18. BSON
Principais tipos de conteúdo:
01
02
03
05
09
0D
10
Ponto-flutuante (double)
String em UTF-8
Documento aninhado
Conteúdo binário
Data UTC
Código Javascript
Inteiro de 32-bit
18
20. Organização dos Arquivos
O banco é organizado em 2 tipos de arquivos:
Extends: arquivos de dados
Namespaces: metadados sobre coleções e índices
20
21. Extends
São os arquivos que armazenam os documentos
Documentos são gravados no formato BSON, organizado
como lista duplamente encadeada
Índice seguem estrutura de árvore-B
Seguem a nomenclatura <db-name>.0, <db-name>.1, …,
<db-name>.n
Tem tamanho pré-fixado 0 → 64MB, 1 → 128MB, …, até o
tamanho máximo de 2GB
21
22. Namespaces
Segue a forma <db-name>.<collection-name>
Índices contam como namespaces
São gravados em arquivos de metadados
Possuem a nomenclatura <db-name>.ns
Tamanho padrão: 16MB (24.000 nomes)
22
23. Referências
Shashank Tiwari (2011). Professional NoSQL, 361p. Wiley, capítulo 1,
“NoSQL: what is it and why you need it”
http://docs.mongodb.org/manual/
http://hbase.apache.org/book/architecture.html
http://bsonspec.org/#/specification
http://www.polyspot.com/en/blog/2012/understanding-mongodbstorage/
23
This means NoSQL is not a single product or even a single technology. It represents a class of products and a collection of diverse, and sometimes related, concepts about data storage and manipulation