我刚刚获得了一大堆文本文件(总共8 GB),其中包含美国境内的所有地址范围。该集合包括:
929个ZIP + 4个文件,每个文件包含唯一的邮政地址 三位邮政编码。例如,文件606仅包含 具有以606开头的五位邮政编码的地址 这些文件中的记录总数约为30 万美元。
城市状态文件,包含邮政编码和邮件的完整列表 他们相应的城市和州。
City State Key可用于将City State文件加入ZIP + 4文件。
鉴于数据库的规模和我缺乏经验,我想在开始这项工作之前获得一些见解。是应该将ZIP + 4文件合并到一个怪物文件中,然后使用邮政编码索引,还是用三位数的邮政编码分隔,以便三位数的邮政编码文件名可以用作块匹配标准?如果是后者,那么这不是一个分层数据库模型吗?我可以使用分层模型来容纳与城市州文件的关系吗?
以上对数据集的描述是极大的简化,但是出于该问题的目的,不需要详细描述。可以找到完整的描述here。
我使用的是Python,还没有决定使用RDBMS。任何帮助将不胜感激!
答案 0 :(得分:1)
如果您打算使用RDBMS,您最终将在一个数据库中拥有所有929个文件的内容,最有可能在表中。我不能告诉你更多关于这种数据库设计的信息,因为你没有提供关于每个文件内容的足够详细信息。确切的布局将是您的3000万行的标准化形式,可能是少数几个表。现代RDBMS的性能足以处理该规模的数据(如果(且仅当)您的索引已正确设置。
没有理由不将这些数据放入RDBMS。我能想到的唯一原因是完全消除了这种子系统的需要,例如:简化解决方案的部署。如果你真的考虑那样做那么是,一组929文件可以充当分层数据库。与RDBMS解决方案的主要区别在于,使用这样一组平面文件,您只能通过一个密钥合理地查询数据 - 即您的邮政编码(或其任何部分)。