我可以想到几种可能的方法来存储然后在Neo4j中查询时态数据。查看能够搜索重复事件和任何异常的示例,我可以看到两种可能性:
一个简单的选择是为每次事件发生创建一个节点。虽然很容易构建一个密码查询来查找一天,某个范围内的所有事件等,但这可能会产生许多不必要的节点。它还可以很容易地更改单个事件的时间,位置等,因为已经有一个节点包含基本信息。
第二个选项是将重复时间模式存储为事件节点的属性。这将大大减少图中的节点数量。在特定日期或范围内搜索事件时,可以将满足开始/结束日期(以及任何其他)标准的所有节点返回给客户端。然后归结为迭代结果以抽取出时间模式在搜索范围内给出日期的子集,然后将其与任何异常进行比较并根据需要合并(或忽略)结果(这可能是将初始结果集作为查询的一部分拉出时部分实现了。
虽然第二个选项是我当前选择的选项,但它处理数据两次似乎非常低效,尽管第二次选择的是较小的子集。即使是Neo4j的插件也可能导致两次通过数据,但处理将在数据库服务器而不是请求客户端上完成。
我想知道的是,是否可以使用Cypher或Neo4j作为初始查询的一部分进行此处理?
答案 0 :(得分:0)
虽然我并非100%确定我理解您的要求,但我要看看这篇博文,或许您会在那里找到一点灵感:http://graphaware.com/neo4j/2014/08/20/graphaware-neo4j-timetree.html < / p>