Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Giullia de Souza Santos 
João Henrique Vieira do Carmo 
Pedro Augusto Araújo de Medeiros 
Thauan Costa da Silva 
Thiago Antônio do Nascimento 
 
 
 
 
 
 
 
 
 
Neo4j: Armazenamento e Gerenciamento de Dados em Banco de 
Dados de Grafos 
 
 
 
 
 
 
 
 
Relatório apresentado como requisito parcial para 
avaliação da disciplina de Banco de Dado II do 
curso de Ciência da Computação da Fundação 
Universidade Federal de Rondônia - UNIR 
 
Orientador(a): Prof. Valmir Batista Preste de 
Souza 
 
 
 
 
 
 
 
Porto Velho-RO 
2025 
 
 
 
 
 
SUMÁRIO 
 
1 INTRODUÇÃO........................................................................................................................... 4 
2 FUNDAMENTAÇÃO TEÓRICA.............................................................................................. 4 
2.1 O que é um Banco de Dados Orientado a Grafos.................................................................4 
2.2 Modelo Orientado a Grafos vs. Modelo Relacional............................................................. 5 
2.3 Propriedades importantes de Banco de Dados de Grafos.....................................................6 
2.3.1 Armazenamento em Grafos......................................................................................... 6 
2.3.2 Motor de Processamento de Grafos.............................................................................7 
3 NEO4J...........................................................................................................................................7 
3.1 Armazenamento e Processamento do Neo4j........................................................................ 7 
3.2 Estrutura de Armazenamento no Neo4j................................................................................8 
3.3 Linguagem Cypher............................................................................................................... 9 
3.3.1 Filosofia do Cypher..................................................................................................... 9 
3.4 Vantagens do Neo4j............................................................................................................ 10 
4 CONCLUSÃO............................................................................................................................10 
REFERÊNCIAS............................................................................................................................11 
 
 
 
 
 
 
Resumo: 
Este relatório apresenta uma introdução ao modelo de banco de dados orientado a grafos, com 
ênfase no funcionamento e nas principais características do Neo4j. São discutidos conceitos 
fundamentais relacionados ao armazenamento, ao gerenciamento de dados e à linguagem de 
consulta utilizada. O objetivo é fornecer uma visão geral da tecnologia e suas aplicações na 
representação e análise de dados complexos e inter-relacionados. 
Palavras-chave: Banco de dados de grafos; Neo4j; Cypher; NoSQL. 
 
Abstract: 
This report presents an introduction to the graph database model, focusing on the core structure 
and functionality of Neo4j. It discusses fundamental concepts related to data storage, 
management, and the query language used. The goal is to offer a general overview of this 
technology and its applications in representing and analyzing complex and interconnected data. 
 
Keywords: Graph database; Neo4j; Cypher; NoSQL. 
 
 
 
 
 
1 INTRODUÇÃO 
Os bancos de dados relacionais têm dominado o campo da gestão de dados por várias 
décadas, fundamentados em um modelo que utiliza tabelas, linhas e colunas, seguindo a Estrutura 
de Dados Relacional. No entanto, com a evolução das tecnologias da informação e a explosão dos 
dados não estruturados, tornou-se evidente que os bancos de dados relacionais enfrentam 
limitações em termos de escalabilidade e flexibilidade. Com isso, surgem os bancos de dados 
NoSQL, um conjunto de tecnologias que busca atender a essas novas exigências (CARRETERO, 
2024). Oferecendo uma abordagem mais dinâmica e adaptável, permitindo a representação de 
dados de diferentes formas, como documentos, chave-valor, colunares e grafos. 
Entre os diferentes tipos de bancos de dados NoSQL, os bancos orientados a grafos se 
destacam por sua capacidade de modelar dados altamente interconectados. Eles são baseados na 
teoria dos grafos, onde os dados são representados como nós (entidades) e arestas (relações). Essa 
estrutura torna a consulta e manipulação de dados com muitas interconexões muito mais 
eficiente, pois permite realizar operações complexas de forma direta, sem a necessidade de unir 
tabelas como nos bancos relacionais. 
Nesse cenário, o Neo4j destaca-se como um dos principais bancos de dados orientados a 
grafos, consolidando sua relevância por meio de aplicações em grandes organizações. Empresas 
como a NASA, que utiliza grafos de conhecimento para acelerar missões espaciais, a Elsevier, 
que melhora o acesso à informação científica, e a Cisco, que otimiza processos com análise em 
tempo real, demonstram o potencial do Neo4j no tratamento de dados interconectados. Este 
trabalho tem como objetivo explorar o funcionamento dessa tecnologia, apresentando suas 
características, vantagens e aplicações por meio de análises conceituais. 
2 FUNDAMENTAÇÃO TEÓRICA 
Nesta seção, são abordados os principais conceitos que fundamentam os bancos de dados 
orientados a grafos, destacando suas diferenças em relação ao modelo relacional, suas 
características técnicas e os benefícios de seu uso em contextos com dados fortemente 
conectados. 
2.1 O que é um Banco de Dados Orientado a Grafos 
 Um banco de dados orientado a grafos é um sistema de gerenciamento de dados que 
