知识卡片
"做得少就做得快":性能优势常常源于主动收缩了保证范围
内容
面对”WiredTiger让MongoDB看起来越来越像关系数据库了,那它凭什么还能比关系数据库性能更高”这个疑问,饿了么大数据平台负责人给出的回答提炼为一句话——”做得少就做得快”,并引用Oracle技术专家Tom Kyte谈SQL解析优化时说过的话:”如果想让一件事做得很快,最快的方法就是不做”。放到MongoDB与RDBMS的对比里,MongoDB相对于关系数据库去掉了完整事务的支持,这意味着它同时省去了事务需要承担的一整套代价(如维护事务隔离级别、处理多语句原子性、支持回滚等),性能优势很大程度上正是来自主动收缩了系统需要保证的能力范围,而不是纯粹的实现技巧更高明。这提醒任何比较两个系统性能差异的场景:先看两者承诺的能力/保证边界是否对等,一个系统跑得更快,很可能是因为它比另一个系统少做了某些保证,而不是”同等保证下更快”。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.11 MongoDB2015回顾:全新里程碑式的WiredTiger存储引擎"节,"6.11.5 疑问与解惑"(源文件:_epub-src/OEBPS/Text/Chapter6_11_6.xhtml)
- 结论依据:原文说明"简单来说就是,做得少就做得快。我记得Oracle大牛Tom说过一句话,大概意思是:如果想做一件事儿很快,最快的方法就是不做……毕竟相对于RDBMS,MongoDB去掉了事务的支持,也就去掉太多事情了。快是应该的",直接支撑本卡片结论。
- 原始内容:简单来说就是,做得少就做得快。我记得Oracle大牛Tom说过一句话,大概意思是:如果想做一件事儿很快,最快的方法就是不做……毕竟相对于RDBMS,MongoDB去掉了事务的支持,也就去掉太多事情了。快是应该的。