【发布时间】:2010-11-09 16:24:50
【问题描述】:
本周我们在办公室进行了一场健康的辩论。我们正在创建一个 Db 来存储代理信息,除了我们应该如何存储 IP 之外,大多数情况下我们已经制定了架构。一个阵营想要使用 4 个 smallint,一个用于每个八位字节,另一个想要使用 1 个 big int,INET_ATON。
这些表将非常庞大,因此性能是关键。我在中间,因为我通常在我的世界中使用 MS SQL 和 4 个小整数。我对这种类型的卷存储 IP 没有足够的经验。
我们将使用 perl 和 python 脚本来访问数据库,以进一步将数据标准化为其他几个表,以供热门话题、有趣的流量等使用。
我确信社区中有些人已经做了一些与我们正在做的事情类似的事情,我很想听听他们的经验以及哪个路由是最好的,1 个大整数或 4 个小整数作为 IP 地址。
编辑 - 我们关注的一个问题是空间,这个数据库将非常庞大,每天有 500,000,000 条记录。因此,我们正在尝试权衡空间问题和性能问题。
编辑 2 一些话题已经转向我们要存储的数据量……这不是我的问题。问题是哪种方式是存储 IP 地址的最佳方式以及为什么。就像我在 cmets 中所说的那样,我们为一家大型财富 50 强公司工作。我们的日志文件包含来自我们用户的使用数据。反过来,这些数据将在安全上下文中用于驱动某些指标并驱动多个安全工具。
【问题讨论】:
-
@OhioDude:就目前而言,
Google每天的点击量约为200,000,000。我认为每天为500,000,000的点击做准备正是所谓的“过早优化”。 -
是的,但是对网页的一次点击不会在日志文件中产生一行。网站上的每个图像和资源在代理日志中都有自己的行。
-
即使您每页有 100 个图像/css/javascript 文件(不考虑这些资源往往会被浏览器大量缓存),您仍然只有一两个订单与谷歌相差甚远。存储 IP 号码将是您的小问题之一......
-
这听起来不像是 SQL 数据库的最佳选择。您能否提供有关为什么要使用 SQL 数据库而不是其他存储方法的任何信息?
-
@SpoonMeiser:一天 500M 行大约每秒 6K 行,这不是不可能的,只要它们被正确批处理。
标签: python mysql perl ip-address