SlideShare uma empresa Scribd logo
1 de 28
Banco de Dados em Nuvem
Aula 2 - Modelagem de dados
Luiz Henrique Zambom Santana
Prof. Dr. Ronaldo dos Santos Mello
Agenda
● NoSQL nas nuvens
● Modelagem NoSQL
● Persistência poliglota
● Problemas de modelagem
● Ferramentas para desenvolvimento
● Arquiteturas de nuvem
● Exercício
● Conclusões
2
Modelagem NoSQL
● Tópico recente
● Pouca (ou nenhuma) definição
formal
3
Persistência poliglota
4
“Sem tamanho único”
• “a panoply of data models,
and they typically operate on
flexible storage formats such
as JSON”
• “Increasingly, we see
applications that deploy
multiple engines, resulting in
a need to join data across
systems.”
Vantagens e desvantagens
(em relação ao SQL)
Vantagens Desvantagens
Maior desempenho Transações limitadas
Maior escalabilidade Limitação nas consultas*
Modelos de dados mais ricos Consistência relaxada
Schema-less “Dados não relacionados”
Problemas
• Escolha do modelo
• Modelagem
• Falta de esquema
• Sincronização
• Controle de transação
• Evolução de modelo
• Diferenças de implementação
• Diferenças de desempenho
• Falta de capacidade técnica
Como escolher o modelo NoSQL?
Modelo Bom Ruim
Chave-valor Informações de sessão, perfis de
usuário, preferências, carrinho de
compras
Quando é necessário fazer consultas
nos dados, quando há
relacionamento entre as informações,
ou necessitamos acessar as
informações através de múltiplas
chave
Documentos Sistemas de gerenciamento de
conteúdo, blogs, web analytics,
análise em tempo real, e aplicações
de comércio
Transações complexas que
abrangem várias operações ou
consultas em diversas estruturas
agregadas
Como escolher o modelo NoSQL?
Modelo Bom Ruim
Colunar Sistemas de gerenciamento de
conteúdo, plataformas de blogs,
contadores, aplicações que
possuem um volume de escrita
muito grande
Sistemas que estão no início do
desenvolvimento ou que possuam
mudanças frequentes nos seus
padrões de consulta
Grafos Dados conectados, tais como redes
sociais, dados espaciais,
informações de roteamento para
bens e dinheiro, mecanismos de
recomendação
Modelo de dados simples
Modelagem
• Desafios
•Pouco conhecimento
•Múltiplos fornecedores
• Múltiplos modelos
• Muitas opções
Modelagem unificada?
Conceito RDBMS NoSQL
Entity Table Collection / Column Family
Entity instance Row Document / Row
Property Column Key / Column
Property of an entity
instance
Cell Value Field Value
Domain Data type Data type (Some NoSQL database no data type, all of value
is plain text.)
Relationship Constraint Reference, Embedded, Additional table, row across
multiple column families.
Key Index Index, Additional
table, Reference
Unique identification Primary Key Row Key
Modelagem unificada?
Desnormalização
• Desculpa Codd!
Agregação
• Aplicável a Chave-valor,
Documentos e Colunar
• Cuidado especial durante
as atualizações
Joins na aplicação
• Aplicável em Chave-valor, Documentos, Colunar e Grafos
• As vezes é inevitável
• Entidade aninhada é atualizada de forma frequente
• Many-to-many
Agregações atômicas
• Aplicável em Chave-valor, Documentos, Colunar e Grafos
• As vezes é inevitável
• Desnormalizar às vezes facilita o controle de
transações
Inverted Search – Direct
Aggregation
• Aplicável em Chave-valor, Documentos
e Colunar
• Armazenar os dados agregados de
diversas formas para facilitar
agregações posteriores
Tree Aggregation
• Aplicável em Chave-valor
e Documentos
• Facilita o acesso quando
os dados devem ser
apresentados em
conjunto
• Busca e atualizações
podem ser complicadas e
ineficientes
Materialized Paths
• Aplicável em Chave-valor e Documentos
• Uma maneira de tornar planos os modelos hierárquicos
Ferramentas para desenvolvimento
Desenvolvimento
• Dificuldades:
•Não existe uma linguagem única
•Não existe um padrão (como o JDBC)
•Muitas vezes as aplicações também falam SQL
• Algumas frameworks estão surgindo para facilitar o
desenvolvimento com NoSQL
• Java
•Spring Data suporta muitos de bancos de dados NoSQL
• GemFire, Redis, MongoDB, Neo4j, Solr, Elasticsearch,
Couchbase, FuzzyDB
• PHP
•Doctrine está começando a suportar NoSQL
• MongoDB, Elasticsearch, Cassandra, CouchDB
Spring Data
Arquiteturas comuns
Arquiteturas comuns
• Arquitetura Lambda
Arquitetura avançada
Bancos de dados poliglotas
● ArangoDB (https://www.arangodb.com/azure/)
26
Exercício - Modelar considerando múltiplos modelos
27
Referências
● https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
● https://www.databaselabs.io/database-as-a-service/hidden-costs-of-databases
28

Mais conteúdo relacionado

Mais procurados

No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbfabio perrella
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introduçãoWise Systems
 
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
 
Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Raul Oliveira
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkGuilherme Carlos
 
Arquitetura SQL Server
Arquitetura SQL ServerArquitetura SQL Server
Arquitetura SQL ServerRaul Oliveira
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQLCleber Dantas
 
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
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLOrlando Vitali
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 

Mais procurados (20)

Bancos de dados NoSQL (Not only sql)
Bancos de dados NoSQL (Not only sql)Bancos de dados NoSQL (Not only sql)
Bancos de dados NoSQL (Not only sql)
 
No sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodbNo sql e as vantagens na utilização do mongodb
No sql e as vantagens na utilização do mongodb
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 
Pos-QCon-BigData
Pos-QCon-BigDataPos-QCon-BigData
Pos-QCon-BigData
 
Cassandra NoSQL JUG Vale 2012
Cassandra NoSQL JUG Vale 2012Cassandra NoSQL JUG Vale 2012
Cassandra NoSQL JUG Vale 2012
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
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
 
Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao Framework
 
Arquitetura SQL Server
Arquitetura SQL ServerArquitetura SQL Server
Arquitetura SQL Server
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
DynamoDB - Uma Introdução
DynamoDB - Uma IntroduçãoDynamoDB - Uma Introdução
DynamoDB - Uma Introdução
 
NoSQL azure
NoSQL azureNoSQL azure
NoSQL azure
 
Chart css
Chart cssChart css
Chart css
 
[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] NoSQL[MinhaVida TechDay] NoSQL
[MinhaVida TechDay] 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
 
Seminário - NoSQL
Seminário - NoSQLSeminário - NoSQL
Seminário - NoSQL
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
 
Bigdata
BigdataBigdata
Bigdata
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 

Semelhante a Modelagem de dados NoSQL na nuvem

I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)wchevreuil
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Luiz Henrique Zambom Santana
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Thiago de Azeredo
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017Renato Groff
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Renato Groffe
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaGlaucio Scheibel
 
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Renato Groff
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
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
 