utiliza estruturas de grafos para representar e armazenar informações. Nessas estruturas, os dados 
são organizados em nós (vértices) e relacionamentos (arestas), onde cada nó representa uma 
entidade e cada relacionamento descreve como duas entidades estão conectadas. Além disso, 
tanto nós quanto relacionamentos podem possuir propriedades, o que torna esse modelo 
altamente expressivo e flexível. 
 Esse paradigma é especialmente útil em aplicações onde os relacionamentos entre dados 
são mais relevantes do que os próprios dados isolados. A navegação entre entidades relacionadas 
 
 
 
 
 
é feita de forma eficiente, pois os relacionamentos são armazenados como elementos de primeira 
classe, não sendo necessário realizar operações de junção (JOIN) como em modelos relacionais. 
2.2 Modelo Orientado a Grafos vs. Modelo Relacional 
 A principal diferença entre o modelo orientado a grafos e o modelo relacional está na 
forma como os dados e suas conexões são representados e acessados. No modelo relacional, os 
dados são armazenados em tabelas, e os relacionamentos entre entidades são implementados por 
meio de chaves estrangeiras e operações JOIN, que podem se tornar custosas em termos de 
desempenho conforme o volume de dados cresce. Já nos bancos de grafos, as conexões entre os 
dados são diretas e explícitas, representadas como arestas entre nós. Isso permite que consultas 
que envolvem múltiplas relações sejam executadas de maneira mais eficiente, especialmente em 
cenários altamente conectados. Essa diferença pode ser observada por meio de uma comparação 
visual entre os dois modelos, aplicada ao mesmo conjunto de dados: departamentos, pessoas, 
projetos e organizações. 
Modelo Relacional: 
Figura 1 - Modelo relacional com múltiplas tabelas conectadas por chaves estrangeiras. 
 
Fonte: Guia definitivo de bancos de dados grafos: para desenvolvedores RDBMS, 2021. 
Cada entidade (Project, Person, etc.) é representada por uma tabela, e os relacionamentos, por 
campos de chave estrangeira. A consulta de dados complexos requer múltiplos JOINs, o que pode 
afetar o desempenho.Modelo Orientado a Grafos: 
Figura 2 - Modelo equivalente em banco de dados orientado a grafos. 
 
 
 
 
 
 
Fonte: Guia definitivo de bancos de dados grafos: para desenvolvedores RDBMS, 2021. 
 
 No modelo orientado a grafos, cada entidade se torna um nó e os relacionamentos 
tornam-se arestas rotuladas. Relações como :WORKS_AT, :BELONGS_TO, :LEAD_BY e 
:IS_PART_OF representam a natureza da conexão entre os dados. Isso permite uma navegação 
mais natural e ágil entre os elementos, especialmente útil em consultas complexas ou em grafos 
densamente conectados. 
 
2.3 Propriedades importantes de Banco de Dados de Grafos 
 Os bancos de dados de grafos possuem características específicas que os distinguem de 
