热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

【Monogdb】MongoDB之十大应用设计技巧-mysql教程

技巧一、速度和完整性的折中在多个文档中使用的数据可以采用内嵌(反范式话)的方式,也可以采用引用(范式化)的方式。这种策略并没有优劣之分,各自都有优缺点。关键是要选择适合自己的应用场景方案。反范式化会产生不一致的数据。但要是范式化,应用则

技巧一、速度和完整性的折中 在多个文档中使用的数据可以采用内嵌(反范式话)的方式,也可以采用引用(范式化)的方式。这种策略并没有优劣之分,各自都有优缺点。关键是要选择适合自己的应用场景方案。 反范式化会产生不一致的数据。但要是范式化,应用则

技巧一、速度和完整性的折中

在多个文档中使用的数据可以采用内嵌(反范式话)的方式,也可以采用引用(范式化)的方式。这种策略并没有优劣之分,各自都有优缺点。关键是要选择适合自己的应用场景方案。 反范式化会产生不一致的数据。但要是范式化,应用则必须在每次确认时做额外一次查找。因为极高的性能和瞬间一致性不可兼得,所以必须要想清楚哪个才是应用最需要的。

考虑因素一般包括:

是否总要额外读取一次几乎不怎么改变的数据?

一致性很重要吗?

要不要快速读取?

技巧二、适应未来的数据要范式化

范式化可使数据可用性更加长久,未来可以在不同的应用中以不同的方式查询范式化的数据。这里的前提是有些数据将会一年不断地被各种应用得到。

技巧三、尽量单个查询获得数据

mongodb的数据库设计应该从应用单元的查询出发。 应用单元,对于web应用或者移动应用可以将对后端的一次请求视作一个应用单元 对于桌面应用,一次用户交互可以算是一个应用单元 对于分析系统,一个图表的加载算作是一个应用单元

技巧四、嵌入关联数据

当在嵌入和引用文档之间犹豫不决时候,不防想想查询的目的是为了获得字段本身还是为了进一步获得更加广泛的信息。如果前者建议采用嵌入关联数据。

技巧五、嵌入时间点数据

比如某人更新了个人信息,那么就不需要更改其以往的订单内容

技巧六、不要嵌入不断增加的数据

mongodb存储数据的机制决定了对数据的不断追加数据是很低效的。在正常使用中数据和对象的大小应该相对固定。

技巧七、预填充数据

如果已经知道未来要用到哪些字段,第一次插入是就带着这些字段会比用到时再创建效率更高。 比如每天都要使用新的集合,最好提前创建。

技巧八、尽可能预先分配空间

只要知道文档开始比较小,后来会变得确定的大小,就可以使用这种优化方法。 一开始插入文档的时候就用和最终数据大小一样的垃圾数据填充。即添加一个garbage字段(其中包含一个字符串,串大小与文档最终大小相同)

技巧九、用数组存放要匿名访问的内嵌数据

一个常见的问题就是内嵌信息到底是欧也妮个数据还是用文档来存。如果确切知道查询内容就用子文档存。如果有时不太清楚查询的具体内容,则要数组。 当知道一些条目的查询条件时候通常该使用数组。

技巧十:文档要自给自足

mongodb是一个无脑的大型数据存储。mongodb几乎不做任何数据处理,仅仅存储数据。要尽量遵守这点,避免让mongodb做些能在客户端完成的计算。即便是写小任务,像求平均值或求和,也要放在客户端去做。

如果要找的信息必须经过计算,且无法直接从文档中获得,有两种定义:
付出高昂的性能代价;优化文档结构,使得这些信息能够从文档中直接获得。


推荐阅读
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • 探讨在 MongoDB 副本集中因故障导致只剩两个从节点时的解决方案和影响 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
author-avatar
雨舒紫_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有