数据库选型:别被“分布式”潮流冲昏头

在这里插入图片描述

文章来源出处:特大号
不知道从何时起“选数据库必选分布式”成了一种潮流
在这里插入图片描述

数据查询慢?上分布式!

应用总是瘫?上分布式!业务体量大?上分布式!

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场景,类似数仓、实时数仓,诸如数据统一汇总平台、大数据分析平台、进出口贸易货物统计系统等等。
在这里插入图片描述
最后,还是那句话:技术的选择要回归业务本质,而非追逐技术潮流。明白这个道理,我们就掌握了消除成见、翻越大山的核心奥义。
在这里插入图片描述
怎么样?您的数据库选对了吗 ?

在这里插入图片描述

### Flink 大数据处理优化技巧与最佳实践 #### 调优原则与方法概述 对于Flink SQL作业中的大状态导致的反压问题,调优的核心在于减少状态大小以及提高状态访问效率。通过合理配置参数和调整逻辑设计可以有效缓解此类瓶颈[^1]。 #### 参数设置建议 针对不同版本下的具体特性差异,在实施任何性能改进措施前应当充分理解当前使用的Flink版本特点及其局限性;同时也要考虑特定应用场景的需求特征来定制化解决方案。这包括但不限于并行度设定、内存分配策略等方面的选择[^2]。 #### 数据流模式优化 采用广播变量机制可作为一种有效的手段用于降低主数据流转过程中所需维护的状态量级。当存在一对多关系的数据集间需频繁交互时,将较小规模的一方作为广播状态保存下来供另一方查询匹配使用不失为明智之举。此方式特别适用于维表Join操作中,其中一方变动相对较少但又必须保持最新记录的情况[^3]。 ```sql -- 创建临时视图以支持后续JOIN操作 CREATE TEMPORARY VIEW dim_table AS SELECT * FROM kafka_source; -- 定义Temporal Table Function以便获取指定时间点上的历史快照 CREATE FUNCTION hist_dim_table AS 'com.example.HistoricalDimTableFunction'; -- 执行带有时态条件约束的JOIN语句 SELECT o.order_id, d.product_name FROM orders o LEFT JOIN LATERAL TABLE(hist_dim_table(o.event_time)) AS d ON o.product_id = d.id; ``` 上述代码片段展示了如何利用Flink SQL实现基于时间戳的历史维度表连接功能,从而确保每次都能准确捕捉到事件发生瞬间对应的最恰当的产品名称信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二川bro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值