什么是 Neo4j?

neo4j architecture diagram

Neo4j 是一个原生图数据库,这意味着它从存储级别开始就实现了真正的模型。它不是在其他技术之上使用“图抽象”,而是在 Neo4j 中以与您在白板上记录想法相同的方式存储数据。

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

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

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

如何与 Neo4j 交互

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

另一种选择是使用。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 桌面版(如果您的项目不在生产环境中)。

Neo4j 可安装在LinuxmacOSWindows上。

自管理本地部署

如果您更喜欢使用本地部署:如果您不在生产环境中,请安装Neo4j 桌面版,或者在本地安装 Neo4j

Docker 上的 Neo4j

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

Kubernetes 上的 Neo4j

使用 Neo4j Helm 图表,您可以部署独立和集群部署的Kubernetes 上的 Neo4j,并使用适合最常见场景的配置选项。

Neo4j 具有免费版和订阅版许可证选项。详细了解可用版本

处理数据

创建数据库后,您的学习可以走不同的路径,具体取决于您是想使用自己的数据还是使用 Neo4j 的示例数据集。

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

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

Neo4j 工具

Neo4j 拥有可用于各种目的的工具目录,例如数据库管理、数据可视化等。您可以在工具中心查看所有产品。

支持的库

Neo4j 支持几种最流行的查询语言,并提供专有库以获得自定义体验。

  • Neo4j 图数据科学 (GDS)库提供了常用图算法和机器学习管道的实现,以训练预测性监督模型。例如,您可以使用它们来解决图问题,例如预测缺失的关系。

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

API

Neo4j 目前提供三个专有的API

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

  • 变更数据捕获 (CDC) API允许您实时捕获和跟踪数据库的更改,以及保持数据源的最新状态。

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

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

继续学习

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

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

术语表

标签

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

标签

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

节点

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

节点

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

关系

关系表示图数据模型中节点之间的连接。关系将源节点连接到目标节点,在属性中保存数据,并按类型进行分类。

关系

关系表示图数据模型中节点之间的连接。关系将源节点连接到目标节点,在属性中保存数据,并按类型进行分类。

属性

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

属性

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

集群

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

集群

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

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

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

模式

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

模式

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

[[数据库模式]]数据库模式

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

索引

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

已索引

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

约束

约束是一组数据建模规则,用于确保数据的一致性和可靠性。 查看 Cypher 中可用的约束