【发布时间】:2023-03-29 04:35:02
【问题描述】:
我有一个 MSSQL 数据库,我正在考虑将其移植到 CouchDB 或 MongoDB。我在 SQL 数据库中有一个多对多的关系,它在外部参照表中有数十万行,对应于关系每一侧的表中的数万行。 CouchDB 和/或 MongoDB 是否能够处理这些数据,以及格式化相关文档以进行高性能查询的最佳方式是什么?非常感谢。
【问题讨论】:
标签: mongodb many-to-many couchdb
我有一个 MSSQL 数据库,我正在考虑将其移植到 CouchDB 或 MongoDB。我在 SQL 数据库中有一个多对多的关系,它在外部参照表中有数十万行,对应于关系每一侧的表中的数万行。 CouchDB 和/或 MongoDB 是否能够处理这些数据,以及格式化相关文档以进行高性能查询的最佳方式是什么?非常感谢。
【问题讨论】:
标签: mongodb many-to-many couchdb
对于 CouchDB,我强烈建议阅读 this article 关于实体关系。
我在 CouchDB 中要注意的一件事是要小心尝试“规范化”非关系数据模型。基于文档的存储为您提供了极大的灵活性,将所有内容抽象为您能想到的尽可能多的“文档类型”很少是最好的主意。很多时候,最好将大部分数据保留在同一个文档中,除非您有明确的案例存在单独的实体。
多对多关系的一个常见用例是实现标记。 articles 介绍了您可以在 CouchDB 中使用的不同方法。它可能适用于您的要求,也可能不适用,但可能值得一读。
【讨论】:
由于 MongoDB 的“集合”模型类似于您当然可以维护的表 专用映射集合内的 m:n 关系(使用来自其他集合的引用文档的相关文档的 _id)。
如果可以:考虑使用嵌入式文档重新设计您的应用程序。
http://www.mongodb.org/display/DOCS/Schema+Design
一般来说:在使用 MongoDB 时,请尝试关闭对 RDBMS 的记忆。 盲目地将数据库设计从 RDBMS 复制到 MongoDB 既没有帮助,也没有建议,一般也不会奏效。
【讨论】: