企业数字化如火如荼,私域运营成为热词。作为赛道中的热门产品,尘锋SCRM目前上线近2年时间,服务了10,+客户。研发是软件服务商的立身之本,数据库又是企业数字化的重要基础。
尘锋Growth研究院技术专刊·首期重磅上线!本片作者kivi,参考MongoDB中文社区
在研发早期,尘锋信息开发团队,在面对数据库选型时,基于以下原因,最终选择使用MongoDB:
1.新产品早期迭代阶段,需求的不确定性强,随时可能会有较大的调整。市场瞬息万变,抢占市场阶段需要能够快速满足需求;
2.面对企业服务的市场开发,需要注意的几个关键性问题:
a.严格的可用性要求
b.业务快速发展对于数据库吞吐量的要求
c.海量企业数据库永久存储不允许失效
01关于事务
对于大部分开发者来说,事务是数据库选型时考虑的一个关键因素。其实MongoDB在4.0版本就已经支持了事务,在4.2版本中已经支持分布式事务,可以在分片集群中使用。
更关键的一点是,4.2分布式事务的语法和4.0完全相同,我们可以使用相同的关系式事务语法,并且在扩展分布式事务时,客户端代码不需要修改,做到无缝迁移。4.2版本的事务功能已经能够满足我们业务侧对于事务的需求。
02MongoDB的优势
横向拓展
A.原生分布式架构,非常方便通过分片进行横向拓展,实现海量数存储;
B.自动化数据均衡逻辑,提升读写性能和吞吐;
C.副本集模式保障高可用性。
自动故障恢复和高可用性
所有的集群分片都是副本集,可以完全避免单点故障,实现故障自动转移,提升系统整体高可用性。
多种读参考模式
多种读参考模式,灵活的实现读写分离,重复利用副本能力提升性能。
Schemaless(无模式)
对开发者友好,适应快速的需求变化,助力业务快速迭代,适应市场变化。
安全可控
强大的原生角色和权限控制,保证安全可靠,无需在应用程序侧再做单独开发处理。
变更流
changestream具备持久性(Majority-CommittedChanges),可实现端点续传(Resumetoken),通过全局时钟保证顺序性,具备权限控制功能保证安全,基于Aggregate框架可灵活的根据特定需求进行过滤计算。方便快速实现实时数据同步功能,快速接入数仓,构建数据中台。
其他优秀特性支持
A.内置GridFS,支持大容量的存储
B.内置地理位置索引,支持地图功能
成熟完善的社区和生态
相对于其他的NoSQL数据库,MongoDB的社区和生态更加完善成熟,第三方组件库非常丰富稳定,为研发落地提供了保障
广泛的行业应用
MongoDB在各行各业都已经被广泛应用起来,如视频,奢侈品,游戏(网易游戏),航空(国际机票后端),保险(泰康),金融(微牛),企业服务(CRM),在线教育,物联网。各个互联网大厂也开始落地,阿里云、华为云、腾讯、今日头条、苏宁、OPPO等。
中国银行(实时交易分析)
① 整合全分散交数据,实现客户层面一本帐;
② 收实时汇总交额,秒级响应;
③ 千亿级别数据实时处理。
国泰君安证券(中台系统策略化)
① 用户全局数据、共享数据、标签、字典,处理三端一微30/s的并发请求;
② 产品资讯信息,模拟盘数据;
③ 情数据存放与分析,化交易。
中国东方航空
① 旅客多数据源的快速集成(航信、程、李、投诉、贵宾厅、网站、App等);
② Spark和MongoDB集成,幅提升数据分析合处理速度;
③ 旅客敏感数据集中到MongoDB中,成为唯用户数据来源。
携程(机票缓存)
① 机票价格缓存在MongoDB内存引擎中,快速响应票价请求;
② 利用TTL索引,动删除过期票价;
③ 分架构应弹性对压力增。
百度网盘
① 存放网盘文件的metadata元数据;
② 3PB数据量;
③ 分片架构弹性伸缩应对压力增长。
MongoDB客户墙
总的来说,传统关系型数据库和分布式数据库的能力MongoDB都可以直接覆盖,部分特性远超传统关系型数据库。
03为什么选择MongoDB?
千万级以上规模数据表查询,吞吐支持
尘锋SCRM产品是一个ToBSass平台。企业级数据通常具有千万级数据存储和海量数据查询需求,使用传统关系型数据库基本无法满足生产需要(根据经验,MySQL在百万级数据量情况下表现良好,到了千万级数据量规模时性能和吞吐会全面下滑),MongoDB在千万级以上数据量的性能和吞吐表现很好,可以满足我们生产业务需要。
业务规模快增长,快速简单且稳定的横长扩张需求
不仅是尘锋自身的发展速度极快,同时有赖于私域的发展,平台客户的业务增长速度同样很快,尘锋SCRM需要满足快速增长的需要,而MongoDB原生支持分片横向扩展,以及数据表分片,数据自动均衡,应用层完全透明,完全满足了当前的业务痛点。
企业级服务对于高可用的强烈需求(分区容错性)
企业级数据,千万级及以上数据规模,高并发请求等业务场景下,我们对于业务数据库的高可用有着极高的要求,MongoDB基于复制集的分片集群模式,彻底解决了单点故障问题,并且支持自动故障转移(根据经验,秒级完成),极大降低运维成本和风险,为尘锋技术团队支持维护海量数据提供了保障。
字段复杂且快速变化,多层次结构的数据模型
字段复杂且快速变化,多层次结构的数据模型,满足不同企业级业务需要。
A.比如传统快消行业,业务快速发展,数据结构也需要快速变更,利用MongoDBschemafree的特性,可以快速,低成本的适应变化,而不需要单独花时间做数据库处理;
B.再比如汽车市场的不同环节的客户信息具有异构性,利用MongDB能够快速适配,降低了居高不下的开发成本。
成熟完善的社区和生态支持
第三方库成熟完善且稳定,文档丰富,第三方工具丰富,支持快速上手,方便在技术团队落地。
丰富的实战经验沉淀
A.7年toBSass业务数据基于MongoDB的存储方案落地经验;
B.丰富的大规模数据治理和集群稳定性维护经验,曾负责过数百台服务器组成的自建MongoDB集群管理,PB级规模企业数据维护,数万级op/s支撑;
C.数据库诊断及性能深度调优,针对不同业务场景,有对应的最佳实践方案;
D.数据库严重故障和灾难恢复经验丰富。
技术专刊将定期更新,欢迎评论区交流讨论