如何在Azure中存储(和查询)MaxMind GeoIP2数据库?

时间:2016-05-27 10:39:18

标签: azure maxmind

Azure Web App中,我需要有效地查询MaxMind GeoIP2 City Database(由于查询量和延迟要求,我们无法使用MaxMind的其余API)。

我想知道存储db(二进制MMDB格式,通过official .NET api访问)的最佳方法是什么,这样可以轻松更新,停机时间最短(我们将订阅每月更新)并仍然需要花费有效的Azure存储和事务。

显然阻止blob是可行的方法,但我不确定每月更新以及GeoIP2 api在内存中加载整个db的事实(我不知道这对Web App是否有问题) ,如果我需要一个网络工作者来保持它或我需要别的东西),但实际上我还不知道文件有多大。

什么是最具成本效益的解决方案,可以在大量音量下保持低延迟?

1 个答案:

答案 0 :(得分:1)

根据API docs,您必须在文件系统中提供数据库(API对Azure存储和相关REST API一无所知)。因此,无论您在哪里永久存储它,您都需要将它放在某个磁盘上。

我不知道数据库占用空间有多大,但Web应用程序,云服务(Web /工作者角色)和虚拟机(无论是Linux还是Windows)都有本地磁盘。并且您具有对这些磁盘的读/写访问权限。因此,您需要从某处将数据库二进制文件(或csv)复制到本地磁盘。此时,在初始化SDK时,您需要创建DatabaseReader并将其指向本地下载的数据库文件副本。

您提到将数据库存储在blob存储中。没有什么可以阻止你这样做,只是将副本下载到本地磁盘。并且没有什么可以阻止你在多个blob中存储多个版本。注意:您还可以利用Azure文件存储(SMB共享)。你选择哪一个取决于你。

就最具成本效益的解决方案而言:您需要自己进行定价测试,以了解哪些方法最有效。您还需要评估您选择的给定大小的VM /角色实例/ Web App可用的RAM量。您在问题中提到了Web应用程序:Web应用程序实例从0.5GB扩展到14GB,具体取决于您选择的层级(同样,您需要对此进行评估)。