Upload
marcos-luiz-lins-filho
View
220
Download
10
Embed Size (px)
Citation preview
1
Banco de Banco de Dados na Dados na NuvemNuvem
Natal/RN2014
Pós-graduação em Arquitetura de Nuvem
Prof.Marcos Luiz Lins Filho
2
Agenda
2
1ᵒ Dia (10/12) – Histórico, evolução e conceitos
dos Bancos de Dados NoSQL
2ᵒ Dia (11/12) – BD em Grafos com Neo4J
3ᵒ Dia (12/12) – AWS e BDs na Nuvem
4ᵒ Dia (13/12) – Apresentação de trabalhos
3
Agenda
3
4
Motivação
4
Contexto BD relacionais são o padrão quase SEMPRE;
A escolha é qual o BD relacional usar;
BD relacionais ameaçados pelos BD OO na década de 90, mas não vingou;
Porque os BD OOs não decolaram?
BD Relacionais de volta ao DOMINIO ABSOLUTO
Depois de longo tempo de DOMÍNIO, surge nova ameaça BDs NoSQL;
Na verdade não é ameaça, é alternativa;
O que os BDs NoSQL tem de diferente dos BD OOs para decolar?
Fonte: FOWLER e SADALAGE, 2013.
5
5
Memória Principal x Memória Secundária Armazenamento secundário
Arquivos
Banco de Dados
BD = Flexibilidade Recuperação de parte do todo de forma rápida e fácil
Concorrência (conceito de transações) Integração (Relação:Um para muitos - BD x Aplicações)
Histórico dos BDs Relacionais
Fonte: FOWLER e SADALAGE, 2013.
6
6
Por que BDs Relacionais foram bem sucedidos? Flexibilidade, Concorrência, Integração com padronização
Aprende um MODELO, aplica a vários projetos
Histórico dos BDs Relacionais
Fonte: FOWLER e SADALAGE, 2013.
77
O que é isso ?
Incompatibilidade de Impedância
Fonte: BARRY, Douglas K.
Modelo Relacional (tuplas e relações)
Estruturas de Dados(Listas, pilhas, árvores etc)
88
Se tornou mais aparente com o avanço da programação OO; Causa de grande frustração dos desenvolvedores OO; Forte Limitação dos BDs Relacionais ; Fez emergir os BDs OOs;
No final tivemos: Linguagens OO se tornaram mais e mais fortes; BDs OO sucumbiram BDs Relacionais se fortaleceram amparados no suporte a SQL como
linguagem padrão de manipulação de dados; Divisão profissional entre desenvolvedores e DBAs; Surgimento de frameworks de mapeamento objeto-relacional (Ex.
Hibernate)
Incompatibilidade de Impedância
Fonte: FOWLER e SADALAGE, 2013.
99
Incompatibilidade de Impedância
Fonte: FOWLER e SADALAGE, 2013.
OO to Relacional
Relacional to OO
O PROBLEMA DO MAPEAMENTO
1010
BDs x Orientação a Serviços
Fonte: FOWLER e SADALAGE, 2013.
SQL
BD INTEGRAÇÃO
1111
BDs x Orientação a Serviços
Fonte: FOWLER e SADALAGE, 2013.
SQL
BD APLICATIVO
1212
BDs x Orientação a Serviços
Fonte: FOWLER e SADALAGE, 2013.
SERVIÇOS
1313
Encapsulamento nos serviços;
Mais flexibilidade na resposta (Relações x Estrutura de dados)
A camada de BDs pode ser de qualquer tipo (Relacional, OO, NoSQL)
Não há necessidade de conhecer como usar o BD e sim o serviço;
Não há mais acesso direto ao BD (Segurança);
Fonte: FOWLER e SADALAGE, 2013.
BDs x Orientação a Serviços
1414
Década de 90 = Era da Internet e Bolha das .com (Crescimento)
Evolução dos Websites (Registro de atividades, novas estruturas)
Surgimento de redes sociais
Novas formas de interação, novos usuários
MUITO, MUITO, MUITO mais DADOS
Necessidade de mais recursos computacionais
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
1515
DILEMA
IR PARA CIMAX
OU PARA FORAFonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
1616
ESCOLHA
PARA FORA
CLUSTERSFonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
1717
NOVO DILEMA
BDs RELACIONAIS NÃO FORAM PROJETADOS PARA
CLUSTERS
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
1818
PRIMEIROS PASSOS
BDs em Clusters funcionando baseado num subsistema de disco compartilhado Oracle RAC ou Microsoft SQL Server
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
Sistema de Arquivos Cluster
reconhece
Subsistema de Disco Compartilhadopersiste
1919
PRIMEIROS PASSOS
BDs em Clusters funcionando baseado num subsistema de disco compartilhado Oracle RAC ou Microsoft SQL Server
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
Sistema de Arquivos Cluster
reconhece
Subsistema de Disco Compartilhadopersiste
PONTO DE FALHA
2020
OUTRA IDEIA
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
FRAGMENTAÇÃO
2121
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
FRAGMENTAÇÃO Necessidade de melhor controle dos dados
Controle vem para a aplicação
Rastreamento de ONDE tá O QUE preciso para ter O QUE QUERO
VAI PARA O ESPAÇO (ATRAVÉS DOS FRAGMENTOS) Consultas Integridade Referencial Transações E controle de consistência
2222
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
FRAGMENTAÇÃO Aumenta a complexidade técnica
Custos de licenças se multiplicam (Licenças de BD por servidor)
Tá difícil convencer o setor de compras a pagar várias vezes mais para ter “QUASE” o mesmo
E agora? Quem poderá nos defender?
2323
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
Big Table Dynamo
2424
Fonte: FOWLER e SADALAGE, 2013.
Surgimento dos BDs NoSQL
2009Eric Evans Johan Oskarsson
Reunião / Evento / Encontro
BDs Opensource e baseados em novas alternativas de armazenamento de dados
2525
Fonte: FOWLER e SADALAGE, 2013.
Surgimento dos BDs NoSQL
Não utilizam SQL
Tem linguagens próprias de consulta
Não há ainda padrão (Motivo: Flexibilidade)
Geralmente projetos Opensource
Maioria orientada a execução em clusters
Consistência e Distribuição diferentes (ACID não se aplica)
Sem esquemas e estrutura fixas
Características Básicas
2626
Fonte: FOWLER e SADALAGE, 2013.
Surgimento dos BDs NoSQL
Diferentes tipos de armazenamento de dados para diferentes circunstâncias
Alternativas ao Modelo relacional
Entender a natureza dos dados e como iremos manipulá-los para escolher a melhor opção
NOVA REALIDADE Mistura de tecnologias
Fortalecimento do uso de serviços
Persistência Poliglota
2727
Fonte: FOWLER e SADALAGE, 2013.
Surgimento dos BDs NoSQL
Clusterse
Produtividade
2828
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
2929
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Relacional
3030
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Relacional
Tabela: ClienteId Nome1 Marcos
Tabela: ItemPedidoId IdPedido IdProduto Preço1 2 10 350,00
Tabela: ProdutoId Nome10 Laptop
Tabela: EndereçoId Logradouro Cidade Estado CEP1 Av. Sen.
Salgado FilhoNatal RN 59.056-000
Tabela: PedidoId IdCliente IdEndEntreg
a1 1 1
3131
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Agregado
3232
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Agregado
3333
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Agregado - Consequências Conhecimento da estrutura agregada ajuda a armazenar e
distribuir os dados
Flexibilidade para estabelecer modelos de agregados
Relacionais não possuem conceito de agregados no modelo de dados
Bom para análise do agregado, ruim para análise de vários agregados juntos
Necessidade de conhecer previamente como e o que você vai querer saber sobre os dados
3434
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Agregado
chave de linha
chave de coluna valor de coluna
Família de colunas
perfil
pedidos
3535
Fonte: IGNATOVICZ e FERNANDES, 2013.
Por que então NoSQL?
3636
Fonte: IGNATOVICZ e FERNANDES, 2013.
Por que então NoSQL?
3737
Fonte: ARMBRUSTER e HUNGER, 2013.
Por que então NoSQL?
3838
Fonte: ARMBRUSTER e HUNGER, 2013.
Por que então NoSQL?
3939
Por que então NoSQL?
Fonte: IGNATOVICZ e FERNANDES, 2013.
4040
A função COMPLEXIDADE
Fonte: ARMBRUSTER e HUNGER, 2013.
4141
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
•Chave -valorOracle Riak (chave-valor)
Instância de Banco de Dados Cluster Riak
Tabela Bucket
Linha Chave-valor
RowID Chave
UserProfile
SessionData
ShoppingCart
CartItem
<Bucket = userData>
<Key = sessionID>
<Value = Object>
CartItem
Valor é armazenado, sem preocupação com o que representa
Aplicação faz o tratamento e se preocupa com entendimento do valor
Muito escalar devido o acesso somente pela chave
Pode armazenar tudo num Bucket ou criar buckets de domínio
LIMITAÇÃO: Consulta só pela chave, retornando o valor. Valor não pode ser consultado por atributo.Geração das chaves.
4242
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
•Chave -valor
UserProfile
SessionData
ShoppingCart
CartItem
<Bucket = userData>
<Key = sessionID>
<Value = Object>
CartItem
Armazenamento de informações de sessão Perfis de usuários e preferências Dados de carrinhos de compras
Bom para
Relacionamento entre dados Transações com múltiplas operações Consultas por dados e atributos Operações por conjuntos
Ruim para
4343
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
•Documentos
Acesso fácil aos atributos internos do documento Uso de visões materializadas para agregar
informações ou estabelecer consultas específicas nos agregados
Possível fazer consulta dos dados dentro do documento no nível de atributo
LIMITAÇÃO: Documentos armazenados devem ser de uma mesma coleção.
Oracle MongoDB(documentos)Instância de Banco de Dados Instância MongoDB
Esquema Banco de DadosTabela ColeçãoLinha Documento
RowID _idJunção DBRef
4444
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
•Documentos Registro de eventos (log) Sistema de Gerenciamento de Conteúdo (CMS) Análise web ou em tempo real (analytics) Aplicativos de comercio eletrônico
Bom para
Transações complexas com diferentes operações
Consultas em estruturas de agregados variáveis
Ruim para
4545
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
• Família de Colunas
Uso de famílias de colunas padrão e SUPERCOLUNAS (Encadeamento)
Eficaz para manter dados relacionados agrupados
Operações básicas usando GET, SET e DEL CQL (Padrão semelhante SQL – Cassandra) LIMITAÇÃO: Colunas lidas e
desserializadas de uma vez (Value único).
Oracle Cassandra(colunas)Instância de Banco de Dados Cluster
Banco de Dados Keyspace
Tabela Família de Colunas
Linha Linha
Coluna (a mesma para todas as linhas)
Coluna (podem ser diferentes por linhas)
Família de Colunas
Key
Key
Key
Coluna1
Co'luna1
Coluna1
Coluna2 ColunaN
Coluna2 ColunaN
Coluna2 ColunaN
Name1:
value1
Name1:
value2
NameN:
valuen
Name1:
value1
Name1:
value2
NameN:
valuen
Name1:
value1
Name1:
value2
NameN:
valuen
4646
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
• Família de Colunas Registro de eventos (log) Sistema de Gerenciamento de Conteúdo (CMS) Contadores
Bom para
Sistemas que requerem ACID para leituras e gravações
Ruim para
Família de Colunas
Key
Key
Key
Coluna1
Co'luna1
Coluna1
Coluna2 ColunaN
Coluna2 ColunaN
Coluna2 ColunaN
Name1:
value1
Name1:
value2
NameN:
valuen
Name1:
value1
Name1:
value2
NameN:
valuen
Name1:
value1
Name1:
value2
NameN:
valuen
4747
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
•Grafos Baseado na Teoria dos Grafos Dois elementos principais: Nós e
Relacionamentos Permite armazenar relacionamentos entre
entidades Possibilita encontrar padrões
interessantes entre Nós Uma consulta é uma TRAVESSIA (forma de
percorrer) Custo baixo para inserir relacionamentos
novos (oposto de BD Relacional) Relacionamentos persistidos e não
calculados no momento da consulta Modelagem de fácil entendimento
4848
Fonte: FOWLER e SADALAGE, 2013.
Tipos de BDs NoSQL
•Grafos Dados conectados Roteamentos, envio e serviços baseados em
localização Sistemas de recomendação
Bom para
Sistemas com atualização em lote (várias entidades atualizadas numa operação)
Ruim para
49
Agenda
49
5050
O que é um GRAFO?
5151
De onde surgiram os grafos?
Leonhard Euler
Fonte: ARMBRUSTER e HUNGER, 2013.
Sete pontes de Königsberg
Resolveu em 1736
5252
De onde surgiram os grafos?
Fonte: TV Cultura
Sete pontes de Königsberg
Vídeo
5353
Por que GRAFOS?
Dados cada vez mais conectados
Fonte: ARMBRUSTER e HUNGER, 2013.
5454
Por que GRAFOS?
Grafos estão em todos os lugares
• Política, Economia, História, Ciência, Transportes
• Biologia, Química, Física, Sociologia
• Internet, Hardware, Software
• Redes Sociais : Família, Amigos, Trabalho, Vizinhos
Fonte: ARMBRUSTER e HUNGER, 2013.
5555
Por que GRAFOS?
Todo mundo tá usando Grafos
Fonte: ARMBRUSTER e HUNGER, 2013.
5656
Por que GRAFOS?
Todo mundo tá usando Grafos
Fonte: ARMBRUSTER e HUNGER, 2013.
5757
Relacional x Grafos
Relacional
Fonte: ARMBRUSTER e HUNGER, 2013.
Grafos
5858
Modelagem Simplificada
5959
Modelagem Simplificada
6060
O que é o BD em Grafo?
Banco de dados com estrutura interna de armazenamento usando Grafos
Cada nós conhece seus vizinhos (nós adjacentes)
A medida que o número de nós cresce o custo de recuperação de informação permanece a mesma
Implementa um índice para pesquisas
Fonte: IGNATOVICZ e FERNANDES, 2013.
6161
Benchmarking
Fonte: IGNATOVICZ e FERNANDES, 2013.
6262
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Gremlin Cypher – Query Language Java API, Framework Traversal e
REST API
6363
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Gremlin
6464
Trabalhando com o Neo4j
Fonte: NEO4J.COM
Cypher Linguagem declarativa para grafos Simples, porém poderosa Consultas auto-explicativas Foco em O QUE recuperar e não COMO
recuperar Mix de diversas linguagens (SQL, SPARQL,
Python)
6565
Trabalhando com o Neo4j
Fonte: NEO4J.COM
Cypher – Cláusulas Básicas Consulta
MATCH RETURN
Atualização CREATE e DELETE (Nós e Relacionamentos) SET e REMOVE (propriedades)
6666
Trabalhando com o Neo4j
Fonte: NEO4J.COM
Nós Nó simples - ( identificador ) Nós relacionados – ( a ) --> ( b ) / ( a ) <-- ( b ) Etiqueta – ( a:Pessoa ) --> ( b ) Propriedades – ( a {nome: “Marcos”})
Definindo Relacionamentos (a)-[r:REL_TYPE]->(b)
Intervalos (a)-[*1..3]->(b)
Cypher – Padrões
6767
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Cypher
6868
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Cypher
6969
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Cypher
Terra? Maior
Trabalhando com o Neo4j
Vamos testar ???
71
Natal/RN2014
FOWLER, Martin e SADALAGE, Pramod. J. NoSQL DISTILLED – A brief guide to the emerging world of polyglot persistence. 1a ed, Pearson Education. Inc, 2013.
ROBINSON, Ian., WEBER, Jim. e EIFREM, Emil. Graph Databases. First edition, O´Reilly Media Inc., 2013.
ARMBRUSTER, Stefan e HUNGER, Michael. Introduction Graph Databases and Neo4j, 2013. Disponível em: http://www.bibliopedant.com/DXRf60i5GJh5jUPMGuUX
IGNATOWICZ, Eder e FERNANDES, Thiago. Neo4 o quê? Um guia prático para banco de dados em grafos, 2013. Disponível em: http://www.infoq.com/br/presentations/neo4j-visao-pratica
UNGER, Michael. Neo4J - NoSQL Database based in Java, 2010. Disponível em: http://www.infoq.com/br/news/2010/03/neo4j-10
BARRY, Douglas K. Impedance Mismatch When Mapping from a Relational Database. Disponível em: http://www.service-architecture.com/articles/object-oriented-databases/impedance_mismatch. html
Referências Bibliográficas
72
Obrigado !!!
Marcos Luiz Lins Filhowww.facebook.com/marcosluiz.linsfilho
@marcoslinsfilho