algorithm - 加入非常大的列表

标签 algorithm data-structures join distributed-computing

<分区>

让我们先放一些数字: 列表中最大的大约有 100M 条记录。 (但预计会增长到 500 个)。其他列表(其中 5-6 个)以百万为单位,但在可预见的 future 将少于 1 亿。 这些总是基于单个 id 连接。并且从不使用任何其他参数。 加入此类列表的最佳算法是什么?

我考虑的是分布式计算。具有良好的散列(循环散列类型,您可以在其中添加节点并且没有大量数据移动)功能并将这些列表拆分为几个较小的文件。而且,由于它们总是连接到公共(public) ID(我将对其进行哈希处理),因此可以归结为连接到小文件。也许为此使用 nix 连接命令。

数据库(至少是 MySQL)将使用合并连接进行连接(因为它将在主键上)。这会比我的方法更有效吗?

我知道最好去测试看看。但是考虑到这些文件的数量级,它相当耗时。我想做一些理论计算,然后看看它在实践中如何公平。

对这些或其他想法的任何见解都会有所帮助。我不介意它是否需要更长的时间,但我更愿意最好地利用我拥有的资源。预算不多 :)

最佳答案

使用数据库。它们是为执行连接而设计的(当然有正确的索引!)

关于algorithm - 加入非常大的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3529198/

相关文章:

c++ - 具有共线点的礼品包装算法

algorithm - 可能的NxN个矩阵,每行和每列中t 1个,对角线没有?

haskell - 如何将函数映射到嵌套数据结构的一部分?

php - 使用 Eloquent 在 mysql 中左连接后分别获取相同的命名列

sql - 从两个表中选择以查找基于生效日期的增值税税率

python - 在多个不同名称的列上合并两个 Pandas 数据框

algorithm - 将一个链表拆分成3个链表

java - 在 Java 中将数据从 HashSet 移动到 ArrayList

python - python3中两个排序链表的交集?

algorithm - 如何用一个数组实现 3 个堆栈?