SlideShare uma empresa Scribd logo
1 de 109
Modelos NoSQL e a Persistência
Poliglota
(com pitadas de Big Data)
ERDB 2014
Programa de Pós-Graduação em Computação Aplicada
Prof. Orientador: Fabiano Baldo, PhD
Mestrando: Glaucio Scheibel
UNIVERSIDADE DO ESTADO DE SANTA CATARINA-UDESC
CENTRO DE CIÊNCIAS TECNOLÓGICAS-CCT
v.2
Agenda
• Ser Poliglota
• Big Data
• O Teorema CAP
• ACID x BASE
• NoSQL
• Além do Relacional
• Map-Reduce
• JSON e BSON
• Modelos de dados
NoSQL
– Chave-Valor
– Documento
– Família de colunas
– Grafo
Ser Poliglota
Poliglotismo
• s.m. Característica da pessoa que é poliglota.
Habilidade ou aptidão para falar várias línguas
(idiomas). (Etm. poliglota + ismo)
Programação Poliglota
• Termo criado por Neal Ford em 2006.
• Hoje quando desenvolvemos um projeto, já não
usamos mais apenas uma linguagem.
– SQL na camada de persistência
– Java, C#, Python ou similar na camada de negócio
– HTML e Javascript na camada de apresentação
• “Applications of the future will take advantage of
the polyglot nature of the language world” –
Ford, 2006
Persistência Poliglota
• Similar a Programação Poliglota onde temos
um mix de linguagens, poderíamos também
ter um mix de modelos de dados.
• Diferentes bancos de dados são desenhados
para resolver diferentes problemas. (Sadalage
e Fowler 2013)
RDBMS para todo o Armazenamento
Fonte: Sadalage e Fowler
Persistência Poliglota
Fonte: Sadalage e Fowler
Persistência Poliglota SOA
Fonte: Sadalage e Fowler
Big Data
NoSQL e BigData
• NoSQL ≠ BigData
• BigData:
– Quantidade de dados que ultrapassa alguns Terabytes
• Tamanho que necessita mais de um storage.
• Tamanho onde técnicas tradicionais de RDBMS começam a
mostrar sinais de stress.
– Crescimento em 3 V’s
• Velocidade
• Variedade
• Volume
BigData e os 3 V’s
Estatísticas Tweeter (Mar/14)
• Usuários: 1 Bilhão
• Tweets enviados: 300 Bilhões
• Tweets/dia: 500 Milhões
• Usuários ativos/mês: 241 Milhões
• Média seguidores: 208/usuário
• Recorde tweets/seg.: 143.199 em 03/08/2013
Fonte: Digital Marketing Ramblings
Estatísticas Facebook (Mar/14)
• Usuários: 1,26 Bilhões (140 Milhões fakes)
• Usuários ativos/dia: 757 Milhões
• Likes/dia: 4,5 Bilhões
• Fotos/dia: 350 Milhões
• Páginas: 50 Milhões
• Aplicações: 10 Milhões
• Total de Likes: 1,13 Trilhões
• Total de dados: 300 Petabytes
Fonte: Digital Marketing Ramblings
Estatísticas Youtube (Fev/14)
• Usuários: 1 Bilhão
• Visualizações por dia: 4 Bilhões
• Horas por mês: 6 Bilhões
• Qtde de upload/min: 100 Horas de vídeo
Fonte: Digital Marketing Ramblings
Big Data
• De acordo com pesquisa da GigaOM:
– 90% dos dados armazenados no mundo foram
gerados nos 2 últimos anos.
– 80% destes dados não são estruturados.
• Definição em um post de Richard Dale1:
– “Big Data são dados que crescem em volume,
variedade e velocidade acima da Lei de Moore.”
1http://venturecyclist.blogspot.com.br/2012/08/a-better-definition-of-big-data.html
“Hoje, em um único dia, estamos
criando mais dados do que a
humanidade toda criou desde o seu
início até o ano 2000.”
Andreas Weigend / IAB fórum 2013
Fonte: IBM
O que é Big Data?
• É o termo aplicado a dados que não podem ser
processados ou analisados usando processos e
ferramentas tradicionais (Zikopoulos et al., 2012)
• “Big data” is high-volume, -velocity and -variety
information assets that demand cost-effective,
innovative forms of information processing for
enhanced insight and decision making. (Gartner,
2012).
Artigos BigTable e Dynamo
• Google BigTable (2006)
– Modelo família de colunas
– “Internet Scale”
• Web Search: 1.2 milhões de requisições por segundo.
• Google analytics: 200 TB (base) + 20 TB (sumário)
• Google Earth: 70 TB
• Amazon Dynamo (2007)
– Modelo chave-valor
– Amazon’s Always-on Experience
• “Always writable”
• SLA: resposta dentro de 300ms em 99,9% das requisições
O Teorema CAP
Teorema CAP
• N1 e N2 são dois nós na
rede
• Duas bases dados com
valor V0
• Programas A e B
Fonte: Browne, 2010
Execução sem Falha de Rede
Fonte: Browne, 2010
Execução com Falha de Rede
Fonte: Browne, 2010
Sincronização
Fonte: Browne, 2010
Teorema CAP [Brewer]
• Consistency
– Consistência.
– Todos os clientes veem o mesmo dado, mesmo com a
presença de updates.
• Availability
– Disponibilidade.
– Todos os clientes acham uma réplica do dado mesmo na
presença de falhas.
• Partition-tolerance
– tolerante a particionamento
– As propriedades do sistema são mantidas mesmo quando
este é particionado.
Teorema CAP [Brewer]
• Pode-se ter no máximo
duas destas
propriedades para
qualquer sistema de
dados compartilhado.
– Consistência
– Disponibilidade
– Tolerância a partições de
rede.
O Teorema CAP foi Comprovado
• “É impossível no modelo assíncrono de rede
implementar uma leitura / gravação de
objetos de dados que garanta as propriedades
de disponibilidade e consistência atômica em
todas as execuções justas (incluindo aqueles
em que as mensagens são perdidos).” [Gilbert
e Lynch, 2002]
ACID x BASE
ACID
• Atomicity
– Requer que toda transação seja “Ou tudo ou nada”.
• Consistency
– Uma transação leva a base de dados de um estado
consistente a outro.
• Isolation
– Uma transação não interfere em outra, como
estivessem sendo executadas uma após a outra.
• Durability
– Uma vez “comitada”, as modificações da transação
são mantidas.
Header e Reuter, 1983
BASE (Consistência Eventual)
• Basically Available
– Haverá uma resposta a qualquer requisição.
– O armazenamento parece funcionar a maior parte do
tempo.
• Soft state
– Armazenamentos não tem que ter uma escrita
consistente, nem as réplicas têm de ser coerentes
entre si o tempo todo.
• Eventual consistency
– O sistema, eventualmente, ficará consistente após
parar de receber as entradas de dados.
ACID x BASE
ACID
• Forte consistência
• Isolamento
• Foco no “commit”
• Transações aninhadas
• Disponibilidade?
• Conservador (pessimista)
• Evolução difícil (schema)
BASE
• Consistência fraca
• Disponibilidade é prioridade
• Respostas aproximadas são
OK
• Agressivo (otimista)
• Mais simples!
• Mais rápido
• Evolução fácil
Brewer, 2000
NoSQL
NoSQL
• Termo sugerido por Eric Evans para um encontro em 2009
em San Francisco organizado por Johan Oskarson (last.fm).
– Dava uma boa hashtag no Twitter
• NoSQl é um movimento, não uma tecnologia.
• Não há órgão regulamentador.
• Não há consenso com relação ao significado.
– No SQL
– Not Only SQL
– NOSQL
– no:sql
Definição NoSQL
• É a geração de bancos de dados que possuem
as seguintes características: ser não relacional,
distribuído, open-source e horizontalmente
escalável.
– nosql-database.org
Seis Características NoSQL
1. Capacidade de escalar horizontalmente uma simples
operação através de muitos servidores.
2. Capacidade de replicar e de distribuir os dados ao
longo de muitos servidores (partições).
3. Ter um protocolo ou interface simples de
comunicação (em contraste com SQL).
4. um modelo de concorrência mais fraca do que as
transações ACID.
5. Utilização eficiente dos índices e memória RAM para
o armazenamento de dados distribuídos.
6. Capacidade de adicionar novos atributos
dinamicamente nos registros de dados.
Fonte: Catell, 2011
Além do Relacional
Agregação
• É uma coleção de dados relacionados que é
tratado como uma unidade.
• É o limite de uma operação ACID / BASE.
• O modelo relacional é considerado aggregate-
ignorant.
Agregação: Modelo Relacional
Agregação: Modelo Relacional
Agregação: Modelo Agregado
Agregação: Modelo Agregado
Além do Relacional
• Da perspectiva de desenvolvimento de
aplicações, bancos de dados relacionais são a
resposta, independentemente da pergunta.
[O’Grady, 2013]
Além do Relacional
• Bancos de dados relacionais são consolidados
e amplamente utilizados, mas...
– Golden Hammer Anti-pattern
• Confiança excessiva na ferramenta favorita.
• Resolver diferentes problemas com uma mesma
ferramenta.
• “I suppose it is tempting, if the only tool you have is a
hammer, to treat everything as if it were a nail.” -
Abraham H. Maslow
– “One size fits all”
A Garagem Relacional
Dificuldade na Evolução
Schemaless
• Agilidade e flexibilidade no desenvolvimento e
evolução do software.
• Existe um “Schema Implícito” que é função da
aplicação e não da camada de persistência.
– set “cliente.1.nome” “ABC Transportes”
– set “cliente.2.razao” “XYZ Comercio” // Ops!
Fonte: Sadalage e Fowler, 2012
Agilidade em Software
• Agilidade em software é a capacidade de se
adaptar o software rapidamente às mudanças de
requisitos de negócios.
• Agilidade é fortemente associada tanto a
robustez operacional quanto a produtividade do
desenvolvedor.
• A agilidade é mais do que criar rapidamente
novas aplicações; significa ser capaz de responder
às mudanças de regras de negócio, sem
reescrever o código.
Fonte: McCreary e Kelly, 2013
MapReduce
MapReduce
• É construído sobre o conceito comprovado de
dividir e conquistar: é muito mais rápido quebrar
uma enorme tarefa em pequenos pedaços e
processá-los em paralelo. (Schneider, 2012)
• MapReduce é um modelo de programação
desenhado para processar grandes volumes de
dados em paralelo, dividindo o trabalho em um
conjunto de tarefas independentes. (Wikipedia,
23/04/14)
Map Step
• O nó mestre pega uma entrada, separa em
sub-problemas menores, e os distribui para
nós workers. Um worker pode fazê-lo
novamente, que por sua vez, conduz a uma
estrutura de árvore de múltiplos níveis. O
worker processa esse problema menor, e
passa a resposta de volta para o nó mestre.
Fonte: http://mapreduce.org
Map Step
Fonte: Sadalage e Fowler, 2012
Reduce Step
• O nó mestre, em seguida, pega as respostas
de todos os sub-problemas e os combina de
forma a obter o resultado, que é a resposta
para o problema original.
Fonte: http://mapreduce.org
Reduce Step
Fonte: Sadalage e Fowler, 2012
JSON e BSON
JSON
• JSON (JavaScript Object Notation - Notação de
Objetos JavaScript) é uma formatação leve de
troca de dados.
– Para seres humanos, é fácil de ler e escrever.
– Para máquinas, é fácil de interpretar e gerar.
• Constituído em duas estruturas:
– Uma coleção de pares nome/valor.
– Uma lista ordenada de valores.
Fonte: http://www.json.org
Exemplo JSON
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center"
}
}}
BSON
• Abreviação de Binary JSON, é a serialização
binária de documentos JSON.
• Vantagens sobre JSON:
– Tipos além do String
• byte, int32, int64, double, boolean, datetime,
timestamp
Fonte: http://bson.org
Exemplo BSON
Os Modelos NoSQL
Modelo Chave-Valor
• Base simples baseada em Tabela Hash.
– Uma tabela de duas colunas: Key, Value
• Key: String, Value: Blob
• Modelo mais simples.
Modelo Chave-Valor
Bucket: coleção de chave-valor no Riak
Ranking Chave-Valor
Fonte: db-engines.com
Prática
• Usar banco chave-valor com Redis
• http://redis.io
Modelo Documento
• Baseados em documentos (xml, json, bson...)
– Não confundir com documentos de texto,
planilhas, etc
• O documento é considerado um todo,
evitando a divisão do dado.
• Forte modelo agregado.
Modelo Documento
JSON
{
"firstname": "Pramod",
"citiesvisited": [
"Chicago",
"London",
"Pune",
"Bangalore"
],
"addresses": [
{
"state": "AK",
"city": "DILLINGHAM",
"type": "R"
}, {
"state": "MH",
"city": "PUNE",
"type": "R"
}
],
"lastcity": "Chicago"
}
XML
<person>
<firstname>Pramod</firstname>
<citiesvisited>
<cityvisited>Chicago</cityvisited>
<cityvisited>London</cityvisited>
<cityvisited>Pune</cityvisited>
<cityvisited>Bangalore</cityvisited>
</citiesvisited>
<addresses>
<address>
<state>AK</state>
<city>DILLINGHAM</city>
<type>R</type>
</address>
<address>
<state>MH</state>
<city>PUNE</city>
<type>R</type>
</address>
</addresses>
<lastcity>Chicago</lastcity>
</person>
Ranking Documento
Fonte: db-engines.com
Ranking Documento XML
Fonte: db-engines.com
Prática
• Usar um banco documento com MongoDB.
• Linguagem JavaScript
• http://www.mongodb.org
Modelo Família de Colunas
• A unidade de informação é a coluna (chave-valor) e um
“registro” é uma família de colunas.
• Coluna:
– Par chave-valor
• Super coluna:
– Array de colunas
• Família de colunas:
– Um container para colunas ordenadas por seus nomes. Família
de colunas são referenciadas e classificadas por rowkeys.
• Família de super colunas:
– Um container para super colunas ordenados por seus nomes.
Famílias como Coluna, Famílias de super coluna são
referenciados e ordenados por rowkeys.
Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
Modelo Família de Colunas
Fonte: Sadalage e Fowler 2012
Coluna
Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
Super Coluna
Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
Família de Colunas
Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
Família de Super Colunas
Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
Ranking Família de Colunas
Fonte: db-engines.com
Prática
• Usar um banco família de colunas com o
Apache Cassandra
• Linguagem CQL
• http://cassandra.apache.org
Modelo em Grafos
• Dados organizados em nós e vértices.
• Modelo onde o foco é o relacionamento.
Modelo em Grafos
Uma pequena rede social
Busca de Amigos Relacional
• Amigos:
– select distinct uf.* from t_user_friend uf where
uf.user_1 = ?
• Amigos dos Amigos:
– select distinct uf2.* from t_user_friend uf1 inner
join t_user_friend uf2 on uf1.user_1 = uf2.user_2
where uf1.user_1 = ?
• Amigos dos Amigos dos Amigos:
– select distinct uf3.* from t_user_friend uf1 inner
join t_user_friend uf2 on uf1.user_1 = uf2.user_2
inner join t_user_friend uf3 on uf2.user_1 =
uf3.user_2 where uf1.user_1 = ?
Fonte: Partner 2013
Rede Social Grafo
Busca de Amigos Grafo
• TraversalDescription traversalDescription
= Traversal.description().
relationships(“IS_FRIEND_OF”,
Direction.OUTGOING).evaluator(Evaluators.a
tDepth(2)).uniqueness(Uniqueness.NODE_GLOB
AL);
• Iterable<Node> nodes =
traversalDescription. traverse(nodeById).
nodes();
Busca de Amigos
• 1.000.000 usuários com 50 amigos
• MySql:
Fonte: Partner 2013
Busca de Amigos
• 1.000.000 usuários com 50 amigos
• Neo4j:
Fonte: Partner 2013
Por que o tempo do Relacional?
• Para encontrar todos os amigos de um usuário
em profundidade 5, um motor de banco de
dados relacional precisa gerar o produto
cartesiano da tabela t_user_friend cinco
vezes. Com 50.000 registros na tabela, o
conjunto resultante terá 50.0005 linhas (102,4
× 1021), o que leva bastante tempo e poder
computacional para calcular. Em seguida,
descartar mais de 99% dos dados, para
retornar apenas 1000 registros!
Fonte: Partner 2013
Por que o tempo do Grafo?
• Devido a estrutura de dados.
• Se alguém lhe perguntar quantas pessoas
estão sentados a 5 metros em torno de você,
você vai se levantar e contá-los. Se o estádio
está meio vazio, você vai contar com as
pessoas ao seu redor tão rápido quanto você
pode contar. Se o estádio está lotado, você
ainda vai fazê-lo em um tempo semelhante.
Fonte: Partner 2013
Ranking Grafos
Fonte: db-engines.com
Prática
• Usar um banco em grafo com o Neo4J
• Linguagem Cypher
• http://www.neo4j.org
Resumo: Big Data
• É o termo aplicado a dados que não podem
ser processados ou analisados usando
processos e ferramentas tradicionais
(Zikopoulos et al., 2012)
• 3 V’s
– Volume
– Variedade
– Velocidade
Resumo: Bancos NoSQL
• Open-Source
– Movimento
• Roda em computadores
“commodity”.
– Baixo custo.
• Criado para clusters.
– Adição e remoção de nós
sem impacto na operação.
• Consistência eventual.
– BASE invés de ACID
• Não utiliza SQL
• Schemaless
– Flexibilidade
– Produtividade
• Versionamento no lugar
de atualização de dados.
– Timestamp
• Sem transação de
múltiplas chaves.
• Suporte ao BigData.
Obrigado
Referências
• BANKER, Kyle. MongoDB in action. Manning
Publications Co., 2011.
• BEYER, Mark A.; LANEY, Douglas. The Importance of
‘Big Data’: A Definition. Stamford, CT: Gartner, 2012.
• BREWER, Eric A. Towards robust distributed systems.
In: PODC. 2000. p. 7.
• BROWNE, Julian. Brewer’s CAP Theorem-The kool aid
Amazon and Ebay have been drinking. 2010.
• CATTELL, Rick. Scalable SQL and NoSQL data
stores. ACM SIGMOD Record, v. 39, n. 4, p. 12-27,
2011.
Referências
• CHANG, Fay et al. Bigtable: A distributed storage
system for structured data. ACM Transactions on
Computer Systems (TOCS), v. 26, n. 2, p. 4, 2008.
• COOPER, Brian F. et al. PNUTS: Yahoo!'s hosted data
serving platform. Proceedings of the VLDB
Endowment, v. 1, n. 2, p. 1277-1288, 2008.
• DECANDIA, Giuseppe et al. Dynamo: amazon's highly
available key-value store. In: SOSP. 2007. p. 205-220.
• ELMASRI, Ramez; NAVATHE, Shamkant B.; DE OLIVEIRA
MORAIS, Rinaldo. Sistemas de banco de dados. 2005.
Referências
• FORD, Neal. Polyglot programming. 2006.
• GILBERT, Seth; LYNCH, Nancy. Brewer's conjecture and the
feasibility of consistent, available, partition-tolerant web
services. ACM SIGACT News, v. 33, n. 2, p. 51-59, 2002.
• HAERDER, Theo; REUTER, Andreas. Principles of
transaction-oriented database recovery. ACM Computing
Surveys (CSUR), v. 15, n. 4, p. 287-317, 1983.
• LANEY, Douglas. 3-D Data Management: Controlling Data
Volume, Velocity and Variety. META Group Research Note,
February, v. 6, 2001.
• MADDEN, Sam. From databases to big data. Internet
Computing, IEEE, v. 16, n. 3, p. 4-6, 2012.
Referências
• McCREARY, Dan; KELLY, Ann. Making Sense of
NoSQL: A guide for managers and the rest of us.
Manning Publications Co.. 2013
• MÜLLER, Stephan. The CAP-Theorem & Yahoo’s
PNUTS. 2012.
• O'GRADY, Stephen. The New Kingmakers. O'Reilly
Media, 2013.
• PARTNER, Jonas. Neo4j in Action. Manning
Publications Co., 2013.
• PRITCHETT, Dan. Base: An acid alternative.
Queue, v. 6, n. 3, p. 48-55, 2008.
Referências
• ROBINSON, Ian; WEBBER, J.; EIFREM, E. Graph
Databases. O'Reilly Media, 2013.
• SADALAGE, Pramod J.; FOWLER, Martin. NoSQL
distilled: a brief guide to the emerging world of
polyglot persistence. Addison-Wesley, 2012.
• TIWARI, Shashank. Professional NoSQL. John
Wiley & Sons, 2011.
• VOGELS, Werner. Eventually
consistent. Communications of the ACM, v. 52, n.
1, p. 40-44, 2009.
Referências
• VOGELS, Werner. Eventually consistent -
revisited. 2008-12-22. http://www.
allthingsdistributed.
com/2008/12/eventually_consistent. html,
2008.

