【发布时间】:2009-05-11 01:06:47
【问题描述】:
好的,我会尽量保持简短、甜蜜和中肯。
我们通过将 MASSIVE CSV 文件上传到我们基于 PHP 的 CMS 来对我们的系统进行大规模的 GeoIP 更新。这个东西通常有超过 100k 的 IP 地址信息记录。现在,对这些数据进行简单的导入根本不是问题,但我们必须对我们当前的区域 IP 地址映射进行检查。
这意味着我们必须验证数据,比较和拆分重叠的 IP 地址等。并且必须对每条记录进行这些检查。
不仅如此,我刚刚创建了一个字段映射解决方案,它允许其他供应商以不同的格式实施他们的 GeoIP 更新。这是通过将规则应用于 CSV 更新中的 IP 记录来完成的。
例如,规则可能如下所示:
如果 'countryName' == 'Australia' 然后发送到 'Australian IP Pool'
可能需要运行多个规则,并且每个 IP 记录都必须全部应用它们。例如,针对 10 条规则检查 10 万条记录将是 100 万次迭代;不好玩。
我们发现 10 万条记录的 2 条规则最多需要 10 分钟来处理。我完全意识到这里的瓶颈是成功导入必须发生的迭代的剪切量;只是不完全了解我们可能需要加快速度的任何其他选项。
有人建议在服务器端将文件拆分为块。我不认为这是一个可行的解决方案,因为它为已经很复杂的系统又增加了一层复杂性。该文件必须被打开、解析和拆分。然后脚本也必须遍历这些块。
所以,问题是,考虑到我刚刚写的内容,加快这个过程的最佳方法是什么?不幸的是,只为这个工具升级服务器的硬件不是一个选项,但它们一开始就是相当高端的盒子。
没有我想象的那么短,但是是的。哈普斯? :(
【问题讨论】: