GeoIP 查找——选项和数据持久性

Posted

技术标签:

【中文标题】GeoIP 查找——选项和数据持久性【英文标题】:GeoIP look-up -- options and data persistence 【发布时间】:2012-11-30 22:24:51 【问题描述】:

尝试确定 GeoIP 查找的最佳解决方案。

选项似乎是: 1. 下载高级数据库并进行查找 2. 下载免费数据库并进行查找 3. 点击免费的 Web API 4.点击付费网络API。

我们将不得不在用户登录时执行此操作,因此会经常发生。

一个重要的问题是 IP 地址位置是否会改变,如果改变,频率如何。例如,我们可以使用免费的 Web API 构建自己的数据库,存储它返回给我们的每个 IP 位置,但这只有在它们相对持久的情况下才可行。

此外,我们正在查看的付费数据库每月更新一次,这可能还不够,具体取决于这些更改的频率/频率。

谢谢!

【问题讨论】:

【参考方案1】:

对于某个位置的持久性 IP 的程度无法保证。实际上有一些公司充当 IPv4 地址的经纪人,因为我们的 IPv4 地址已经开始不足。 MIT 拥有的 18.0.0.0/8 可能已经在一个地方存在了 30 年。其他人可能移动得更多。

就维护来自某种 Web API 的地址的本地缓存而言,我建议不要这样做。如果你做一个 1:1 IP->lat/long 表,那么你说的是总共 2^32 个条目,每个条目 50 个字节 = 200GB。显然,这些可以被压缩到子网等中,但现在你开始做 GeoIP 公司非常擅长的工作并且有一个重要的开端。 Debian 附带的免费 IP->Country 数据库在我的机器上只安装了 5MB。

程序员生产力的角度来看,在速度和可靠性方面很难击败具有客户端库的可下载数据库。

MaxMind 拥有 IP->Country 和 IP->City 的免费数据库,但您必须在您的网站/产品上注明“此产品包含 MaxMind 创建的 GeoLite 数据,可从 http://www.maxmind.com 获取”商业决策胜于技术决策。

【讨论】:

以上是关于GeoIP 查找——选项和数据持久性的主要内容,如果未能解决你的问题,请参考以下文章

键->值数据都有哪些好的、快速的持久存储选项? [关闭]

机器学习模型持久性选项

Java中的持久性[关闭]

可持久化线段树--主席树

C# [持久保存和加载]

详解redis持久化