在MongoDB中, 数据具有灵活的架构。它与SQL数据库完全不同, 在SQL数据库中, 你必须在插入数据之前确定并声明表的架构。 MongoDB集合不强制执行文档结构。
数据建模中的主要挑战是平衡应用程序的需求, 数据库引擎的性能特征以及数据检索模式。
在MongoDB中设计架构时, 请考虑以下事项
- 始终根据用户要求设计架构。
- 不要在写操作上加入, 而不能在读操作上加入。
- 你要一起使用的对象应合并到一个文档中。否则, 应将它们分开(确保不需要连接)。
- 针对更频繁的用例优化架构。
- 在架构中进行复杂的聚合。
- 你应该复制数据但要有限制, 因为磁盘空间比计算时间便宜。
让我们以一个需要为其网站进行数据库设计的客户为例。他的网站具有以下要求:
【MongoDB中的数据建模】每个帖子都是不同的(包含唯一的标题, 描述和URL)。
每个帖子可以有一个或多个标签。
每个帖子都有其发布者的名称和喜欢的总数。
每个帖子可以包含零个或多个评论, 并且评论必须包含用户名, 消息, 数据时间和喜欢。
对于上述要求, RDBMS中至少需要三个表。
文章图片
但是在MongoDB中, 模式设计将只有一个集合帖子, 并且具有以下结构:
{
_id: POST_ID
title: TITLE_OF_POST, description: POST_DESCRIPTION, by: POST_BY, url: URL_OF_POST, tags: [TAG1, TAG2, TAG3], likes: TOTAL_LIKES, comments: [
{
user: 'COMMENT_BY', message: TEXT, datecreated: DATE_TIME, like: LIKES
}, {
user: 'COMMENT_BY', message: TEST, dateCreated: DATE_TIME, like: LIKES
}}}
推荐阅读
- MongoDB删除集合
- MongoDB创建集合
- MongoDB Shell
- MongoDB创建数据库
- MongoDB相对于RDBMS的优势
- MongoDB数据类型
- 如何在Windows上安装MongoDB
- NoSQL数据库
- MongoDB的历史