设计 MongDB 模式时应注意的问题

  • 根据用户需求来设计模式。
  • 如果想一起使用对象,请将这些对象合并到一个文档中,否则要将它们分开(但是要确保不需要连接)。
  • 经常复制数据(但要有一定限度),因为与计算时间相比,硬盘空间显得非常便宜。
  • 在写入时进行连接,而不能在读取时连接。
  • 针对经常发生的用例来设计模式。
  • 在模式中实现复杂的聚合。

范例

假使一个客户需要为他的博客站点设计一个数据库,让我们来看看 RDBMS 与 MongoDB 在模式设计上的差异。网站需求如下所示:

  • 每篇博客都具有唯一的标题、描述以及 URL。
  • 每篇博客都具有一个或多个标签。
  • 每篇博客都具有发表者的名称,以及喜欢
  • 每篇博客都有用户的评论,用户名、消息、日期时间以及评论的喜欢度。
  • 每篇博客都可以有 0 个或多个评论。

在 RDBMS 中,设计一个能够满足上述需求的数据库模式至少需要 3 个表。如下图所示。

在 MongoDB 中,设计出来的模式却只有一个集合 post,其结构如下:

{
_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 与关系型数据库的更多相关文章

  1. mongodb非关系型数据库

    mongodb非关系型数据库(对象型数据库): 优势:易扩展:灵活的数据模型:大数据量,高性能(读写) 关系型:(一对多.多对多.一对一)扩展性差,大数据下压力大,表结构更改困难(数据小时使用Mysq ...

  2. 数据库:mongodb与关系型数据库相比的优缺点 (转)

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值 ...

  3. 数据库:mongodb与关系型数据库相比的优缺点

      与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精 ...

  4. Mongodb与关系型数据库

    MongoDB没有固定的关系约束 没有事务, 安全性不高 不一定保证数据的一致性. ACID不符合 NoSQL 放弃了传统关系型数据库严格的事务一致性和范式约束,采用弱一致性模型. http://os ...

  5. MongoDB非关系型数据库开发手册

    一:NoSql数据库 什么是NoSQL? NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称. NoSQL用于超 ...

  6. MongoDB与关系型数据库 区别

    mysql  mongodb 表     table    Collection 字段  Colum   Fields 行 row Document Mongo中的一些概念 ------------- ...

  7. mongodb与关系型数据库优缺点比较

    1.与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度②文档结构的存储方式,能够更便捷的获取数据③内置GridFS,支持大容量的存储.④内置Sharding.⑤第 ...

  8. 数据库:mongodb与关系型数据库相比的优缺点zz (转)

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值 ...

  9. MongoDB和关系型数据库简单对比

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB 工作在收集和文件的概念. 数据库:数据库是一个物理容器集合.每个数据库都有自己的一套文件系统上的 ...

随机推荐

  1. ubuntu下发布asp.net core并用nginx代理之旅

    asp.net core 1.0.1发布已有些日子了,怀着好奇的心情体验了把ubuntu下的asp.net core 系统运行环境:ubuntu 16.0.4 for developer 首先搭建.n ...

  2. 【Centos 7】使用screen恢复终端连接

    操作系统:centos7.1 (在ubuntu上测试过,不支持 screen) 主机:虚拟云主机 问题出现:在使用打包式在线安装phpstudy时,由于安装过程非常漫长,http报文过一段时间没有回送 ...

  3. shell的简单批量curl接口脚本

    shell脚本可以说作用非常大,在服务器领域,用shell操作事务可比手动点击要方便快捷得多了.虽然只是文字界面,但是其强大的处理功能,会让各种操作超乎想象.而且,也可以将这些习惯移植到日常的工作当中 ...

  4. 转载_2012年的Android之旅:梦想、学习、坚持、自信、淡定

    原文地址:http://blog.csdn.net/luoshengyang/article/details/8452527 2012年的Android之旅:梦想.学习.坚持.自信.淡定.. ---- ...

  5. .NET Core多平台开发体验[2]: Mac OS X

    除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验 ...

  6. [2014-09-21]如何在 Asp.net Mvc 开发过程中更好的使用Enum

    场景描述 在web开发过程中,有时候需要根据Enum类型生成下拉菜单: 有时候在输出枚举类型的时候,又希望输出对应的更具描述性的字符串. 喜欢直接用中文的请无视本文 不多说,直接看代码. 以下代码借鉴 ...

  7. [2014-08-17]Mac OSX 截图快捷键

    系统:OSX 10.9.4 内容来自网络,存于此以便查阅 基本操作 全屏截图:Command-Shift-3 指定区域截图:Command-Shift-4 指定窗口截图:Commnad-Shift-4 ...

  8. vue.js路由参数简单实例讲解------简单易懂

    vue中,我们构建单页面应用时候,一定必不可少用到vue-router vue-router 就是我们的路由,这个由vue官方提供的插件 首先在我们项目中安装vue-router路由依赖 第一种,我们 ...

  9. matlab-常用函数(1)

    rng('shuffle'): matlab help文档中的解释 rng('shuffle'): seeds the random number generator based on the cur ...

  10. JavaScript二维码生成——qrcode.js

    在开发中,有时候,我们需要根据不同的内容来动态生成二维码,则可以使用qrcode.js这个小插件来实现. 1.qrcode.js文件内容: (1)未压缩(qrcode.js): /** * @file ...