数据库选型必须翻越的“成见大山”

砍柴网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

不知道从何时起

数据库必选分布式 ”成了一种潮流

数据库选型必须翻越的“成见大山”

数据查询慢?上分布式!

应用总是瘫?上分布式!

业务体量大?上分布式!

KPI考核不达标?上分布式!

数据库选型必须翻越的“成见大山”

分布式数据库 ”的疗效

就这样被神话了

跟数据和应用相关的各种疑难杂症

仿佛都可以拿“分布式大法”来治

数据库选型必须翻越的“成见大山”

果真如此吗?只能说

用户心中的「成见」,像一座大山

过去几年分布式数据库造势太猛

别管什么场景,只管整就完了!

这座大山是如何形成的?

上个十年, 互联网 公司的业务大爆发,让互联网范式走上了神坛。

互联网大厂的业务模型、中台理念、应用架构以及分布式数据库,甚至互联网公司的从业人员,都成了香饽饽。

那么,由此带来的香饽饽之一“ 分布式数据库 ”,到底好不好?

不可否认,确实好!

分布式数据库的最大优势在于其横向扩展能力,轻松处理超大规模数据和并发请求,比如电商平台、 社交 媒体 或其它超重载应用。

而这,恰恰是互联网业务场景的特点↓

海量用户,高速扩张,峰值秒杀,大批高端技术牛马负责运维保障…

但是,一旦抛开互联网业务,来到传统企业级场景,你会发现↓

分布式数据库没那么神,甚至,还有一些劣势——

业内曾经流传着一个很著名的案例:

某银行做分布式数据库试点,用600台x86服务器承载分布式数据,替换了一个三节点O记RAC。

性能和扩展性似乎上来了,但运维成本大幅增加(人力、电费、机房空间、备件)。

所以, 技术选择需要回归业务本质,而非追逐技术潮流

分布式数据库绝对不是包治百病的良药,任何场景,都需要对症下药。

数据库到底应该如何选?

一、要搞清自己的业务需求和痛点,再对症下药↓

如果是面向海量用户,超大数据量和增长潜力,并伴有高峰值并发、秒杀型的典型互联网业务特征,这确实是分布式数据库舒适区。

如果是复杂业务计算和数据热点集中的场景,采用集中式库更合适,比如12306客票、医院HIS、外汇交易、生产调度、ERP等业务。

二、要对分布式祛魅,很多所谓的“分布式场景”,都跟分布式数据库没半毛钱关系。

1、“ 分布式应用 ”场景:

有的客户希望用分布式的云原生架构,比如微服务化/分布式应用,支持敏捷开发DevOps。

分布式应用的本质,是将上层业务模块解耦、拆分,每个模块都可以独立开发、维护、扩展,并实现容错隔离。

如果只是应用解耦,而数据库保持不变,很显然这个过程与数据库是不是分布式没关系。

而如果在应用解耦过程中,同时将数据库拆解并绑定到特定微服务应用中,那显然数据库面临的压力变小了,也与分布式更没关系了。

至于敏捷开发、CICD、DevOps什么的,跟数据库是不是分布式同样没关系。

2、“ 分布式用户 ”场景

有些用户的本意是希望节省成本,一套数据库能满足多个部门、多个应用的需求。

他们认为分布式数据库能够更好地满足这样多部门、多业务需求。

这种情况跟分布式毫无关系,这是数据库的多租户场景,采用支持多租户模式的集中式数据库成本更低、效果更佳。

3、“ 分布式标底 ”场景

前两种只能算“错误认知”,而这一种就堪称魔幻了。

有人只是觉得分布式数据库更热门、更拉风,就写进了采购标底。

结果采购回来,实际部署的时候,却当成单机版,集中式部署,妥妥“冤大头”。

要知道这种把分布式数据库当集中式部署的情况,综合性能远不如原生的集中式数据库。

以上这三种“分布式”场景,都不需要“分布式数据库”。

此时,选择合适的集中式数据库,能够获得更优的性能、更好的运维体验,以及更低的成本。

选择金仓,应对企业全栈场景

接下来,我们以 金仓数据库 为例,讲一讲面对各种业务需求,具体如何选型。

作为国产数据库领域的领军企业,金仓数据库产品线丰富,既有集中式产品,也有分布式数据库,广泛适配各种业务需求。

第一、分布式应用需求

乍一看,分布式应用很复杂,其实每个拆分后的微服务应用,相比单体应用,功能更加纯粹、简单,反而对数据库的要求大大降低了。

