IP地址查找的表模式

时间:2013-03-12 01:54:26

标签: mysql database geolocation ip-address lookup

我正在开展一个我们需要做IP Address lookups的项目。因此,我们已经获得了数据集,现在接下来的步骤是将这些数据集填充到表中。然后让一些服务设置接受IP Address as an input,然后在IP Address上查找数据库。所以下面的数据集看起来像 -

ip_address      country region  city           metro-code   latitude    longitude   postal-code   country-code   region-code    city-code   continent-code  country-code

24.32.116.116   usa       tx    clarksville    623           33.6103    -95.0498    75426            840           44             34918            6            us
65.29.108.232   usa       mi    novi           505           42.4637    -83.4604    48375            840           23             4339             6            us
66.169.99.69    usa       tx    ft worth       623           32.7016    -97.3823    76109            840           44             771              6            us
72.70.100.111   usa       ma    peabody        506           42.5332    -70.9726    1960             840           22             1392             6            us
174.252.116.137 usa       va    oakton         511           38.8892    -77.3222    22124            840           47             3860             6            us
68.55.144.242   usa       md    pasadena       512           39.1276    -76.5125    21122            840           21             4358             6            us
174.252.83.27   usa       pa    lancaster      566           40.0459    -76.3542    17603            840           39             333              6            us
174.78.192.31   usa       ga    warner robins  503           32.5958    -83.6384    31088            840           11             5052             6            us
98.192.146.235  usa       fl    panama city    656           30.1804    -85.5598    32404            840           10             671              6            us
71.192.181.20   usa       ma    springfield    543           42.1187    -72.5483    1109             840           22             967              6            us
76.183.54.227   usa       tx    dallas         623           32.7202    -96.6769    75217            840           44             77               6            us
69.62.143.140   usa       ca    granite bay    862           38.7442    -121.191    95746            840           5              49451            6            us
69.142.76.32    usa       nj    penns grove    504           39.707     -75.4467    8069             840           31             2335             6            us
70.173.54.93    usa       nv    las vegas      839           36.2059    -115.225    89108            840           29             173              6            us
98.242.8.222    usa       ca    fresno         866           36.7968    -119.883    93722            840           5              19               6            us

问题陈述: -

我们预计100 Millions calls每天IP Address lookup周围的流量。

此数据集将是适用于所有国家/地区的全球数据集。我们计划将这些数据集存储在MySql database In Memory Database这里。

现在我的问题是我应该只使用上面提到的列创建single table吗?或者我应该将上表规范化为两三个?我是否需要在任何列上创建索引。?

基本上我试图知道如何为此表设置架构,以便查找不会花费那么多时间来处理我们期望的流量。我们将进行查找的服务应该非常快速地返回响应。

1 个答案:

答案 0 :(得分:0)

根据您的数字,我会说您正在看3-5k / s峰值,超过40GB。假设您感兴趣的查询是IP->记录,我建议不要直接针对mysql运行。

如果我设计你的系统,我会计划:

  1. 面向文档的商店,用于存储/提供数据提供者的原始数据。其中一个东京内阁,Cassandra或HBase,在这里可以做得很好。

  2. 一个完全规范化(可能是星型模式)的mysql实例,用于规范数据以实现QA目的。

  3. 一个memcached或类似的分布式内存记录缓存,通过轻量级的Web服务器垫片提供数据。

  4. 后QA数据可以直接从mysql提供给缓存,也可以从doc-store中存储的“clean”属性提供。后者可能更可取,除非您可能需要针对商店执行常规的临时相关查询,在这种情况下,您可能最好将时间和服务器资源专用于mysql。

    坦率地说,您不希望每个事务执行数据库查询。