【问题标题】:Time-based data in neo4jneo4j 中基于时间的数据
【发布时间】:2012-03-15 00:44:39
【问题描述】:

有关于图形数据库的问题,有人可以帮我吗?我是 在mysql中处理相当多的数据,每天大约有5M条记录由a发送 路由器,如设备、接入点、无线网桥。数据是 通常是健康数据、gps 等……这些是车辆上的设备。怎么做 您在图形数据库中处理基于时间的数据?有没有人申请 neo4j 用于基于时间的数据?很高兴知道您如何查询 间隔以及如何进行建模。

我想我可以为每次接收数据创建一个节点 每次设置的属性都像改变gps,健康?这将是一个时间 基于图表 - 这听起来对吗? 有 5M 行的 mysql 表现还不错 - 但随着路由器变得新 功能新数据通过,我需要创建新模型 再次,这还不错但不是很好。 我想要一些半结构化的东西,使相关性不同 诸如用户被踢出的原因是因为接入点 与路由器关联的已关闭。我通常的疑问是提出 警报说其中一个设备已关闭或是否有减少 吞吐量等。neo4j 会帮助我结合这些关系吗 比mysql好吗?

很想知道你们的想法,任何 cmets + 想法 赞赏。

【问题讨论】:

  • 深入查询半结构化数据,请参阅 Apache Solr。如需将规则(动态)应用于数据,请参阅 Drools。

标签: neo4j


【解决方案1】:

您还可以查看图表本身的索引,有关时间线示例,请参阅 http://blog.neo4j.org/2012/02/modeling-multilevel-index-in-neoj4.html。否则,Lucene 默认与 Neo4j 一起打包,其工作方式与 Solr 大致相同。

【讨论】:

    【解决方案2】:

    有关如何使用时间尺度进行基于时间的图形存储的教程,请参阅以下 GraphGist。

    http://gist.neo4j.org/?github-kbastani%2Fgists%2F%2Fmeta%2FTimeScaleEventMetaModel.adoc

    在上面建模的时间尺度图中,从蓝色节点到透明颜色节点的最短路径遍历构成了以位为单位的唯一时间标识。

    红色路径追踪的身份是0→1→0→1→0→0。反向路径是 0→0→1→0→1→0 或简单的 001010,以位为单位的唯一标识。

    MATCH p=shortestPath((n1:d)-[:child_of*]->(n2:y))
    WHERE n1.key = 'd10'
    RETURN DISTINCT reduce(s = '' , n IN nodes(p)| n.tempo + s) AS TimeIdentity
    ORDER BY TimeIdentity
    

    上面的 Cypher 查询模拟了从蓝色节点到透明颜色节点的最短路径遍历。这是一个位字符串,表示时间标识,可以根据事件在时间尺度事件子图上的位置按事件排序。

    请看下面的时间尺度事件子图:

    上图表示与一系列事件 (met) 相关的时间尺度。事件,在图像中表示为三角形节点,也连接到特征层次结构(John、Sally、Pam、Anne),然后进一步泛化为类(Person)。

    现在您可以像我之前列出的那样运行 Cypher 查询,然后按位字符串的发生时间对事件进行排序。注意:您应该将时间戳应用于检索实际时间的节点。每个蓝色节点代表一个时间分隔的事件,但不一定是实际时间,只是表示按顺序发生的事件。

    MATCH p=(p0:person)-[:event]->(ev)-[:event]->(p1:person)
    WITH p, ev
    MATCH time_identity = (d0:d)<-[:event]-(ev)
    WITH d0, p
    MATCH p1=(d0)-[:child_of*]->(y0:y)
    RETURN extract(x IN nodes(p)| coalesce(x.name, x.future)) AS Interaction, reduce(s = '' , n IN nodes(p1)| n.tempo + s) AS TimeIdentity
    ORDER BY TimeIdentity
    

    时间尺度中的层次结构允许您对事件进行分组并查看更高级别的表示。因此,选择橙色节点下方的所有绿色节点会选择 4 个可能的事件(由蓝色节点表示)。

    如果您有任何问题,请告诉我,并确保访问 GraphGist 以查看更多详细信息和时间尺度事件子图的实际示例。

    【讨论】:

    • 谢谢,但我很难理解时间标识字符串是如何计算的。请问有没有关于这种方法的深入细节?
    • 最短路径算法会处理它,因为您是从下到上。如果你要走另一条路,你会遇到歧义。用手指追踪从蓝色节点到透明节点的最短路径,您会发现每跳只有一个选项。反过来,您会看到每跳有两个选项。位串本身只是一个时间间隔的地址。就像一个哈希表。
    • 浅蓝色、绿色和黄色节点在时间图上代表什么。那是某种分组/多级表示吗?你有插入的例子吗?
    • 是的,不同颜色的节点代表二叉树中的深度级别。我计划更新 GraphGist 示例以使用循环来增加树的深度。另外,请参阅 gist.github.com/kbastani/8519557 了解 Cypher 中的多级日历时间表。
    • 我确实了解了总体思路,为此我感谢@KennyBastani。我计划在我的论文中使用lumen.hendyirawan.com 来表示关于 Neo4j 图中事件顺序的知识。我一定会把你的要点归功于你。
    猜你喜欢
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多