Download - Banco de Dados - NoSQL
![Page 1: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/1.jpg)
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
![Page 2: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/2.jpg)
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
![Page 3: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/3.jpg)
3
Agenda
3
![Page 4: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/4.jpg)
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.
![Page 5: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/5.jpg)
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.
![Page 6: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/6.jpg)
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.
![Page 7: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/7.jpg)
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)
![Page 8: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/8.jpg)
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.
![Page 9: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/9.jpg)
99
Incompatibilidade de Impedância
Fonte: FOWLER e SADALAGE, 2013.
OO to Relacional
Relacional to OO
O PROBLEMA DO MAPEAMENTO
![Page 10: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/10.jpg)
1010
BDs x Orientação a Serviços
Fonte: FOWLER e SADALAGE, 2013.
SQL
BD INTEGRAÇÃO
![Page 11: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/11.jpg)
1111
BDs x Orientação a Serviços
Fonte: FOWLER e SADALAGE, 2013.
SQL
BD APLICATIVO
![Page 12: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/12.jpg)
1212
BDs x Orientação a Serviços
Fonte: FOWLER e SADALAGE, 2013.
SERVIÇOS
![Page 13: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/13.jpg)
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
![Page 14: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/14.jpg)
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
![Page 15: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/15.jpg)
1515
DILEMA
IR PARA CIMAX
OU PARA FORAFonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
![Page 16: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/16.jpg)
1616
ESCOLHA
PARA FORA
CLUSTERSFonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
![Page 17: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/17.jpg)
1717
NOVO DILEMA
BDs RELACIONAIS NÃO FORAM PROJETADOS PARA
CLUSTERS
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
![Page 18: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/18.jpg)
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
![Page 19: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/19.jpg)
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
![Page 20: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/20.jpg)
2020
OUTRA IDEIA
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
FRAGMENTAÇÃO
![Page 21: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/21.jpg)
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
![Page 22: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/22.jpg)
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?
![Page 23: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/23.jpg)
2323
Fonte: FOWLER e SADALAGE, 2013.
A Era dos BDs em Clusters
Big Table Dynamo
![Page 24: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/24.jpg)
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
![Page 25: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/25.jpg)
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
![Page 26: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/26.jpg)
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
![Page 27: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/27.jpg)
2727
Fonte: FOWLER e SADALAGE, 2013.
Surgimento dos BDs NoSQL
Clusterse
Produtividade
![Page 28: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/28.jpg)
2828
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
![Page 29: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/29.jpg)
2929
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Relacional
![Page 30: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/30.jpg)
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
![Page 31: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/31.jpg)
3131
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Agregado
![Page 32: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/32.jpg)
3232
Fonte: FOWLER e SADALAGE, 2013.
A lógica por trás dos BDs NoSQL
Modelo Agregado
![Page 33: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/33.jpg)
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
![Page 34: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/34.jpg)
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
![Page 35: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/35.jpg)
3535
Fonte: IGNATOVICZ e FERNANDES, 2013.
Por que então NoSQL?
![Page 36: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/36.jpg)
3636
Fonte: IGNATOVICZ e FERNANDES, 2013.
Por que então NoSQL?
![Page 37: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/37.jpg)
3737
Fonte: ARMBRUSTER e HUNGER, 2013.
Por que então NoSQL?
![Page 38: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/38.jpg)
3838
Fonte: ARMBRUSTER e HUNGER, 2013.
Por que então NoSQL?
![Page 39: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/39.jpg)
3939
Por que então NoSQL?
Fonte: IGNATOVICZ e FERNANDES, 2013.
![Page 40: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/40.jpg)
4040
A função COMPLEXIDADE
Fonte: ARMBRUSTER e HUNGER, 2013.
![Page 41: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/41.jpg)
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.
![Page 42: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/42.jpg)
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
![Page 43: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/43.jpg)
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
![Page 44: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/44.jpg)
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
![Page 45: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/45.jpg)
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
![Page 46: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/46.jpg)
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
![Page 47: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/47.jpg)
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
![Page 48: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/48.jpg)
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
![Page 49: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/49.jpg)
49
Agenda
49
![Page 50: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/50.jpg)
5050
O que é um GRAFO?
![Page 51: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/51.jpg)
5151
De onde surgiram os grafos?
Leonhard Euler
Fonte: ARMBRUSTER e HUNGER, 2013.
Sete pontes de Königsberg
Resolveu em 1736
![Page 52: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/52.jpg)
5252
De onde surgiram os grafos?
Fonte: TV Cultura
Sete pontes de Königsberg
Vídeo
![Page 53: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/53.jpg)
5353
Por que GRAFOS?
Dados cada vez mais conectados
Fonte: ARMBRUSTER e HUNGER, 2013.
![Page 54: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/54.jpg)
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.
![Page 55: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/55.jpg)
5555
Por que GRAFOS?
Todo mundo tá usando Grafos
Fonte: ARMBRUSTER e HUNGER, 2013.
![Page 56: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/56.jpg)
5656
Por que GRAFOS?
Todo mundo tá usando Grafos
Fonte: ARMBRUSTER e HUNGER, 2013.
![Page 57: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/57.jpg)
5757
Relacional x Grafos
Relacional
Fonte: ARMBRUSTER e HUNGER, 2013.
Grafos
![Page 58: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/58.jpg)
5858
Modelagem Simplificada
![Page 59: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/59.jpg)
5959
Modelagem Simplificada
![Page 60: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/60.jpg)
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.
![Page 61: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/61.jpg)
6161
Benchmarking
Fonte: IGNATOVICZ e FERNANDES, 2013.
![Page 62: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/62.jpg)
6262
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Gremlin Cypher – Query Language Java API, Framework Traversal e
REST API
![Page 63: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/63.jpg)
6363
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Gremlin
![Page 64: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/64.jpg)
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)
![Page 65: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/65.jpg)
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)
![Page 66: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/66.jpg)
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
![Page 67: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/67.jpg)
6767
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Cypher
![Page 68: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/68.jpg)
6868
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Cypher
![Page 69: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/69.jpg)
6969
Trabalhando com o Neo4j
Fonte: IGNATOVICZ e FERNANDES, 2013.
Cypher
Terra? Maior
![Page 70: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/70.jpg)
Trabalhando com o Neo4j
Vamos testar ???
![Page 71: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/71.jpg)
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
![Page 72: Banco de Dados - NoSQL](https://reader030.vdocuments.pub/reader030/viewer/2022012314/55b7b5e0bb61eb0b618b456c/html5/thumbnails/72.jpg)
72
Obrigado !!!
Marcos Luiz Lins Filhowww.facebook.com/marcosluiz.linsfilho
@marcoslinsfilho