【发布时间】:2021-05-15 01:11:57
【问题描述】:
使用一个经典的例子 - 假设我们有一个应用程序,它有一个 Courses 集合和一个 Students 集合,而每个学生可以参加很多课程,每个课程可以有很多参与者。
我们需要查询一个学生有效参加的所有课程,但我们还需要查询参加单个课程的学生。
我知道使用关系数据库来处理这将是最佳解决方案,但是现在我只想使用一种类型的数据库,即 MongoDB,现在我想问这种架构设计是否可以有效地工作?使用它的优缺点是什么?哪种设计会更好?
User: {
_id,
//...properties
}
Course: {
_id,
//...properties
}
CourseParticipate: {
_id,
userId,
courseId,
//...properties
}
CourseAdmin: {
_id,
userId,
courseId,
//...properties
}
现在我喜欢这种设计,因为将来如果我有能力使用多个数据库,将这些集合转移到关系数据库会很容易(或者不是?),我也喜欢它,因为它可以快速写入数据并删除对象之间的关系,但它会使读取查询慢一点(或很多?),正如我所见。
因为之前在网上没见过这种设计,所以已经知道有更好的解决方案了(希望不要听到真心的cmets和回答,因为我是新人)。
我也想听听 Neo4j 是否可以处理这个问题?以及哪些关系数据库在 MongoDB 旁边效果最好?
文档和文章的链接将非常有帮助! 谢谢!
【问题讨论】:
标签: database mongodb database-design relational-database