52 | 设计大型DMP系统(上):MongoDB并不是什么灵丹妙药
![](https://static001.geekbang.org/resource/image/59/81/59692ee953f536bae1ef1f5f1ae0cc81.jpg)
该思维导图由 AI 生成,仅供参考
DMP:数据管理平台
- 深入了解
- 翻译
- 解释
- 总结
![](https://static001.geekbang.org/resource/image/d0/e4/d0880927e2a522a038be2d04bf19dfe4.png)
本文深入探讨了为何MongoDB不适合设计大型DMP系统。DMP系统需要低延迟、高可用性、高并发、海量数据和低成本等特性。作者通过具体数字化指标和技术挑战阐述了这些特点。文章还介绍了DMP系统的构建过程,包括数据采集模块、数据管道、数据仓库和实时数据处理模块。作者指出,MongoDB并不适用于DMP系统的KV数据库、数据管道和数据仓库场景,而推荐了AeroSpike、Kafka和Hive等解决方案。总之,文章通过深入浅出的方式,向读者介绍了DMP系统的特点和构建过程,为读者提供了对大型DMP系统设计的深入理解。
《深入浅出计算机组成原理》,新⼈⾸单¥68
全部留言(26)
- 最新
- 精选
- 胖头小CSSD硬盘好处是读写更快,但是使用寿命不长,在Kafka经常擦除情况下,机械盘更耐用,经济,而且是顺序读写,机械盘也是很快的,综合还是机械盘更好
作者回复: 👍
2019-09-0263 - 鱼向北游不差钱可以用ssd呀 ssd的顺序写速度更快 但是 kafka这种应该会频繁擦写 ssd的寿命扛不住 对于存档 hdd普遍容量大 存档成本低 组raid价格也便宜 对于和ssd顺序读写的性能差距 可以用扩大partition数量来做些弥补 怎么感觉说到底最后是钱的问题呢
作者回复: 👍哈哈,你抓到关键了。 这个还真是钱的问题,从2019年的应用场景来看,SSD的确还没有太大必要。从数据量的角度,搞很多块HDD已经可以满足目前的高并发的需求了,从成本上和使用寿命也比SSD更划算了。 但是SSD和几年前比已经便宜了很多了,而且在PCI-E接口普及的情况下,顺序读写速度比起HDD也能拉开差距了,所以逐步我们也看到业界开始直接用SSD来部署Kafka也变得比较常见了。
2019-09-0232 - 许童童我觉得没有必要使用SSD,Kafka主要利用PageCache来提高系统写入的性能,而且Kafka对磁盘大多是顺序读写,在磁盘上提高IOPS,并不能显著的提升Kafka的性能。
作者回复: 👍的确Kafka用SSD的必要性不大。
2019-09-0216 - webminKafka使用SSD硬盘: 好处: Kafka是顺序追加写,比较适合SSD硬盘的特性; 坏处: Kafka的落盘数据类似于日志,顺序追加写SSD比机械硬盘没有太多的优势,再者擦写太频繁SSD硬盘有擦写寿命,使用SSD的性价比不如机械硬盘。
作者回复: 👍 优缺点找的很对,最后的选择我们一般会从综合成本来考虑。
2019-09-02211 - leslie以下是个人对此的理解:希望老师可以在下节课把这节课的答案公布。 分成两部分分别阐述个人对此的理解 一.机械硬盘 机械硬盘的好处是寿命:不过机械硬盘的问题在于速度,不同的机械硬盘有不一样的特性,即使用机械硬盘也要选择缓存偏大且读性能较好的蓝盘。由于kafka是充分利用缓存,毕竟kafka只是消息队列-只是中间件,我们不可能把数据放在kafka中,还是会使用的NOSQL数据库,故而其实际需求是对读性能要求较高的存储设备。 二.SSD SSD读写性能比其实是相对固定的:无论是哪个厂商,其实最终发现这是一个定值;有能力其实SSD确实是一个不错的选择。不过我们在讨论SSD的寿命时其实忽略了一个问题,什么操作影响SSD的寿命?SSD存在的硬件条件和场景是什么? 1.SSD的寿命问题:其实这个问题就像早期说液晶屏一样,额定寿命大概是3年左右,其实大多数实际情况都在5年左右;真正影响SSD寿命的不是读,而是写,这个问题其实机械硬盘同样有。 2.SSD存在的硬件条件是什么:服务器、PC;现在一台PC或者服务器基本上5-6年就各种硬件出现问题,SSD如果使用场景和HDD类似其实寿命是几乎一样的;我们不太可能在服务器都出问题的情况下还去使用使用吧。我自己笔记本电脑是单双硬盘:不过由于市场提供的尺寸不一样,大小略有区别,使用场景几乎完全一样,都各自有一个300G的空间跑虚机做测试,目前已经使用了4年多了,性能和4年前没区别,唯一的区别是当时HDD的代价是SSD的一半左右;现实中服务器的使用也就不超过5-6年,此时其实主板、电源、CPU的散热系统已经基本出问题且厂家和市场都没有相应可换的硬件配件了。 综上所述:故而个人觉得Kafka场景其实资金允许的情况下还是SSD,因为它的坏处其实传统硬盘同样有,这是我们不能回避HDD的硬件问题去说SSD的问题。即使使用HDD其实我们还是要选取读性能强于写性能且缓存偏大的硬盘,况且其实SSD的读写速度方面同样是读方面更好。严重写>读的场景下其实HDD的损坏速度同样非常快,只不过硬件代价低一些而已,但是耗时同样高许多。 期待老师的下节课:谢谢老师的教诲。
作者回复: 小小的一个纠错,从原理的角度,HDD并不存在反复读写会导致寿命的问题。 不过在实际使用中,其实HDD的损坏率也并不低,而且损坏出现的情况随机性比较大。 实战中核心考虑的因素其实是成本,需要根据实际的应用场景,核算一下总体的成本。而且需要考虑到对应配置了CPU,比如用PCI-E接口,SSD硬盘的顺序读写能到2Gb/s,但是总的带宽有限可能又装不了10块盘。然后CPU和内存在单个机器中的价格占比也需要考虑,最后会是一个总和硬件拥有和维护成本的评估。这个问题并没有一个标准答案。
2019-09-0437 - 吴宇晨成本的问题ssd顺序读速度能更快,但是价格贵了很多,还有大概kafka主要读写是利用pagecache
作者回复: 👍其实机器数量一上来,成本就成为架构设计的最重要的考虑因素之一了。
2019-09-023 - 随心而至1.重视底层知识,核心知识,万丈高楼平地起。 2.使用场景。没有一招鲜,吃遍天的技术。 3.要有量级的概念。kv数据库,数据管道,数据仓库,就根本不是一个量级的事情,每个量级都应该有自己的最优方案。 刚工作一年多一点,不对之处请老师指出2019-10-2426
- 逍遥法外看的真过瘾2019-09-02111
- 李伟读到这里,为我打开了一个世界大门,我知道原来这才是设计和技术选型,而不是以前的bug少,维护快。2021-06-042
- 活的潇洒工作中一直在用MongoDB但是并没有想过它不适合那些场景、今天老师从底层原理给我们刨析了个究竟 day52 笔记:https://www.cnblogs.com/luoahong/p/11510567.html2019-09-152