改进您的架构
模式是集群的架构,包括集合、索引和文档。在开发过程的早期考虑模式设计。
注意
无服务器实例
您无法访问无服务器实例的 Schema Advisor 。
模式设计模式
您可以根据常用的设计模式对模式进行建模。使用模式构建博客系列讨论了以下常用的设计模式。
要了解数组运行良好的情况,请参阅以下设计模式:
使用属性模式处理具有唯一属性组合的数据,例如每部电影在一个国家/地区子集上映的电影数据。
使用存储桶模式处理紧密分组或连续的数据,例如时间跨度数据。
使用多态模式处理同一集合中不同形状的文档,例如多个运动项目的运动员记录。
要了解将工作集中的文档保持在可管理大小的策略,请参阅以下模式:
要了解如何将灵活数据模型整合到您的架构中,请参阅 MongoDB.live 2020 中的以下演示文稿:
通过 MongoDB 进行数据建模,了解 MongoDB 中的实体关系及其实施示例。
了解高级数据建模设计模式,您可以通过高级模式设计模式将其整合到您的模式中。
模式建议
Atlas 提供两种方法来检测常见模式设计问题,并建议遵循 MongoDB 最佳实践的修改:
性能优化顾问通过对最活跃的集合和查询运行缓慢的集合中的文档进行采样,为集群提供整体模式建议。
Atlas 用户界面通过对特定集合中的文档进行采样来为该集合提供模式建议。
要详细了解如何应用性能优化顾问或数据浏览器中提供的建议,请参阅以下页面:
模式改进 | 建议理由 |
---|---|
您对数据运行的 $lookup 操作过多。利用 MongoDB 丰富的模式模型,将相关数据嵌入到单个集合中。 | |
您的文档包含具有许多元素的数组字段,这可能会降低查询性能。 | |
集合中有不必要的索引,这可能会消耗磁盘空间并降低写入性能。 | |
您的文档过大,可能会降低最常用查询的性能。 | |
数据库中有大量集合,这可能会导致不必要的磁盘空间使用。 | |
您正在执行的查询依赖于低效的正则表达式匹配。利用使用 $search 聚合管道阶段的 Atlas Search 查询 。 |
模式建议的限制
集合的模式建议部分是由该集合中文档的随机抽样驱动的。由于每次分析模式时都会执行此采样,因此您可能会在不同时间看到同一集合的不同建议。
性能优化顾问会监控慢速查询以识别某些模式问题,即
$lookup
操作过多以及未利用索引进行区分大小写的正则表达式查询。如果集群未能始终如一地接收长时间运行的查询,则性能优化顾问可能不会建议该集群的所有潜在改进,也可能不会显示建议改进的所有原因。性能优化顾问根据
top
命令的输出分析最活跃的20集合。要查看针对特定集合的建议,请在Atlas 用户界面中查看该集合。性能优化顾问和Atlas 用户界面都不提供针对时间序列集合的模式建议。