0

我正在做一个我们需要做的项目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用上面提到的列创建一个吗?或者我应该将上表标准化为两个或三个?如果有的话,我是否需要在任何列上创建索引?

基本上我想知道我应该如何设置这个表的模式,这样查找就不会花费太多时间来处理我们预期的流量。我们将进行查找的服务应该非常快地返回响应。

4

1 回答 1

0

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

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

  1. 一个面向文档的存储,用于存储/提供来自数据提供者的原始数据。Tokyo-cabinet、Cassandra 或 HBase 之一在这里可以做得很好。

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

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

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

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

于 2013-03-12T02:22:05.570 回答