Neo4j GPS坐标结构日志

时间:2013-10-30 13:46:22

标签: neo4j graph-databases

我正在使用neo4j,让我们称之为社交网络,用户可以在锻炼期间记录自己的位置(想想Runkeeper和Strava)。

我正在考虑如何保存坐标。 让它像node(user)-has->node(workouts)<-is a-node(workout)-start->node(coord)-next->node(coord)-next->....一样是一个好主意,即每个锻炼的坐标链表?

我永远不会在数据库中查询各个点,整个训练过程将被检索。

这是解决这个问题的更好方法吗?

我可以想象图形数据库不是存储此类数据的理想数据库,但我不想添加现在添加另一个数据库的复杂性。

有人可以给我任何见解吗?

1 个答案:

答案 0 :(得分:1)

我建议你把它存储为:

user --has--> workout --positionedAt--> coord

这种设计对我来说更自然,因为你在问题中提到的链表设计只会产生一个非常深的遍历,这可能会让查询烦人。通过这种方式,您可以通过简单地迭代workout顶点上的边来轻松找到特定锻炼的所有坐标。我建议在positionedAt边缘存储日期时间戳,以便您可以轻松地对坐标进行排序。

缺点是,根据您打算拥有多少coord个顶点,您可能最终得到一些胖workout个顶点,但这可能不会真正影响您的用例。我想不出会产生100000坐标(因此有100000个边缘)的锻炼,但也许你可以。如果是这样,我想我可以稍微修改一下我的答案。