为什么需要分布式数据库

随着数据量和业务负载增加,单台数据库服务器难以支撑,分布式数据库成为解决方案。然而,分库分表中间件如tddl存在诸多问题,如不支持完备的分布式查询和事务处理,应用开发复杂。昆仑分布式数据库旨在解决这些问题,提供高性能、自动水平扩容、分布式事务和查询处理,降低开发难度,提高系统可靠性。
摘要由CSDN通过智能技术生成

​这些年,由于数据规模和业务访问负载越来越大,越来越多的公司无法依赖单台数据库服务器支撑其业务,越来越多的公司不得不做数据分区存储,也就是所谓的分库分表,但大量的烦恼与困惑也随之而来。

  • 令人“头都大了”的分库分表中间件

10多年前阿里因此原因不得不把淘宝后台系统从Oracle RAC切换到数百个 MySQL集群构成的分库分表集群,不过那时的淘宝仅仅使用一个分库分表中间件,名为tddl(又名:头都大了,江湖上现在还有tddl的传说),而不是分布式数据库,这两者之间的区别,也可能正是tddl让淘宝后台业务开发者“头都大了”的原因。

具体来说,诸如tddl,mysql_proxy,mysql_router,mycat等数据行路由中间件的问题在于:

01 它们不支持完备的分布式查询处理

用户程序发给这些中间件的合法的SQL语句,只要涉及一些高级SQL功能,比如多表连接,子查询,CTE,window function,aggregation等,都无法正确执行;这导致大量SQL生态下的工具,比如低代码工具,OR映射中间件,机器学习算法等各种数据分析工具和算法 都无法与这些中间件交互和协作。

应用软件程序员需要在业务代码中,分别到目标数据所在的存储集群查询数据片段,然后在业务代码中组装出最终结果。这些操作就是在应用层针对一个特定的SQL语句做了一次查询处理和执行。

这个工作本来可以直接发送SQL语句给分布式数据库就得到结果的,但是没有分布式数据库就只能针对每一个SQL语句做一次类似的查询处理实现,工作量自然非常巨大。特别是,这样的查询处理代码还可能因为业务逻辑的需求的变化和迭代而需要反复修改,这个开发工作量比直接修改SQL语句要大而且复杂太多了。

02 它们不支持可靠容灾的分布式事务处理

应用程序员大多并没有意识到分布式事务不做两阶段提交到底会有什么业务风险,处于“不知不觉”状态;少数应用程序员想到了这个潜在风险,但是无法解决,于是得过且过。

只有极少数程序员认识到了问题并且能够解决,但也只能case by case地解决,比如为了实现可靠的转账功能,需要设计出一套技术在业务层实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值