Mais conteúdo relacionado

Mais procurados

WebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt PackWebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt PackDLT Solutions
 
Oracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksJeff Smith
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 
Going to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGoing to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGuillaume Laforge
 
QuestDB: ingesting a million time series per second on a single instance. Big...
QuestDB: ingesting a million time series per second on a single instance. Big...QuestDB: ingesting a million time series per second on a single instance. Big...
QuestDB: ingesting a million time series per second on a single instance. Big...javier ramirez
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Learn Oracle WebLogic Server 12c Administration
Learn Oracle WebLogic Server 12c AdministrationLearn Oracle WebLogic Server 12c Administration
Learn Oracle WebLogic Server 12c AdministrationRevelation Technologies
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overviewGabriel Carro
 
Oracle Database Appliance Workshop
Oracle Database Appliance WorkshopOracle Database Appliance Workshop
Oracle Database Appliance WorkshopMarketingArrowECS_CZ
 
Presentation oracle net services
Presentation    oracle net servicesPresentation    oracle net services
Presentation oracle net servicesxKinAnx
 

Mais procurados (20)

Presentation swagger
Presentation swaggerPresentation swagger
Presentation swagger
 
WebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt PackWebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt Pack
 
Oracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & TricksOracle SQL Developer Tips & Tricks
Oracle SQL Developer Tips & Tricks
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Docker swarm
Docker swarmDocker swarm
Docker swarm
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
DevOps with Kubernetes
DevOps with KubernetesDevOps with Kubernetes
DevOps with Kubernetes
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
Going to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific LanguagesGoing to Mars with Groovy Domain-Specific Languages
Going to Mars with Groovy Domain-Specific Languages
 
