Graph Databases
Banco de dados baseado em grafos
História dos grafos
Leonard Euler, em 1736, tentou resolver sem sucesso o problema das sete pontes.
Essa foi a primeira vez que um artigo mencionou o uso dos grafos.
Mas que diabos é um grafo?
Matematicamente são conjuntos de vértices e arestas
A imagem representa um grafo com 6 arestas e 4 vértices
Dados no Mundo real
- Os dados são "bagunçados" e complexos (nem sempre temos uma estrutura definida)
- As interações entre os dados são complexas e estão sempre mudando
- Grafos representam facilmente nossa forma de pensar (modelo de dados) e estão em todas as partes
Aplicações
Estruturas que podem ser representadas com grafos:
- Sistemas de recomendação
- Redes sociais
- Mapeamento (rotas físicas ou virtuais)
- Genética
- Física
- Quimica
BANCO DE DADOS
RDBMS
- Armazenam seus dados em linhas e colunas
- Relacionamentos são parte do esquema fixo (tabela x tabela ligadas por chaves)
Grafos
- Armazenam seus dados em uma rede de nós e arestas
- Relacionamentos são parte dos dados e possuem um nome explícito
Modelo de dados relacional
Como modelamos os dados?
Modelo de dados em grafos
Como modelamos os dados?
Banco de dados em grafo
Neo4j
- Propriedades ACID
- Transações
- Interface REST
- Embedable e server
- Alta performance
- Suporta 34 bilhões de nós e 34 bilhões de relacionamentos em um grafo
Cypher
Query Language utilizada pelo Neo4j
(algo:TIPO)-[relacionamento:TIPO]->(algo:TIPO)
(actor:PERSON)-[rel:ACTED_IN]->(movie:MOVIE)
Spring Data Neo4j
- Facilita mapear as entidades
- Facilita mapear queries com cypher
@NodeEntity
// O nó em si
@GraphId
// O id do nó
@Indexed
// Se a propriedade do nó será indexada
@RelatedTo // Cria os relacionamentos entre os nós
Necessidade
Mas então porque utilizar um banco de dados em grafo?
O SESC necessita de um sistema que cadastre locais (espaços físicos) que podem estar ligados com outros locais e esses locais possuem N níveis e atributos cadastrados pelo próprio Sesc.
O papo ta bom, mas...
Chega de blah blah blah e vamos ver na prática !!
Outras Alternativas
Quando falamos de NoSQL diversas, existem diversas alternativas hoje em dia
Esses são apenas alguns exemplos entre muitos que existem:
- Bancos orientados a documentos - MongoDB/CouchDB
- Bancos orientados a chave/valor - Redis/Infinispan
- Bancos orientados a grafos e documentos - OrientDB
Conclusão
- Graph databases focam em relacionamento entre os dados
- Modelar grafos é facil
- Fazer queries é fácil, é como caminhar pelo grafo
- Grafos são a estrutura de dados natural dos seres humanos
- Neo4j é uma solução robusta
Conclusão 2
Sempre é bom conhecermos outros caminhos para solucionar um problema, pois assim temos a chance de escolher a melhor ferramenta para cada caso
Conclusão 2
Lembrando sempre...
Obrigado!
Quicktalk - Neo4j
By Thiago Xavier
Quicktalk - Neo4j
- 94