SlideShare uma empresa Scribd logo
1 de 47
Sistemas de recomendações e
Neo4J na nuvem
Priscila Mayumi Sato
@mayogax
http://dev.mayogax.me
Agenda
• Projeto de exemplo
• Sistema de recomendações
• Banco de dados de grafos
• Como subir uma base de grafos na nuvem
• Acessando REST API
Projeto de exemplo
♪”Hoje à noite eu tive apenas um leve sonho (...)à luz do luar.”♪
- Shinku Crimson Red (Kurushitsuji)
Github (again)
• Github pode ser usado como repositório de código, rede social e
um ótimo lugar para aprender código.
Informações do meu perfil.
Sigam.
GitHub (again)
• No GitHub temos repositórios, cada um pode ser um projeto (ou
mais??).
PrivadosPúblicos
GitHub (again)
• Algumas pessoas são escavadoras de repositórios e ficam lendo,
comentando, discutindo e submetendo alterações nos códigos dos
outros.
• Uma forma divertida de rede social <3
GitHub (again)
Alexandre, como você acha repositórios legais?
Eu sigo pessoas e vou vasculhando o que elas seguem ou contribuem.
Seria legal ter uma forma fácil de encontrar repositórios, né? Acho que vou fazer uma.
Se você fizer mostra pro pessoal, será de grande ajuda.
GitHub (again)
• Como fazer um sistema de recomendações??
Sistema de recomendações
♪”Novamente iniciará a legendária batalha final.
Vou usar a Armadura Sagrada!♪” - Megami no Senshi (Saint Seiya)
Recomendações
• Muitas empresas fornecem serviços ou produtos e fornecem a seus
usuários recomendações de produtos ou serviços.
• Não é mais uma vantagem e sim um serviço básico um e-
commerce fornecer recomendações de produtos.
• Existem serviços que se especializam em recomendações.
Vantagem competitiva: recomendações
de produtos
Principal serviço: recomendações de
músicas
Tipos de sistemas de recomendações:
• Baseado em Conteúdo
• Busca itens parecidos para sugerir
• Diferentes formas de se classificar o conteúdo:
• Algoritmos de análise de conteúdos parecidos
• Informações classificatórias em tags
• Menos informação
• Filtragem Colaborativa
• Baseia-se em sugerir itens que pessoas também gostaram
• Forma de se classificar o conteúdo:
• “Se um usuário gostou de A e de B, um outro usuário que gostou de A também pode
gostar de B” [Renata Ghisloti]
• Muita informação
Algoritmos
• Baseado em conteúdo:
• Necessário: classificar conteúdos parecidos
• Opção manual: humano coloca tags nos itens
• Algoritmos classificam conteúdos
• Exemplos: algoritmo dos Vizinhos Mais Próximos, Content Matching, Content-plus-Link
• Baseado em colaboração:
• Necessário: classificar itens, usuários e relações
• Opção prática: selecionar itens que pessoas próximas se relacionaram da mesma
forma (ex: filmes que meus amigos curtiram)
• Algoritmos buscam relações entre itens e usuários
• Exemplos: Slope One, Friend-of-Friend, SONAR
GitHub (again)
• Existem alguns meios de se achar repositórios interessantes no
GitHub:
• GitHub Trending https://github.com/trending
GitHub (again)
• Baseado em algoritmos de colaboração encontrar repositórios que
eu gostaria de ver baseado nos repositórios que meus amigos
seguem.
• Se muitos amigos meus seguirem (watch) um repositório X ele pode ser
legal para mim.
• No caso de empate mostrar primeiro o repositório que contém
uma tag que eu goste
• Entre um repositório que usa Java e um que usa C# qual eu vou ver
primeiro?
• No futuro: dar mais pontos pros repositórios de amigos “famosos”
• Se o Alexandre tem um repositório X esse pode ser mais interessante que o
repositório Y que um Fulano tem
GitHub (again)
• Como pegar repositórios que muitos amigos derem watch?
• Como modelar em uma base relacional a minha estrutura?
Repositório Usuário
Possui
Watch
Segue
Bancos de dados de grafos
♪”Vamos estender as mãos e tentar agarrar o infinito céu estrelado”♪
- 8 Sense (Saint Seiya)
Banco de dados de Grafos
• Tipo de banco de dados noSQL
• Baseado na teoria de grafos
• Index-free
• Nossas entidades são os vertices (nos)
• O relacionamento são as arestas
• Os relacionamentos são tão importantes quanto entidades
• Relacionamentos podem possuir dados
Banco de dados de Grafos
Repositório Usuário
Possui
Watch
Segue
Nó Nó
R
R
R
Quando usar grafos?
• Quando os relacionamentos forem mais importantes que os dados.
• Quando houverem muitos relacionamentos e caminhos até os
relacionamentos.
• A propósta não é que você use graph databases a todo momento,
mas em certas ocasiões em que há alto indice de dados
conectados
Comparação
Por que usar grafos?
• “It is normal to reach read-performance of 2000 relationship traversals
per millisecond (about 1-2 million traversal steps per second) fully
transactional, with warm caches, per thread. With shortest-path-
calculations, Neo4j is even on small graphs of a couple of 1000 of nodes
1000 times faster than MySQL, the difference increasing as the size of the
graph increases.”
• http://www.infoq.com/articles/graph-nosql-neo4j
• Motivos:
• Algoritmos mais otimizados para buscas transversais
• Não precisa de Joins
• Lazy fashion (retorna dados somente do nó encontrado)
Banco de dados de Grafos
• API para diversas linguagens (ou não)
• API RESTful (maioria dos casos)
• Dialeto de query própria
• ORM! (raro)
Neo4J
• “Neo4j is a highly scalable, robust (fully ACID) native graph
database. Neo4j is used in mission-critical apps by thousands of
leading startups, enterprises, and governments around the world.”
• http://www.neo4j.org/
Como subir uma base de grafos
na nuvem
♪” abro minhas asas o imenso céu vou alcançar
acreditar...”♪ - Never (Saint Seiya)
Por que usar a nuvem?
• Redução do investimento inicial de capital em servidores
• Fácil deploy e manutenção
• Facilmente escalável
Opções
• Subir uma instancia manualmente
• Subir uma instancia automaticamente com puppet
• Usar um serviço já existente.
Usar um serviço já existente.
• GRapheneDB
• http://www.graphenedb.com/
• Serviço rodado por cima da Amazon
• 512MB gratuitos
• Suporte a REST API e Gremlin
Subir uma instancia manualmente
• Ir no seu serviço de Cloud favorito
• Criar uma instancia
• Habilitar firewall para ser acessado de fora
• Instalar o Neo4J
• Subir instancia
Subir uma instancia manualmente
Subir uma instancia automaticamente com
puppet
• Disponível para Amazon Web Services
• Passos:
• Necessário criar uma conta (caso você não tenha)
• Vá ao painel de CloudInformation e crie um Stack com o nome que você
quiser
• Selecione a opção de usar uma url com o template
• https://cf-templates.neo4j.org.s3.amazonaws.com/cf_template.json
• Escolha uma senha e usuário para o Neo4J
• Adicione uma keyValue tag
• Next Next Next Finish
Subir uma instancia automaticamente com
puppet
Subir uma instancia automaticamente com
puppet
Subir uma instancia automaticamente com
puppet
Subir uma instancia automaticamente com
puppet
Subir uma instancia automaticamente com
puppet
Subir uma instancia automaticamente com
puppet
Bonus: subindo no Azure
• Crie uma conta no Windows Azure
• Instale o Azure SDK no Visual Studio
• Baixe a solução pronta do Neo4J.Azure.Server
• Configure o Java no Azure
• Deploy da solução que você baixou do Neo4J no Azure
Bonus: subindo no Azure
• Passo a passo (em inglês):
• Part 1. Create Azure Account and Prepare Azure for Neo4j Deployment
• Part 2. Download the Azure SDK and Configure Azure in Visual Studio
Server Explorer
• Part 3. Download and Configure the Neo4j.Azure.Server Solution
• Part 4. Upload Java and Neo4j to Azure
• Part 5. Deploy Neo4j to Azure
Bonus: subindo no Azure
• Da forma tradicional:
• Inicie uma instancia
• Instale/Configure o Java
• Instale o Neo4J Server
• Inicie o Server
• Configure o Firewall da sua instancia para aceitar acesso remoto (selecione
um IP de onde ficará sua aplicação).
Acessando REST API
♪”” -
API REST
• Depois disso você vai receber um endpoint com o ip do banco (if
tudo deu certo)
• A partir daqui você pode usar esse endpoint para conversar com o
banco
• No caso do Neo4J, como muitos, há uma interface REST
API REST
• Criando um nó:
• Método POST
• http://ENDPOINT/db/data/node {“repositorio":”GitHubAgain"}
• Lendo um nó
• Método GET
• http://ENDPOINT/db/data/node/666
• Deletando um nó
• Método Delete
• http://ENDPOINT/db/data/node/666
• *Um nó com relacionamento não pode ser deletado
API REST
• Adicionando propriedades a um nó:
• Método PUT
• http://lENDPOINT/db/data/node/666/properties/tag/ CSharp
• Modificando uma propriedade
• Método PUT
• http://ENDPOINT/db/data/node/666/properties/tag/ Java
• Deletando uma propriedade
• Método Delete
• http://ENDPOINT/db/data/node/666/properties/tag
• Troque o “Endpoint” pelo ip do seu banco
API REST
• Atravessando um nó:
• Método POST
• http://lENDPOINT/db/data/node/3/traverse/node
• Atravessando relacionamentos:
• Método POST
• http://ENDPOINT/db/data/node/3/traverse/relationship
• Atravessando caminhos:
• Método POST
• http://ENDPOINT/db/data/node/3/traverse/path
• Deletando um relacionamento:
• Método Delete
API REST
• Atravessando um nó:
• Método POST
• http://lENDPOINT/db/data/node/3/traverse/node
• Atravessando relacionamentos:
• Método POST
• http://ENDPOINT/db/data/node/3/traverse/relationship
• Descobrindo tipos de relacionamentos:
• Método GET
• http://ENDPOINT/db/data/relationship/types
• Troque o “Endpoint” pelo ip do seu banco
Dúvidas?
Dúvidas, refutações, criticas, sugestões, convites para jogar RPG?
Obrigada
http://dev.mayogax.me
@MayogaX