Terraform
TerraformTerraform
Terraform
 
QuestDB: ingesting a million time series per second on a single instance. Big...
QuestDB: ingesting a million time series per second on a single instance. Big...QuestDB: ingesting a million time series per second on a single instance. Big...
QuestDB: ingesting a million time series per second on a single instance. Big...
 
Docker Tutorial.pdf
Docker Tutorial.pdfDocker Tutorial.pdf
Docker Tutorial.pdf
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Learn Oracle WebLogic Server 12c Administration
Learn Oracle WebLogic Server 12c AdministrationLearn Oracle WebLogic Server 12c Administration
Learn Oracle WebLogic Server 12c Administration
 
Elk
Elk Elk
Elk
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overview
 
Oracle Database Appliance Workshop
Oracle Database Appliance WorkshopOracle Database Appliance Workshop
Oracle Database Appliance Workshop
 
Presentation oracle net services
Presentation    oracle net servicesPresentation    oracle net services
Presentation oracle net services
 

Destaque

Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Christiano Anderson
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBRodrigo Hjort
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16Christiano Anderson
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandraRichiely Paiva
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLpichiliani
 
Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoChristiano Anderson
 
NoSQL com Cassandra
NoSQL com CassandraNoSQL com Cassandra
NoSQL com CassandraJugVale
 
