Neo4j 2.3

DB Name: Neo4j 2.3 [Editar]


Students List: [Editar]

  • Ana Clara Amorim Andrade - 10691992      (Editora)
  • Eduardo Henrique Porto Silva - 11796656   (Coordenador)
  • João Lucas Rodrigues Constantino - 11795763
  • Gabriel Zanotim Manhani - 11912276
  • Vinicius Finke - 9791052
  • Osni Brito de Jesus - 11857330
  • Henrique Garcia Gomes do Ó - 10734331
  • Tulio Santana Ramos - 11795526
  • Rafael Meliani Velloso - 4165457



Link para os slides disponível aqui


Main DB Features: [Editar]


Neo4j é um sistema de manutenção de bases de dados de grafos (GDB), open source (GPLv3 e AGPLv3) e desenvolvido em Java. GDB é um tipo de base de dados que representa semanticamente os dados através de grafos, utilizando conceitos de nós, arestas e atributos, em que as arestas representam a relação entre os nós. A primeira versão (1.0) foi lançada em 2010 e atualmente está na versão 4.4.8. 

Neo4j combina o armazenamento nativo de grafos com alto nível de segurança, arquitetura escalável, além de possuir tendência à seguir definições ACID para assegurar a verificação e análise dos dados, de forma a evitar erros e tentativos de ataques, além de visar a integridade das relações de queries baseadas em relações entre os nós existentes.

De maneira geral, pode-se listar principalmente as seguintes features:
  • Segue esquema de organização e armazenamento de Grafos
  • Suporta exportação para formatos JSON e XLS
  • Provém REST API para acesso por diversas linguagens, como Java, Spring, Scala etc
  • Suporte para 2 JAVA : API, sendo elas : Cypher API e Native Java API
  • Suporte a restrições 'UNIQUE'

Does It Implement CA, CP, or AP? Why?  [Editar]


Dentre os padrões do CAP, ele segue CA, ou seja, seu foco diz respeito à consistência e disponibilidade. Ou seja, seu enfoque se dispersa em relação à Tolerância de Particionamento.

DB Advantages  [Editar]


  • Possui a maior e mais ativa comunidade de SGBDs baseados em grafos do mundo.
  • Uma vez que é baseado em grafos, torna-se muito simples representar dados semi-estruturados e/ou baseados em conexões.
  • Além disso, iteração ao longo dos dados é simplificado a um problema de navegação em grafos, dispensando junções complexas, as quais representam custos computacionais consideráveis em SGBDs relacionais.
  • Sua linguagem de query, a Cypher Query Language (CQL), possui boa legibilidade e rápida curva de aprendizado.
  • Por ser NoSQL, é livre de esquemas.
  • Garante elevada disponibilidade dos dados, que se torna evidentemente útil para  aplicações empresariais de larga-escala em tempo real.
  • Possui elevada escalabilidade, incluindo modelos de dados flexíveis, escalonamento vertical e alta concorrência.

DB Disadvantages  [Editar]


A topologia do Neo4j consiste em um sistema master-slave em que o mestre coordena todas as operações de escrita no grafo, se o banco deve lidar com um grande volume de escritas isso pode causar um atraso nas operações, visto que apenas um nó será capaz de lidar com essas tarefas.

Neo4j não tem uma escalabilidade horizontal tão boa quanto outras bases NoSQL, uma outra desvantagem é que como o Neo4j usa bases nativas em grafos, isso significa que todo o dataset deve ser replicado em cada novo nó adicionado, para proteger a integridade de referenciais.

Um fator que necessita de cuidado quando se utiliza o Neo4j é de que as configurações de uso e alocação de memória devem ser feitas com atenção, dado que o sistema pode acidentalmente alocar mais memória do que o disponível, gerando atrasos e problemas, ou alocar muito pouca e causar crashes durante fluxos especialmente grandes de retorno de queries.

Application Niches [Editar]


As principais aplicações de Neo4j são em situações em que as relações entre os dados são importantes. Por exemplo:
  • Detecção de Fraude
  • Sistemas de recomendação
  • Redes Sociais
  • Serviços Financeiros
  • Inteligência Artificial

Algumas empresas que utilizam Neo4j são: Ebay, Allianz, Levi's, Adobe e Airbus