Mais conteúdo relacionado

Semelhante a Sistemas de recomendações e neo4J na cloud computing

Semelhante a Sistemas de recomendações e neo4J na cloud computing (20)

OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATA
 
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
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Bancos NoSQL no Microsoft Azure
Bancos NoSQL no Microsoft AzureBancos NoSQL no Microsoft Azure
Bancos NoSQL no Microsoft Azure
 
TDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big DataTDC2016SP - Construindo Web APIs em Java na era do Big Data
TDC2016SP - Construindo Web APIs em Java na era do Big Data
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
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
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Do 0 a estar online no Google App Engine
Do 0 a estar online no Google App EngineDo 0 a estar online no Google App Engine
Do 0 a estar online no Google App Engine
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Web Crawlers
Web CrawlersWeb Crawlers
Web Crawlers
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilComo um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
 

Mais de Priscila Mayumi

Banco de dados de grafos
Banco de dados de grafosBanco de dados de grafos
Banco de dados de grafos
Priscila Mayumi
 
Scripts Entity Framework
Scripts Entity FrameworkScripts Entity Framework
Scripts Entity Framework
Priscila Mayumi
 
1ª madrugada de testes net coders coding dojo
1ª madrugada de testes net coders   coding dojo1ª madrugada de testes net coders   coding dojo
1ª madrugada de testes net coders coding dojo
Priscila Mayumi
 

