我有 4 个 IP 地址源,我想将它们存储在 SQL Server 中,并允许按来源国家/地区代码分类的范围按国家/地区在排除列表中创建。
为此我有两张桌子。
IP地址范围
国家代码
我需要知道的是,如果此数据返回到客户端然后缓存以供快速查询,那么存储返回数据以查询范围内的特定 IP 地址的最佳方式是什么。我想知道提供的 IP 地址是否在列表中。
该列表位于数据库中的原因是为了便于存储。
我想缓存然后在客户端使用数据的原因是我听说在 trie 结构中搜索 IP 地址更快。所以,我认为我需要从数据库中获取列表,以快速搜索的结构存储在缓存中。
A) 用于存储地址的 SQL 结构和 b) 用于搜索 IP 地址的代码中的任何帮助。
我知道一个代码项目解决方案,它有一个用于搜索的代码算法,不确定如何将其与存储方面混合。
理想情况下不使用第三方库。代码必须在我们自己的服务器上。
我已经按照国家/地区进行了过滤,就像您所描述的那样。
然而,经过一段时间的实验,我发现用 SQL 无法以高性能的方式完成它。这就是为什么 IP 数据库喜欢this one(我正在使用的)提供一个二进制数据库,它是much更快,因为它针对此类数据进行了优化。
他们甚至明确表示:
请注意,针对 CSV 进行的查询
导入到 SQL 数据库的数据可以
最多需要几秒钟。如果
性能是一个问题,二进制
格式速度更快,并且可以处理
每秒数千次查找。
另外,他们甚至还给你the code来查询这个数据库。
我在中等流量的生产网站中使用它,过滤每个请求,没有性能问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)