所以,能扛起大型单体应用的金仓数据库,针对分布式应用这点“小Case”,自然轻松拿捏。

同时,针对不同微服务模块的业务特征,可以采用不同类型的数据库来搭配,从而达到最优的效果。

比如一个微服务化的电商应用,包含用户、商品、订单、支付、统计分析等模块,那么可以针对性的进行数据库设计。

用户服务:事务性、高可靠要求,采用KES主备集群;

商品服务:事务性,读多写少、缓存需求高,采用KES读写分离集群(支持Redis迁移)

订单服务:事务性强、一致性要求高,并发读写压力大,采用KES RAC;

支付服务:高事务性、 金融 级一致性,采用KES RAC;

统计分析服务:数据量巨大、实时复杂查询分析,采用KES ADC。

第二、多租户需求

在企业级场景,不同部门、不同业务系统,都对数据库有要求。

以往解决这种问题,最简单粗暴的办法就是采购多个数据库,多套物理硬件,各跑各的,大家都没意见。

但这种方式会造成巨大的资源浪费,每个数据库利用率都很低,运维、升级也要独立完成。

想要实现多用户、多部门共享,最佳的解决方案是采用数据库的多租户功能。

针对多租户需求, 金仓数据库 是提供两大类四种场景的成熟解决方案,灵活满足不同建设现状、不同隔离级别、不同预算要求。

1、VM级多租户

适用于客户已建好有虚拟化/云平台,金仓数据库可以无缝融入,资源硬件共享、基于VM隔离,支持VM级扩缩容。

2、容器级多租户

适用于客户已有K8S容器化平台层,金仓数据库无缝融入,硬件、OS共享、基于容器隔离,支持pod级扩缩容。

3、数据库实例级多租户

适用于中小型应用,低成本投入,单个服务器跑多个业务系统。金仓数据库天然支持多实例特性,每个业务独占一个数据库实例。

并且在部署的时候,可以利用多台服务器池化,主备实例分开部署,提升数据库冗余能力。

同时,金仓也支持分布式数据库的多实例模式。

4、数据库User级多租户

这种模式,通过将数据库创建若干资源组,实现整体资源池化,然后创建用户租户,并指定分配的资源组。

从而实现数据库实例部署多租户系统,租户间资源隔离,提升软硬件资源利用率,大幅降低成本。

第三、集中式高可用数据库需求

大中型企业的生产级核心应用,都需要数据库支持高可用集群,或者再明确一点,他们希望对Oracle RAC进行国产化替代。

此时,就轮到金仓的另两个重磅数据库产品登场了。

1、KES RAC,多写共享存储集群

看名字大家就秒懂了,这是对标Oracle RAC的场景。

KES RAC集群支持2-8个节点规模,读写请求横向扩展(吞吐量加速比超过0.8),提供“RPO=0、RTO<10s”可用性,满足金融级一致性、高事务性和大规模并发读写需求。

2、KES RWC,读写分离集群

基于事务级别的读写分离,自动识别SQL语句读写种类,一主多备、一写多读。

KES RWC适用于大规模并发查询、读多写少的中/重载业务场景,支持从实例、集群到多中心的高可用保障,数据零丢失,故障秒切换。

第四、真正的分布式数据库需求

在企业级市场,确实存在一些真实的分布式数据库需求:比如超大型应用(超高并发、海量存储、横向扩展)、极致高可用(跨中心多活、局部高容错)等等。

针对这样的现实需求和潜在需求,金仓数据库提供了强大的“ 分布式三剑客 ”。

1、KES TDC,基于分布式存储的透明分布式方案。

该方案对上层应用完全透明,不需要应用改造,可平滑迁移,并具备横向扩展能力和节点故障容错能力。

适用于超大型集团办公平台、政务核心平台、医疗HIS系统、银行信贷管理系统、港口TOS系统等…

2、KES Sharding,基于分布式中间件的分布式方案。

该方案需要应用支持分库分表改造,适用于对并发、容量、吞吐量扩展性要求高的事务处理场景,如运营商网间结算、基金公司TA系统等。

3、KES ADC,基于分布式+融合多存储引擎的分析性分布式方案。

该方案适用于大规模AP或者HTAP场景,类似数仓、实时数仓,诸如数据统一汇总平台、大数据分析平台、进出口贸易货物统计系统等等。

最后,还是那句话:技术的选择要回归业务本质,而非追逐技术潮流。

明白这个道理,我们就掌握了 消除成见、翻越大山 的核心奥义。

怎么样?您的数据库选对了吗?

随意打赏

提交建议
微信扫一扫,分享给好友吧。