数据库选型原来有这么多妙招(收藏)

图片

做一个单纯的程序汪,分享干货,聊聊人生。

微信公众号:后端架构进阶

关注我发现更多的干货,微服务、Spring源码、JVM、SpringCloud Alibaba、K8S等。

如果你觉得本文对你有帮助,麻烦给我点个赞,感谢支持!

数据库对于我们后端的同学来说,那简直是生活中的柴米油盐呐,每天都在和它打交道。最近在做个数据库的选型的时候难到了,所以把过程记录了下。

一、背景

      据DB-Engines数据库流行度排行榜显示,目前全球有多达359个开源和商业的数据库。

图片

      从应用类型看,有OLTP事务型数据库,有OLAP分析型数据库,还有HTAP混合型数据库。

      从存储方式看,有关系型数据库和非关系型数据库(NoSQL)之分。而NoSQL数据库又依据支持的数据模型不同,分为键值数据库、文档数据库、列式数据库、图形数据库等等。

      数据格式、应用场景纷繁复杂,很多需求已经不是单一数据库能解决的。同时,微服务架构的崛起,也在推动企业不同业务场景采用不同的数据库,如果选择不当,会导致服务的性能上不去。

二、选型要点

1、业务场景

      任何脱离业务场景需求的数据库选型都是耍流氓。数据库选型的决定性因素是结合业务应用场景,分析目前已有的需求和未来可能会出现的新需求,来考量选择何种数据库。

      业务用数据库来做什么?分析还是交易?或者两者兼而有之?业务要处理什么样的数据?对数据库性能需求是什么?

2、关系型还是时序数据?

      如果是传统的ERP、CRM、财务等企业内部应用,需要事务完整性,保证ACID事务,那么,毫无疑问,关系型数据库是最佳选择。如果业务要做物联网数据采集和监控,需要高频、实时、持续的写入,那么,时序数据库是正确的选择。

3、根据数据决定

  业务要处理什么样的数据?结构化?半结构化?非结构化数据?决定需要支持的数据模型。原则上“什么数据模型,就用什么库。”

  如果你要存储和处理的是图片、音频、视频等非结构化数据,那么,NoSQL数据库会是最佳选择。进一步来说,业务要存储游戏场景中的角色信息、经验道具信息、好友排名等信息,而这些信息一般都和 ID(键)挂钩,那么,键值数据库是个很好的选择。

4、吞吐性 

       业务需要处理的多大的数据规模、并发吞吐量、响应时间需求是什么?决定了对数据库的性能需求。

      如果业务是秒杀,春节火车票等,有超高峰值业务,那么,分布式数据库会是一个不错的选择。

三、可运维性

      选型的时候当然不能忽略数据库的运维,自身团队技术储备如何?选型要考虑现有开发、运维人员的技能,尽量选择学习曲线短的。

  数据库选型,很多人会忽略生态,一个好的数据库不仅自身强大,周边生态完善很重要。与周边上下游产品的兼容性,配套软件、工具、技术人才等都对可运维性产生极大影响。

  每一种数据库都不简单,掌握都需要一个过程。数据库发生问题,如何快速定位并解决问题?如果有个活跃的用户社区,DBA会有信心很多。

四、成本

       数据库选型不仅要考虑部署数据库的硬件资源成本、软件成本、服务成本和人力成本,还要考虑隐形的成本,比如迁移成本、维护成本、学习成本,运营成本等

       分布式数据库虽然很火,但也不要盲目赶时髦,要用对地方,要清楚什么场景适合分布式数据库,什么场景不适合,否则,不仅达不到预期效果还更费钱。

五、小结

还是那句话,一切脱离业务场景都是在刷流氓。目前,没有万能的数据库,只有最合适的数据库。数据库选型还是要根据业务需求来选择最合适的产品,切勿盲目赶时髦,去追新求热。

历史文章汇总

总结

以上就是之前的内容的总结和分享,感谢各位大佬的 关注点赞收藏

微信公众号:后端架构进阶

更多文章正在赶来,喜欢记得给我点个 👍 ,感谢支持!

公众号文章同步更新!关注我,不迷路!