outros modelos, especialmente em termos de como armazenam e processam seus dados. Duas 
propriedades fundamentais que influenciam diretamente no desempenho e na escalabilidade 
dessas tecnologias são o tipo de armazenamento utilizado e o motor de processamento adotado. 
2.3.1 Armazenamento em Grafos 
 O armazenamento em grafos define como os dados são organizados fisicamente. Bancos 
nativos utilizam estruturas específicas para nós e relacionamentos, preservando conexões de 
forma direta e eficiente. Já bancos não nativos simulam grafos sobre modelos relacionais ou 
orientados a objetos, o que pode gerar maior latência e menor desempenho em consultas 
complexas ou com muitos dados interligados. 
2.3.2 Motor de Processamento de Grafos 
 O motor de processamento executa operações sobre o grafo. Nos bancos nativos, ele é 
otimizado para acessar conexões diretamente por meio da adjacência livre de índice, garantindo 
travessias rápidas. Em contraste, motores genéricos não são adaptados para lidar com grafos, o 
que pode comprometer o desempenho em consultas com múltiplas conexões. Um motor nativo é, 
portanto, essencial para garantir eficiência e escalabilidade. 
 
 
 
 
 
 
3 NEO4J 
O Neo4j é um banco de dados de grafos nativo, ou seja, implementa o modelo de grafos 
diretamente até o nível de armazenamento, sem depender de estruturas de dados de outros 
paradigmas. Sua arquitetura foi projetada para representar e acessar nós e relacionamentos de 
forma eficiente, semelhante a como desenhamos grafos em um quadro branco. 
Criado em 2007 por Emil Eifrem, Johan Svensson e Peter Neubauer, o Neo4j nasceu da 
necessidade de lidar com dados altamente interconectados, onde bancos relacionais mostravam 
limitações. A proposta era desenvolver um banco de dados flexível, escalável e focado em 
relações complexas. O nome "Neo4j" une "Neo" (novo) e "4j", que pode ser interpretado como 
"for Java" ou apenas como referência a versões iniciais do projeto, sem definição oficial 
divulgada. Desde então, o Neo4j consolidou-se como referência em tecnologia de grafos, 
permitindo que organizações explorem de forma eficiente como pessoas, processos e sistemas se 
conectam. 
3.1 Armazenamento e Processamento do Neo4j 
Uma característica fundamental dos bancos de dados de grafos nativos, como o Neo4j, é o 
conceito de adjacência livre de índice (index-free adjacency). Esse modelo implica que cada nó 
no grafo mantém referências diretas para seus nós adjacentes, funcionando como um índice local. 
Essa estrutura permite que a navegação entre nós conectados ocorra com complexidade O(1), 
diferentemente dos bancos relacionais tradicionais, que normalmente dependem de buscas com 
complexidade O(log n) por meio de índices. Essa eficiência é possibilitada pela forma como o 
Neo4j organiza fisicamente seus dados: os nós e seus relacionamentos são armazenados próximos 
entre si, otimizando o acesso e reduzindo a latência nas travessias. Assim, operações como a 
identificação de todos os amigos de um determinado usuário podem ser executadas de forma 
direta e imediata, apenas percorrendo os relacionamentos já armazenados no próprio nó. 
Figura 3 - O Neo4j usa relacionamentos, não índices, para travessias rápidas 
 
Fonte: Graph Databases 2e. Sebastopol, CA: O’Reilly Media, 2015. 
 
 
 
 
 
A Figura 3 ilustra esse conceito ao mostrar como um relacionamento do tipo FRIEND 
entre pessoas permite a navegação no grafo sem necessidade de buscas adicionais. Por exemplo, 
para identificar os amigos de "Alice", basta percorrer suas conexões de saída do tipo FRIEND, 
obtendo os nós correspondentes a um custo constante. O mesmo se aplica à navegação reversa, 
isto é, para descobrir quem considera Alice como amiga. Essa estrutura torna a travessia de 
grafos extremamente eficiente, desde que seja suportada por uma arquitetura projetada 
especificamente para esse tipo de operação, como é o caso dos bancos de grafos nativos. 
3.2 Estrutura de Armazenamento no Neo4j 
O Neo4j organiza seus dados em diferentes arquivos físicos, cada um responsável por 
armazenar uma parte específica da estrutura do grafo: nós, relacionamentos, propriedades, tipos e 
rótulos (labels). Essa separação entre os elementos estruturais do grafo e os dados de atributos 
favorece um alto desempenho na travessia de grafos, ainda que os dados armazenados em disco 
se diferenciam da forma como os usuários visualizam o grafo. 
Figura 4 - Estrutura de registro e armazenamento de nó e relacionamento Neo4j 
 
