刚刚看了下TDSQL的官方文档,TDSQL 不支持 MySQL 的一些特性如下:
我们知道银行业务系统中,使用了大量的存储过程以及自定义函数,但是在迁移至分布式数据库的过程中,由于TDSQL不支持这些。贵行是如何改造的呢?
各位老师能否分享一下经验?
分布式数据库在核心系统的应用,一定要重构应用。
重构应用就是业务逻辑尽量在应用层完成,在数据库都是简单的SQL语句,避免复杂查询和跨库处理。
Oracle针对数据库市场最重要的成功因素就是存储过程,使得应用用上瘾之后,数据库没法迁移。
侧面可知分布式数据库改造最简单场景就是替换DB2的场景。
新一代的核心系统,其原型设计,在交易型已经不再使用存储过程,所以交易层面,所做的工作就是进行SQL的适配改写。
1、SQL改写是基础,是首先要完成的,主要有函数替换和语法替换。在这部分工作完成后,基本可以进行交易的试跑。初期,确实发现性能不尽如人意。经过对一个帐务类交易的一周的集中分析与优化,最终使性能达到预期。
2、所以SQL适配的第二部分工作,就是效率优化,这部分内容更多,持续时间也更长。性能存在问题的地方,主要是联表查询,联表查询优化的关键,则在于分区键shardkey的设计。
另外,日终跑批处理,原设计确实仍有使用存储过程,这部分则仍靠应用的拆分,将存储过程通过应用、临时表来完成相关工作。
使用分布式数据库要转换思路,不再或少用复杂sql,通过合理的表结构的全局设计,将语句简单化,才能适配。
如果应用在交易层都大量使用存储过程,那进行数据库的替换,确实将比较困难。
收起