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

标签 graph design-patterns neo4j

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

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

还有什么呢?您还使用了哪些其他工具?

最佳答案

对于SO来说不是一个好问题
这个问题是开放式的,因此SO是针对具有特定技术答案的问题。
TL; DR:图形模式是无限的。从问题开始,而不是可能性。
图形模式是特定于大小写的,而不是特定于数据类型的
没有一组时间图模式,即使存在,每种模式对于特定的用例也将是唯一的,而在其他情况下几乎是无用的。您应该问自己的问题:

  • 我的查询需要什么样?
  • 我代表什么样的信息?
  • 相关的信息是什么?
  • 是更详细还是更笼统?
  • 时间,日期还是日期时间?上类时间?公元前?

  • 上下文确实很重要。
    对数据中心网络中的信息流进行建模?在相关数据上的属性中,可能只需要几秒钟和几微秒的时间。
    在生命树上模拟进化?可能不需要时间甚至日期,而是使用浮点数和整数进行指数表示,或者使用一个整数来表示数千年。
    时间是什么?
    或者至少,这对您的数据有什么影响?
    我见过的三种最常见的模式(因为它们在查询中最灵活,最容易使用):
  • 只要在相关的日期或日期时间粘贴它们即可。
  • (cause)-->(event {datetime})
  • (event)-->(datetime)(datetime)-[:NEXT]->(datetime)-[:NEXT]->(datetime)

  • 但是,即使采用这些模式,仍然存在许多开放性问题。考虑一种跟踪文件修改的情况...
  • 只需将“创建”和“修改”日期放在"file"节点上?
  • 将日期放在用户和文件之间的关系上吗?
  • 只是日期时间,还是读/写和持续时间?

  • 事件本身是一个具有开始,结束和持续时间的节点,与用户和文件的关系以及应用于文件的更改集吗?
  • 该事件应该在时间顺序相邻的对象之间具有关系,还是应该仅在变更集之间保留该关系?

  • 关于graph - neo4j或图形数据库存在哪些时间模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899408/

    相关文章:

    java - 保存关系实体不起作用

    java - 如何存储用户日志

    java - 如何在不获取 StackOverflowException 的情况下在 Java 中序列化图形?

    java - 在网页上以良好的图形可视化用 Java 编写的图形数据结构的最佳方法是什么?

    java - 创建共享对象池的享元设计模式

    testing - 四种模式在自动化框架中的使用

    neo4j - 如何重命名 Neo4j 中的关系?

    c# - 如何计算数据库中具有 3 个不同值的列中的数据并将其显示在图形中?

    algorithm - 以最少的时间访问图中的 N 条特殊边

    c# - 当在 "what-if"工具中使用实例时,不可变类是否合适?