Java 和 GeoLite 数据库:如何以生产方式使用 GeoLiteCity.dat?

Posted

技术标签:

【中文标题】Java 和 GeoLite 数据库:如何以生产方式使用 GeoLiteCity.dat?【英文标题】:Java and GeoLite database: How to use GeoLiteCity.dat in a production way? 【发布时间】:2014-06-16 22:07:42 【问题描述】:

我下载了GeoLite City数据库,我可以通过Java访问该数据库以获取IP地址对应的位置信息,方法如下:

File file = new File("C:\\GeoLiteCity.dat");
LookupService lookup = new LookupService(file, LookupService.GEOIP_MEMORY_CACHE);
Location location = lookup.getLocation("123.123.12.34");

我的问题:在生产环境中,以上述方式为每个 IP 地址打开文件显然是不可取的。如何以生产方式使用此数据库(假设使用 GeoLiteCity.dat)?

非常感谢任何输入或指针。

感谢和问候!

【问题讨论】:

【参考方案1】:

两个建议:

1. Make the LookupService static (lookup) and available in the memory (Singleton)
2. Load this file (or CSV file version) into a database (New tables, columns etc...)

与仅将服务加载到内存中并在其上进行搜索相比,我不确定数据库是否会显着提高性能。使用这些 GeoLite 每周文件发布,也会有额外的清理/加载/索引数据库的开销。

【讨论】:

mysql [链接] ***.com/questions/22282218/… 对于 1),组件在作为静态加载之前必须是线程安全的。对于 2),您可以从 lite.ip2location.com 下载带有邮政编码的原始数据库。

以上是关于Java 和 GeoLite 数据库:如何以生产方式使用 GeoLiteCity.dat?的主要内容,如果未能解决你的问题,请参考以下文章

GeoLite City如何使用,如何获取startIpNum和endIpNum

PHP - 如何在 MySql 中使用 GeoLite2 IP CSV 数据库?

如何从 GeoLite2 获取 isoCode?

如何从 geolite2 块中了解网络长度

在 SQL Server 中查询 Maxmind GeoLite2 City Blocks csv 以获取 IPv6 和 IPv4 地址的 geoname_id

如何在 Piwik 3.0.2(Motomo 旧版本)上安装 Geolite2?