Neo4j 数据库和图

Neo
Neo
2022-03-11 / 0 评论 / 76 阅读

本节内容源自Cypher官方手册V4.4版,笔者对其进行学习、翻译、记录。

Cypher 查询是针对 Neo4j 数据库执行的,但通常适用于特定的图。重要的是要理解这些术语的含义,以及当图不是数据库时的确切含义。

数据库管理系统
Neo4j 数据库管理系统能够包含和管理数据库中包含的多个图。客户端应用程序将连接到 DBMS 并针对它打开会话。客户端会话提供对 DBMS 中任何图形的访问。


这是数据库中的数据模型。通常每个数据库中只有一个图,并且许多引用特定图的管理命令使用数据库名称来执行此操作。

在会话中执行的 Cypher 查询可以声明它们适用于哪个图,或使用会话给定的默认值。

在 Neo4j Fabric 中,可以在同一个查询中引用多个图。

数据库
数据库是一种存储和检索机制,用于在磁盘和内存空间中收集数据。

大多数情况下,Cypher 查询是读取或更新查询,这些查询是针对图运行的。还有一些适用于数据库或整个 DBMS 的管理命令。管理命令不能在连接到普通用户数据库的会话中运行,而是需要在连接到系统数据库的会话中运行。

系统数据库和默认数据库

所有 Neo4j 服务器都包含一个名为 system 的内置数据库,它的行为与所有其他数据库不同。system 数据库存储系统数据,您无法对其执行图形查询。

Neo4j 的全新安装时会包括两个数据库:

  • system - 上述系统数据库,包含有关 DBMS 和安全配置的元数据。

  • neo4j - 默认数据库,使用配置选项命名dbms.default_database=neo4j。

有关系统数据库的更多信息,请参阅数据库管理和访问控制部分。

Neo4j的不同版本

Neo4j 有两个版本,一个具有附加性能和管理功能的商业企业版,以及一个开源社区版。Cypher 在两个版本之间的工作方式几乎相同,因此本手册的大部分内容不会区分它们。在少数版本之间的 Cypher 语言支持或行为存在差异的情况下,这些会在有限支持功能中突出显示,如下所述。

然而,值得预先列出开源版本中不支持的关键领域:
|特征|企业版|社区版|
|-------|-------|-------|
|多数据库|任意数量的用户数据库|只有system数据库和一个user数据库|
|基于角色的安全性|灵活的访问控制和子图访问控制的用户、角色和权限管理。|多用户管理。所有用户都有完全的访问权限。|
|约束|存在约束、唯一性约束和NODE KEY约束。|只有唯一性约束|

有限的支持功能

Cypher 的某些元素并不适用于 Neo4j 的所有部署,我们使用特定标记来突出这些情况:
|标记|描述|例子|
|-------|-------|-------|
|deprecated|此功能已弃用,将在未来版本中删除|DROP INDEX ON :Label(property)|
|enterprise-only|此功能仅适用于 Neo4j 企业版|CREATE DATABASE foo|
|fabric|此功能仅适用于 Neo4j 的fabric部署。|USE fabric.graph(0)|