问:数组中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