neo4j中基于时间的数据

时间:2012-02-24 15:03:18

标签: neo4j

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

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

很想知道你们的想法,任何评论和想法 赞赏。

2 个答案:

答案 0 :(得分:16)

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

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

Time Scale Graph

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

红色路径跟踪的标识为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查询模拟了从蓝色节点到透明彩色节点的最短路径遍历。这是一个位字符串,表示可以按事件排序的时间标识,具体取决于它在时间标度事件子图上的位置。

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

Time Scale Event Subgraph

上面的图像表示连接到一系列事件(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以查看时间尺度事件子图的更多详细信息和实际示例。

答案 1 :(得分:6)

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