NEO4J — Primeiros passos

Marlon Alves
Neo4j
Published in
5 min readJul 29, 2019

Olá, falarei neste post sobre como iniciar estudos em Neo4J, antes de mais nada, é necessário contar um pouco sobre a história dele, vamos lá!

Início

O Neo4J é um banco de dados não relacional(noSql), orientado à grafos, mas, o que isso quer dizer? Bom, um banco de dados não relacional se distingue dos tradicionais por não possuir um esquema fixo, como linhas e colunas , ao contrário disso, ele é designado como schemaless, ou seja , não possui um sistema de dados permanente, é usado um modelo de armazenamento otimizado, com uma escalabilidade maior, com a informação agrupada e armazenada no mesmo registro. Há inúmeros bancos noSql no mercado, eles são divididos pela sua forma de serem armazenados, temos os pares chave/valor (exemplo: RedisCache), o de documentos JSON(exemplo: MongoDb), como colunas (exemplo: Cassandra) e para fechar, o nosso banco orientado à grafos, que consiste em nós e vértices.

Porque usar um banco de dados orientado à grafos?

A utilização do noSql surgiu com a necessidade de grandes empresas terem um maior desempenho em suas aplicações, há problemas de dados que um banco relacional consegue desempenhar de uma forma menos eficaz que os não-relacionais, o banco orientado à grafos, traz três premissas: Performance, flexibilidade e agilidade. O Neo4J tem como prioridade, tratar seus relacionamentos da melhor forma possível, isso quer dizer que, na medida que os relacionamentos entre “nós” aumentam, sua capacidade de processamento continua estável, diferentemente de bancos de dados tradicionais.

Unlike other databases, relationships take first priority in graph databases. This means your application doesn’t have to infer data connections using things like foreign keys or out-of-band processing, such as MapReduce. https://neo4j.com/why-graph-databases/

A linguagem do Neo4J é a cypherQuery, e a curva de aprendizagem não é tão grande, um case de sucesso é o facebook, que aderiu o sistema de grafos em um dos seus módulos, pois encontrou um desempenho maior para criar relacionamentos dentro da plataforma.

Aqui está um exemplo de como encontrar um restaurante japonês localizado em New York, baseado no gosto dos meus amigos:

https://neo4j.com/news/facebook-graphsearch/

Se aprofundando no Neo4J!

Primeiramente, iremos entrar no site do neo4J, dentro dele há uma plataforma online de aprendizado muito boa.

Depois de logar, é necessário escolher algum exemplo de banco pronto, nesse caso, irei escolher o banco sobre o futebol feminino.

Antes de iniciar de fato, é preciso explicar as nomeclaturas do Neo4J, irei dar uma breve descrição, mas é legal entender mais a fundo no link abaixo:

https://neo4j.com/docs/getting-started/current/graphdb-concepts/#graphdb-labels

Labels: É uma espécie de template para os nós(falarei em diante sobre ele), a grosso modo, seria uma classe. Na imagem abaixo, temos as labels: PersonActor, Movie e PersonDirector.

er

Propriedades(Properties): são parâmetros baseados em chave-valor, para designar um nó, ou uma relacionamento. Na imagem acima há varias propriedades, tais como: name, born, title e released, eles demonstram características ou descrições de uma label.

Nós(Nodes): São como entidades baseadas em um template pronto(label), se parecem instâncias de objetos de uma classe.

Relacionamentos: Representa uma conexão entre nós, é possível criar propriedades dentro de um relacionamento. No exemplo abaixo, há dois relacionamentos, o primeiro se chama ACTED_IN, que possui uma propriedade chamada roles, o segundo relacionamento se chama DIRECTED, que não possui propriedades.

Agora, vamos lá!

Essa seria a IDE do Neo4J, na parte esquerda, há informações sobre os nós, relacionamentos e propriedades existentes neste banco, na parte superior direita há a caixa onde executamos nossos códigos em cypherQuery.

Primeiros comandos

Irei abordar um pouco sobre os comandos, porém é importante verificar a documentação oficial do banco no site deles. https://neo4j.com/docs/cypher-manual/current/clauses/

No exemplo abaixo, a clásula MATCH retorna um nó, nesse caso sendo filtrado pela condição do WHERE (propriedade nome do nó Brazil dentro da label Team), estou retornando um limite de 25 registros.

Agora irei executar o comando CREATE:

Na imagem, foi criada um nó Pessoa, com propriedade nome: ‘Marlon Alves’ e profissão: ‘Desenvolvedor de sistemas’, na linha foi criado um nó Cidade com o nome:‘Santos’, e por último criei o relacionamento entre p(Pessoa) e c(cidade), nota-se que p e c são alias de seus respectivos nós, o símbolo de apontamento no relacionamento indica que Marlon Alves reside em Santos.

Um fato importante, é que é possível navegar facilmente no dashboard da ferramenta:

Onde está circulado em vermelho, é o painel visualizador do resultado, é possível ver em gráfico, tabela, json e texto.

Na seta azul, fica as opções de expandir/retrair os relaciona, travar o movimento do nó, e esconder o nó.

Circulado em amarelo está as propriedades daquele nó.

Atualizando e deletando um nó…

Para alterar uma propriedade, é usado o comando abaixo, nesse caso eu filtrei o nó Pessoa pelo id único criado automaticamente pelo Neo4J.

Para deletar é usado o comando delete, porém nota-se que nesse caso houve um erro na execução. Isso ocorreu porque há relacionamento entre o nó Pessoa escolhido.

Nesse caso, é necessário usar o comando DETACH DELETE, que irá excluir o nó e seu relacionamento com o outro Nó.

Bom, essa foi uma breve introdução no NEO4J, é importante dar uma olhada no site deles: neo4j.com, pois seu conteúdo é muito didático. Espero que tenham gostado, até mais!

--

--