Fonte: Graph Databases 2e. Sebastopol, CA: O’Reilly Media, 2015. 
Nota: Imagem referente a versão 2.2 do Neo4j, outras versões podem ter outros tamanhos. 
A Figura 4 representa a estrutura dos registros de nós e relacionamentos no 
armazenamento físico do Neo4j. Cada nó ocupa 15 bytes, sendo o primeiro byte uma flag que 
indica se o registro está em uso. Os próximos 4 bytes armazenam o ID do primeiro 
relacionamento do nó, seguidos por 4 bytes com o ID da primeira propriedade. Os 5 bytes 
seguintes armazenam informações sobre os rótulos (labels), e o último byte é reservado para flags 
especiais, como a marcação de nós densamente conectados. 
Os relacionamentos, por sua vez, ocupam 34 bytes. Eles incluem os IDs dos dois nós 
conectados, o tipo do relacionamento, ponteiros para os relacionamentos anterior e seguinte de 
cada nó, um ponteiro para a primeira propriedade e uma flag que indica se é o primeiro 
relacionamento da cadeia. Essa estrutura de tamanho fixo permite acesso direto aos registros, 
com custo O(1), otimizando a navegação no grafo. 
 
 
 
 
 
3.3 Linguagem Cypher 
Cypher é a linguagem de consulta de dados desenvolvida para bancos de dados orientados 
a grafos, sendo o padrão utilizado pelo Neo4j e adotado por outros sistemas que implementam a 
especificação openCypher. Seu principal diferencial é a sintaxe intuitiva e expressiva, que 
permite descrever grafos com uma notação inspirada em diagramas ASCII, facilitando a leitura e 
escrita de consultas por usuários não especialistas. 
 
3.3.1 Filosofia do Cypher 
A filosofia do Cypher é fornecer uma linguagem de fácil compreensão tanto para 
desenvolvedores quanto para analistas de dados e stakeholders de negócios. A construção visual 
das consultas, que imita o formato de diagramas de grafos com nós e arestas, torna a linguagem 
acessível e melhora a comunicação entre equipes técnicas e de negócios. 
Por exemplo, a seguinte representação de um grafo mostra três nós e seus relacionamentos: 
 
Se desejássemos registrar propriedades específicas desses nós, poderíamos expandir a consulta 
para: 
 
3.4 Vantagens do Neo4j 
O Neo4j apresenta diversos benefícios que o destacam entre as soluções de bancos de 
dados orientados a grafos, especialmente em aplicações que lidam com dados altamente 
interconectados. Entre suas principais vantagens estão: 
● Desempenho Escalável: A navegação entre nós conectados ocorre com eficiência mesmo 
em grandes volumes de dados, graças ao uso de adjacência livre de índice, que permite 
consultas com desempenho proporcional apenas ao número de relacionamentospercorridos, e não ao tamanho total do grafo. 
● Flexibilidade na Modelagem: O modelo de dados pode evoluir de forma natural, com a 
adição de novos tipos de nós ou relacionamentos sem a necessidade de reestruturações 
complexas, o que facilita ajustes conforme os requisitos do sistema mudam. 
● Agilidade no Desenvolvimento: A estrutura não rígida e adaptável do Neo4j favorece 
metodologias ágeis e ciclos iterativos de desenvolvimento, permitindo que a modelagem 
do banco acompanhe a evolução da aplicação e das necessidades do negócio. 
 
 
 
 
 
Essas características fazem do Neo4j uma solução altamente eficiente para aplicações que exigem 
manipulação e consulta de dados com relações complexas. Assim como o suporte a transações 
ACID (Atomicidade, Consistência, Isolamento e Durabilidade), que assegura que as operações 
sejam executadas de forma confiável e íntegra, mesmo em cenários de alta complexidade. 
 
4 CONCLUSÃO 
 Este relatório explora os principais conceitos relacionados aos bancos de dados orientados 
a grafos, com foco no funcionamento e nas vantagens do Neo4j. Sua arquitetura, baseada na 
adjacência livre de índice, permite a navegação rápida entre os dados, sem a complexidade de 
operações JOIN. Esse diferencial o torna especialmente adequado para aplicações como redes 
sociais, sistemas de recomendação e análise de vínculos complexos. Por sua vez, Já é 
demonstrado que a aplicação do Neo4j em redes complexas apresenta melhorias significativas na 
eficiência da análise de dados, acelerando a detecção de anomalias, o reconhecimento de padrões 
e o desenvolvimento de modelos preditivos (FERENCZ, 2025). Embora não substitua totalmente 
os bancos relacionais, como em aplicações transacionais tradicionais, o Neo4j se destaca quando 
o foco está nas relações entre os dados, consolidando-se como uma ferramenta poderosa para o 
gerenciamento de informações interconectadas. 
 
 
 
 
 
 
 
 
 
 
 
 
REFERÊNCIAS 
 
CARRETERO, Miguel. Uma visão geral de banco de dados NoSQL para big data. Revista FT, p. 
19-20, out. 2024. DOI: 10.69849/revistaft/pa10202410171619. 
 
CONSULTANT, B. G. /. Neo4j performance architecture explained & 6 tuning tips. Graphable, 
30 Sep. 2021. Disponível em: 
 
Customer stories - graph database & analytics. Disponível em: 
. 
 
HUNGER, Michael; BOYD, Ryan; LYON, William. Guia definitivo de bancos de dados grafos: 
para desenvolvedores RDBMS. Neo4j, 2021. 
 
FERENCZ, K. et al. Implementation of Network Data Analysis Using the Neo4j Graph Database. 
Acta Universitatis Sapientiae Electrical and Mechanical Engineering, v. 16, p. 162–176, 8 jan. 
2025. 
 
LAITURE. Neo4j (graph database) crash course. Disponível em: 
. 
 
Load XML. Disponível em: https://neo4j.com/labs/apoc/4.1/import/xml/. 
 
Modelling data in Neo4j: Bidirectional relationships. graphaware.com, 11 Oct. 2013. Disponível 
em: . 
 
Neo4j licensing. Disponível em: https://neo4j.com/licensing/. Acesso em: 8 apr. 2025. 
 
ROCHA, JOSÉ. Understanding memory consumption - Knowledge Base. Disponível em: 
. 
 
SASAKI, B. M. Native vs. Non-native graph database. Disponível em: 
. 
 
WEBBER, J.; ROBINSON, I.; ELFREM, E. Graph Databases 2e. Sebastopol, CA: O’Reilly 
Media, 2015. 
 
 
 
 
https://www.graphable.ai/blog/neo4j-performance/
https://neo4j.com/customer-stories/
https://www.youtube.com/watch?v=8jNPelugC2s
https://graphaware.com/blog/neo4j-bidirectional-relationships/
https://neo4j.com/developer/kb/understanding-memory-consumption/
https://neo4j.com/blog/cypher-and-gql/native-vs-non-native-graph-technology/
	1 INTRODUÇÃO 
	2 FUNDAMENTAÇÃO TEÓRICA 
	2.1 O que é um Banco de Dados Orientado a Grafos 
	2.2 Modelo Orientado a Grafos vs. Modelo Relacional 
	2.3 Propriedades importantes de Banco de Dados de Grafos 
	2.3.1 Armazenamento em Grafos 
	2.3.2 Motor de Processamento de Grafos 
	3 NEO4J 
	3.1 Armazenamento e Processamento do Neo4j 
	3.2 Estrutura de Armazenamento no Neo4j 
	3.3 Linguagem Cypher 
	3.3.1 Filosofia do Cypher 
	3.4 Vantagens do Neo4j 
	4 CONCLUSÃO 
	REFERÊNCIAS

Mais conteúdos dessa disciplina