Semelhante a Modelagem de dados NoSQL na nuvem (20)

Mongo db
Mongo dbMongo db
Mongo db
 
I nd t_bigdata(1)
I nd t_bigdata(1)I nd t_bigdata(1)
I nd t_bigdata(1)
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Introdução ao NoSQL
Introdução ao NoSQLIntrodução ao NoSQL
Introdução ao NoSQL
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
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
 

Mais de Luiz Henrique Zambom Santana

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Luiz Henrique Zambom Santana
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkLuiz Henrique Zambom Santana
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeLuiz Henrique Zambom Santana
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLLuiz Henrique Zambom Santana
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchLuiz Henrique Zambom Santana
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...Luiz Henrique Zambom Santana
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLLuiz Henrique Zambom Santana
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesLuiz Henrique Zambom Santana
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPLuiz Henrique Zambom Santana
 
Design of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureDesign of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureLuiz Henrique Zambom Santana
 
An Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesAn Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesLuiz Henrique Zambom Santana
 
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...Luiz Henrique Zambom Santana
 

Mais de Luiz Henrique Zambom Santana (20)

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with Spark
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipe
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQL
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
 
Normalização
NormalizaçãoNormalização
Normalização
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
Consultas básicas em SQL
Consultas básicas em SQLConsultas básicas em SQL
Consultas básicas em SQL
 
Processamento em Big Data
Processamento em Big DataProcessamento em Big Data
Processamento em Big Data
 
Seminário de Andamento de Doutorado
Seminário de Andamento de DoutoradoSeminário de Andamento de Doutorado
Seminário de Andamento de Doutorado
 
Workshop de ELK - EmergiNet
Workshop de ELK - EmergiNetWorkshop de ELK - EmergiNet
Workshop de ELK - EmergiNet
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHP
 
Design of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureDesign of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore Architecture
 
An Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesAn Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL Repositories
 
Survey on NoSQL integration
Survey on NoSQL integrationSurvey on NoSQL integration
Survey on NoSQL integration
 
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
 