Mais de Priscila Mayumi (20)

Microsoft MTACs
Microsoft MTACsMicrosoft MTACs
Microsoft MTACs
 
Entity framework 7
Entity framework 7Entity framework 7
Entity framework 7
 
Bolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíBolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aí
 
OOD - Princípio da Inversão de Dependência
OOD - Princípio da Inversão de DependênciaOOD - Princípio da Inversão de Dependência
OOD - Princípio da Inversão de Dependência
 
OOD - Princípio da Substituição de Liskov
OOD - Princípio da Substituição de LiskovOOD - Princípio da Substituição de Liskov
OOD - Princípio da Substituição de Liskov
 
OOD - Princípio Open/Closed
OOD - Princípio Open/ClosedOOD - Princípio Open/Closed
OOD - Princípio Open/Closed
 
Hangout OOD – princípio da responsabilidade única
Hangout OOD – princípio da responsabilidade únicaHangout OOD – princípio da responsabilidade única
Hangout OOD – princípio da responsabilidade única
 
Conhecendo o Firefox OS
Conhecendo o Firefox OSConhecendo o Firefox OS
Conhecendo o Firefox OS
 
Oportunidades para desenvolvedores
Oportunidades para desenvolvedoresOportunidades para desenvolvedores
Oportunidades para desenvolvedores
 
