【MongoDB训练营】第二课:MongoDB聚合框架 答疑汇总

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
简介: 【MongoDB训练营】第二课:MongoDB聚合框架 答疑汇总

问:数组中push元素时,如果文档慢慢变大,会不会出现关系型数据库中行迁移问题?此类问题需要如何优化?
答:push大量元素后,索引更新压力也是较大的,他的索引是 multikey index 同时不建议在数组中插入过多元素
一看就是oracle dba出没了。。。
这个问题我感觉不会,但是可能会出现数据倾斜。

问:mongodb 为什么只有左外连接?
答:join操作反范式设计,违反mongodb设计初衷,可以导致跨分片的查询,性能会有影响
右表不能是分片表

问:从Mysql迁移到mongodb成本有多少,有什么工具吗
答:数据模型都不一样了,业务迁移有一定成本,实际上是从关系型到文档型的数据库,业务访问逻辑也需要进行修改。

问:service的副本是几个,增加分片怎么扩容
答:底层是基于mongodb分片,每个shard是3副本的副本集,参见https://help.aliyun.com/document_detail/184598.html?spm=a2c6h.20980894.J_2725970650.3.5cfd4f50kLua7L 产品架构部分 提供az部署
根据业务压力由平台引擎自动扩容,主要参考业务压力kps及CU,CU概念参见https://help.aliyun.com/document_detail/184598.html?spm=a2c6h.20980894.J_2725970650.3.5cfd4f50kLua7L 读写吞吐量CU部分

问:仅能本地连接mongodb?
答:这个参见https://help.aliyun.com/document_detail/185471.html?spm=a2c6h.20980894.J_2725970650.5.5cfd4f50kLua7L
讲的很详细,
公网 首先要创建公网地址,设置白名单

问:买了mongodb是不是不需要自己创建索引?
答:目前阶段还是需要自己业务去创建的,但是老师也提到了后续的daas服务可以智能的创建索引

问:每天凌晨统计海量昨日订单,是交给数据库,还是交给业务?
答:从效率角度,数据库测运算减少了数据流转,如果数据库压力比较低,适合在数据库端。同时也解放了业务逻辑

问:遇到一个问题是在一个集合里面有几百万的数据,物理大小将近10G,通过一个索引字段做排序分页查询,通过skip、limit的方式查询越到后面越慢,有什么优化的方案
答:个人认为老师回答不正确,大家可以参考类似mysql类似的优化手段,网上类似的文章很多
可以不用skip,而通过where+limit的方式或者通过一个标记直接定位到下次要limit的起始位置

问:阿里云提供增量备份吗?原理是什么?
答:提供按时间点恢复的功能,全量备份+ operation log的方式实现

问:文档很大,update对性能影响大吗?
答:wiredtiger 是按照key-value来管理的,还是得有索引嘛
这个我感觉同学问的是集合,不知道对不对。。。

问:4.4版本增加了那些功能?
答:参见老师的社区文章,找到的同学补充下,比如可以更改shard key,全量同步的断点续传,等
兼容性较好,4.2迁移4.4 问题少

问:mongodb其他的引擎
答:现在默认是 wiredtiger 大部分都用这个,还有memory引擎,

问:mongodb最佳实践
答:参见老师的ppt

问:wiredTiger 内存淘汰策略是什么?可以更改吗?
答:我觉得这个问题可以参考官方文档,LRU

问:mongodb和mysql的qps差多少?mongodb可以代替mysql吗?mongodb适用于什么场景?mongodb的缓存模式可以替代mysql+redis吗?mogodb和redis的对比?
答:这个我自己回答吧
mongodb是文档性数据库,首先使用的场景和mysql就有很大不同,交易类的业务显然不适合用mongodb,但是日志系统具有文档属性,倒是很合适的,但是现在也有很多时序数据库,ch,elk等,所以用什么怎么用还是要看业务和能力。
mongodb适用于半结构,非结构数据,比如列不固定,数据一致性能力要求不高,扩展性比较高,但是现在mysql8 也在弥补这块能力。

问:建议开启balance吗?
答:建议开启,同时设置窗口