Introdução a data science
Introdução a data scienceIntrodução a data science
Introdução a data scienceCaio Gomes
 
Data science e os físicos
Data science e os físicosData science e os físicos
Data science e os físicosCaio Gomes
 
O futuro do big data
O futuro do big dataO futuro do big data
O futuro do big dataCaio Gomes
 
Apresentaçao fmu big data
Apresentaçao fmu   big data Apresentaçao fmu   big data
Apresentaçao fmu big data Caio Gomes
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Fernando Boaglio
 
Persistência nas Nuvens com NoSQL
Persistência nas Nuvens com NoSQLPersistência nas Nuvens com NoSQL
Persistência nas Nuvens com NoSQLRodrigo Hjort
 
Big Data e suas aplicações a analises de Transito
Big Data e suas aplicações a analises de TransitoBig Data e suas aplicações a analises de Transito
Big Data e suas aplicações a analises de TransitoCaio Gomes
 
BIG DATA - UNASP - EC - 08/06/2015
BIG DATA - UNASP - EC - 08/06/2015BIG DATA - UNASP - EC - 08/06/2015
BIG DATA - UNASP - EC - 08/06/2015rcdbarros
 

Destaque (20)

Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16MongoDB - Tudo o que você precisa saber - FISL16
MongoDB - Tudo o que você precisa saber - FISL16
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandra
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
Kanban
KanbanKanban
Kanban
 
