我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

本文更新于2021-12-11,使用MongoDB 4.4.5。目录范式化与反范式化优化数据操作一致性管理模式迁移范式化与反范式化范式化(normalization)将数据分散到多个集合,不同集合之间相互引用数据。反范式化(denormalization)将每
MongoDB学习笔记:应用程序设计
2020-10-15

javascript 学习笔记(四) 倒计时程序代码

javascript 学习笔记(四) 倒计时程序代码,需要的朋友可以参考下。
2022-11-21

Python学习笔记三(Python程序

Linux系统自带的python版本通常都比较低,可以在python官方网站(http://www.python.org/download/)下载最新源码包,然后进行升级安装。1.下载python源码包。wget http://www.py
2023-01-31

Python学习笔记 --- 程序退出

Python退出程序的方式有两种:os._exit(), sys.exit()1)os._exit() 直接退出 Python程序,其后的代码也不会继续执行。2)sys.exit() 引发一个 SystemExit异常,若没有捕获这个异常,
2023-01-31

《JavaScript高级程序设计》学习笔记(表单和数据完整性)

表单和数据完整性创建表单元素是为了满足用户向服务器发送数据的需求。 表单基础HTML表单通过元素来定义特性:method 属性 设置或获取如何将表单数据发送到服务器action 属性 设置或获取表单内容要发送处理的 URLenctype 属
2023-06-03

MySQL学习笔记(22):应用优化

本文更新于2020-04-05,使用MySQL 5.7,操作系统为Deepin 15.4。目录使用连接池减少对MySQL的访问负载均衡其他优化措施使用连接池对于访问数据库来说,建立连接的代价比较昂贵。减少对MySQL的访问应用应避免对同一数据做重复检索,减少对
MySQL学习笔记(22):应用优化
2020-02-02

Python学习笔记整理(十六)类的设计

如何使用类来对有用的对象进行建模?一、Python和OOPPython和OOP实现可以概括为三个概念。继承    继承是基于Python中属性查找(在X.name表达式中)多态    在X.method方法中,method的意义取决于X的类
2023-01-31

PHP学习笔记:Session与Cookie的应用

在Web开发中,为了记录和保持用户的状态和数据,常常需要使用Session和Cookie来进行数据存储与管理。本文将介绍Session和Cookie的概念、原理以及如何在PHP中应用它们。一、Session的应用Session是服务器端用来
2023-10-21

PHP学习笔记:前后端分离与API设计

概述:随着互联网的不断发展和用户需求的不断增加,前后端分离的开发模式越来越受到开发者的重视。前后端分离是指将前端和后端的开发分离开来,通过API进行数据交互,实现开发的高效性和灵活性。本文将介绍前后端分离的概念,以及如何设计API。前后端分
2023-10-21

PHP学习笔记:设计模式与开发实践

在现代软件开发中,设计模式是一个非常重要的概念。设计模式是软件开发中常见问题的解决方案,它们被广泛用于解决不同领域的各种问题。在PHP开发中,掌握设计模式可以帮助我们编写可维护、可扩展、可重用的代码。本文将介绍几种常见的设计模式,并展示如何
2023-10-21

编程热搜

目录