如何在 Neo4j 中实现多客户端能力?
How to realize a multi-client capability in Neo4j?
初始情况
我有几个独立且断开连接的图,每个图都具有类似层次结构的结构和本地根元素。这些图表中的每一个都包含大约 800 万个节点和 4000 万个关系。我已经成功地创建了一个三位数的 Cypher 查询,现在应该只应用于单个图而不是所有图的整体。查询必须应用于的图形由其根节点指定。
待解决的挑战
如果出于报告和模式匹配的原因,所有图形都必须保留在一个公共 Neo4j 数据库中,我如何才能实现图形的一种伪多客户端功能?
问题处理/初步结果
在开始时真的在每个查询中实现到给定根元素的单个最短路径以用于选择目的吗? 缺点:
- 预计会出现巨大的性能损失
- 开发成本高
用单独的附加标签扩展每个图表? 缺点:
- 查询复杂,开发工作量大
对于这些情况,通常采用的方法是将每个 tenant/client 的特定标签添加到子图中的所有节点。这将要求您确保当您与查询中的相关节点匹配时,您还要确保您正在使用的节点具有客户端标签。
作为未来的注意事项,本机多租户支持是我们明年要开发的主要功能之一。
初始情况
我有几个独立且断开连接的图,每个图都具有类似层次结构的结构和本地根元素。这些图表中的每一个都包含大约 800 万个节点和 4000 万个关系。我已经成功地创建了一个三位数的 Cypher 查询,现在应该只应用于单个图而不是所有图的整体。查询必须应用于的图形由其根节点指定。
待解决的挑战
如果出于报告和模式匹配的原因,所有图形都必须保留在一个公共 Neo4j 数据库中,我如何才能实现图形的一种伪多客户端功能?
问题处理/初步结果
在开始时真的在每个查询中实现到给定根元素的单个最短路径以用于选择目的吗? 缺点:
- 预计会出现巨大的性能损失
- 开发成本高
用单独的附加标签扩展每个图表? 缺点:
- 查询复杂,开发工作量大
对于这些情况,通常采用的方法是将每个 tenant/client 的特定标签添加到子图中的所有节点。这将要求您确保当您与查询中的相关节点匹配时,您还要确保您正在使用的节点具有客户端标签。
作为未来的注意事项,本机多租户支持是我们明年要开发的主要功能之一。