让我们先放一些数字:列表中最大的是大约 100M 条记录。(但预计会增长到 500 个)。其他列表(其中 5-6 个)以百万计,但在可预见的未来将少于 1 亿。这些总是基于单个 id 连接。并且从不使用任何其他参数。加入此类列表的最佳算法是什么?
我在考虑分布式计算。有一个好的散列(循环散列类型,您可以在其中添加一个节点并且没有很多数据移动)功能并将这些列表分成几个较小的文件。而且,由于它们总是以公共 id 加入(我将对其进行散列),因此归结为加入小文件。也许为此使用 nix join 命令。
数据库(至少是 MySQL)将使用合并连接加入(因为它将位于主键上)。这会比我的方法更有效吗?
我知道最好的测试和查看。但考虑到这些文件的庞大,它相当耗时。我想做一些理论计算,然后看看它在实践中是如何公平的。
对这些或其他想法的任何见解都会有所帮助。我不介意它是否需要更长的时间,但更希望最好地利用我拥有的资源。不要有很大的预算:)