Conheça o Neo4j

Bom, vamos conhecer hoje o Neo4j, um banco de dados NoSQL orientado a grafos.

Um investimento de 15 minutos é o suficiente.  🙂

NoSql?

De forma bem direta NoSQL significa Not Only SQL, foi criado como uma alternativa para resolver problemas que as bases de dados relacionais não conseguem solucionar.

Existem diversas bases de dados no seguimento NoSQL, cada uma voltada para sua especialidade a exemplo do MongoDB que é orientado a documento.

E os grafos?

São estruturas compostas por vértices e arestas criadas por matemáticos para estudar relações entre objetos.

Lembre-se

Antes de começarmos a conhecer o Neo4j, é importante lembrar desta frase: “Use a ferramenta certa para o trabalho”.

nj4

É importante conhecer as bases de dados NoSQL, mas não quer dizer que você vai chegar amanhã na sua empresa e começar a eliminar as bases de dados relacionais. O correto é avaliar o problema e procurar a melhor ferramenta para resolver, seja utilizando uma base de dados NoSQL, NewSQL ou relacional.

Começando…

nj3

O Neo4j é um banco de dados orientado a grafos open-souce. Ele é indicado para trabalhar com uma grande quantidade de dados (big data), especialmente quando o problema é relacionamento entre objetos.

O melhor exemplo de objetos que possuem relacionamento é uma rede social, ele é indicado para encontrar por exemplo amigos em comum. Posso citar outros exemplos como um sistema de rotas para buscar o melhor caminho entre dois pontos e também um e-commerce onde podemos fazer recomendações de produtos com base nos produtos que o cliente está procurando.

Para os exemplos acima o Neo4j será muito eficiente na recuperação dos dados.

Vantagens

Algumas vantagens do Neo4J:

  • Ele é um banco de dados NoSQL com suporte ACID
  • Possui suporte para Clustering
  • Trabalha com os dados em memória (Velocidadeee!)
  • Possibilita backups a quente e as demais vantagens vou pontuando nos tópicos a seguir…

Utilização

É possível utilizar o Neo4j como Embedded database (Banco de dados local em arquivo).

nj5

Também é possível instalar o Neo4j server

nj6

Após alguns cliques ele está pronto para uso, e além do servidor você recebe uma excelente interface web para administração que possibilita navegar pelos nodos e configurar a base de dados com facilidade.

nj7

Acesse aqui para download.

Estrutura

Entendendo a estrutura

  • Nós (representam entidades como pessoas, bandas ou qualquer item que possa ser compartilhado.)

  • Relacionamentos (Fazem a conexão entre os nós)

  • Propriedades (Representam um conjunto de dados dentro dos nós ou relacionamentos)

Linguagem

O Neo4j utiliza a linguagem Cypher que é equivalente a linguagem SQL em uma base de dados relacional. Sintaxe bem diferente do “SQL”, realmente orientada a relacionamentos.

Vou mostrar aqui apenas o básico de como criar e relacionar registros, para as demais sintaxe recomendo a documentação oficial, uma EXCELENTE documentação onde é possível inclusive executar os comandos, realmente muito bom!

O Create seria equivalente a um insert no relacional:

CREATE (n:Person { name : ‘Andres’, title : ‘Developer’ })

Abaixo um exemplo criando nós, com a propriedade nome para bandas e nome e idade para pessoas.

nj2

Agora construindo relacionamentos entre pessoa e banda.

nj1

Com este exemplo podemos descobrir o gosto que Eder e Thiago tem em comum (quais bandas eles gostam). Veja como fica o resultado na interface web.

nj11

Também é possível descobrir quais pessoas gostam da banda “Daft Punk”. E assim poderemos de muitas formas mapear quais relacionamentos estes objetos tem…

É importante ressaltar que se tivermos o código do índice (raiz), não importa se a quantidade de registros na base de dados aumentar, o tempo de retorno será sempre o mesmo!

Só é possível manter o mesmo tempo de retorno pois ao chegar ao índice vamos percorrer apenas os nodos relacionados, ou seja não será preciso varrer os demais registros.

 API 

O Neo4j tem suporte nativo para diversas linguagens como Java, .NET, python, Ruby, PHP, R etc.

nj8

E outra grande vantagem é que o Neo4J Server possui suporte a REST

nj9

Com isso você já pode começar a brincar com o Neo4j, escolha sua linguagem e seja feliz!

Falaremos também sobre NewSQL. Aguardem.

Abraço!

The following two tabs change content below.

Raphael Krauss

Software Engineer
Com mais de 10 anos de experiência em desenvolvimento e suporte a aplicações, atua na empresa Softplan como analista de suporte ao desenvolvimento, trabalhando com a manutenção dos frameworks de desenvolvimento básicos. Com conhecimento em Delphi, Java, Jsp, Servlets, Hibernate, mobile Android e também as bases de dados Oracle, SQLServer, Db2, MySQL, PostgreSQL. Especializado em análise de desempenho e técnicas de monitoramento de aplicações. Atuando em projetos com metodologias ágeis como Scrum, XP e utilizando boas praticas como Clean code e Design patterns. Também possui experiência em gerenciamento de ambientes de integração contínua (Controle de versão, Build continuo e ferramentas para análise estática de código).

Latest posts by Raphael Krauss (see all)

Sobre Raphael Krauss

Com mais de 10 anos de experiência em desenvolvimento e suporte a aplicações, atua na empresa Softplan como analista de suporte ao desenvolvimento, trabalhando com a manutenção dos frameworks de desenvolvimento básicos. Com conhecimento em Delphi, Java, Jsp, Servlets, Hibernate, mobile Android e também as bases de dados Oracle, SQLServer, Db2, MySQL, PostgreSQL. Especializado em análise de desempenho e técnicas de monitoramento de aplicações. Atuando em projetos com metodologias ágeis como Scrum, XP e utilizando boas praticas como Clean code e Design patterns. Também possui experiência em gerenciamento de ambientes de integração contínua (Controle de versão, Build continuo e ferramentas para análise estática de código).

Um comentário sobre “Conheça o Neo4j

Deixe uma resposta