我有这种类型的数据库来实现 盘旋点是各个城市。
人们从一个城市旅行到另一个城市。 从一个城市到另一个城市旅行的人数由边缘的重量显示。
圈G:是我的目标城市
我想要达到什么目标?
例如:
200人从A-> F ..!
100使用路径F-> A
剩下的只有20个用户才能达到目标" G"
所以,达到" G"从右边是80
“G”点需要哪些信息
80 people from right side = 20(from A->F->G) + 60 (from A->D->F->G)
这是一张小图。 我想在具有1000多个节点的图表上实现此功能?
目前我正在采取的方法来解决这个问题(使用ArangoDB ):
我正在创建One Vertex集合和One Edge集合。
每个城市(A,B,C,D)都是同一集合内的文件。
我正在为每个旅行的人保存完整的上一条路径。
例如约翰正在从A-> G
旅行我在F为John保存的详细信息:{" John:A_D_F"}
我在G市为约翰保存的详细信息:{" John:A_D_F_G"}
我正在为每一个旅行的人重复这个。
简而言之,我想在图表中的任意点(城市)实现漏斗。
在Arango或其他大数据存储中,此类图表的数据建模有哪些更好的方式,哪种大数据存储最佳?
谢谢..!
答案 0 :(得分:2)
您的结论是正确的,将此视为图形问题。无论您想使用哪种技术堆栈,我建议您按照这些链接中列出的一些最佳实践/示例对数据进行建模
https://neo4j.com/developer/guide-data-modeling/
https://www.infoq.com/articles/data-modeling-graph-databases
关于扩展到1000甚至10000个节点图
,有很多经过验证的选择以下是建模的一种可能方法:
a]将城市和人员视为节点
b]然后将City-to-City路径建模为Relationships
c]然后再添加Person-has-travelveled-to-City作为关系
d]如果您需要对关系进行排序,可以使用“人对城”关系中的“属性”
下一步是
希望这有帮助