让我们先说一些数字: 列表中最大的是大约100M的记录。 (但预计会增长到500)。其他列表(其中5-6个)以百万计,但在可预见的未来将小于100M。 这些始终基于单个ID加入。并且从不与任何其他参数。 什么是加入此类列表的最佳算法?
我正在考虑分布式计算。有一个很好的哈希(循环哈希种类,你可以添加一个节点,并没有很多数据移动)功能,并将这些列表拆分成几个较小的文件。因为,他们总是加入共同的id(我将要哈希),它将归结为加入小文件。也许可以使用nix join命令。
DB(至少MySQL)将使用合并连接加入(因为它将在主键上)。这会比我的方法更有效吗?
我知道最好测试一下。但考虑到这些文件的大量,它非常耗时。我想做一些理论计算,然后看看它在实践中是如何展开的。
对这些或其他想法的任何见解都会有所帮助。我不介意它需要稍微长一点,但更喜欢我拥有的资源的最佳利用。没有庞大的预算:)
答案 0 :(得分:5)
使用数据库。它们是为执行连接而设计的(当然还有正确的索引!)