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

Banco de dados nas nuvens - aula 2

  • 1.
    Banco de Dadosem Nuvem Aula 2 - Modelagem de dados Luiz Henrique Zambom Santana Prof. Dr. Ronaldo dos Santos Mello
  • 2.
    Agenda ● NoSQL nasnuvens ● Modelagem NoSQL ● Persistência poliglota ● Problemas de modelagem ● Ferramentas para desenvolvimento ● Arquiteturas de nuvem ● Exercício ● Conclusões 2
  • 3.
    Modelagem NoSQL ● Tópicorecente ● Pouca (ou nenhuma) definição formal 3
  • 4.
  • 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 (emrelaçã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 domodelo • 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 omodelo 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 omodelo 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últiplosfornecedores • Múltiplos modelos • Muitas opções
  • 11.
    Modelagem unificada? Conceito RDBMSNoSQL 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
  • 12.
  • 13.
  • 14.
    Agregação • Aplicável aChave-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ávelem 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ávelem 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ávelem Chave-valor e Documentos • Uma maneira de tornar planos os modelos hierárquicos
  • 20.
  • 21.
    Desenvolvimento • Dificuldades: •Não existeuma 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
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
    Bancos de dadospoliglotas ● ArangoDB (https://www.arangodb.com/azure/) 26
  • 27.
    Exercício - Modelarconsiderando múltiplos modelos 27
  • 28.