我们公司这周在进行一场热烈的辩论。我们正在创建一个数据库来存储代理信息,就大部分而言,我们已经制定了模式,但还需要决定如何存储IP地址。一方希望使用4个小整数,每个八位组(octet)一个;另一方则希望使用1个大整数,INET_ATON。
由于这些表将会非常庞大,因此性能至关重要。我处于中间地带,因为在我的世界中,我通常使用 MS SQL 和 4 个小整数。我对存储 IP 地址的这种体积没有足够的经验。
我们将使用 Perl 和 Python 脚本访问数据库,将数据进一步归一化到其他几个表中,以便进行交流、处理等等。
我相信这个社区中有一些人已经做过类似于我们正在做的事情,我很想听听他们的经验和哪个路线是最好的:用1个大整数或4个小整数来存储IP地址。
编辑 - 我们担心的之一就是空间问题,这个数据库将会很庞大,例如每天有 5 亿条记录。因此,我们正在权衡空间问题以及性能问题。
编辑二 - 一些对话已经转向我们将要存储的数据量……这不是我的问题。问题在于哪种方法更适合存储 IP 地址,以及为什么。正如我在评论中所说,我们为一家大型财富 50 强公司工作。我们的日志文件包含用户的使用数据。这些数据反过来将用于安全上下文中的一些指标和驱动几个安全工具。
Google
每天大约有2亿
次点击量。我认为为应对每天5亿
次点击量做准备恰恰是所谓的“过早优化”。 - Quassnoi