Neo4j 简明教程

Neo4j - Overview

Neo4j 是全球领先的开源图数据库,使用 Java 技术开发。它具有高度的可扩展性和无模式(NoSQL)。

What is a Graph Database?

图是对象集的直观表示,其中一些对象对通过链接连接。它由两个元素组成——节点(顶点)和关系(边)。

图形数据库是一个用于以图形形式对数据建模的数据库。在此,图的节点描绘实体,而关系描绘这些节点的关联。

Neo4j 是一个流行的图形数据库。其他图形数据库包括 Oracle NoSQL 数据库、OrientDB、HypherGraphDB、GraphBase、InfiniteGraph 和 AllegroGraph。

Why Graph Databases?

如今,大多数数据是以不同对象之间关系的形式存在的,更常见的是,数据之间的关系比数据本身更有价值。

关系型数据库存储高度结构化的数据,其中有几条记录存储相同类型的数据,因此它们可用于存储结构化数据,并且它们不存储数据之间的关系。

与其他数据库不同的是,图形数据库将关系和连接存储为一级实体。

图形数据库的数据模型比其他数据库简单,并且它们可与 OLTP 系统一起使用。它们提供事务完整性和操作可用性等功能。

RDBMS Vs Graph Database

以下是比较关系型数据库和图形数据库的表格。

Sr.No

RDBMS

Graph Database

1

Tables

Graphs

2

Rows

Nodes

3

Columns and Data

Properties and its values

4

Constraints

Relationships

5

Joins

Traversal

Advantages of Neo4j

以下是 Neo4j 的优势。

  1. Flexible data model − Neo4j 提供了一个灵活简单但强大的数据模型,可以根据应用程序和行业轻松更改该数据模型。

  2. Real-time insights − Neo4j 根据实时数据提供结果。

  3. High availability − Neo4j 对于具有事务保证的大型企业实时应用程序具有很高的可用性。

  4. Connected and semi structures data − 使用 Neo4j,您可以轻松表示连接和半结构化数据。

  5. Easy retrieval − 与其他数据库相比,使用 Neo4j,您不仅可以表示连接的数据,还可以在更短的时间内轻松检索(遍历/导航)连接的数据。

  6. Cypher query language − Neo4j 提供了一个声明性查询语言来表示图形,使用的是 ascii-art 语法。此语言的命令采用人类可读格式,且很容易学习。

  7. No joins − 使用 Neo4j,不需要复杂的连接来检索连接/相关数据,因为它非常容易在没有连接或索引的情况下检索相邻节点或关系详细信息。

Features of Neo4j

以下是 Neo4j 的显著特征 −

  1. Data model (flexible schema) − Neo4j 遵循名为本地属性图模型的数据模型。在这里,图形包含节点(实体),这些节点相互连接(由关系表示)。节点和关系以属性的形式存储数据,单个属性以键值对形式存储。在 Neo4j 中,不需要遵循固定的模式。您可以根据要求添加或删除属性。它还提供模式约束。

  2. ACID properties − Neo4j 支持完全 ACID(原子性、一致性、隔离性和持久性)规则。

  3. Scalability and reliability − 您可以通过增加读/写次数和增加数量来扩展数据库,而无需影响查询处理速度和数据完整性。Neo4j 还为 replication 提供支持,以确保数据安全性和可靠性。

  4. Cypher Query Language − Neo4j 提供了一个强大的声明性查询语言,称为 Cypher。它使用 ASCII-art 来描绘图形。Cypher 易于学习,可用于在不使用连接等复杂查询的情况下创建和检索数据之间的关系。

  5. Built-in web application − Neo4j 提供了一个内置的 Neo4j Browser Web 应用程序。使用此应用程序,您可以创建和查询您的图形数据。

  6. Drivers − Neo4j 可以使用 −REST API 来处理 Java、Spring、Scala 等编程语言。Java Script 可以用来处理类似于 Node JS 的 UI MVC 框架。它支持两种类型的 Java API:Cypher API 和 Native Java API,用来开发 Java 应用程序。除了这些以外,你也可以处理其他数据库,比如 MongoDB、Cassandra 等。

  7. Indexing − Neo4j 使用 Apache Lucence 来支持索引。