Graph Database Neo4j Edson Barboza
Roteiro Exemplos de grafos Ranking Graph Database Graph Search Tamanho vs Complexidade Porque usar o neo4j Nó Relacionamento Propriedades Getting started Neo4j Java API Estado da Arte – Arquitetura Neo4j HA Mode Pontos a melhorar
Exemplos de grafo
Ranking Fonte: http://db-engines.com/en/ranking_trend/graph+dbms
Graph Search - Facebook
Tamanho vs Complexidade
Por que utilizar o Neo4j? Rapidez e robustez Ótima performance para ler e escrever, robustez Criar nós indexados (melhoria de performance nas consultas) API para algoritmos de busca (shortest Path) Possibilidade de integração com Web Semântica
Neo4j (2) Full ACID (na transação) Alta Disponibilidade (Enterprise Edition) Suporta até 32 bilhões de nós, 32 bilhões de relacionamentos 64 bilhões de propriedades Consulta REST (Representation State Transfer)
Nó Unidade fundamental de armazenamento Representam entidades de uma modelo relacional Pode conter propriedades.
Relacionamento Permitem encontrar dados relacionados Podem contem certas propriedades Start node e end node.
Propriedade Pares de chaves e valores Valor Uma chave é uma string. Primitivo ou array de tipo primitivo
Getting starter www.neo4j.com
Getting starter To get started with Neo4j, Let's start the server and take a look at the web interface ... Open a console and navigate to the install directory. Start the server: * Windows: use bin\Neo4j.bat * Linux/Mac: use ./bin/neo4j start console 4. Open http://localhost:7474/
Criando um nó
Buscando um nó
Cypher Linguagem de consulta com casamento de padrão
CONSULTA
Criando vários nós e criando relacionamentos
Solve
Deletando nós e relacionamentos
Neo4j Java API GraphDatabaseService Neo4j Java API GraphDatabaseService gerenciamento a criação do grafo e seus componentes criação de nós, relacionamento e propriedades. GraphDatabaseFactory criar e gerenciar novas instancias de banco de dados em grafo HighlyAvailableGraphDatabaseFactory (EmbeddedGraphDatabase) arquitetura de criação de grafos com alta disponibilidade.
ARQUITETURA – Estado da Arte CONSISTENCIA EVENTUAL REPLICACAO MASTER-SLAVE Slaves sincronizados em operação de escrita Atualização eventual nos slaves Abordagem otimística para o master no commit. Rool-back transações no master. Write transactions can be performed on any database instance in a cluster. • Neo4j HA is fault tolerant and can continue to operate from any number of machines down to a single machine. • Slaves will be automatically synchronized with the master on write operations. • If the master fails a new master will be elected automatically. • The cluster automatically handles instances becoming unavailable (for example due to network issues), and also makes sure to accept them as members in the cluster when they are available again. • Transactions are atomic, consistent and durable but eventually propagated out to other slaves. • Updates to slaves are eventual consistent by nature but can be configured to be pushed optimistically from master during commit. • If the master goes down any running write transaction will be rolled back and new transactions will block or fail until a new master has become available.
Pontos a melhorar Não enforça a segurança a nível dos dados Suporte a HTTPS Certificado SSL auto-emitido e uma chave privada. Solução: Configurar própria chave Servidor expõe funcionalidade do script remotamente. Implementar camada de segurança para sanar vulnerabilidade ao expor servidor
Referências Introdution to Graph Database - http://www.slideshare.net/maxdemarzi/introduction-to-graph-databases- 12735789 Introdution to Neo4j - http://gotocon.com/dl/goto-amsterdam- 2012/slides/IanRobinson_AnIntroductionToDoctorWhoandNeo4j.pdf. Acessado em 03/12/2015 OrientDB Guide - http://orientdb.com The Neo4j Manual - http://cs.brown.edu/courses/cs227/archives/2013/papers/neo4j.pdf. Acessado em 03/12/2015. Infoscience - http://oss.infoscience.co.jp/neo4j/docs.neo4j.org/chunked/stable/ha-architecture.html techblog.netflix.com