受访企业:锦木
MongoDB中文社区年终大会将于2021年1月8日在上海召开。本次大会的主题是重新认识MongoDB|MongoDB,More than Document Database。在大会开始前,我们采访了MongoDB官方及MongoDB中文社区合作伙伴锦木,看下锦木眼中的MongoDB是怎么样的。
本期我们采访的是锦木信息DBA工程师严冶君, 他将在大会当天跟我们分享议题:MongoDB:热、温数据的最佳归宿。
Q & A
1. 从2018年开始,锦木同社区一直紧密合作,社区的老朋友都多少听过锦木。可以给社区的朋友介绍下锦木吗?
上海锦木信息技术有限公司是一家专业的IT数据咨询与服务提供商,我们致力于向用户提供优质的信息化产品、咨询及服务,帮助客户挖掘数据的价值。目前锦木信息服务于50 行业尖端客户,包括金融、保险、券商、游戏、电商等,销售业务覆盖中国大陆及香港。MongoDB现在是公司技术服务的核心部分,除了技术服务与支持外,公司还具有很多成熟的自研产品,助力于MongoDB的蓬勃发展。
2. 我们本次年会的主题是:重新认识MongoDB。接下来我们来谈一谈锦木眼中的MongoDB是怎么样的吧!
锦木一开始为什么选择MongoDB而不是其他数据库?
在过去的很长时间,关系型数据库一直是最主流的数据库解决方案,然而信息技术爆炸式发展的今天,大数据已经成为了继云计算,物联网后的新技术革命,关系型数据库在处理大数据量时已经开始吃力。
从性能上看,在大数据时代中,大数据量的处理已经成了考量一个数据库最重要的原因之一。而MongoDB的一个主要目标就是尽可能的让数据库保持卓越的性能,这很大程度地决定了MongoDB的设计。在一个以传统机械硬盘为主导的年代,硬盘很可能会成为性能的短板,而MongoDB选择了最大程度利用内存资源用作缓存来换取卓越的性能,并且会自动选择速度最快的索引来进行查询。MongoDB尽可能精简数据库,将尽可能多的操作交给客户端,这种方式也是MongoDB能够保持卓越性能的原因之一。
从扩展方面,互联网发展的今天,数据由MB,GB,变为了TB级别,单一的数据库已经无法承受了,扩展成为了重要的话题,但到底是选择横向扩展和纵向扩展呢?横向扩展,增加分区,成本低,管理困难;纵向扩展,服务器升级,成本高,容易达到极限。而MongoDB选择经济划算的横向扩展,可以更为容易的将数据拆分到不同的服务器中,但是不需要关心多服务器带来的问题,MongoDB可以将请求正确的分发到不同的服务器上,避免横向扩展带来的问题。
从使用方面,MongoDB使用的是NoSQL的设计模式,数据模型更为灵活,传统的SQL语句中包含着大量关联,子查询等语句,在增加复杂性的同时还让性能调优变得更加困难。MongoDB的面向文档设计中采用更为灵活的文档来取代关系型数据库中的行,面向文档的设计让开发人员获取数据的方式更加灵活,甚至于开发人员仅用一条语句即可查询复杂的嵌套关系。
通过以上因素,并结合当下的网络环境,与MongoDB的高性能、易扩展等特性,我们很看好MongoDB的未来发展,所以我们决定选择MongoDB数据库。
3. 在锦木数年的MongoDB技术服务过程中,对MongoDB有什么更深的认识?
MongoDB是一个分布式的数据库,它遵循于CAP原理中的C(一致性)和P(分区容错性)。MongoDB注重性能和扩展性,而非强一致性,仅提供对行级别的原子性保证,也就是说同时对同一个Key下的数据进行的两个操作,在实际执行的时候是会串行的执行,保证了每一个Key-Value对不会被破坏。在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。MongoDB通过数据的复制和自动failover,即使发生物理故障,整个集群还是能够在短时间内恢复,继续支撑业务的访问,以达到应用无感知的效果何况恢复也是自动的。在这方面体现了MongoDB的高性能、负载均衡、易使用的特点。
4. MongoDB的应用场景主要有哪些?
以下我列出了几种比较常见的应用场景,例如:移动应用、电商、物联网、主机分流、实时分析、数据中台等。我们通过其中的几种场景来介绍一下应用场景:
对于一些电商互联网公司,移动应用是必不可少的,这些应用的前后端都是通过json类型的数据进行交互,可能对地理位置也有要求,迭代更新也比较快,用户量比较大,MongoDB在这些场景都有很好的支持,MongoDB类似json的bson的数据结构支持不同的数据结构,原生包含地理位置的相关功能,横向扩展能力支撑爆发增长,复制集也提供了高可用。
主机分流/读写分离的场景:在金融行业比较常见,实时同步机制采用MongoDB数据库来支撑,使用MongoDB的高性能查询来支撑业务的读操作。
数据中台场景:企业多个业务系统的数据进行统一汇聚到一个中台,打通部门或数据孤岛,对数据进行统计分析,提高系统的响应能力,MongoDB的Bson数据类型可以支持多元系统中数据的汇聚,原生的横向扩展能力可以让一套系统支撑多套系统的读写能力,基于内存的读写能力,可以提供多套业务系统使用同一份数据。
实时分析的场景:个性化,推荐系统可以利用MongoDB的缓存机制,利用内存计算加速;实时分析可以通过MongoDB的聚合框架来实现;快速计算,秒级响应可以利用微分片架构的并发计算来大量缩减计算时间。
5. MongoDB更新迭代频率比较快,4.4什么最新功能让您印象深刻?
最新的MongoDB4.4版本有一个新的功能点,Hidden index可以临时禁用索引,而不需要删除索引,避免产生巨大的内存消耗,影响业务,MongoDB 4.4也提供了对冲读功能,同时向多个节点发送请求,把最快的响应发送给客户端,MongoDB4.4也支持了复合Hashed shard key。
6. 对于正在考虑使用MongoDB的用户,您有什么建议吗?
不要局限于经常使用的一些技术,可能有些技术已经不再适用于当前的网络环境,在网络日益发展的今天,有很多适用于当前环境的新技术的出现,大家不妨去尝试一下。对于想学习 MongoDB 技术的同学,强烈推荐的学习资料就是 MongoDB 官方文档,涵盖接口使用,数据库配置、内部实现、用户案例等各种内容的介绍,非常全面,社区里平时问的比较多的问题,99% 都能从官方文档上找到答案;如果真有棘手的问题可以联系我们协助解决。
感谢严冶君的会前分享,现场也会有更精彩的内容等大家!