广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB学习笔记:应用程序设计
  • 756
分享到

MongoDB学习笔记:应用程序设计

MongoDB学习笔记:应用程序设计 2020-10-15 11:10:38 756人浏览 才女
摘要

本文更新于2021-12-11,使用mongoDB 4.4.5。 目录范式化与反范式化优化数据操作一致性管理模式迁移 范式化与反范式化 范式化(nORMalization)将数据分散到多个集合,不同集合之间相互引用数据。反范式化(deno

MongoDB学习笔记:应用程序设计

本文更新于2021-12-11,使用mongoDB 4.4.5。

目录
  • 范式化与反范式化
  • 优化数据操作
  • 一致性管理
  • 模式迁移

范式化与反范式化

范式化(nORMalization)将数据分散到多个集合,不同集合之间相互引用数据。反范式化(denormalization)将每个文档所需数据都嵌入文档内部。

一个集合中包含的对其他集合的引用数量叫基数(cardinality)。常见的关系有一对一、一对多、多对多。

内嵌数据与引用数据的比较:

更适合内嵌 更适合引用
数据较小 数据较大
数据不会定期改变 数据经常改变
最终数据一致即可 中间阶段的数据必须一致
文档数据小幅增加 文档数据大幅增加
数据通常需要执行二次查询才能获得 数据通常不包含在结果中
快速读取 快速写入
基数较少 基数较多

也可以混合使用内嵌数据和引用数据:创建一个内嵌文档用于保存常用信息,需要查询更详细信息时通过引用找到实际的文档。

优化数据操作

更新数据时,需要明确是否会导致文档体积增长,以及增长程度。如果文档中有字段需要增长,应尽可能将这个字段放在文档最后的位置。

有三种常见的方式用于删除旧数据:使用固定集合,使用TTL集合,使用多个集合并定期删除集合。

一致性管理

服务器为每个数据库连接维护一个请求队列,一个连接拥有一个一致的数据库视图,总时可以读取到这个连接最新写入的数据。

模式迁移

随着需求的变化,数据库模式可能需要相应地改变,不管使用以下哪种方法,都要小心保存应用程序使用过的每一个模式:

  • 确保应用程序能支持所有旧版的模式。这种方式可能导致混乱,尤其是不同版本的模式之间有冲突时。
  • 在每个文档中包含一个类似“version”的字段,使用这个字段来决定应用程序接受的文档结构。这仍然需要支持各种旧版本。
  • 当模式发生变化时将数据进行迁移。通常来说这不是个好主意:MonGoDB允许使用动态模式,以避免执行迁移,因为迁移会对系统造成很大的压力。

原文地址:https://www.cnblogs.com/garvenc/arcHive/2022/02/23/mongodb_learning_application_design.html

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB学习笔记:应用程序设计

本文链接: https://www.lsjlt.com/news/9130.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB学习笔记:应用程序设计
    本文更新于2021-12-11,使用MongoDB 4.4.5。 目录范式化与反范式化优化数据操作一致性管理模式迁移 范式化与反范式化 范式化(normalization)将数据分散到多个集合,不同集合之间相互引用数据。反范式化(deno...
    99+
    2020-10-15
    MongoDB学习笔记:应用程序设计
  • 【MongoDB学习笔记34】MongoDB副本集设计原则
    MongoDB中副本集中有个重要的概念:大多数因为副本集只有一个节点为可读写,其他节点只可读;而主节点的选择由大多数决定的,只有在得到支持时才能继续作为主节点。(1)大多数这个数字的确认公式:M=int((...
    99+
    2022-10-18
  • javascript 学习笔记(四) 倒计时程序代码
    首先看全部完整代码: countDown test function countDown(endDate) { var now = new Date(); var dea...
    99+
    2022-11-21
    倒计时程序
  • Python学习笔记三(Python程序
     Linux系统自带的python版本通常都比较低,可以在python官方网站(http://www.python.org/download/)下载最新源码包,然后进行升级安装。1.下载python源码包。wget http://www....
    99+
    2023-01-31
    学习笔记 程序 Python
  • Python学习笔记 --- 程序退出
    Python退出程序的方式有两种:os._exit(), sys.exit() 1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行。 2)sys.exit() 引发一个 SystemExit异常,若没有捕获这个...
    99+
    2023-01-31
    学习笔记 程序 Python
  • 《JavaScript高级程序设计》学习笔记(表单和数据完整性)
    表单和数据完整性创建表单元素是为了满足用户向服务器发送数据的需求。 表单基础HTML表单通过元素来定义特性:method 属性 设置或获取如何将表单数据发送到服务器action 属性 设置或获取表单内容要发送处理的 URLenctype 属...
    99+
    2023-06-03
  • Linux学习笔记:rpm程序包管理
    以CentOS为例,rpm程序包管理器的相关内容如下:CentOS的程序包管理器:    程序包的命名规则:       &n...
    99+
    2022-10-18
  • Python学习笔记整理(十六)类的设计
    如何使用类来对有用的对象进行建模? 一、Python和OOP Python和OOP实现可以概括为三个概念。 继承     继承是基于Python中属性查找(在X.name表达式中) ...
    99+
    2023-01-31
    学习笔记 Python 十六
  • Linux学习笔记:如何分析ASP应用程序的日志?
    ASP(Active Server Pages)是一种广泛使用的Web应用程序框架,用于创建动态Web页面和Web服务。在ASP应用程序的开发和部署过程中,对日志的分析是非常重要的。本文将介绍如何在Linux环境下分析ASP应用程序的日志...
    99+
    2023-09-13
    日志 linux 学习笔记
  • PHP学习笔记:前后端分离与API设计
    概述:随着互联网的不断发展和用户需求的不断增加,前后端分离的开发模式越来越受到开发者的重视。前后端分离是指将前端和后端的开发分离开来,通过API进行数据交互,实现开发的高效性和灵活性。本文将介绍前后端分离的概念,以及如何设计API。前后端分...
    99+
    2023-10-21
    前后端分离 API设计 PHP学习
  • PHP学习笔记:设计模式与开发实践
    在现代软件开发中,设计模式是一个非常重要的概念。设计模式是软件开发中常见问题的解决方案,它们被广泛用于解决不同领域的各种问题。在PHP开发中,掌握设计模式可以帮助我们编写可维护、可扩展、可重用的代码。本文将介绍几种常见的设计模式,并展示如何...
    99+
    2023-10-21
    PHP 设计模式 开发实践
  • MySQL学习笔记(22):应用优化
    本文更新于2020-04-05,使用MySQL 5.7,操作系统为Deepin 15.4。 目录使用连接池减少对MySQL的访问负载均衡其他优化措施 使用连接池 对于访问数据库来说,建立连接的代价比较昂贵。 减少对MySQL的访问...
    99+
    2020-02-02
    MySQL学习笔记(22):应用优化
  • 哪些go框架适合响应式设计?学习笔记分享!
    哪些Go框架适合响应式设计?学习笔记分享! 随着互联网的普及和移动设备的广泛应用,响应式设计越来越受到重视。响应式设计是一种能够自适应各种设备和屏幕尺寸的网站设计方法,它可以为用户提供更好的浏览体验。在Go语言的开发中,如何选择适合响应式设...
    99+
    2023-09-11
    响应 学习笔记 二维码
  • Linux学习笔记:如何在ASP应用程序中查找日志?
    在ASP应用程序开发过程中,日志是非常重要的,它可以帮助开发人员快速定位问题并进行调试。但是,当应用程序出现问题时,如何在Linux系统中查找日志呢?本文将为大家介绍如何在ASP应用程序中查找日志。 一、查看系统日志 在Linux系统中,...
    99+
    2023-09-13
    日志 linux 学习笔记
  • 二维码在go语言响应式设计中的应用,学习笔记分享!
    二维码在Go语言响应式设计中的应用,学习笔记分享! 二维码(QR Code)是一种矩阵式二维条码,它可以存储大量的数据,被广泛应用于商业、文化、教育等领域。而在Go语言的响应式设计中,二维码也有着广泛的应用场景。本文将介绍二维码在Go语言响...
    99+
    2023-09-11
    响应 学习笔记 二维码
  • 如何在Linux上使用ASP应用程序记录日志?学习笔记分享!
    在Linux上使用ASP应用程序记录日志,是一项非常重要的任务。记录日志可以帮助我们了解应用程序的运行状态,发现问题并及时解决。本文将为大家介绍如何在Linux上使用ASP应用程序记录日志,希望能够帮助到大家。 一、ASP应用程序简介 AS...
    99+
    2023-09-13
    日志 linux 学习笔记
  • PHP学习笔记:数据库优化与索引设计
    在开发Web应用程序时,数据库操作是一个非常关键的环节。数据库的性能直接影响着Web应用程序的响应速度和用户体验。为了提升数据库的效率和查询速度,我们需要进行数据库优化和索引设计。一、数据库优化数据库架构优化:正规化设计:遵循数据库范式,减...
    99+
    2023-10-21
    PHP 数据库优化 索引设计
  • 学习笔记编写vue的第一个程序
    目录1、编写一个html,第一个vue程序注意视图模板和数据判断循环事件 787原则el属性data属性template属性methods属性render属性compute...
    99+
    2022-11-12
  • PHP学习笔记:Session与Cookie的应用
    在Web开发中,为了记录和保持用户的状态和数据,常常需要使用Session和Cookie来进行数据存储与管理。本文将介绍Session和Cookie的概念、原理以及如何在PHP中应用它们。一、Session的应用Session是服务器端用来...
    99+
    2023-10-21
    PHP cookie session
  • 如何在学习笔记中使用二维码?go响应式设计指南!
    学习笔记是我们学习的重要工具,它们记录了我们在学习过程中的思考和心得。然而,随着科技的发展,我们不再满足于仅仅记录文字,我们也需要将其他形式的信息保存下来。这时,二维码就成为了一种非常方便的工具。在本文中,我们将介绍如何在学习笔记中使用二...
    99+
    2023-09-11
    响应 学习笔记 二维码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作