mysql—在高度连接的大数据场景中,“connectby”或“with recursive”是否可用?

2vuwiymt  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(507)

想象一下以下大数据情况:
sql数据库中存储了100万人。他们每个人正好跟着另外50个人。
所以有这样一个表(有5000万个条目):

person1 | person2
0       |       1
0       |   2.341
0       | 212.881
..      |      ..
999.999 | 421.111
999.999 | 891.129
999.999 | 920.917

有没有可能使用甲骨文的 connect by 或者mysql的 WITH RECURSIVE 找出一个人和另一个人之间是否有联系(可能是通过中间人)?
这些查询真的会永远运行吗(数据高度连接)
或者有没有办法限制查询的深度(在这种情况下:只有<3个中介机构)
上下文:这个例子将用来解释为什么一个图形数据库在某些情况下会更好,我想说明这个问题是否可以用sql来解决。

k0pti3hp

k0pti3hp1#

有没有可能使用甲骨文的 connect by 或者mysql的 WITH RECURSIVE 找出一个人和另一个人之间是否有联系(可能是通过中间人)?
对。这就是这些功能的目的。
这些查询真的会永远运行吗(数据高度连接)
与所有sql查询一样,适当的索引对于良好的性能至关重要。
至于“forever”,oracle检测层次结构中的循环(也就是说,当数据打破有向无环图的假设时)
递归公共表表达式(在大多数非oracle表服务器中)的递归可以受到级别的限制。看到这个了吗https://dba.stackexchange.com/questions/16111/cte-running-in-infinite-loop.
用图形数据库做这种工作更好吗?那是意见的问题。
你还需要环路检测。
在生产中,将数据从一个数据库移动到另一个数据库,或者在多个地方保存副本,成本很高。因此,实用的设计选择将受到系统存储数据的位置的影响。

相关问题