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

Sco*_*zie 8 design-patterns graph neo4j

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

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

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

Ton*_*cas 3

对SO来说不是一个好问题

这个问题非常开放,SO 是针对具有具体技术答案的问题。

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

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

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

  1. 我的查询需要是什么样子?
  2. 我代表什么类型的信息?
  3. 哪些信息是相关的?
  4. 应该更细粒度,还是更笼统?
  5. 时间、日期还是日期时间?微时代?公元前?

背景确实很重要。

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

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

时间是什么?

或者至少,它对您的数据有什么影响?

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

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

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

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

  • 如果您确实想找到可以解决几乎所有问题的方法,请遵循人类头脑中的模式:仅在发生重要事件时记录“:Moment”,然后将日期时间放在该“:Moment”上。将相关的 `:Moment` 分组到该组的 `:Event` 中。其他节点仅连接到`:Event`,除非它们是`:Moment`中重要事物的一部分。时刻是按顺序链接的,并且可以在不考虑实时性的情况下进行处理。 (2认同)