在迁移至分布式数据库的过程中,传统数据库中的存储过程、自定义函数、触发器如何处理改造?

刚刚看了下TDSQL的官方文档,TDSQL 不支持 MySQL 的一些特性如下:自定义函数。视图,存储过程,触发器,游标。外键,自建分区。复合语句,如 BEGIN END,LOOP,UNION。子查询,having 子句(但支持带 shardkey 的 derived table)。我们知道银行业务系统中,使用了大量的存储过程以及自定义函数,...显示全部

刚刚看了下TDSQL的官方文档,TDSQL 不支持 MySQL 的一些特性如下:

  • 自定义函数。
  • 视图,存储过程,触发器,游标。
  • 外键,自建分区。
  • 复合语句,如 BEGIN END,LOOP,UNION。
  • 子查询,having 子句(但支持带 shardkey 的 derived table)。

我们知道银行业务系统中,使用了大量的存储过程以及自定义函数,但是在迁移至分布式数据库的过程中,由于TDSQL不支持这些。贵行是如何改造的呢?
各位老师能否分享一下经验?

收起
参与21

查看其它 3 个回答Dingk的回答

DingkDingk副总经理张家港行

新一代的核心系统,其原型设计,在交易型已经不再使用存储过程,所以交易层面,所做的工作就是进行SQL的适配改写。
1、SQL改写是基础,是首先要完成的,主要有函数替换和语法替换。在这部分工作完成后,基本可以进行交易的试跑。初期,确实发现性能不尽如人意。经过对一个帐务类交易的一周的集中分析与优化,最终使性能达到预期。
2、所以SQL适配的第二部分工作,就是效率优化,这部分内容更多,持续时间也更长。性能存在问题的地方,主要是联表查询,联表查询优化的关键,则在于分区键shardkey的设计。

另外,日终跑批处理,原设计确实仍有使用存储过程,这部分则仍靠应用的拆分,将存储过程通过应用、临时表来完成相关工作。

使用分布式数据库要转换思路,不再或少用复杂sql,通过合理的表结构的全局设计,将语句简单化,才能适配。

如果应用在交易层都大量使用存储过程,那进行数据库的替换,确实将比较困难。

银行 · 2020-05-28
浏览2738
atpeace331 邀答

回答者

Dingk
副总经理张家港行
擅长领域: 数据库服务器分布式系统

Dingk 最近回答过的问题

回答状态

  • 发布时间:2020-05-28
  • 关注会员:6 人
  • 回答浏览:2738
  • X社区推广