【发布时间】:2017-06-26 11:31:47
【问题描述】:
我有一个表,其中包含一对(有时是三元组)id,它们充当链中的某种链接
+------+-----+
| from | to |
+------+-----+
| id1 | id2 |
| id2 | id3 |
| id4 | id5 |
+------+-----+
我想创建一个新表,其中所有链接都聚集成链/系列:
+-----+----------+
| id | familyid |
+-----+----------+
| id1 | 1 |
| id2 | 1 |
| id3 | 1 |
| id4 | 2 |
| id5 | 2 |
+-----+----------+
即将链接中的所有链添加到一个系列中,并为其指定一个 ID。 在上面的示例中,第一个表的前 2 行创建一个族,最后一行创建另一个族。
解决方案
我将使用 node.js 查询大批量的行(每批几千行),处理它们,并将它们插入到我自己的带有家庭 id 的表中。
问题
问题是我有数以万计的 id 对,在最初创建家庭表之后,我还需要随着时间的推移添加新的 id,并且我需要将 id 添加到现有的家庭中
是否有很好的算法可以将成对的数据聚类到家庭/集群中,牢记我的问题?
【问题讨论】:
-
这通常可能需要一个递归分层查询,这是 MySQL 不擅长的,然后是一些更多的奥运会来分配家庭编号。可能,但有点工作。你试过了吗?
-
在过去的几个月里我做过一些非常相似的事情,但是当我在做这件事时,我没有计划地做,只是开始使用大的 json 数组,合并、映射、归约和做了一大堆所说的“奥运会”并最终找到了解决方案。只是现在我不知道如何回溯并再做一次。这就是为什么我现在在这里,试图找出是否有更“官方”的东西可以帮助我在没有电子表格潜水的情况下做到这一点。
-
好的……家谱有固定的深度吗?如果没有,那么您几乎肯定需要为此使用动态 SQL;这高于我的工资等级。
-
我不打算为我执行此操作的单个 sql 查询,我正在考虑从第一个表中查询批量数据,进行一些 node.js 处理,并将其插入新表,可能包含多个语句。
-
不,我可能会尝试完全在数据库中处理这个问题,除非有迫切的理由不这样做。层次结构有多深?
标签: mysql node.js data-science