什么是 Neo4j?

neo4j architecture diagram

Neo4j 是一款原生图数据库,这意味着它在存储层实现了真正的模型。数据并不是在其他技术之上使用“图抽象”,而是以您在白板上构思想法的相同方式存储在 Neo4j 中。

自 2007 年以来,Neo4j 已发展成为一个丰富的工具、应用程序和库生态系统。该生态系统允许您通过此处描述的多种方式将图技术集成到您的工作环境中。

除了核心图功能外,Neo4j 还提供 ACID 事务、集群支持和运行时故障转移。

Neo4j 使用 Java 和 Scala 编写。您可以在 GitHub 上查看源代码。

如何与 Neo4j 交互

Neo4j 使用 Cypher®,这是一种声明式查询语言,类似于 SQL,但针对图进行了优化。其他数据库(如 SAP HANA Graph)也通过 openCypher 项目使用同一种语言。

另一种选择是使用。Neo4j 目前支持 Java、JavaScript、.NET、Python、Go、GraphQL、Spring 等。

创建 Neo4j 实例

部署数据库是探索 Neo4j 的第一步。请从以下选项中选择一种适合您项目的部署方法

全托管云服务

Neo4j AuraDB 是一项全托管的云服务,让您可以直接从浏览器开始探索 Neo4j。

如果您是一名数据科学家,您可能还想查看 Neo4j AuraDS,并获取超过 65 种预调优的图算法的使用权限。

Neo4j Aura 提供免费版和订阅版。查看完整对比

自管理云服务

您也可以在您选择的云平台上部署图数据库。Neo4j 支持 Amazon Web Services (AWS)、Google Cloud (GCP) 和 Microsoft Azure。

对于自管理云服务,您需要安装 Neo4j,如果您的项目不在生产环境中,也可以使用 Neo4j Desktop

Neo4j 可在 LinuxmacOsWindows 上安装。

自管理本地部署

如果您倾向于使用本地部署:如果不在生产环境中工作,请安装 Neo4j Desktop;或者直接在本地安装 Neo4j

Docker 上的 Neo4j

Neo4j 可以在 Docker 容器中运行。您可以从 DockerHub 下载官方的 Neo4j 镜像,它提供了一个标准、即开即用的 Neo4j 社区版和企业版软件包,支持多种版本。它适用于 macOS、Windows 和 Linux。

Kubernetes 上的 Neo4j

使用 Neo4j Helm charts,您可以部署 Kubernetes 上的 Neo4j 单机版或集群版,并使用适用于最常见场景的配置选项。

Neo4j 提供免费和基于订阅的许可选项。阅读更多关于可用版本的信息。

处理数据

创建数据库后,您的学习路径取决于您是想处理自己的数据,还是使用 Neo4j 的示例数据集。

  • 自有数据:有多种方法可以将数据导入到 Neo4j 并对其进行建模,以获得更好的体验。

  • 示例数据集AuraNeo4j Browser 都内置了引导指南,允许您创建示例数据集并开始查询。要访问它们,请使用 Aura 右上角的毕业帽图标,或在 Neo4j Browser 中输入 :guide
    您也可以下载示例数据集,然后将其导入到您的实例中。

Neo4j 工具

Neo4j 拥有一个工具目录,可用于数据库管理、数据可视化等多种用途。您可以在 Tools 中心查看所有产品。

支持的库

Neo4j 支持多种最流行的查询语言,并提供专有库以提供定制化的体验。

  • Neo4j Graph Data Science (GDS) 库提供了常用图算法的实现,以及用于训练预测性监督模型的机器学习流水线。您可以使用它们来解决图问题,例如预测缺失的关系。

  • 对象图映射 (OGM) 库将图中的节点和关系映射为领域模型中的对象和引用。您可以使用此资源来开始跟踪更改,并最小化必要的更新和传递持久性(读取和更新对象的邻域)。

API

Neo4j 目前提供三个专有 API

  • Neo4j HTTP API 允许您通过 HTTP 请求针对 Neo4j 实例执行一系列 Cypher 语句。

  • 变更数据捕获 (CDC) API 允许您实时捕获和跟踪数据库的变更,并保持数据源的实时更新。

  • Neo4j Query API 允许您使用 Neo4j 目前不支持的语言开发客户端应用程序。

Neo4j Labs,您可以找到包括 API、库和可视化工具在内的实验性项目。

持续学习

要了解关于什么是图数据库以及该技术背后概念的更多信息,请继续阅读文档或浏览其他精选资源

您也可以在 Neo4j 社区网站上联系 Neo4j 社区的其他成员。

术语表

label (标签)

将节点标记为命名和索引子集的成员。一个节点可以分配零个或多个标签。

labels (标签)

标签将节点标记为命名和索引子集的成员。一个节点可以分配零个或多个标签。

node (节点)

节点代表图数据模型中的实体或离散对象。节点可以通过关系连接,通过属性保存数据,并按标签进行分类。

nodes (节点)

节点代表图数据模型中的实体或离散对象。节点可以通过关系连接,通过属性保存数据,并按标签进行分类。

relationship (关系)

关系代表图数据模型中节点之间的连接。关系连接源节点和目标节点,通过属性保存数据,并按类型进行分类。

relationships (关系)

关系代表图数据模型中节点之间的连接。关系连接源节点和目标节点,通过属性保存数据,并按类型进行分类。

property (属性)

属性是用于在节点和关系上存储数据的键值对。

properties (属性)

属性是用于在节点和关系上存储数据的键值对。

cluster (集群)

一种跨多台服务器协同工作的 Neo4j DBMS,旨在提高容错能力和/或读取可扩展性。集群上的数据库可以配置为在集群中的服务器之间进行复制,从而实现读取可扩展性或高可用性。

clusters (集群)

一种跨多台服务器协同工作的 Neo4j DBMS,旨在提高容错能力和/或读取可扩展性。集群上的数据库可以配置为在集群中的服务器之间进行复制,从而实现读取可扩展性或高可用性。

graph (图)

一组节点的逻辑表示,其中一些节点对由关系连接。

graphs (图)

一组节点的逻辑表示,其中一些节点对由关系连接。

schema (模式)

为节点和关系指定的属性存在性和数据类型。

schemas (模式)

为节点和关系指定的属性存在性和数据类型。

[[database schema]]database schema (数据库模式)

为节点和关系指定的属性存在性和数据类型。

indexes (索引)

提高数据库读取性能的数据结构。阅读有关支持的索引类别的更多信息

indexed (已索引)

提高数据库读取性能的数据结构。阅读有关支持的索引类别的更多信息

constraints (约束)

约束是一组数据建模规则,用于确保数据一致且可靠。查看 Cypher 中有哪些可用约束

data model (数据模型)

数据模型定义了信息在数据库中如何组织。良好的数据模型将使查询和理解数据变得更容易。在 Neo4j 中,数据模型具有图结构。

data models (数据模型)

数据模型定义了信息在数据库中如何组织。良好的数据模型将使查询和理解数据变得更容易。在 Neo4j 中,数据模型具有图结构。