SlideShare uma empresa Scribd logo
1 de 24
Entendendo a Arquitetura de
Armazenamento
Tópicos Abordados
Características arquiteturais dos seguintes data
stores:


Apache HBase



MongoDB

2
Apache HBase
e Hadoop
Ecossistema Hadoop
Iniciativa open-source baseada na stack Google:


HDFS (Hadoop Distributed File System)



Hadoop YARN/MapReduce



HBase



ZooKeeper



Ambari, Cassandra, Hive, etc.
4
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
Armazenamento Distribuído
Arquitetura HBase:


Padrão master-worker



Master nodes



Range servers



Regions



WAL (Write-Ahead-Logs)

6
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
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
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
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
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
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
MongoDB
MongoDB


Armazenagem de documentos (BSON)



Arquivos Mapeados em Memória



Coleções e índices



Confiabilidade e durabilidade



Escalabilidade horizontal

14
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
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
BSON
x02
Tipo do
valor

h
x68

e
x65

“world”

hello
Chave

l

l
x6c

o
x6c

Valor

0
x6f

x00

A chave é uma string no estilo C
Tamanho da string

x06

x00

x00

x00

w
x77

o
x6f

r

l
x72

d
x6c

0
x64

x00
17
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
BSON
Exemplo final:


JSON:




{hello : “world”}

BSON:

16 00 00 00 02 68 65 6C
6C 6F 00 06 00 00 00 77
6F 72 6C 64 00 00

19
Organização dos Arquivos


O banco é organizado em 2 tipos de arquivos:


Extends: arquivos de dados



Namespaces: metadados sobre coleções e índices

20
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
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
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
Obrigado!

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 
SQLSat #127
SQLSat #127SQLSat #127
SQLSat #127
 
BrunoSQLSat 469
BrunoSQLSat 469BrunoSQLSat 469
BrunoSQLSat 469
 
Assoso 02
Assoso 02Assoso 02
Assoso 02
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016
 
Machine learning com Apache Spark
Machine learning com Apache SparkMachine learning com Apache Spark
Machine learning com Apache Spark
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHP
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
 
Feeds - Projeto VI Aplicação Software Social
Feeds - Projeto VI Aplicação Software SocialFeeds - Projeto VI Aplicação Software Social
Feeds - Projeto VI Aplicação Software Social
 
MySQL - the database
MySQL - the databaseMySQL - the database
MySQL - the database
 
Assoso 02(1)
Assoso 02(1)Assoso 02(1)
Assoso 02(1)
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passos
 
Sqlite - Introdução
Sqlite - IntroduçãoSqlite - Introdução
Sqlite - Introdução
 
Hadoop
HadoopHadoop
Hadoop
 
Projetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresProjetos de rede sistemas de servidores
Projetos de rede sistemas de servidores
 
Feeds - Projeto VI Aplicação Software Social - Atualização com as dúvidas
Feeds - Projeto VI Aplicação Software Social - Atualização com as dúvidasFeeds - Projeto VI Aplicação Software Social - Atualização com as dúvidas
Feeds - Projeto VI Aplicação Software Social - Atualização com as dúvidas
 
Assoso 02
Assoso 02Assoso 02
Assoso 02
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
 
Proposta de arquitetura Hadoop
Proposta de arquitetura HadoopProposta de arquitetura Hadoop
Proposta de arquitetura Hadoop
 

Semelhante a Entendendo a Arquitetura de Armazenamento, parte 1

NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Daniela Macedo
 
Apostila de Sql Server 2005
Apostila de Sql Server 2005Apostila de Sql Server 2005
Apostila de Sql Server 2005Andre Nascimento
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.Eduardo Medeiros
 
Introdução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de DadosIntrodução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de Dadosinfo_cimol
 
Ad server cassandra
Ad server cassandraAd server cassandra
Ad server cassandradist_bp
 
Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Otávio Santana
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracleEduardo Lopes
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem awsAmazon Web Services LATAM
 

Semelhante a Entendendo a Arquitetura de Armazenamento, parte 1 (20)

Nosql
NosqlNosql
Nosql
 
Comparação entre bancos de dados de modelo não relacional
Comparação entre bancos de dados de modelo não relacionalComparação entre bancos de dados de modelo não relacional
Comparação entre bancos de dados de modelo não relacional
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014
 
Introdução ao banco de dados
Introdução ao banco de dadosIntrodução ao banco de dados
Introdução ao banco de dados
 
No sql std
No sql stdNo sql std
No sql std
 
Apostila de Sql Server 2005
Apostila de Sql Server 2005Apostila de Sql Server 2005
Apostila de Sql Server 2005
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
NoSQL & SQL
NoSQL & SQLNoSQL & SQL
NoSQL & SQL
 
JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.JBUG Brasil - Desvendando as features do WildFly.
JBUG Brasil - Desvendando as features do WildFly.
 
Introdução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de DadosIntrodução a modelagem de dados parte II - Banco de Dados
Introdução a modelagem de dados parte II - Banco de Dados
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Ad server cassandra
Ad server cassandraAd server cassandra
Ad server cassandra
 
Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2Cassandra com NOSQL parte 2
Cassandra com NOSQL parte 2
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem aws
 

Mais de Rodolfo Mendes

Introdução a Data Science com Python
Introdução a Data Science com PythonIntrodução a Data Science com Python
Introdução a Data Science com PythonRodolfo Mendes
 
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesDescobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesRodolfo Mendes
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.ioRodolfo Mendes
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.ioRodolfo Mendes
 
Indexando e Ordenando Data Sets
Indexando e Ordenando Data SetsIndexando e Ordenando Data Sets
Indexando e Ordenando Data SetsRodolfo Mendes
 

Mais de Rodolfo Mendes (6)

Introdução a Data Science com Python
Introdução a Data Science com PythonIntrodução a Data Science com Python
Introdução a Data Science com Python
 
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de DecisõesDescobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
Descobrindo Conhecimento em Dados para Auxiliar a Tomada de Decisões
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.io
 
Introdução à API java.io
Introdução à API java.ioIntrodução à API java.io
Introdução à API java.io
 
NoSQL Na Nuvem
NoSQL Na NuvemNoSQL Na Nuvem
NoSQL Na Nuvem
 
Indexando e Ordenando Data Sets
Indexando e Ordenando Data SetsIndexando e Ordenando Data Sets
Indexando e Ordenando Data Sets
 

Entendendo a Arquitetura de Armazenamento, parte 1

  • 1. Entendendo a Arquitetura de Armazenamento
  • 2. Tópicos Abordados Características arquiteturais dos seguintes data stores:  Apache HBase  MongoDB 2
  • 4. Ecossistema Hadoop Iniciativa open-source baseada na stack Google:  HDFS (Hadoop Distributed File System)  Hadoop YARN/MapReduce  HBase  ZooKeeper  Ambari, Cassandra, Hive, etc. 4
  • 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
  • 6. Armazenamento Distribuído Arquitetura HBase:  Padrão master-worker  Master nodes  Range servers  Regions  WAL (Write-Ahead-Logs) 6
  • 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
  • 17. BSON x02 Tipo do valor h x68 e x65 “world” hello Chave l l x6c o x6c Valor 0 x6f x00 A chave é uma string no estilo C Tamanho da string x06 x00 x00 x00 w x77 o x6f r l x72 d x6c 0 x64 x00 17
  • 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
  • 19. BSON Exemplo final:  JSON:   {hello : “world”} BSON: 16 00 00 00 02 68 65 6C 6C 6F 00 06 00 00 00 77 6F 72 6C 64 00 00 19
  • 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

Notas do Editor

  1. 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
  2. om