0

我刚刚获得了一大组文本文件(总共 8 GB),其中包含美国境内的所有地址范围。该文件集包括:

  • 929 个 ZIP+4 文件,每个文件都包含唯一的三位邮政编码的邮政地址。例如,文件 606 将仅包含具有以 606 开头的五位数邮政编码的地址。这些文件中的记录总数约为 3000 万。

  • City State 文件,包含邮政编码及其对应城市和州的完整列表。

City State Key 可用于将 City State 文件加入 ZIP+4 文件。

鉴于数据库的大小和我缺乏经验,我想在开始这项工作之前获得一些见解。ZIP+4 文件应该合并成一个怪物文件,然后使用邮政编码进行索引,还是用三位邮政编码分隔,以便将三位邮政编码文件名用作块匹配标准?如果是后者,那这不是分层数据库模型吗?我可以使用分层模型来适应与 City State 文件的关系吗?

上面对数据集的描述是一个巨大的简化,但出于这个问题的目的,没有必要进行详细的描述。完整的描述可以在这里找到。

我正在使用 Python,但尚未决定使用 RDBMS。任何帮助将非常感激!

4

1 回答 1

1

如果您打算使用 RDBMS,您最终将在一个数据库中拥有所有 929 个文件的内容,很可能在多个表中。我无法告诉您更多有关此类数据库设计的信息,因为您没有提供有关每个文件内容的足够详细信息。确切的布局将是您可能在少数几个表中的 3000 万行的规范化形式。如果(且仅当)您的索引设置正确,现代 RDBMS 的性能足以处理这种规模的数据。

几乎没有理由不将这些数据放入 RDBMS。我能想到的唯一原因是完全消除对此类子系统的需求,例如简化解决方案的部署。如果您真的考虑这样做,那么可以,一组 929 个文件可以充当分层数据库。与 RDBMS 解决方案的主要区别在于,使用这样一组平面文件,您只能通过一个键合理地查询您的数据——即您的邮政编码(或其任何部分)。

于 2013-06-13T22:13:29.683 回答