MongoDB (四) MongoDB 数据模型

摘要:
在MongoDB中的数据有灵活的模式。在相同集合中文档并不需要有相同的一组字段或结构的公共字段的集合,文档可容纳不同类型的数据。MongoDB设计模式的一些考虑可根据用户要求设计架构。重复数据(有限),因为磁盘空间便宜。在模式上做复杂的聚集。例子假设一个客户端需要一个数据库设计,设计一个博客网站,来看看RDBMS和MongoDB架构设计之间的差异。每一个文章内容都有其出版商总数喜欢的名称。上述要求在RDBMS模式设计,将有至少三个表。

在 MongoDB 中的数据有灵活的模式。在相同集合中文档并不需要有相同的一组字段或结构的公共字段的集合,文档可容纳不同类型的数据。

MongoDB设计模式的一些考虑

  • 可根据用户要求设计架构。

  • 合并对象为一个文件,如果要将它们放在一起。否则分开它们(但确保不需要连接)。

  • 重复数据(有限),因为磁盘空间便宜(相比计算时间)。

  • 不需要连接写入,而是读。

  • 优化架构是最常见的用例。

  • 在模式上做复杂的聚集。

例子

假设一个客户端需要一个数据库设计,设计一个博客网站,来看看 RDBMS 和 MongoDB 架构设计之间的差异。网站有以下要求。

  • 每一个文章内容都有独特的标题,描述和网址。

  • 每一个文章内容可以有一个或多个标签。

  • 每一个文章内容都有其出版商总数喜欢的名称。

  • 每一个文章内容有评论以及名字,消息,时间和喜欢的用户。

  • 对于每个文章,可以是零个或多个评论。

上述要求在RDBMS模式设计,将有至少三个表。

RDBMS Schema Design

在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: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}

因此,尽管RDBMS要显示数据,需要加入三个表,而在MongoDB数据只是从一个集合。

免责声明:文章转载自《MongoDB (四) MongoDB 数据模型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ios代码实现时间设置NSDateNodejs npm常用命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mongodb配置和基本操作

MongoDB3.0新特性WiredTigerMMAPv1可插拔引擎API基于web的可视化管理工具 查看版本号mongod --version启动数据库 mongod --dbpath $dbpath --logpath $logpath --logappend --fork --port=27000 $dbpath 数据目录$logpath 是log文...

MongoDB查询报错:class com.mongodb.MongoSecurityException: Exception authenticating MongoCredential

异常日志: 2019-05-30 10:10:24,252 [http-nio-8080-exec-1] DEBUG [java.sql.Connection] -ooo Connection Opened 2019-05-30 10:10:24,258 [http-nio-8080-exec-1] DEBUG [java.sql.PreparedSta...

mongoRepository mongoTemplate

https://docs.spring.io/spring-data/data-mongodb/docs/current/reference/html/ 在pom文件引入spring-boot-starter-data-mongodb依赖: <dependency> <groupId>org.springframework....

mongo部署(linux)

Linux版本:CentOS release 6.9 Mongodb版本:mongodb-linux-x86_64-3.6.1.tgz 1、解压文件 执行解压命令:tar -zxvf mongodb-linux-x86_64-3.6.1.tgz   2、创建数据,日志目录 命令:mkdir /my/mydata/mongodb       mkdir /m...

10种 分布式ID生成方式(新增MongoDB的ObjectId)

一、为什么要用分布式ID? 在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征? 1、什么是分布式ID? 拿MySQL数据库举个栗子: 在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。 但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表...

腾讯蓝鲸cmdb部署

腾讯蓝鲸CMDB项目地址: https://github.com/Tencent/bk-cmdb 蓝鲸配置平台 (CMDB)http://172.16.6.10:8088 环境(单机测试): Centos6 16G 200G 依赖环境: Java 1.8.0_92 python 2.7 ZooKeeper 3.4.12 Redis 3.2.11 M...