0

我正在开发基于 CouchDB 的地理编码应用程序,该应用程序使用以相关方式提供的大型国家数据集。大约 2.5 亿条记录分布在 9 个表中(ER 图可以在http://bit.ly/1dlgZBt查看)。我对 nosql 文档数据库和 CouchDB 非常陌生,并且正在考虑如何对此进行建模。我目前已将数据加载到每个表的 CouchDB 数据库中,其中的类型字段指示它是哪种记录。_id 属性设置为表 [A] 和 [C] 的主键,其他所有内容由 Couch 自动生成。我计划用 Couch 设置 Lucene 以进行索引和全文搜索。X 和 Y 点坐标都存储在表 [A] 中,但要找到这些,我需要使用 [表 E]、[表 B、C 和 D 组合] 和/或 [表 I] 中的数据进行搜索,并带有选项根据[表F]中的数据过滤结果。

我的初衷是创建一个单一的 CouchDB 数据库,它将所有这些表组合成一个单一的结构,其中 [Table A] 作为根,所有相关的表都嵌套在它下面。然后,我将在此基础上构建各种搜索索引,并使用 GeoCouch 设置空间索引以进行反向地理编码。但是,我读过一些文章,建议将查看排序规则作为一种替代方法。

我猜这里的一个重要因素是读取与写入。计划是这些数据永远不会被更新,只会被读取。每个季度都会发布数据,届时现有数据库将被吹走并创建一个新数据库。

我欢迎任何有经验的 Couch 或相关文档数据库用户就如何最好地设置和组织它提出任何建议。

非常感谢您的任何帮助。

4

1 回答 1

0

盖格兰奇,

虽然我远不是文档数据库设计方面的专家,但要认识到文档数据库的关键是,一切都是为了通过将所有必要的信息保存在单个文档中来快速查询。因此,您需要查看您的查询以及您希望如何访问这些数据。例如,我可以很容易地想象一个地理编码应用程序不需要访问每个表中的所有内容来进行最频繁的查询。因此,为了节省带宽,您将制作一个主文档,其中包含您最常关心的主要信息以及其余适当数据的密钥。然后,您可以使用该键获取剩余数据并合并字典,以便在客户端代码中轻松管理。

匿名,安德鲁

于 2014-03-19T18:26:15.220 回答