Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Bancos de Dados NoSQL
Conceitos, Ferramentas, Linguagens e 
Estudos de Casos no Contexto de Big Data
Marcos R. Vieira 
IBM Research Lab. – Brazil
Josiel M. de Figueiredo
Gustavo Liberatti
Alvaro F. M. Viebrantz
Instituto de Computação - UFMT
Outubro – 2012 IC - UFMT
2
Sumário
3
Sumário
• Introdução 
• Conceitos
• Produtos NoSQL
• Estudos de Casos
• Considerações Finais
4
Histórico dos Dados
Evolução
• nos tipos de dados
– multimídia, complexos, semiestruturados 
• na produção dos dados
– grande quantidade gerada em curto espaço de tempo 
• na transmissão dos dados
– redes de alta velocidade 
• no armazenamento dos dados 
– dispositivos com grande capacidade, na ordem de 
Terabytes
5Histórico dos Dados: solução dos 
SGBD Tradicionais
● Evolução nos tipos de dados
– adicionar novos tipos de dados nativos
– permitir tipos definidos pelo usuário (UDT)
● Evolução na produção dos dados
– uso de MemCache 
● Evolução na transmissão dos dados
– redes de alta velocidade 
● Evolução no armazenamento dos dados
– dispositivos SSD, alta velocidade 
6
SGBDR Tradicionais
Desafios atuais
1. dados na ordem de dezenas ou centenas de TB
– abordagem de cluster é cara
2. poder de crescimento elástico horizontal
– controle de transação ACID torna inviável a elasticidade
3. fácil distribuição dos dados e/ou processamento
– SGBD paralelos são caros
4. tipos de dados variados, complexos e/ou semiestruturados
– modelo de dados objeto-relacional não resolve todos os requisitos
7
SGBDR Tradicionais
● SGBDR: padrão de aplicação
● Aplicação baseadas na Web causam 
“picos” de uso:
– especialmente para sites de E-
Commerce
● Desenvolvedores começaram a integrar 
SGBDR com MemCache
8
Escalar Vertical (Scale Up)
• Diversos problemas em escalonamento vertical quando o banco de dados 
é muito grande 
– Melhor modo de fornecer ACID e um modelo rico é ter os dados em uma única 
máquina 
• SGBDR não foi inicialmente desenvolvido para ser distribuído 
• Existem soluções de banco de dados utilizando multi-node 
– Também conhecidos por “scaling out” ou “escalonamento horizontal” 
– Mais barato e mais viável utilizar “escalonamento horizontal” adicionando 
servidores menores e baratos do que investir em um u ńico servidor caro 
• Diferentes abordagens incluem:
– Master-Slave
– Sharding
9
Escalando SGBDR
Master-Slave
• Todos as escritas são feitas no master
• Todos as leituras são feitas nas replicas slave do 
banco de dados
• Leituras críticas podem estar incorretas
– escritas podem não terem sido propagadas
• Grande banco de dados podem trazer problemas
– master tem que propagar atualizações para os slaves 
10
Escalando SGBDR
● Particionamento ou Sharding
– Escala bem para ambas leituras e escritas
– Não transparente: aplicações tem que estar 
ciente do particionamento
– Não pode ter relacionamentos/junções entre 
as partições
– Perda de referência de integridade entre os 
shards 
11
Big Data, O que significa?
12
Big Data, O que significa?
1. Grande volume de dados na ordem de dezenas/centenas de TB
– e.g., projeto Square Kilometre Array (SKA) envolve a construção do maior radio 
telescópio que irá gerar até 1500 PBytes diariamente
– requer alto poder computacional para processamento, manipulação e armazenamento de dados 
2. tipos de dados variados, complexos e/ou semiestruturados
– Modelo flexível para armazenamento de dados complexos
3. armazenados em clusters de processadores de baixo custo
– e.g., Facebook tem 2700 nós em seu cluster com 60PB de armazenamento
4. poder de crescimento elástico horizontal
– Alocação/desalocação de recursos de hardware/software sob demanda da aplicação
13
Big Data, O que significa?
● crescimento do volume de dados que se torna difícil 
capturar, armazenar, gerenciar, compartilhar, 
analisar e visualizar com ferramentas tradicionais 
de SGBDR
● para alguns, Big Data significa usar sistemas NoSQL 
ou SGBDR paralelo para manipulação de grande 
quantidade de dados
14
Big Data
• Contextos que influenciaram o surgimento
– difusão dos dispositivos captação de dados 
– dispositivo com armazenamento na ordem de Terabytes 
– aumento de velocidade de transmissão nas redes
• Definição informal
– o processamento analítico e veloz de grande volumes de 
dados complexos produzidos por várias aplicações
● Volume:GBytes, TBytes, PBytes …
● Variedade: não estruturado, texto, imagens…
● Velocidade: dinâmico e, às vezes, variando no tempo
15
Big Data
• Exemplos de aplicações 
– científicas
– dados médicos e biológicos
– de engenharias
– redes sociais
– redes de sensores
– dados de Logs
16
Big Data e Computação em nuvem
1. Ambiente em Nuvem
– escalabilidade, elasticidade, tolerância a falhas, 
auto gerenciamento e a possibilidade de 
funcionar em commodity hardware
– primeiros SGBDR foram desenvolvidos para 
execução em ambientes corporativos
– suporte a alta carga de atualizações e processos 
de análises de dados
17
Big Data e Computação em nuvem
2. Ambiente de Gerenciamento de Dados Escalável:
– Single Tenant: uma aplicação complexa com um SGBD 
gerenciando uma grande quantidade de dados.
– Multitenant: grande número de aplicações com dados 
possivelmente não muito volumosos e até usando o 
mesmo esquema.
18Big Data: Por que o interesse 
agora?
● Crescente e diverso número de fontes de dados que geram 
uma quantidade grande de dados:
– Sensores (e.g, GPS, RFID)
– Web 2.0 (e.g., Twitter, Facebook, Wikis)
– Web clicks, Logs
● Dados muitos valiosos para serem apagados
● Drástica diminuição no custo do hardware (em especial) de 
armazenamento
● Crescimento de soluções baseadas de núvem
– Amazon S3
19
20
Solução para Big Data
Duas abordagens principais:
● SGBDR Paralelos
Duas abordagens principais:
● SGBDR Paralelos
● Ferramentas NoSQL
21
NoSQL
“Not Only SQL ”
• Classe de sistemas de armazenamento e 
consulta de dados não-relacional
• Não requerem um esquema fixo, ou 
• Não usam junções
• Relaxam uma ou mais das propriedades ACID
• teorema CAP 
22
NoSQL
Precursores do movimento NoSQL
• BigTable (Google)
• Dynamo (Amazon)
• Gossip protocol (descoberta e deteção de erro)
• Armazenamento distribuído de dados key/value
• Consistência eventual
• Teorema CAP
23
Sumário
• Introdução 
• Conceitos
• Produtos NoSQL
• Estudos de Casos
• Considerações Finais
24
Teorema CAP
• 3 propriedades de um sistema: 
– consistência, 
– disponibilidade e 
– particionamento
25
Teorema CAP
• Para um sistema de dados compartilhados
– até 2 dessas propriedades 
• “Particionar para escalar”
– escolha de consistência ou disponibilidade
– mais disponibilidade e menos consistência 
• Aplicações Web: A ou C
• SGBD tradicionais: C a A ou P
26
Teorema CAP
• Consistência Eventual
• BASE
– Basically Available
– Soft state
– Eventually consistent
• Eventual propagação de atualizações
• A não garantia de consistência nas leituras
27
Teorema CAP
Consistência Eventual
• Quando atualizações não ocorrem por um 
período de tempo longo, eventualmente todas as 
atualizações são propagadas no sistema e todos 
os nós estarão consistentes 
• Para uma certa atualização aceita e um dado nó, 
eventualmente a atualização alcança o nó ou o 
nó é removido do serviço 
28
Escalabilidade
• Tipos:
– Vertical → aumentar armazenamento e 
memória
– horizontal → aumentar hardware
• técnica de Particionamento dos Dados
– tabela hash distribuída
– sharding 
29
Paradigma MapReduce
• simplificar o processamento grande volume de 
dados de forma distribuída
• transparente os detalhes da distribuiçãodos 
dados
• duas etapas do processamento:
– Map: distribui e processa os dados entre os 
nós e gera resultado no formato <key, 
value>
– Reduce: processa os pares <key, value>
30
Paradigma MapReduce
31
Hadoop
● Sinônimo com o movimento de Big Data
• É um framework de computação distribuída com 
dois componentes:
– Hadoop Distributed File system (HDFS)
– Implementação Map-Reduce
32
Hadoop
1. Hadoop Distributed File system (HDFS)
– manipulação de dados no Hadoop,
– fornece uma camada transparente de um 
sistema de arquivo único,
– sistema de arquivo distribuído 
● arquivo em blocos de 64 ou 128MB 
● cada block é replicado várias vezes
33
Hadoop
2. Implementação Map-Reduce:
– Fornece um meio simples de quebrar 
a análise de grande volume de dados 
nos pequenos chunks
– O processamento dos chunks pode 
ser feito em paralelo
34
Hadoop vs. SGBDR
● SGBDR Tradicionais: Move os dados para computar
– Ao passo que processa mais dados, voce quer 
respostas interativas
– Tipicamente necessita hardware mais caros
– Falhas nos pontos de discos e redes podem ser um 
problema (por causa da ACID)
● Pode ser solucionado com hardware mais caro
– Difícil fazer distribuição
35
Hadoop vs. SGBDR
● Hadoop: Move a computação aos dados
– Segue o framework Map-Reduce
– Inicialmente pela Google: Map-Reduce e Google File System
– Comunidade desenvolve algoritmos Map-Reduce robustos
– HDFS para auto-replicar dados em múltiplos nós
– Executa uma tarefa MP única em todos/vários nós disponíveis no HDFS
– Usa commodity hardware
– Não necessita hardware especializado e caro
– Não ACID, mas BASE
36
Hadoop vs. SGBDR
SGBDR Tradicional Map-Reduce
Tamanha dos Dados Gbytes (Tbytes) Pbytes (Hbytes)
Acesso Interativo e Batch Batch
Atualização Leitura/Escrita 
várias vezes
Escrita única, 
Leitura várias vezes
Estrutura Schema estático Schema dinâmico
Integridade Alta (ACID) Baixa
Escalar Nao-Linear Linear
DBA Ratio 1:40 1:3000
37
Hadoop 
38
Sumário
• Introdução 
• Conceitos
• Produtos NoSQL
• Estudos de Casos
• Considerações Finais
39
NoSQL: categorias
Soluções NoSQL podem serem classificados em dois tipos:
• Key/Value ou “Big Hash Table”
– Amazon S3 (Dynamo)
– Voldemort
– Scalaris
• Sem Schema 
– Cassandra (column-based)
– CouchDB (document-based)
– Neo4J (graph-based)
– HBase (column-based)
40
NoSQL: Key/Value
Key/Value
• Vantagens:
– muito rápido
– altamente escalonável
– modelo simples
– possível de distribuição horizontal 
• Desvantagens:
– várias estruturas de dados (objects) não podem 
ser facilmente como pares de key/value 
41
NoSQL: sem esquema
Sem Schema
• Vantages: 
– modelo de dados sem esquema é mais rico que pares 
key/value
– consistência eventual
– vários são distribuídos
– provê excelente desempenho e escalabilidade 
• Desvantagens:
– tipicamente não suporta transações ACID ou junções 
42
NoSQL e CAP
43
Tipos de Soluções NoSQL
Vantagens Comuns
• barato (open source), fácil de implementar 
• dados são replicados para múltiplos nós idênticos
– tolerante a falhas
• Fácil substituição dos nós down
– sem ponto simples de falha
• fácil de distribuir
• não requer esquema fixo
• pode escalar up/down
• relaxa a necessidade de consistência (CAP) 
44
NoSQL
O que eu irei perder?
• junções
• group by 
• order by 
• transações ACID
45
Sumário
• Introdução 
• Conceitos Relacionados
• Produtos NoSQL
• Considerações Finais
46
Categorias de NoSQL
Key/value
stores
234
1
{wiki: 
abc}
432
4
{test 
asdf}
423
4
{url: 
com}
527
3
{url: 
123}
745
6
{qa: 
dfsdfd}
642
1
{234: 
2342}
524
8
{id: 
5248}
234
2
{e: as, 
r:eq}
Document
database
A
Column
family
Graph
database
1
1 2
1
9
3
1
1
8
6
1 9
3
2
2 8
1
1
47
Key-Value Stores
• "Dynamo: Amazon's Highly Available Key-
Value Store"[2007]
• Modelo de Dados:
– mapeamento global key-value
– altamente tolerante a falha
– Armazenamento de dados distribuído
● Altamente disponível
• Produtos:
– Riak, Redis, Voldemort, Dynamo, Berkeley DB, 
MemcacheDB, … 
Key/value
stores
234
1
{wiki: 
abc}
432
4
{test 
asdf}
423
4
{url: 
com}
527
3
{url: 
123}
745
6
{qa: 
dfsdfd}
642
1
{234: 
2342}
524
8
{id: 
5248}
234
2
{e: as, 
r:eq}
48
Column Family (BigTable)
• Google's "Bigtable: A Distributed Storage 
System for Structured Data"[2006]
• Data Model:
– grande tabela, com familia de colunas
– map-reduce para consultas e processamento
– modelo compacto e flexível
• Produtos:
– HBase, HyperTable, Cassandra, SimpleDB, 
Cloudata, Cloudera, SciDB, …
Column
family
1
1
1
1 1
1
1
1
1
1
49
Document Databases
• Modelo de Dados:
– Coleção de Documentos
– Um documento é uma coleção de 
key-value
– Centrado a índice, vários map-
reduce
• Produtos:
– MongoDB, CouchDB, RavenDB, …
Document
database
A
50
Graph Databases
• Modelo de Dados
– Nós com propriedades
– Relacionamentos com propriedades
– Hipergrafos
• Produtos
– Neo4, SonesGraphDB, OrientDB, Sones, 
HyperGraphDB, Virtuoso, VertexDB, …
Graph
database
51
NoSQL: Classificação
NoSQL 
Produtos
Modelo de 
Dados
API Consulta
Riak Key-value 
store
get/put
Voldemort Key-value 
store
get/put
CouchDB Document 
Store
Map/Reduce 
View
MongoDB Document 
Store
Cursor
Neo4J Graph DB Graph
Redis Collection Collection
Cassandra Column Family Thrift
HBase Column Family Thrift, REST
SciDB Column Family Array
52
NoSQL: Classificação
Desemp. Escalabil. Flexibil. Complex. Funcionalidade
Key-value 
stores
Alta Alta Alta Nenhuma Variável
Column 
stores
Alta Alta Moderada Baixa Mínima
Document 
stores
Alta Variável 
(alta)
Alta Baixa Variável
Graph DB Variável Variável Alta Alta Teoria de grafos
SGBDR Variável Variável Baixa Moderada Algebra 
relacional
53
Hadoop
Estudo de Caso
54
Hadoop
• HDFS (Hadoop Distributed File System) 
– sistema de arquivos voltado para o processamento de 
grande volume dados, na ordem de Petabytes.
– controle de falhas.
– acesso paralelo em vários nós.
– acesso sequencial em cada nó.
– armazenamento com replicação e particionamento 
automático, ocorrendo de forma transparente.
• MapReduce Framework 
– facilita o desenvolvimento de aplicações para o 
processamento de grande volume de dados de forma 
distribuída, paralela e com tolerância a falhas.
55
Hadoop
• Como funciona o MapReduce no Hadoop
– a ideia principal é criar uma tarefa (Job)
● particionamento dos dados para as funções de Map.
● as saídas das funções de Map são ordenadas e enviadas 
para as funções de Reduce.
● de forma paralela e distribuída dentro do nós do cluster.
● as saidas e entradas são armazenadas no HDFS.
– o Hadoop também pode gerenciar as tarefas passadas 
para execução.
● ordem de execução.
● monitoramento.
● Re-execução em caso de falha.
56
Hadoop
• Arquitetura básica
– Name Node
– Job Tracker
– Task Tracker
– Data Node
57
58
Hadoop: IBM Biginsights
• Utilizamos uma distribuição fornecida pela 
IBM
• Plataforma para processamento de grande 
volume de dados.
• Utiliza o Apache Hadoop.
• Configuração e instalação automatizada
– Standalone
– Cluster
59
Hadoop: IBM Biginsights
• Componentes instalados
60
Estudo de Caso: patentes
• Proteção da propriedade intelectual.
– Empresas buscando inovação.
– Buscas por novas tecnologias.
– Economia de tempo e recursos.
• Patentes
– Possuem informações técnicasinéditas.
– Fonte de inspiração para novas tecnologias.
– Pouco utilizado ainda pelas empresas 
brasileiras.
61
Estudo de Caso: patentes
• Segundo trabalhos elaborados pela Organização 
Mundial da Proriedade Intelectual, dois terços de 
toda publicação técnica são apresentadas 
somente através do sistema de patentes.
– Mas são dados difíceis de se trabalhar.
– Poucas empresas possuem especialistas nessa 
área.
– Empresas novas acabam ficando timidas para 
se envolver com esse tipo de pesquisa.
62
Estudo de Caso: patentes
• Convênio Instituto Nacional de 
Propriedade Industrial (INPI) e UFMT
– desenvolvimento de um software 
que auxilie no processo de uso de 
informações de patentes
– software livre
– Versão 1.0 → SGBD Relacional
– Versão 2.0 → NoSQL
63
Estudo de Caso: patentes
• base de patentes do USPTO 
disponibilizados no Google Patentes
– patentes do período de 2005 a 2012 
– arquivos de 500MB cada → 200GB total
– formato XML 
64
Estudo de Caso: patentes
• principais informações
• Classificação internacional, 
• título, 
• resumo, 
• números, 
• datas de publicação e depósito, 
• informações adicionais dos depositantes e 
inventores
65
Ambiente de Programação
Ferramentas
• JDK 1.6
• Maven 3.0.4
– Para build funcional e envio das bibliotecas
– Bibliotecas utilizadas
● Hadoop 0.20
● XStream da Codehaus
● XMLInputFormat do projeto Apache Mahout
• IDE Eclipse
– M2e - Plugin Maven
• IBM Big insights para executar e visualizar os jobs
66
Ambiente de Programação
67
Hadoop Map Reduce Framework
• Exemplo de Uso: Contagem de palavras
• Os passos deste exemplo:
– a implementação de três classes:Map, 
Reduce e GooglePatentWordCount. Esta 
ultima realiza a preparação dos dados e faz a 
chamada das outras duas classes
– gerar um arquivo .jar, que empacota todo o 
código construído, e implantá-lo no ambiente 
Hadoop
68
Hadoop Map Reduce Framework
Contagem de Palavras: 
69
Hadoop Hive
• Utiliza a estrutura do Hadoop.
• Adiciona a funcionalidade de data warehouse ao 
Hadoop.
• Facilita consulta em grande quantidade de dados
– Hive Query Language : Transforma ‘SQL’ em 
MapReduce para fazer buscas.
– Map - Selecão de dados.
– Reduce - Agregação dos dados.
• Pode ser acessado via JDBC.
70
Hadoop Hive
• Estruturas fornecidas para uso
– Databases
– Tables
– Partitions
– Bucket
71
Hadoop: como ETL
• Problema 
– Como armazenar os dados de patentes ?
– Como fazer buscas eficientes nesses dados ?
• Solução 
– Job Hadoop para transformar os dados.
– Apache Hive carrega os dados e fornece Hive QL para consultas.
• Adequar os dados para o Hive
– O formato mais simples é 
– Cada registro se encontra em uma linha do arquivo;
– Os campos estão delimitados por algum caractere especial;
– Isso lembra o formato CSV !!!
• Utilizar a estrutura do Hadoop para processar o grande volume de 
dados de forma paralela.
72
Hadoop: como ETL
• Função Map 
– Transforma o XML para um objeto java.
– Seleciona os dados de interesse.
– Emite todas as representações da patente no formato CSV.
● tabela única com todas as combinações de classificações vs. 
Depositantes.
• Função Reduce
– Não temos agregação.
– Apenas iteramos pelos dados e enviamos para a saída do Job.
• Carregando os dados no Hive
– LOAD DATA INPATH ‘saida_job’ INTO TABLE Patents
73
Hadoop: como ETL
• Conclusão
– Transformação dos dados teve uma 
performance muito boa.
– Utiliza muito bem os recursos do 
cluster.
– Latência das buscas alta pois passa 
por todos os dados.
– Bom para geração de relatórios em 
grande volume de dados.
74
CouchDB e BigCouch
• Características 
– implementado em Erlang 
– modelo de dados baseado em documentos no padrão JSON
● suporte a anexos 
– linguagem Javascript para programação do MapReduce 
– acesso por chamadas Restful. 
– Multi Version Concurrency Control ( MVCC)
– Eventualmente consistente / Basicamente disponível. 
– Baixa latência nas views.
– Consultas e transformações feitas usando Javascript.
– Views desenvolvidas utilizando o paradigma MapReduce.
– Views estáveis e indexadas após cada mudança.
● Utiliza árvores B.
75
CouchDB e BigCouch
• CouchApp
– Web apps rodando diretamente no banco de 
dados.
– Aplicação e banco de dados no mesmo local.
• Integração muito boa com o Apache Lucene.
– Buscas full-text nos documentos.
• Comunidade em alta.
– Discussões.
– Bibliotecas.
76
CouchDB e BigCouch
• Cloudante BigCouch
– Extensão para o CouchDB.
– Permite a configuração do CouchDB em 
forma de cluster.
– Sharding .
– Tolerância a falhas.
– Alta disponibilidade.
– Escalabilidade horizontal
– Abstrai o cluster todo como uma 
instância de CouchDB.
77
CouchDB e BigCouch
Exemplo de uso com patentes: Passos:
• converter os dados para JSON
• inserção dos dados no CouchDB
• construção de consulta
– uso de agregações faz a contagem de patentes e
– as organiza na hierarquia definida pelo padrão da classificação 
internacional de patentes
Ferramentas utilizadas:
– NodeJS para implementação
● biblioteca Cradle para transformação
● biblioteca Node-BufferedReader para carregamento dos arquivos
● biblioteca Node-xml2js
78
CouchDB e BigCouch
Configuração utilizada e funcionamento.
79
CouchDB e BigCouch
● Para armazenar os documentos de 
patentes
– Transformar os XML para JSON.
– Arquivos XML muito grandes.
– Trabalhar com Stream de leitura.
– Armazenar todos os dados.
● Desenvolver um script que popule o 
banco de dados.
80
CouchDB e BigCouch
● Para este exemplo foi usado NodeJS
– Javascript fora do navegador.
● Server-side inclusive.
– “Write less, do more”.
– Trabalhar com XML e JSON é mais ‘natural’.
● Comunidade bastante ativa.
– Encontramos libs para converter XML - JSON.
● Teste comparativo com o Hadoop.
81
CouchDB: workflow do exemplo
82
CouchDB e BigCouch
● Selecionando os dados no 
CouchDB
– Objetivo da consulta
● Classificação internacional.
– Estatística bem interessante por mostrar as áreas 
que estão sendo mais estudadas.
– Criar uma view no CouchDB
● Armazenado em um design document
● Funções de Map e Reduce em javascript.
83
CouchDB: Map()
84
CouchDB: Reduce()
85
CouchDB: agrupamento
86
CouchDB: agrupamento
87
CouchDB: agrupamento
88
CouchDB
● Conclusões
– Transformação dos dados não teve um 
perfomance tão boa.
● Hadoop é melhor para leitura de quantidade 
grande de dados.
– View estáveis, indexadas e de rápido acesso.
– Latência baixa após indexação das views.
– Foi armazenado todo o documento de patente.
89
scidb
Estudo de Caso
90
SciDB
Características
• modelo de dados de Vetor Multidimensional (Array) 
• não utiliza o paradigma MapReduce fornece duas 
interfaces de acesso: 
– AQL (Array Query Language) 
– AFL (Array Functional Language) 
• exemplo de vetor 
– CREATEARRAY clima < dataColeta : datetime, evaporacao : 
float,insolacao : float,precipitacao : float,tempmax : 
float,tempmin : float, umidader el : float, velocidadev ent : 
float > [x = 0 :
100000, 365, 0] 
91
SciDB
● Transações ACID + Versionamento (Append Only)
● Cada instrução AQL ou AFL representa apenas uma 
transação
● Lock em nível de array
● Particionamento baseado em chunking
● Armazenamento local
● Catalogo centralizado
● Shared-nothingarchitecture
● Conector Python, iquery
92
SciDB
● Atributo vs Dimensão
– Facilitar o acesso a um subconjunto de 
dados
– Possibilitar operações algébricas
– Escolha
● Atributos temporais
● Atributos espaciais
93
SciDB: estudo de caso
● Dados ambientais 
– micrometeorologia– estudos desenvolvidos no Programa de Pós-
Graduação em Física Ambiental da UFMT
● www.pgfa.ufmt.br
– torres espalhadas no Estado de MT 
transmitem as informações obtidas por 
sensores
● em tempo real
94
SciDB:estudo de caso
Exemplo de uso com dados ambientais
• Descrição:
– média diária das variáveis → evaporação, insolação, 
precipitação, temperatura máxima, temperatura mínima, 
umidade relativa do ar e velocidade do vento
– captadas em 4 locais diferentes no Estado de MT entre 
os anos de 1985 a 2010. 
• Passos: 
– converter os dados para csv e converter com csv2scidb 
– inserção em dos dados no SciDB 
– construção de um cubo
95
SciDB: arquitetura
Cliente
Postgres
Coordenador
Worker
Worker
Scidb in cluster
Worker
Requisição
Escolhe-se 
um nó worker
Escolhe-se 
um nó worker
Mantem o cluster Este nó irá 
coordenar requisição
Este nó irá 
coordenar requisição
96
SciDB: conceitos
● Banco de dados versional
● Indexação dimensional 
● Armazenamento baseado em array
● Distribuição através de chunks
97
SciDB: carga de dados
Cliente node-1
Envia arquivo
CSV
NFSnode-2 node-3
DATA, PRECIPITACAO
1984-12-01 1.5
1984-12-02 1.1
1984-12-03 1.7
1984-12-04 0.9
98
SciDB: carga de dados
Cliente node-1
Envia arquivo
CSV
Transforma em 
chuncks
NFSnode-2 node-3
Requisita carga
chunk0
chunk1DATA, PRECIPITACAO
1984-12-01 1.5
1984-12-02 1.1
1984-12-03 1.7
1984-12-04 0.9
{0}[
(1984-12-01 1.5),
(1984-12-02 1.1)
]
{1}[
(1984-12-03 1.7)
(1984-12-04 0.9)
]
99
SciDB: agrupamento
Relacional
Scidb
100
SciDB: estudo de caso
● Característica dos dados
– diferença estrutural entre sensores
– organização do conjunto de dados
– falhas de captura
● Volume de dados
101
SciDB: estudo de caso
● Implementação do agrupamento
102
SciDB: operadores
● Operadores matemáticos
● Operadores estruturais
● Operadores manipuladores
103
SciDB: AQL vs AFL
SELECT avg ( S.umidade )
 FROM precipitacao S
 WHERE S.cidade = 'CUIABA'
 GROUP BY S.umidade;
