如果要将已注册到 ArcGIS Knowledge 站点的 Neo4j 数据库用作 NoSQL 数据存储,则为了确保知识图谱正常运行,需要考虑一些细节。
创建知识图谱
要将 Neo4j 数据库与 ArcGIS Knowledge 站点搭配使用,第一步是使用 Neo4j 管理命令创建 Neo4j 数据库。 将数据库注册到站点作为 NoSQL 数据存储。
当 Neo4j 数据库注册为 NoSQL 数据存储时,可以使用向其分配的数据库名称或别名进行注册。 所用的名称或别名遵守与知识图谱相同的命名限制。 在创建 NoSQL 数据存储后,数据库无法重命名,或别名无法在 Neo4j 中进行更改或删除。
当您提供身份验证信息以连接到 Neo4j 实例时,请确保访问数据库的用户或身份具有足够的权限,以支持将创建的知识图谱所需的所有操作。
与 NoSQL 数据存储相关的知识图谱将具有与用于创建 NoSQL 数据存储的凭据相关联的访问级别。 在任何客户端访问知识图谱服务的内容时,将考虑这些凭据。 例如,如果用户仅可访问特定的实体和关系,则在 ArcGIS Pro 工程的调查中仅这些项目可用。
管理数据
当您创建使用 NoSQL 数据存储的知识图谱时,必须选择如何管理 Neo4j 数据库中存储的数据。 此选择将决定有关 Neo4j 数据库的其他因素。
例如,与您的 ArcGIS Knowledge 站点相关联的图谱存储用于存储方案信息,这些信息必须与在与站点相关联的 Neo4j 数据库中存储的信息保持同步。 实现这一点的方式将取决于数据库中数据的管理方式。
您必须创建一个计划,用以备份和恢复您的 Neo4j 数据库,且该计划应与您用于备份和恢复 ArcGIS Enterprise 部署和 ArcGIS Data Store 图谱存储的计划相协调。
ArcGIS 管理的数据
如果知识图谱将包含 ArcGIS 管理的数据,则在将其作为 NoSQL 数据存储添加到 ArcGIS Enterprise 部署时,已注册的数据库必须为空。 如果 Neo4j 数据库不完全为空,则使用 ArcGIS 管理的数据创建知识图谱的操作将失败。
当您创建一个将包含 ArcGIS 托管数据的 NoSQL 数据存储时,您提供的用于访问 Neo4j 数据库的凭据必须具有与内置 Neo4j 角色 architect 对应的特权。
您仅可创建一个 NoSQL 数据存储,该数据存储可访问包含 ArcGIS 托管数据的 Neo4j 数据库。 同样地,您仅可创建一个知识图谱,该知识图谱可访问包含 ArcGIS 托管数据的 NoSQL 数据库。 例如,您不能创建第二个访问包含用户托管数据的相同 NoSQL 数据存储的知识图谱。
创建包含 ArcGIS 托管数据的知识图谱后,实体和关系的标识符必须在 Neo4j 数据库和 ArcGIS Knowledge 图谱存储之间保持同步,知识图谱才能保持运行。 为了确保数据完整性,仅可通过在 ArcGIS Pro 和 ArcGIS Enterprise 中进行的操作和请求,来支持与知识图谱相关联的所有系统的编辑。
不得从 ArcGIS 外部对 Neo4j 数据库进行数据编辑和其他更改。 包括更改或删除与 Neo4j 数据库关联的任何索引,因为这些索引是支持搜索所必需的。
用户管理的数据
如果您的 Neo4j 数据库包含数据,则可以将数据库注册为 NoSQL 数据存储,并创建一个将 NoSQL 数据存储指定为具有用户托管数据的知识图谱。
当您创建一个将包含用户托管数据的 NoSQL 数据存储时,您提供的用于访问 Neo4j 数据库的凭据必须具有与内置 Neo4j 角色 reader 对应的特权。 但是,如果在创建知识图谱时启用了搜索功能,则必须使用内置角色 architect;搜索功能需要足够的权限才能在 Neo4j 数据库中创建全文索引。
知识图谱中的所有实体和关系都必须具有唯一标识符。 当您使用用户托管的 NoSQL 数据存储创建知识图谱时,数据库必须包含一个用作唯一标识符的属性。 对于所有实体类型和关系类型,唯一标识符属性的名称必须相同,并且必须在创建知识图谱时提供。 存储在属性中的值在所有实体类型或所有关系类型中必须唯一,但无需在数据库中的所有实体和关系中保持全局唯一。
如果针对知识图谱启用搜索,则 ArcGIS Knowledge 将在 Neo4j 数据库中创建全文索引以支持搜索。 不得在 ArcGIS Knowledge 之外更新或删除这些索引。 索引名称将以 esri__ 开头。
要搜索知识图谱的数据并将其添加至链接图表或地图,必须将 Neo4j 数据库的数据模型与 ArcGIS Knowledge 图谱存储进行同步。 如果 Neo4j 数据库中的节点或关系具有多个标注,则同步数据模型将失败。 出现此问题时,可以访问与之前已同步的数据模型信息相关联的数据,但无法将数据添加至与数据模型中尚未同步的部分相关联的链接图表或地图。 每当 Neo4j 数据库中的方案发生变化时,您都必须同步数据模型。
当数据库不包含由不同知识图谱创建的 ArcGIS 托管数据,且每个数据存储使用不同的凭据访问同一数据库时,可以创建许多访问同一 Neo4j 数据库的 NoSQL 数据存储。 您还可以创建访问单个被指定为具有用户托管数据的 NoSQL 数据存储的多个知识图谱。 任何一种方法都可以生成许多访问同一基础 Neo4j 数据库的知识图谱。 使用 ArcGIS Enterprise 门户控制可以访问各个知识图谱的人员。
例如,如果您有两个知识图谱,每个与不同的 NoSQL 数据存储相关联,并且每个 NoSQL 数据存储使用不同的凭证访问 Neo4j 数据库,则需确保在 ArcGIS Enterprise 门户中将每个知识图谱与正确的用户组共享。 将每个知识图谱与单独的门户组共享。 为每个门户组设置成员身份,从而确保每位门户用户均可使用正确的知识图谱访问正确的内容。
同样地,您可以使用提供 Neo4j 数据库完全访问权限的凭据创建两个访问同一 NoSQL 数据存储的知识图谱。 但是,通过在 ArcGIS Enterprise 门户中以不同方式共享知识图谱,您可以控制不同的门户用户对可用信息的操作。 一个知识图谱可以共享给一个群组,该群组的所有成员均被分配了 Viewer 角色,因此仅可以只读方式访问内容。 另一个知识图谱可以共享给另一个群组,该群组的成员具有 Editor 角色,因此可以编辑实体、关系及其属性。
在 ArcGIS Pro 工程中进行访问时,访问 Neo4j 数据库中的用户托管数据的知识图谱处于只读状态。 如果您使用 ArcGIS Enterprise 开发者 API 访问同一知识图谱,则可以编辑视图和关系及其属性值,但是知识图谱的数据模型仍为只读。 即您无法添加新实体类型和关系类型或向现有类型添加新属性。
删除数据库
如果不再需要知识图谱,则可以在 Enterprise 门户中将其删除。 将自动从图谱存储中删除知识图谱数据。 但是,如果知识图谱引用 NoSQL 数据存储,则不会自动删除数据存储及其关联的 Neo4j 数据库。
如果知识图谱包含 ArcGIS 管理的数据,由于 Neo4j 数据库不为空,因此,无法根据同一 NoSQL 数据存储创建另一个 ArcGIS 管理的知识图谱。 但是,如果知识图谱包含用户管理的数据,则可以创建一个新的知识图谱,用于访问现有 NoSQL 数据存储中的数据。
如果您不再打算将 Neo4j 数据库与 ArcGIS Knowledge 配合使用,则可以在 Enterprise 门户中删除 NoSQL 数据存储。 此操作不会删除关联的 Neo4j 数据库。 在删除 NoSQL 数据存储之前,请检查其设置并记录其引用的 Neo4j 数据库。 然后,您可以根据组织的指导原则,使用 Neo4j 实用程序和管理命令,执行相应步骤来存档数据并删除 Neo4j 数据库。