PHP no Windows Azure
PHP no Windows AzurePHP no Windows Azure
PHP no Windows Azure
 
Banco de dados de grafos
Banco de dados de grafosBanco de dados de grafos
Banco de dados de grafos
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
Entity framework migrations
Entity framework migrationsEntity framework migrations
Entity framework migrations
 
Entity framework
Entity frameworkEntity framework
Entity framework
 
Scripts Entity Framework
Scripts Entity FrameworkScripts Entity Framework
Scripts Entity Framework
 
1ª madrugada de testes net coders coding dojo
1ª madrugada de testes net coders   coding dojo1ª madrugada de testes net coders   coding dojo
1ª madrugada de testes net coders coding dojo
 
Trabalhando com banco de dados e Entity Framework
Trabalhando com banco de dados e Entity FrameworkTrabalhando com banco de dados e Entity Framework
Trabalhando com banco de dados e Entity Framework
 
Ninja migrations
Ninja migrationsNinja migrations
Ninja migrations
 
O Mágico Mundo do Entity Framework
O Mágico Mundo do Entity FrameworkO Mágico Mundo do Entity Framework
O Mágico Mundo do Entity Framework
 
Ruby versus Python
Ruby versus PythonRuby versus Python
Ruby versus Python
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Sistemas de recomendações e neo4J na cloud computing

  • 1. Sistemas de recomendações e Neo4J na nuvem Priscila Mayumi Sato @mayogax http://dev.mayogax.me
  • 2. Agenda • Projeto de exemplo • Sistema de recomendações • Banco de dados de grafos • Como subir uma base de grafos na nuvem • Acessando REST API
  • 3. Projeto de exemplo ♪”Hoje à noite eu tive apenas um leve sonho (...)à luz do luar.”♪ - Shinku Crimson Red (Kurushitsuji)
  • 4. Github (again) • Github pode ser usado como repositório de código, rede social e um ótimo lugar para aprender código. Informações do meu perfil. Sigam.
  • 5. GitHub (again) • No GitHub temos repositórios, cada um pode ser um projeto (ou mais??). PrivadosPúblicos
  • 6. GitHub (again) • Algumas pessoas são escavadoras de repositórios e ficam lendo, comentando, discutindo e submetendo alterações nos códigos dos outros. • Uma forma divertida de rede social <3
  • 7. GitHub (again) Alexandre, como você acha repositórios legais? Eu sigo pessoas e vou vasculhando o que elas seguem ou contribuem. Seria legal ter uma forma fácil de encontrar repositórios, né? Acho que vou fazer uma. Se você fizer mostra pro pessoal, será de grande ajuda.
  • 8. GitHub (again) • Como fazer um sistema de recomendações??
  • 9. Sistema de recomendações ♪”Novamente iniciará a legendária batalha final. Vou usar a Armadura Sagrada!♪” - Megami no Senshi (Saint Seiya)
  • 10. Recomendações • Muitas empresas fornecem serviços ou produtos e fornecem a seus usuários recomendações de produtos ou serviços. • Não é mais uma vantagem e sim um serviço básico um e- commerce fornecer recomendações de produtos. • Existem serviços que se especializam em recomendações. Vantagem competitiva: recomendações de produtos Principal serviço: recomendações de músicas
  • 11. Tipos de sistemas de recomendações: • Baseado em Conteúdo • Busca itens parecidos para sugerir • Diferentes formas de se classificar o conteúdo: • Algoritmos de análise de conteúdos parecidos • Informações classificatórias em tags • Menos informação • Filtragem Colaborativa • Baseia-se em sugerir itens que pessoas também gostaram • Forma de se classificar o conteúdo: • “Se um usuário gostou de A e de B, um outro usuário que gostou de A também pode gostar de B” [Renata Ghisloti] • Muita informação
  • 12. Algoritmos • Baseado em conteúdo: • Necessário: classificar conteúdos parecidos • Opção manual: humano coloca tags nos itens • Algoritmos classificam conteúdos • Exemplos: algoritmo dos Vizinhos Mais Próximos, Content Matching, Content-plus-Link • Baseado em colaboração: • Necessário: classificar itens, usuários e relações • Opção prática: selecionar itens que pessoas próximas se relacionaram da mesma forma (ex: filmes que meus amigos curtiram) • Algoritmos buscam relações entre itens e usuários • Exemplos: Slope One, Friend-of-Friend, SONAR
  • 13. GitHub (again) • Existem alguns meios de se achar repositórios interessantes no GitHub: • GitHub Trending https://github.com/trending
  • 14. GitHub (again) • Baseado em algoritmos de colaboração encontrar repositórios que eu gostaria de ver baseado nos repositórios que meus amigos seguem. • Se muitos amigos meus seguirem (watch) um repositório X ele pode ser legal para mim. • No caso de empate mostrar primeiro o repositório que contém uma tag que eu goste • Entre um repositório que usa Java e um que usa C# qual eu vou ver primeiro? • No futuro: dar mais pontos pros repositórios de amigos “famosos” • Se o Alexandre tem um repositório X esse pode ser mais interessante que o repositório Y que um Fulano tem
  • 15. GitHub (again) • Como pegar repositórios que muitos amigos derem watch? • Como modelar em uma base relacional a minha estrutura? Repositório Usuário Possui Watch Segue
  • 16. Bancos de dados de grafos ♪”Vamos estender as mãos e tentar agarrar o infinito céu estrelado”♪ - 8 Sense (Saint Seiya)
  • 17. Banco de dados de Grafos • Tipo de banco de dados noSQL • Baseado na teoria de grafos • Index-free • Nossas entidades são os vertices (nos) • O relacionamento são as arestas • Os relacionamentos são tão importantes quanto entidades • Relacionamentos podem possuir dados
  • 18. Banco de dados de Grafos Repositório Usuário Possui Watch Segue Nó Nó R R R
  • 19. Quando usar grafos? • Quando os relacionamentos forem mais importantes que os dados. • Quando houverem muitos relacionamentos e caminhos até os relacionamentos. • A propósta não é que você use graph databases a todo momento, mas em certas ocasiões em que há alto indice de dados conectados
  • 21. Por que usar grafos? • “It is normal to reach read-performance of 2000 relationship traversals per millisecond (about 1-2 million traversal steps per second) fully transactional, with warm caches, per thread. With shortest-path- calculations, Neo4j is even on small graphs of a couple of 1000 of nodes 1000 times faster than MySQL, the difference increasing as the size of the graph increases.” • http://www.infoq.com/articles/graph-nosql-neo4j • Motivos: • Algoritmos mais otimizados para buscas transversais • Não precisa de Joins • Lazy fashion (retorna dados somente do nó encontrado)
  • 22. Banco de dados de Grafos • API para diversas linguagens (ou não) • API RESTful (maioria dos casos) • Dialeto de query própria • ORM! (raro)
  • 23. Neo4J • “Neo4j is a highly scalable, robust (fully ACID) native graph database. Neo4j is used in mission-critical apps by thousands of leading startups, enterprises, and governments around the world.” • http://www.neo4j.org/
  • 24. Como subir uma base de grafos na nuvem ♪” abro minhas asas o imenso céu vou alcançar acreditar...”♪ - Never (Saint Seiya)
  • 25. Por que usar a nuvem? • Redução do investimento inicial de capital em servidores • Fácil deploy e manutenção • Facilmente escalável
  • 26. Opções • Subir uma instancia manualmente • Subir uma instancia automaticamente com puppet • Usar um serviço já existente.
  • 27. Usar um serviço já existente. • GRapheneDB • http://www.graphenedb.com/ • Serviço rodado por cima da Amazon • 512MB gratuitos • Suporte a REST API e Gremlin
  • 28. Subir uma instancia manualmente • Ir no seu serviço de Cloud favorito • Criar uma instancia • Habilitar firewall para ser acessado de fora • Instalar o Neo4J • Subir instancia
  • 29. Subir uma instancia manualmente
  • 30. Subir uma instancia automaticamente com puppet • Disponível para Amazon Web Services • Passos: • Necessário criar uma conta (caso você não tenha) • Vá ao painel de CloudInformation e crie um Stack com o nome que você quiser • Selecione a opção de usar uma url com o template • https://cf-templates.neo4j.org.s3.amazonaws.com/cf_template.json • Escolha uma senha e usuário para o Neo4J • Adicione uma keyValue tag • Next Next Next Finish
  • 31. Subir uma instancia automaticamente com puppet
  • 32. Subir uma instancia automaticamente com puppet
  • 33. Subir uma instancia automaticamente com puppet
  • 34. Subir uma instancia automaticamente com puppet
  • 35. Subir uma instancia automaticamente com puppet
  • 36. Subir uma instancia automaticamente com puppet
  • 37. Bonus: subindo no Azure • Crie uma conta no Windows Azure • Instale o Azure SDK no Visual Studio • Baixe a solução pronta do Neo4J.Azure.Server • Configure o Java no Azure • Deploy da solução que você baixou do Neo4J no Azure
  • 38. Bonus: subindo no Azure • Passo a passo (em inglês): • Part 1. Create Azure Account and Prepare Azure for Neo4j Deployment • Part 2. Download the Azure SDK and Configure Azure in Visual Studio Server Explorer • Part 3. Download and Configure the Neo4j.Azure.Server Solution • Part 4. Upload Java and Neo4j to Azure • Part 5. Deploy Neo4j to Azure
  • 39. Bonus: subindo no Azure • Da forma tradicional: • Inicie uma instancia • Instale/Configure o Java • Instale o Neo4J Server • Inicie o Server • Configure o Firewall da sua instancia para aceitar acesso remoto (selecione um IP de onde ficará sua aplicação).
  • 41. API REST • Depois disso você vai receber um endpoint com o ip do banco (if tudo deu certo) • A partir daqui você pode usar esse endpoint para conversar com o banco • No caso do Neo4J, como muitos, há uma interface REST
  • 42. API REST • Criando um nó: • Método POST • http://ENDPOINT/db/data/node {“repositorio":”GitHubAgain"} • Lendo um nó • Método GET • http://ENDPOINT/db/data/node/666 • Deletando um nó • Método Delete • http://ENDPOINT/db/data/node/666 • *Um nó com relacionamento não pode ser deletado
  • 43. API REST • Adicionando propriedades a um nó: • Método PUT • http://lENDPOINT/db/data/node/666/properties/tag/ CSharp • Modificando uma propriedade • Método PUT • http://ENDPOINT/db/data/node/666/properties/tag/ Java • Deletando uma propriedade • Método Delete • http://ENDPOINT/db/data/node/666/properties/tag • Troque o “Endpoint” pelo ip do seu banco
  • 44. API REST • Atravessando um nó: • Método POST • http://lENDPOINT/db/data/node/3/traverse/node • Atravessando relacionamentos: • Método POST • http://ENDPOINT/db/data/node/3/traverse/relationship • Atravessando caminhos: • Método POST • http://ENDPOINT/db/data/node/3/traverse/path • Deletando um relacionamento: • Método Delete
  • 45. API REST • Atravessando um nó: • Método POST • http://lENDPOINT/db/data/node/3/traverse/node • Atravessando relacionamentos: • Método POST • http://ENDPOINT/db/data/node/3/traverse/relationship • Descobrindo tipos de relacionamentos: • Método GET • http://ENDPOINT/db/data/relationship/types • Troque o “Endpoint” pelo ip do seu banco
  • 46. Dúvidas? Dúvidas, refutações, criticas, sugestões, convites para jogar RPG?