我正在寻找一种有效的方法来比较两个太大而无法放入内存(1M 或更多)的数据集。我将它们都放在 MySQL 中作为表。我试图找出服务器和客户端之间的区别,并在客户端上找到要更新、创建和删除的内容。我可以在之前对数据进行排序或保持排序。
input:
server = [
{:id => 7, :rev => 1, :uuid => 111},
{:id => 8, :rev => 3, :uuid => 222},
{:id => 9, :rev => 1, :uuid => 333},
]
client = [
{:id => 8, :rev => 2, :uuid => 222},
{:id => 9, :rev => 1, :uuid => 333},
{:id => 6, :rev => 1, :uuid => 444},
]
expected output:
create: [{:id => 7, :rev => 1, :uuid => 111}]
update: [{:id => 8, :rev => 3, :uuid => 222}]
delete: [{:id => 6, :rev => 1, :uuid => 444}]
我正在寻找一种方法来划分这个差异问题并将其分布在几个工人/节点上。我可以使用不同的数据存储,如果它可以在数据存储上而不是在 ruby 或 c 中完成,那就太好了。建议?