Mais conteúdo relacionado
Semelhante a Amazon neptune: uma primeira olhada do ponto de vista do desenvolvedor (20)
Amazon neptune: uma primeira olhada do ponto de vista do desenvolvedor
- 1. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Marcelo Palladino
Arquiteto de Software, Hi Platform
Amazon Neptune
Uma olhada do ponto de vista do
desenvolvedor
- 2. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Amazon Neptune
Serviço de banco de dados orientado a grafos rápido,
confiável e totalmente gerenciado que facilita a criação de
aplicações que trabalham com grafos.
- 3. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Performance e escalabilidade
● Até 15 réplicas de leitura
● Três zonas de disponibilidade
● Podendo executar mais de 100.000 consultas por segundo
● Latência de milisegundos
- 4. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Alta disponibilidade e durabilidade
● Compatível com ACID (Atomicity, Consistency, Isolation,
Durability)
● Projeto para 99,99% de disponibilidade
● Tolerante a falhas (seis cópias dos dados em três zonas
de disponibilidade)
● Recuperação automática (backups contínuos para o S3 e
failover de instância com tempos inferiores a 30 segundos)
- 5. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Segurança
● Integrado à VPC
● Suporte a criptografia (inclusive em trânsito)
- 6. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Abrir a caixa de ferramentas!
:)
- 7. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Modelos e linguagens de consulta suportadas
● Property Graph - Apache TinkerPop Gremlin
● W3C’s RDF (Resource Description Framework) - SPARQL
- 8. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo
Pessoa
Id Nome
1 Caio
2 Camila
Comida
Id Nome
3 Pastel
4 Feijoada
Pessoa_Comida
IdPessoa IdComida
1 3
2 3
2 4
- 9. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo
● Tabelas/Entidades x Vértices/Nós
● Colunas x Propriedades
● Relacionamentos?
Vértice
Propriedade
Label
(representa o “tipo”
da entidade)
- 10. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Aresta/relacionamento: “cidadão de primeira classe”
Aresta
Relacionamento
(contém direção, semântica,
pode ter propriedades)
Vértice Vértice
- 11. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Ferramentas para começar...
● Amazon Neptune
● Amazon Cloud9
● Gremlin server
■ https://www.apache.org/dyn/closer.lua/tinkerpop/3.3.3/apache-tinkerp
op-gremlin-server-3.3.3-bin.zip
● Gremlin console
■ https://www.apache.org/dyn/closer.lua/tinkerpop/3.3.3/apache-tinkerp
op-gremlin-console-3.3.3-bin.zip
● .net core
■ https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-dotnet
core.html#sample-dotnetcore-setup
● Gremlin.NET
■ nuget install Gremlin.Net
● Graph Explorer
■ https://github.com/bricaud/graphexp
- 12. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Pontos de atenção
● Configuração do Java (Gremlin console)
● Configuração do host remoto (Gremlin console)
● Configuração da saída do console (Gremlin console)
● Security Groups
- 13. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Gremlin
Está para o banco de dados orientado a grafos assim como o
SQL está para o banco de dados relacional.
- 14. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Gremlin/.net core
● Criando vértices (addV)
● Criando arestas (addE, from, to)
● Criando propriedades (property)
● Listando
○ Vértices
○ Arestas
○ Limitando retornos
■ Filtros (has, is, limit)
■ Predicados (eq, neq, gt, lt, gte, lte, between)
● Navegando pelo grafo
- 15. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Gremlin: mais alguns steps úteis
● Group
○ By
● Count
● Drop
● Explain
● ...
http://tinkerpop.apache.org/docs/3.3.3/reference/#graph-traversal-steps
- 16. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Apache Tinkerpop Gremlin
Atenção às diferenças de
implementação de cada servidor
https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differ
ences.html
- 17. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Bacana, mas...
- 18. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo
Pessoa
Id Nome
1 Caio
2 Camila
5 Lucas
Amizade
IdPessoa IdAmigo
1 2
2 1
2 5
5 1
...
- 19. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Quem são os amigos da “Camila”?
SELECT p1.Nome
FROM Pessoa p1
JOIN Amizade
ON Amizade.IdAmigo = p1.Id
JOIN Pessoa p2
ON Amizade.IdPessoa = p2.Id
WHERE p2.Nome = 'Camila'
- 20. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Quem são os amigos da “Camila”?
g.V().has("nome", "Camila").out("AMIGO_DE")
- 21. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Com quem a “Camila” tem amizade?
SELECT p1.Nome
FROM Pessoa p1
JOIN Amizade
ON Amizade.IdPessoa = p1.Id
JOIN Pessoa p2
ON Amizade.IdAmigo = p2.Id
WHERE p2.Nome = 'Camila'
- 22. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Com quem a “Camila” tem amizade?
g.V().where(outE("AMIGO_DE").inV().has("nome",
"Camila").and().inE("AMIGO_DE").outV().has("nome",
"Camila")).values()
- 23. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Quem são os “amigos dos amigos” do
“Lucas”?
SELECT p1.Nome AS 'Pessoa',
p2.Nome AS 'Amigo do amigo'
FROM Amizade a1
JOIN Pessoa p1
ON a1.IdPessoa = p1.Id
JOIN Amizade a2
ON a2.IdPessoa = a1.IdAmigo
JOIN Pessoa p2
ON a2.IdAmigo = p2.Id
WHERE p1.Nome = 'Lucas' AND
a2.IdAmigo <> p1.Id
- 24. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Quem são os “amigos dos amigos” do
Lucas?
g.V().has("nome",
"Lucas").out("AMIGO_DE").out("AMIGO_DE").values("nome")
- 25. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Relacional x Grafo: Quem são os “amigos dos amigos” do
Lucas?
g.V().has('nome','Lucas').repeat(out("AMIGO_DE").simplePath()).emit(__.not(out("
AMIGO_DE").simplePath())).path().by("nome")
- 26. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Banco de dados orientados grafos
BRILHAM
com dados conectados
- 27. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Exemplos canônicos
● Redes sociais
● Sistemas de recomendação
● Detecção de fraudes
● Ciências biológicas
● Operações de rede/TI
● ...
- 28. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Exemplos não tão comuns
● ERP: Composição de produtos e sugestão de preços de
venda
● Sistemas para autorização de acesso
● Sistemas de classificação baseados em árvores
● Sistemas de formulários dinâmicos
● Bots: Composição de árvores conversacionais
● ...
- 29. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Se você não conhece a
profundidade dos seus dados,
provavelmente deveria usar grafos!
- 30. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Carregando dados em uma instância do
Amazon Neptune: Games e Gamers
https://github.com/aws-samples/amazon-neptune-samples/blob/master/gremlin/col
laborative-filtering/README.md
- 31. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Carregando dados em uma instância do
Amazon Neptune
● Arquivos CSV
● S3
● IAM role
● VPC Endpoint
- 32. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Resumo
● Neptune
● Cloud9
● Gremlin server
● Gremlin console
● Gremlin.NET (para desenvolvimento com .NET)
● Graph Explorer
● Api’s para carga de dados
- 33. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Referências
● Marco Goldbarg e Elizabeth Goldbarg, Grafos: conceitos,
algoritmos e aplicações
● Joe Celko’s, Trees and Hierarchies in SQL for smarties
● Ian Robinson, Jim Webber and Emil Eifrem, Graph
Databases
- 34. © 2018, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Obrigado!
Marcelo Palladino
Arquiteto de Software, Hi Platform
@mfpalladino