certificadoTDC2016Floripa
certificadoTDC2016FloripacertificadoTDC2016Floripa
certificadoTDC2016Floripa
 
Mapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjangoMapeando a Terra com soluções livres e GeoDjango
Mapeando a Terra com soluções livres e GeoDjango
 
datawarehouse2
datawarehouse2datawarehouse2
datawarehouse2
 
NoSQL com Cassandra
NoSQL com CassandraNoSQL com Cassandra
NoSQL com Cassandra
 
Introdução a data science
Introdução a data scienceIntrodução a data science
Introdução a data science
 
Data science e os físicos
Data science e os físicosData science e os físicos
Data science e os físicos
 
O futuro do big data
O futuro do big dataO futuro do big data
O futuro do big data
 
Apresentaçao fmu big data
Apresentaçao fmu   big data Apresentaçao fmu   big data
Apresentaçao fmu big data
 
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
Persistência nas Nuvens com NoSQL
Persistência nas Nuvens com NoSQLPersistência nas Nuvens com NoSQL
Persistência nas Nuvens com NoSQL
 
Big Data e suas aplicações a analises de Transito
Big Data e suas aplicações a analises de TransitoBig Data e suas aplicações a analises de Transito
Big Data e suas aplicações a analises de Transito
 
BIG DATA - UNASP - EC - 08/06/2015
BIG DATA - UNASP - EC - 08/06/2015BIG DATA - UNASP - EC - 08/06/2015
BIG DATA - UNASP - EC - 08/06/2015
 

Semelhante a Modelos NoSQL e a Persistência Poliglota

Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdfEizo Edson
 
NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaAugusto Giles
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETMário Meyrelles
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Henrique Gabriel Gularte Pereira
 
Big data e mineração de dados
Big data e mineração de dadosBig data e mineração de dados
Big data e mineração de dadosElton Meira
 
Palestra big data_e_mineracao_dedados_5agosto13-versaoslideshare
Palestra big data_e_mineracao_dedados_5agosto13-versaoslidesharePalestra big data_e_mineracao_dedados_5agosto13-versaoslideshare
Palestra big data_e_mineracao_dedados_5agosto13-versaoslidesharepccdias
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise críticapichiliani
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisCarlo Pires
 
Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemJoão Gabriel Lima
 

Semelhante a Modelos NoSQL e a Persistência Poliglota (20)

Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Pesquisa sobre no sql
Pesquisa sobre no sqlPesquisa sobre no sql
Pesquisa sobre no sql
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdf
 
TDC - Planejando data Lake com big data clusters
TDC - Planejando data Lake com big data clustersTDC - Planejando data Lake com big data clusters
TDC - Planejando data Lake com big data clusters
 
NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas Monografia
 
Big Data
Big DataBig Data
Big Data
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
 
Big data e mineração de dados
Big data e mineração de dadosBig data e mineração de dados
Big data e mineração de dados
 
Palestra big data_e_mineracao_dedados_5agosto13-versaoslideshare
Palestra big data_e_mineracao_dedados_5agosto13-versaoslidesharePalestra big data_e_mineracao_dedados_5agosto13-versaoslideshare
Palestra big data_e_mineracao_dedados_5agosto13-versaoslideshare
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
NoSQL: Uma análise crítica
NoSQL: Uma análise críticaNoSQL: Uma análise crítica
NoSQL: Uma análise crítica
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Big Data - Hadoop
Big Data - HadoopBig Data - Hadoop
Big Data - Hadoop
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 
Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagem
 

Mais de Glaucio Scheibel

Mais de Glaucio Scheibel (11)

Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a Objetos
 
SQALE Software Quality Assessment based on Lifecycle Expectations
SQALE Software Quality Assessment based on Lifecycle ExpectationsSQALE Software Quality Assessment based on Lifecycle Expectations
SQALE Software Quality Assessment based on Lifecycle Expectations
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Logging
LoggingLogging
Logging
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Java e Software Livre
Java e Software LivreJava e Software Livre
Java e Software Livre
 
Batalhas com Robocode
Batalhas com RobocodeBatalhas com Robocode
Batalhas com Robocode
 

