neo4j或图形数据库存在哪些时间模式?

时间:2012-03-28 00:02:47

标签: graph design-patterns neo4j

我正在寻找可用于有关时间的数据库的模式(理想情况下有优点/缺点)。

我能想到的是有一个节点代表一个时间点或时间段。

其他人在那里?你用过别人的什么?

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

对 SO 来说不是个好问题

这个问题是非常开放的,所以针对具有特定技术答案的问题。

TL;DR:图形模式是无限的。从问题开始,而不是可能性。

图形模式是特定于案例的,而不是特定于数据类型的

没有一组时间图模式,即使有,每个模式对于特定用例也是唯一的,在其他地方几乎无用。你应该问自己什么:

  1. 我的查询应该是什么样的?
  2. 我代表什么样的信息?
  3. 哪些信息是相关的?
  4. 它应该更细化,还是更笼统?
  5. 时间、日期还是日期时间?微时?卑诗省?

上下文真的很重要。

建模数据中心网络中的信息流?可能只需要相关数据的属性中的秒和微秒。

在生命之树上模拟进化?可能不需要来自时间甚至日期的任何,而是使用浮点数和整数表示指数表示法,或使用单个整数表示数千年。

什么是时间?

或者至少,它与您的数据有什么关系?

我见过的三种最常见的模式(因为它们在查询中最灵活且最容易使用):

  • 只需将日期或日期时间粘贴到相关的任何位置即可。
  • (cause)-->(event {datetime})
  • (event)-->(datetime)(datetime)-[:NEXT]->(datetime)-[:NEXT]->(datetime)

然而,即使有了这些模式,仍然存在许多开放式问题。考虑一个跟踪文件修改的案例...

  • 简单地将创建和修改日期放在文件节点上?
  • 将日期放在用户和文件之间的关系上?
    • 只是一个日期时间,还是读/写和持续时间?
  • 事件本身作为具有开始、结束和持续时间的节点,与用户和文件的关系,以及应用于文件的变更集?
    • 该事件是否应该在其按时间顺序排列的邻居之间存在关系,还是应该仅在变更集之间保持这种关系?