aggregate(
 filter ( precipitacao,
 cidade = 'CUIABA'),
 I,
 avg ( precipitacao.umidade )
);
104
SciDB: estudo de caso
● Precipitação
● EVAPORAÇÃO DO PICHE (mm)
● INSOLACAO (Hs)
● PRECIPITAÇÃO (mm)
● TEMPERATURA MAXIMA (°C)
● TEMPERATURA MINIMA (°C)
● UMIDADE RELATIVA DO AR (%)
● VENTO. VELOCIDADE (m/s)
● Pressão
● PRESSÃO ATMOSFERICA MÉDIA DIÁRIA(hPa)
● TEMPERATURA DO AR - BULBO SECO(°C)
● TEMPERATURA DO AR - BULBO ÚMIDO (°C)
● Vento
● VENTO
● DIREÇÃO (código)
● VENTO, DIREÇÃO (código)
● VENTO, DIREÇÃO (código)
● Cuiabá
● Cáceres
● São Vicente
Região
1984 - 2010
Período
Variáveis
105
SciDB: estudo de caso
(Conjunto de dados)
Valores Classificação Valor
Acima de 30% Aceitável ACEITÁVEL
Entre 20 e 30% Estado de Atenção ATENÇÂO
Entre 12 e 20% Estado de Alerta ALERTA
Abaixo de 12% Estado de emergência EMERGÊNCIA
EVAP. DO 
PICHE
INSOL. PRECIP. TEMP. 
MAXIMA
TEMP. 
MINIMA
UMIDADE 
RELATIVA
VENTO VELOC. (m/s)
1984-12-01 1,5 1,9 5 30,4 23,9 86 0,8
1984-12-02 1,1 0,9 0,4 30,8 22,8 84 1,1
1984-12-03 1,3 1,5 1 28,4 22,6 88 0
Tabela de classificação por umidade relativa
Tabela contendo uma amostra do conjunto de precipitação
106
SciDB: estudo de caso
(Mapeamento temporário)
CREATE ARRAY precipitacao_cuiaba 
< 
data_coleta:datetime
,evap_piche:float
,isolacao:float
,precipitacao:float
,temp_max:float
,temp_min:float
,umidade_rel:float
,velocidade_vent:float
>[x=0:100000,365,0]; 
CREATE ARRAY precipitacao_caceres 
< data_coleta:datetime
,evap_piche:float
,isolacao:float
,precipitacao:float
,temp_max:float
,temp_min:float
,umidade_rel:float
,velocidade_vent:float
>[x=0:100000,365,0]; 
CREATE ARRAY precipitacao_sao_vicente 
< data_coleta:datetime
,evap_piche:float
,isolacao:float
,precipitacao:float
,temp_max:float
,temp_min:float
,umidade_rel:float
,velocidade_vent:float
>[x=0:100000,365,0]; 
Palavra reservada
Atributos
Dimensão
107
SciDB: estudo de caso
(Cubo de precipitação)
CREATE EMPTY ARRAY precipitacao 
<evap_piche:float
,isolacao:float
,precipitacao:float
,temp_max:float
,temp_min:float
,umidade_rel:float
,velocidade_vent:float
>
[ classe_umidade=0:300002,365,0, 
cidade(string)=1000,2,0, 
data_coleta(datetime)=*,100000,0
]; 
108
SciDB: estudo de caso
(Load)
load(precipitacao_caceres, '/home/scidb/carga/precipitacao_caceres.scidb');
REDIMENSION_STORE(
 APPLY(precipitacao_caceres,
 cidade,'CACERES',
 classe_umidade,Iif(umidade_rel > 30,
'ACEITAVEL', Iif(umidade_rel > 20 ,
'ATENCAO',Iif(umidade_rel > 12 ,
'ALERTA',
'EMERGENCIA'
)
)
)
)
,precipitacao
);
109
SGBD: ecossistema atual
110
Sumário
• Introdução 
• Conceitos Relacionados
• Produtos NoSQL
• Considerações Finais
111
Big Data
● Big Data não é a única ferramenta
– É a resposta para tudo?
– Apenas uma grande base de 
dados?
– Rápido para subconjuntos de 
dados?
– Substitutivo para o relacional?
NÃO
112
Big Data
● Volume: além do que o ambiente 
pode manipular
● Velocidade: necessita rápidas 
decisões 
● Variedade: vários formatos
● Variabilidade: múltiplas 
interpretações
113
Big Data
Análise
Dados
Agilidade de Workload
Latência de análise e dados
(real-time, quase real-time)
Complexidade Analítica
Capacidade de Uso Analítica
(predição, estatística avançada, 
mineração de texto/dados)
Complexidade de Workload
Consulta mistas, aquisição e análise 
dos dados concerrente
Volume
Taxa de Acumulação
Volatilidade
Taxa de geração e 
atualização
Variedade
Estruturado, 
Multi-estruturado
Validação
Nível de qualidade
114
Considerações Finais
Onde eu poderia usar um NoSQL database? 
• Você tem um grande conjunto não controlado, não 
estruturado de dados que voce está tentando 
ajustar em um SGBDR? 
– Análise de Logs 
– Feeds de redes sociais 
– Dados que não são facilmente analisados em SGBDR, 
tal como dados em tempo real 
– Grande quantidade de feeds que necessitam ser 
“massageados” antes de serem inseridos no SGBDR 
115
Considerações Finais
• Consistência e os Produtos 
116
Considerações Finais
• Ecossistema SGBD 
117
Considerações Finais
• Ambiente Poliglota
– várias linguagens de programação
– vários produtos de armazenamento
– vários modelos de dados
118
Considerações Finais
• Vantagens NoSQL
– esquema flexível 
– crescimento elástico 
● commodity hardware
– suporte a dados complexos
– diversos modelos de dados
– diversos produtos disponíveis
119
Considerações Finais
• Desvantagens NoSQL
– early adoption vs modismo
– sem padronização
– quebra independência de dados
– programador & DBA
– sem junções
– sem controle de restrições referenciais
– diversos produtos disponíveis * 
120
Considerações Finais
• Tendências
– quem quer o seu?
– incorporação nas plataformas 
tradicionais de SGBD
121
Referências (1)
• SQL vs. NoSQL databases 
– One Size Fits All: An Idea whose Time has Come and Gone. Michael 
Stonebraker and Ugŭr Çetintemel 
http://www.cs.brown.edu/~ugur/fits_all.pdf 
– What Should I do? – Choosing SQL, NoSQL or Both for Scalable Web Apps. 
Todd Hoff: http://voltdb.com/webcast-choosing-sql-nosql-or-both-scalable-
web-apps
– SQL Databases Don’t Scale. Adam Wiggins 
http://adam.heroku.com/past/2009/7/6/sql_databases_dont_scale/
– 6 Reasons Why Relational Database Will Be Superseded. Robin Bloor: 
http://www.havemacwillblog.com/2008/11/6-reasons-why-relational-
database-will-be-superseded/
122
Referências (2)
• Introdução e Visão Geral– Scalability, Availability & Stability Patterns. Jonas Bonér: 
http://www.slideshare.net/jboner/scalability-availability-stability-
patterns
– Architecting for the Cloud – Horizontal Scalability via Transient, 
Shardable, Share-Nothing Resources. Adam Wiggins:
– http://www.infoq.com/presentations/Horizontal-Scalability
– Cluster-based scalable network services. Armando Fox, Steven D. 
Gribble, Yatin Chawathe, Eric A. Brewer and Paul Gauthier:
– http://www.cs.berkeley.edu/~brewer/cs262b/TACC.pdf
– NoSQL: Distributed and Scalable Non-Relational Database Systems. 
Jeremy Zawodny: http://www.linux-mag.com/id/7579 
123
Referências (3)
• Teorema CAP, BASE e Consistência Eventual
– Brewer’s CAP Theorem. Julian Browne: 
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem 
– Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-
Tolerant Web Services. Seth Gilbert and Nancy Lynch: 
http://www.cs.utsa.edu/~shxu/CS6393-Fall2007/presentation/paper-18.pdf 
– Errors in Database Systems, Eventual Consistency, and the CAP Theorem. 
Michael Stonebraker: http://dx.doi.org/10.1145/1831407.1831411
– BASE: An Acid Alternative. Dan Prichett: http://queue.acm.org/detail.cfm?
id=1394128 
– I love eventual consistency but… James Hamilton: 
http://perspectives.mvdirona.com/2010/02/24/ILoveEventualConsistencyBut
.aspx 
124
Referências (4)
• MapReduce
– A Comparison of Approaches to Large-
Scale Data Analysis. Michael 
Stonebraker, et al.:
– http://database.cs.brown.edu/sigmod09/
benchmarks-sigmod09.pdf 
– MapReduce: A major step backwards. 
David DeWitt: 
http://databasecolumn.vertica.com/data
base-innovation/mapreduce-a-major-
step-backwards 
125
Referências (5)
• Key-Value Stores
– Amazon Dynamo: The Next Generation Of Virtual Distributed 
Storage. Alex Iskold: 
http://www.readwriteweb.com/archives/amazon_dynamo.php 
– Erlang eXchange 2008: Building a Transactional Data Store 
(Scalaris). Alexander Reinefeld: 
http://video.google.com/videoplay?
docid=6981137233069932108 
– Why you won’t be building your killer app on a distributed 
hash table. Jonathan Ellis: 
http://spyced.blogspot.com/2009/05/why-you-wont-be-
building-your-killer.html 
• Document Databases 
– Introducing MongoDB. Eliot Horrowitz: http://www.linux-
mag.com/id/7530 
126
Referências (6)
• Column Stores 
– Distinguishing Two Major Types of Column-Stores. Daniel Abadi: 
http://dbmsmusings.blogspot.com/2010/03/distinguishing-two-
major-types-of_29.html 
– Cassandra – Structured Storage System over a P2P Network. 
Avinash Lakshman, Prashant Malik and Karthik Ranganathan: 
http://www.slideshare.net/jhammerb/data-presentations-
cassandra-sigmod 
– 4 Months with Cassandra, a love story. Cloudkick: 
https://www.cloudkick.com/blog/2010/mar/02/4_months_with_cass
andra 
– Saying Yes To NoSQL; Going Steady With Cassandra At Digg. John 
Quinn: http://about.digg.com/node/564 
– Cassandra: Fact vs fiction. Jonathan Ellis: 
http://spyced.blogspot.com/2010/04/cassandra-fact-vs-
fiction.html 
127
Referências (7)
• Graph Databases 
– Neo4j - A Graph Database That Kicks Buttox. Todd Hoff: 
http://highscalability.com/blog/2009/6/13/neo4j-a-graph-
database-that-kicks-buttox.html 
– Presentation: Graphs & Neo4j => the awesome! Alex 
Popescu: 
http://nosql.mypopescu.com/post/342947902/presentation
-graphs-neo4j-teh-awesome 
– Product: HyperGraphDB – A Graph Database. Todd Hoff: 
http://highscalability.com/blog/2010/1/26/product-
hypergraphdb-a-graph-database.html 
128
Referências (8)
• Desempenho e Comparação de Produtos NoSQL Databases 
– NoSQL Ecosystem. Jonathan Ellis: http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem 
– NoSQL: If only it was that easy. BJ Clark: http://bjclark.me/2009/08/04/nosql-if-only-it-was-that-easy 
– The end of SQL and relational databases? David Intersimone: 
http://blogs.computerworld.com/15510/the_end_of_sql_and_relational_databases_part_1_of_3
– Performance comparison: key/value stores for language model counts. Brendan O’Connor: 
http://anyall.org/blog/2009/04/performance-comparison-keyvalue-stores-for-language-model-counts 
– MySQL-Memcached or NOSQL Tokyo Tyrant by Matt Yonkovit: 
http://www.mysqlperformanceblog.com/2009/10/15/mysql-memcached-or-nosql-tokyo-tyrant-part- 1/ 
– Redis vs MySQL vs Tokyo Tyrant (on EC2) by Colin Howe: http://colinhowe.wordpress.com/2009/04/27/redis-
vs-mysql/ 
129
Mais Perguntas?
142
Contatos:
Marcos R. Vieira – mvieira@br.ibm.com
Josiel M. de Figueiredo – josiel@ic.ufmt.br
Gustavo Liberatti – liberatti.gustavo@gmail.com
Alvaro F. M. Viebrantz – alvarowolfx@gmail.com
Outubro – 2012 IC - UFMT
	Slide 1
	Sumário
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Escalonamento Vertical (“Scaling Up”)
	Slide 9
	Slide 10
	Introdução
	Slide 12
	Slide 13
	Big Data
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	NoSQL
	NoSQL
	Slide 23
	Teorema CAP
	Slide 25
	Slide 26
	Teorema CAP
	Escalabilidade
	Paradigma MapReduce
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Tipos de Soluções NoSQL
	Tipos de Soluções NoSQL
	Tipos de Soluções NoSQL
	Slide 42
	Tipos de Soluções NoSQL
	NoSQL
	Sumário
	Categorias de NoSQL
	Key-Value Stores
	Column Family (BigTable)
	Document Databases
	Graph Databases
	Slide 51
	Slide 52
	Slide 53
	Hadoop
	Slide 55
	Estudo de Caso
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Ambiente de Programação
	Slide 66
	Hadoop Map Reduce Framework
	Hadoop Map Reduce Framework
	Hadoop Hive
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	CouchDB e BigCouch
	Slide 75
	Slide 76
	CouchDB e BigCouch
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	Slide 82
	Slide 83
	Slide 84
	Slide 85
	Slide 86
	Slide 87
	SciDB
	scidb
	Slide 90
	Slide 91
	Slide 92
	SciDB
	Slide 94
	Slide 95
	Slide 96
	Slide 97
	Slide 98
	Slide 99
	Slide 100
	Slide 101
	Slide 102
	Slide 103
	Slide 104
	Slide 105
	Slide 106
	Slide 107
	Slide 108
	Slide 109
	Sumário
	Considerações Finais
	Slide 112
	Slide 113
	Slide 114
	Considerações Finais
	Considerações Finais
	Considerações Finais
	Considerações Finais
	Considerações Finais
	Considerações Finais
	Slide 121
	Slide 122
	Slide 123
	Slide 124
	Slide 125
	Slide 126
	Slide 127
	Slide 128
	Slide 129
	Slide 142

Mais conteúdos dessa disciplina