Modelos NoSQL e a Persistência Poliglota

  • 1. Modelos NoSQL e a Persistência Poliglota (com pitadas de Big Data) ERDB 2014 Programa de Pós-Graduação em Computação Aplicada Prof. Orientador: Fabiano Baldo, PhD Mestrando: Glaucio Scheibel UNIVERSIDADE DO ESTADO DE SANTA CATARINA-UDESC CENTRO DE CIÊNCIAS TECNOLÓGICAS-CCT v.2
  • 2. Agenda • Ser Poliglota • Big Data • O Teorema CAP • ACID x BASE • NoSQL • Além do Relacional • Map-Reduce • JSON e BSON • Modelos de dados NoSQL – Chave-Valor – Documento – Família de colunas – Grafo
  • 4. Poliglotismo • s.m. Característica da pessoa que é poliglota. Habilidade ou aptidão para falar várias línguas (idiomas). (Etm. poliglota + ismo)
  • 5. Programação Poliglota • Termo criado por Neal Ford em 2006. • Hoje quando desenvolvemos um projeto, já não usamos mais apenas uma linguagem. – SQL na camada de persistência – Java, C#, Python ou similar na camada de negócio – HTML e Javascript na camada de apresentação • “Applications of the future will take advantage of the polyglot nature of the language world” – Ford, 2006
  • 6. Persistência Poliglota • Similar a Programação Poliglota onde temos um mix de linguagens, poderíamos também ter um mix de modelos de dados. • Diferentes bancos de dados são desenhados para resolver diferentes problemas. (Sadalage e Fowler 2013)
  • 7. RDBMS para todo o Armazenamento Fonte: Sadalage e Fowler
  • 10.
  • 12. NoSQL e BigData • NoSQL ≠ BigData • BigData: – Quantidade de dados que ultrapassa alguns Terabytes • Tamanho que necessita mais de um storage. • Tamanho onde técnicas tradicionais de RDBMS começam a mostrar sinais de stress. – Crescimento em 3 V’s • Velocidade • Variedade • Volume
  • 13.
  • 14. BigData e os 3 V’s
  • 15. Estatísticas Tweeter (Mar/14) • Usuários: 1 Bilhão • Tweets enviados: 300 Bilhões • Tweets/dia: 500 Milhões • Usuários ativos/mês: 241 Milhões • Média seguidores: 208/usuário • Recorde tweets/seg.: 143.199 em 03/08/2013 Fonte: Digital Marketing Ramblings
  • 16.
  • 17. Estatísticas Facebook (Mar/14) • Usuários: 1,26 Bilhões (140 Milhões fakes) • Usuários ativos/dia: 757 Milhões • Likes/dia: 4,5 Bilhões • Fotos/dia: 350 Milhões • Páginas: 50 Milhões • Aplicações: 10 Milhões • Total de Likes: 1,13 Trilhões • Total de dados: 300 Petabytes Fonte: Digital Marketing Ramblings
  • 18. Estatísticas Youtube (Fev/14) • Usuários: 1 Bilhão • Visualizações por dia: 4 Bilhões • Horas por mês: 6 Bilhões • Qtde de upload/min: 100 Horas de vídeo Fonte: Digital Marketing Ramblings
  • 19.
  • 20.
  • 21. Big Data • De acordo com pesquisa da GigaOM: – 90% dos dados armazenados no mundo foram gerados nos 2 últimos anos. – 80% destes dados não são estruturados. • Definição em um post de Richard Dale1: – “Big Data são dados que crescem em volume, variedade e velocidade acima da Lei de Moore.” 1http://venturecyclist.blogspot.com.br/2012/08/a-better-definition-of-big-data.html
  • 22. “Hoje, em um único dia, estamos criando mais dados do que a humanidade toda criou desde o seu início até o ano 2000.” Andreas Weigend / IAB fórum 2013
  • 24. O que é Big Data? • É o termo aplicado a dados que não podem ser processados ou analisados usando processos e ferramentas tradicionais (Zikopoulos et al., 2012) • “Big data” is high-volume, -velocity and -variety information assets that demand cost-effective, innovative forms of information processing for enhanced insight and decision making. (Gartner, 2012).
  • 25. Artigos BigTable e Dynamo • Google BigTable (2006) – Modelo família de colunas – “Internet Scale” • Web Search: 1.2 milhões de requisições por segundo. • Google analytics: 200 TB (base) + 20 TB (sumário) • Google Earth: 70 TB • Amazon Dynamo (2007) – Modelo chave-valor – Amazon’s Always-on Experience • “Always writable” • SLA: resposta dentro de 300ms em 99,9% das requisições
  • 26.
  • 27.
  • 29. Teorema CAP • N1 e N2 são dois nós na rede • Duas bases dados com valor V0 • Programas A e B Fonte: Browne, 2010
  • 30. Execução sem Falha de Rede Fonte: Browne, 2010
  • 31. Execução com Falha de Rede Fonte: Browne, 2010
  • 33. Teorema CAP [Brewer] • Consistency – Consistência. – Todos os clientes veem o mesmo dado, mesmo com a presença de updates. • Availability – Disponibilidade. – Todos os clientes acham uma réplica do dado mesmo na presença de falhas. • Partition-tolerance – tolerante a particionamento – As propriedades do sistema são mantidas mesmo quando este é particionado.
  • 34. Teorema CAP [Brewer] • Pode-se ter no máximo duas destas propriedades para qualquer sistema de dados compartilhado. – Consistência – Disponibilidade – Tolerância a partições de rede.
  • 35. O Teorema CAP foi Comprovado • “É impossível no modelo assíncrono de rede implementar uma leitura / gravação de objetos de dados que garanta as propriedades de disponibilidade e consistência atômica em todas as execuções justas (incluindo aqueles em que as mensagens são perdidos).” [Gilbert e Lynch, 2002]
  • 36.
  • 38. ACID • Atomicity – Requer que toda transação seja “Ou tudo ou nada”. • Consistency – Uma transação leva a base de dados de um estado consistente a outro. • Isolation – Uma transação não interfere em outra, como estivessem sendo executadas uma após a outra. • Durability – Uma vez “comitada”, as modificações da transação são mantidas. Header e Reuter, 1983
  • 39. BASE (Consistência Eventual) • Basically Available – Haverá uma resposta a qualquer requisição. – O armazenamento parece funcionar a maior parte do tempo. • Soft state – Armazenamentos não tem que ter uma escrita consistente, nem as réplicas têm de ser coerentes entre si o tempo todo. • Eventual consistency – O sistema, eventualmente, ficará consistente após parar de receber as entradas de dados.
  • 40. ACID x BASE ACID • Forte consistência • Isolamento • Foco no “commit” • Transações aninhadas • Disponibilidade? • Conservador (pessimista) • Evolução difícil (schema) BASE • Consistência fraca • Disponibilidade é prioridade • Respostas aproximadas são OK • Agressivo (otimista) • Mais simples! • Mais rápido • Evolução fácil Brewer, 2000
  • 41. NoSQL
  • 42. NoSQL • Termo sugerido por Eric Evans para um encontro em 2009 em San Francisco organizado por Johan Oskarson (last.fm). – Dava uma boa hashtag no Twitter • NoSQl é um movimento, não uma tecnologia. • Não há órgão regulamentador. • Não há consenso com relação ao significado. – No SQL – Not Only SQL – NOSQL – no:sql
  • 43. Definição NoSQL • É a geração de bancos de dados que possuem as seguintes características: ser não relacional, distribuído, open-source e horizontalmente escalável. – nosql-database.org
  • 44. Seis Características NoSQL 1. Capacidade de escalar horizontalmente uma simples operação através de muitos servidores. 2. Capacidade de replicar e de distribuir os dados ao longo de muitos servidores (partições). 3. Ter um protocolo ou interface simples de comunicação (em contraste com SQL). 4. um modelo de concorrência mais fraca do que as transações ACID. 5. Utilização eficiente dos índices e memória RAM para o armazenamento de dados distribuídos. 6. Capacidade de adicionar novos atributos dinamicamente nos registros de dados. Fonte: Catell, 2011
  • 46. Agregação • É uma coleção de dados relacionados que é tratado como uma unidade. • É o limite de uma operação ACID / BASE. • O modelo relacional é considerado aggregate- ignorant.
  • 51. Além do Relacional • Da perspectiva de desenvolvimento de aplicações, bancos de dados relacionais são a resposta, independentemente da pergunta. [O’Grady, 2013]
  • 52. Além do Relacional • Bancos de dados relacionais são consolidados e amplamente utilizados, mas... – Golden Hammer Anti-pattern • Confiança excessiva na ferramenta favorita. • Resolver diferentes problemas com uma mesma ferramenta. • “I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” - Abraham H. Maslow – “One size fits all”
  • 55. Schemaless • Agilidade e flexibilidade no desenvolvimento e evolução do software. • Existe um “Schema Implícito” que é função da aplicação e não da camada de persistência. – set “cliente.1.nome” “ABC Transportes” – set “cliente.2.razao” “XYZ Comercio” // Ops! Fonte: Sadalage e Fowler, 2012
  • 56. Agilidade em Software • Agilidade em software é a capacidade de se adaptar o software rapidamente às mudanças de requisitos de negócios. • Agilidade é fortemente associada tanto a robustez operacional quanto a produtividade do desenvolvedor. • A agilidade é mais do que criar rapidamente novas aplicações; significa ser capaz de responder às mudanças de regras de negócio, sem reescrever o código. Fonte: McCreary e Kelly, 2013
  • 57.
  • 59. MapReduce • É construído sobre o conceito comprovado de dividir e conquistar: é muito mais rápido quebrar uma enorme tarefa em pequenos pedaços e processá-los em paralelo. (Schneider, 2012) • MapReduce é um modelo de programação desenhado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes. (Wikipedia, 23/04/14)
  • 60. Map Step • O nó mestre pega uma entrada, separa em sub-problemas menores, e os distribui para nós workers. Um worker pode fazê-lo novamente, que por sua vez, conduz a uma estrutura de árvore de múltiplos níveis. O worker processa esse problema menor, e passa a resposta de volta para o nó mestre. Fonte: http://mapreduce.org
  • 61. Map Step Fonte: Sadalage e Fowler, 2012
  • 62. Reduce Step • O nó mestre, em seguida, pega as respostas de todos os sub-problemas e os combina de forma a obter o resultado, que é a resposta para o problema original. Fonte: http://mapreduce.org
  • 63. Reduce Step Fonte: Sadalage e Fowler, 2012
  • 64.
  • 66. JSON • JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados. – Para seres humanos, é fácil de ler e escrever. – Para máquinas, é fácil de interpretar e gerar. • Constituído em duas estruturas: – Uma coleção de pares nome/valor. – Uma lista ordenada de valores. Fonte: http://www.json.org
  • 67. Exemplo JSON {"widget": { "debug": "on", "window": { "title": "Sample Konfabulator Widget", "width": 500, "height": 500 }, "image": { "src": "Images/Sun.png", "hOffset": 250, "vOffset": 250, "alignment": "center" }, "text": { "data": "Click Here", "size": 36, "style": "bold", "name": "text1", "hOffset": 250, "vOffset": 100, "alignment": "center" } }}
  • 68. BSON • Abreviação de Binary JSON, é a serialização binária de documentos JSON. • Vantagens sobre JSON: – Tipos além do String • byte, int32, int64, double, boolean, datetime, timestamp Fonte: http://bson.org
  • 71. Modelo Chave-Valor • Base simples baseada em Tabela Hash. – Uma tabela de duas colunas: Key, Value • Key: String, Value: Blob • Modelo mais simples.
  • 72. Modelo Chave-Valor Bucket: coleção de chave-valor no Riak
  • 74. Prática • Usar banco chave-valor com Redis • http://redis.io
  • 75. Modelo Documento • Baseados em documentos (xml, json, bson...) – Não confundir com documentos de texto, planilhas, etc • O documento é considerado um todo, evitando a divisão do dado. • Forte modelo agregado.
  • 76. Modelo Documento JSON { "firstname": "Pramod", "citiesvisited": [ "Chicago", "London", "Pune", "Bangalore" ], "addresses": [ { "state": "AK", "city": "DILLINGHAM", "type": "R" }, { "state": "MH", "city": "PUNE", "type": "R" } ], "lastcity": "Chicago" } XML <person> <firstname>Pramod</firstname> <citiesvisited> <cityvisited>Chicago</cityvisited> <cityvisited>London</cityvisited> <cityvisited>Pune</cityvisited> <cityvisited>Bangalore</cityvisited> </citiesvisited> <addresses> <address> <state>AK</state> <city>DILLINGHAM</city> <type>R</type> </address> <address> <state>MH</state> <city>PUNE</city> <type>R</type> </address> </addresses> <lastcity>Chicago</lastcity> </person>
  • 79. Prática • Usar um banco documento com MongoDB. • Linguagem JavaScript • http://www.mongodb.org
  • 80. Modelo Família de Colunas • A unidade de informação é a coluna (chave-valor) e um “registro” é uma família de colunas. • Coluna: – Par chave-valor • Super coluna: – Array de colunas • Família de colunas: – Um container para colunas ordenadas por seus nomes. Família de colunas são referenciadas e classificadas por rowkeys. • Família de super colunas: – Um container para super colunas ordenados por seus nomes. Famílias como Coluna, Famílias de super coluna são referenciados e ordenados por rowkeys. Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
  • 81. Modelo Família de Colunas Fonte: Sadalage e Fowler 2012
  • 84. Família de Colunas Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
  • 85. Família de Super Colunas Fonte: http://www.sinbadsoft.com/blog/cassandra-data-model-cheat-sheet
  • 86. Ranking Família de Colunas Fonte: db-engines.com
  • 87. Prática • Usar um banco família de colunas com o Apache Cassandra • Linguagem CQL • http://cassandra.apache.org
  • 88. Modelo em Grafos • Dados organizados em nós e vértices. • Modelo onde o foco é o relacionamento.
  • 91. Busca de Amigos Relacional • Amigos: – select distinct uf.* from t_user_friend uf where uf.user_1 = ? • Amigos dos Amigos: – select distinct uf2.* from t_user_friend uf1 inner join t_user_friend uf2 on uf1.user_1 = uf2.user_2 where uf1.user_1 = ? • Amigos dos Amigos dos Amigos: – select distinct uf3.* from t_user_friend uf1 inner join t_user_friend uf2 on uf1.user_1 = uf2.user_2 inner join t_user_friend uf3 on uf2.user_1 = uf3.user_2 where uf1.user_1 = ? Fonte: Partner 2013
  • 93. Busca de Amigos Grafo • TraversalDescription traversalDescription = Traversal.description(). relationships(“IS_FRIEND_OF”, Direction.OUTGOING).evaluator(Evaluators.a tDepth(2)).uniqueness(Uniqueness.NODE_GLOB AL); • Iterable<Node> nodes = traversalDescription. traverse(nodeById). nodes();
  • 94. Busca de Amigos • 1.000.000 usuários com 50 amigos • MySql: Fonte: Partner 2013
  • 95. Busca de Amigos • 1.000.000 usuários com 50 amigos • Neo4j: Fonte: Partner 2013
  • 96. Por que o tempo do Relacional? • Para encontrar todos os amigos de um usuário em profundidade 5, um motor de banco de dados relacional precisa gerar o produto cartesiano da tabela t_user_friend cinco vezes. Com 50.000 registros na tabela, o conjunto resultante terá 50.0005 linhas (102,4 × 1021), o que leva bastante tempo e poder computacional para calcular. Em seguida, descartar mais de 99% dos dados, para retornar apenas 1000 registros! Fonte: Partner 2013
  • 97. Por que o tempo do Grafo? • Devido a estrutura de dados. • Se alguém lhe perguntar quantas pessoas estão sentados a 5 metros em torno de você, você vai se levantar e contá-los. Se o estádio está meio vazio, você vai contar com as pessoas ao seu redor tão rápido quanto você pode contar. Se o estádio está lotado, você ainda vai fazê-lo em um tempo semelhante. Fonte: Partner 2013
  • 99. Prática • Usar um banco em grafo com o Neo4J • Linguagem Cypher • http://www.neo4j.org
  • 100.
  • 101. Resumo: Big Data • É o termo aplicado a dados que não podem ser processados ou analisados usando processos e ferramentas tradicionais (Zikopoulos et al., 2012) • 3 V’s – Volume – Variedade – Velocidade
  • 102. Resumo: Bancos NoSQL • Open-Source – Movimento • Roda em computadores “commodity”. – Baixo custo. • Criado para clusters. – Adição e remoção de nós sem impacto na operação. • Consistência eventual. – BASE invés de ACID • Não utiliza SQL • Schemaless – Flexibilidade – Produtividade • Versionamento no lugar de atualização de dados. – Timestamp • Sem transação de múltiplas chaves. • Suporte ao BigData.
  • 104. Referências • BANKER, Kyle. MongoDB in action. Manning Publications Co., 2011. • BEYER, Mark A.; LANEY, Douglas. The Importance of ‘Big Data’: A Definition. Stamford, CT: Gartner, 2012. • BREWER, Eric A. Towards robust distributed systems. In: PODC. 2000. p. 7. • BROWNE, Julian. Brewer’s CAP Theorem-The kool aid Amazon and Ebay have been drinking. 2010. • CATTELL, Rick. Scalable SQL and NoSQL data stores. ACM SIGMOD Record, v. 39, n. 4, p. 12-27, 2011.
  • 105. Referências • CHANG, Fay et al. Bigtable: A distributed storage system for structured data. ACM Transactions on Computer Systems (TOCS), v. 26, n. 2, p. 4, 2008. • COOPER, Brian F. et al. PNUTS: Yahoo!'s hosted data serving platform. Proceedings of the VLDB Endowment, v. 1, n. 2, p. 1277-1288, 2008. • DECANDIA, Giuseppe et al. Dynamo: amazon's highly available key-value store. In: SOSP. 2007. p. 205-220. • ELMASRI, Ramez; NAVATHE, Shamkant B.; DE OLIVEIRA MORAIS, Rinaldo. Sistemas de banco de dados. 2005.
  • 106. Referências • FORD, Neal. Polyglot programming. 2006. • GILBERT, Seth; LYNCH, Nancy. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services. ACM SIGACT News, v. 33, n. 2, p. 51-59, 2002. • HAERDER, Theo; REUTER, Andreas. Principles of transaction-oriented database recovery. ACM Computing Surveys (CSUR), v. 15, n. 4, p. 287-317, 1983. • LANEY, Douglas. 3-D Data Management: Controlling Data Volume, Velocity and Variety. META Group Research Note, February, v. 6, 2001. • MADDEN, Sam. From databases to big data. Internet Computing, IEEE, v. 16, n. 3, p. 4-6, 2012.
  • 107. Referências • McCREARY, Dan; KELLY, Ann. Making Sense of NoSQL: A guide for managers and the rest of us. Manning Publications Co.. 2013 • MÜLLER, Stephan. The CAP-Theorem & Yahoo’s PNUTS. 2012. • O'GRADY, Stephen. The New Kingmakers. O'Reilly Media, 2013. • PARTNER, Jonas. Neo4j in Action. Manning Publications Co., 2013. • PRITCHETT, Dan. Base: An acid alternative. Queue, v. 6, n. 3, p. 48-55, 2008.
  • 108. Referências • ROBINSON, Ian; WEBBER, J.; EIFREM, E. Graph Databases. O'Reilly Media, 2013. • SADALAGE, Pramod J.; FOWLER, Martin. NoSQL distilled: a brief guide to the emerging world of polyglot persistence. Addison-Wesley, 2012. • TIWARI, Shashank. Professional NoSQL. John Wiley & Sons, 2011. • VOGELS, Werner. Eventually consistent. Communications of the ACM, v. 52, n. 1, p. 40-44, 2009.
  • 109. Referências • VOGELS, Werner. Eventually consistent - revisited. 2008-12-22. http://www. allthingsdistributed. com/2008/12/eventually_consistent. html, 2008.