Modelagem de dados NoSQL na nuvem

  • 1. Banco de Dados em Nuvem Aula 2 - Modelagem de dados Luiz Henrique Zambom Santana Prof. Dr. Ronaldo dos Santos Mello
  • 2. Agenda ● NoSQL nas nuvens ● Modelagem NoSQL ● Persistência poliglota ● Problemas de modelagem ● Ferramentas para desenvolvimento ● Arquiteturas de nuvem ● Exercício ● Conclusões 2
  • 3. Modelagem NoSQL ● Tópico recente ● Pouca (ou nenhuma) definição formal 3
  • 5. “Sem tamanho único” • “a panoply of data models, and they typically operate on flexible storage formats such as JSON” • “Increasingly, we see applications that deploy multiple engines, resulting in a need to join data across systems.”
  • 6. Vantagens e desvantagens (em relação ao SQL) Vantagens Desvantagens Maior desempenho Transações limitadas Maior escalabilidade Limitação nas consultas* Modelos de dados mais ricos Consistência relaxada Schema-less “Dados não relacionados”
  • 7. Problemas • Escolha do modelo • Modelagem • Falta de esquema • Sincronização • Controle de transação • Evolução de modelo • Diferenças de implementação • Diferenças de desempenho • Falta de capacidade técnica
  • 8. Como escolher o modelo NoSQL? Modelo Bom Ruim Chave-valor Informações de sessão, perfis de usuário, preferências, carrinho de compras Quando é necessário fazer consultas nos dados, quando há relacionamento entre as informações, ou necessitamos acessar as informações através de múltiplas chave Documentos Sistemas de gerenciamento de conteúdo, blogs, web analytics, análise em tempo real, e aplicações de comércio Transações complexas que abrangem várias operações ou consultas em diversas estruturas agregadas
  • 9. Como escolher o modelo NoSQL? Modelo Bom Ruim Colunar Sistemas de gerenciamento de conteúdo, plataformas de blogs, contadores, aplicações que possuem um volume de escrita muito grande Sistemas que estão no início do desenvolvimento ou que possuam mudanças frequentes nos seus padrões de consulta Grafos Dados conectados, tais como redes sociais, dados espaciais, informações de roteamento para bens e dinheiro, mecanismos de recomendação Modelo de dados simples
  • 10. Modelagem • Desafios •Pouco conhecimento •Múltiplos fornecedores • Múltiplos modelos • Muitas opções
  • 11. Modelagem unificada? Conceito RDBMS NoSQL Entity Table Collection / Column Family Entity instance Row Document / Row Property Column Key / Column Property of an entity instance Cell Value Field Value Domain Data type Data type (Some NoSQL database no data type, all of value is plain text.) Relationship Constraint Reference, Embedded, Additional table, row across multiple column families. Key Index Index, Additional table, Reference Unique identification Primary Key Row Key
  • 14. Agregação • Aplicável a Chave-valor, Documentos e Colunar • Cuidado especial durante as atualizações
  • 15. Joins na aplicação • Aplicável em Chave-valor, Documentos, Colunar e Grafos • As vezes é inevitável • Entidade aninhada é atualizada de forma frequente • Many-to-many
  • 16. Agregações atômicas • Aplicável em Chave-valor, Documentos, Colunar e Grafos • As vezes é inevitável • Desnormalizar às vezes facilita o controle de transações
  • 17. Inverted Search – Direct Aggregation • Aplicável em Chave-valor, Documentos e Colunar • Armazenar os dados agregados de diversas formas para facilitar agregações posteriores
  • 18. Tree Aggregation • Aplicável em Chave-valor e Documentos • Facilita o acesso quando os dados devem ser apresentados em conjunto • Busca e atualizações podem ser complicadas e ineficientes
  • 19. Materialized Paths • Aplicável em Chave-valor e Documentos • Uma maneira de tornar planos os modelos hierárquicos
  • 21. Desenvolvimento • Dificuldades: •Não existe uma linguagem única •Não existe um padrão (como o JDBC) •Muitas vezes as aplicações também falam SQL • Algumas frameworks estão surgindo para facilitar o desenvolvimento com NoSQL • Java •Spring Data suporta muitos de bancos de dados NoSQL • GemFire, Redis, MongoDB, Neo4j, Solr, Elasticsearch, Couchbase, FuzzyDB • PHP •Doctrine está começando a suportar NoSQL • MongoDB, Elasticsearch, Cassandra, CouchDB
  • 26. Bancos de dados poliglotas ● ArangoDB (https://www.arangodb.com/azure/) 26
  • 27. Exercício - Modelar considerando múltiplos modelos 27