问:最后一个OLAP,OPTP的混合场景?
答:目前貌似只有大厂的产品感这么宣传吧,对还有最近挺火的tidb

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
SQL NoSQL Unix
MongoDB聚合操作总结
这篇文章总结了MongoDB中聚合操作的作用、方法、常见聚合表达式以及聚合管道的概念和常用操作符,以及SQL与MongoDB聚合操作的对应关系。
33 2
MongoDB聚合操作总结
|
1月前
|
NoSQL MongoDB 数据库
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
这篇文章提供了使用Python操作MongoDB数据库进行CRUD(创建、读取、更新、删除)操作的详细代码示例,以及如何执行聚合查询的案例。
24 6
|
1月前
|
SQL NoSQL JavaScript
04 MongoDB各种查询操作 以及聚合操作总结
文章全面总结了MongoDB中的查询操作及聚合操作,包括基本查询、条件筛选、排序以及聚合管道的使用方法和实例。
49 0
|
2月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
64 1
|
2月前
|
NoSQL BI 数据处理
【超实用攻略】MongoDB 聚合框架:从入门到精通,带你解锁数据处理新姿势!
【8月更文挑战第24天】MongoDB是一款以其灵活性和高性能闻名的NoSQL数据库。其强大的聚合框架采用管道式处理,允许用户定义多个数据处理阶段如过滤、分组等。本文通过示例数据库`orders`和`products`,演示如何利用聚合框架计算各产品的总销售额。示例代码展示了使用`$lookup`连接两集合、`$unwind`打平数组及`$group`按产品ID分组并计算总销售额的过程。这突显了聚合框架处理复杂查询的强大能力,是进行数据分析和报表生成的理想选择。
37 3
|
2月前
|
存储 NoSQL JavaScript
MongoDB存储过程实战:聚合框架、脚本、最佳实践,一文全掌握!
【8月更文挑战第24天】MongoDB是一款备受欢迎的文档型NoSQL数据库,以灵活的数据模型和强大功能著称。尽管其存储过程支持不如传统关系型数据库,本文深入探讨了MongoDB在此方面的最佳实践。包括利用聚合框架处理复杂业务逻辑、封装业务逻辑提高复用性、运用JavaScript脚本实现类似存储过程的功能以及考虑集成其他工具提升数据处理能力。通过示例代码展示如何创建订单处理集合并定义验证规则,虽未直接实现存储过程,但有效地演示了如何借助JavaScript脚本处理业务逻辑,为开发者提供更多实用指导。
51 2
|
2月前
|
存储 NoSQL 数据处理
【MongoDB大神级操作】揭秘聚合框架,让你的数据处理能力瞬间飙升,秒变数据界的超级英雄!
【8月更文挑战第24天】MongoDB是一款备受欢迎的非关系型数据库,以其灵活的文档模型和出色的可扩展性著称。其聚合框架尤其亮眼,能高效地对数据库中的数据执行复杂的转换与聚合操作,无需将数据导出到应用端处理,极大提升了数据处理的效率与灵活性。例如,在一个大型电商数据库中,聚合框架能轻松分析出最热卖的商品或特定时段内某类别商品的销售总额。通过一系列管道操作,如$unwind、$group等,可以对数据进行逐步处理并得到最终结果,同时还支持过滤、排序、分页等多种操作,极大地丰富了数据处理的能力,成为进行数据分析、报表生成及复杂业务逻辑实现的强大工具。
55 2
|
2月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
61 0
|
2月前
|
测试技术 C# 开发者
“代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
55 0
|
2月前
|
NoSQL Java 关系型数据库
MongoDB保姆级指南(下):无缝集成SpringData框架,一篇最全面的Java接入指南!
前面的两篇文章已经将MongoDB大多数知识进行了阐述,不过其中的所有内容,都基于原生的MongoDB语法在操作。可是,在实际的日常开发过程中,我们并不会直接去接触MongoDB,毕竟MongoDB只能算作是系统内的一个组件,无法仅依靠它来搭建出一整套系统。

相关产品

  • 云数据库 MongoDB 版