neo4j中基于时间的数据

ope*_*eek 24 neo4j

对图表数据库有疑问,有人能帮帮我吗?我在mysql中处理了大量关于设备,接入点,无线网桥等路由器每天发送的5M记录的数据.数据通常是健康数据,gps等......这些是车辆上的设备.如何处理图数据库中基于时间的数据?有没有人将neo4j用于基于时间的数据?知道如何查询间隔以及如何进行建模会很棒.

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

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

Ken*_*ani 16

有关如何使用时间刻度执行基于时间的图存储的教程,请参阅以下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
Run Code Online (Sandbox Code Playgroud)

上面的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
Run Code Online (Sandbox Code Playgroud)

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

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


Pet*_*uer 6

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