我正在为Neo4J编写一个服务器插件。该插件接收一个密码查询,并执行它。目前,我的实施使用CypherExecutor
。
我现在需要进一步限制结果。 (例如,假设结果需要通过ACL过滤。)
一种方法是在执行查询后过滤结果。出于性能原因以及其他限制,我宁愿不这样做(例如,任何聚合结果都是错误的。)
我考虑过将约束添加到查询本身。我查看了使用command.AbstractQuery
生成的CypherParser
子类。该对象模型是不可变的。
我想知道是否需要克隆Neo4J的ExecutionEngine和CypherCompiler,只是为了扩展ExecutionPlanBuilder ......如果可能的话,我想避免使用此选项。
有关如何做到这一点的任何建议?
就我而言,我只是想模拟多个孤立的图形。我可以建模如何 - 我是否向每个节点添加'tenantId',或维护租户节点并为每个节点添加(:Tenant)<-[:scopedTo]-(n)
关系。