大数据的数据建模

时间:2016-09-13 10:10:07

标签: graph hive google-bigquery arangodb bigdata

enter image description here

我有这种类型的数据库来实现 盘旋点是各个城市。

人们从一个城市旅行到另一个城市。 从一个城市到另一个城市旅行的人数由边缘的重量显示。

圈G:是我的目标城市

我想要达到什么目标?

  1. 达到" G"?
  2. 的总人数
  3. 他们遵循什么样的道路来达到目标​​" G"?
  4. 例如:

    • 200人从A-> F ..!

    • 开始
    • 100使用路径F-> A

    • 返回到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或其他大数据存储中,此类图表的数据建模有哪些更好的方式,哪种大数据存储最佳?

    谢谢..!

1 个答案:

答案 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]如果您需要对关系进行排序,可以使用“人对城”关系中的“属性”

下一步是

  • 在您选择的Graphdb中创建这些
  • 创建示例数据集
  • 运行查询并检查答案
  • 查看是否需要优化模型或数据

    希望这有帮助