异构数据迁移的一些想法之元数据转换(一)

背景:

随着国产化的推进,数据库也出现的大量的国产化厂商。从其他库迁移到国产库的需求也随之增长。因为是不同的数据库,所以同构的数据库这里不讨论,只讨论异构数据库的大致实现流程(暂不涉及增量部分,增量部分后期会通过单独的章节来讨论)。

分类:

国产的数据库厂商,在自己看来,大致分为以下两类:

一、在开源(MySQL、PG……)的基础上,进行相应的研发。

二、自己独立一套,不基于任何开源的来进行相应的开发。

本文只对于第二类数据库进行讨论。第一种数据库暂不讨论,因为成熟的方案太多太多。

准备工作:

异构数据迁移的话,前期准备工作大致包含以下几部分(不同的库有不同的语句,eg仅供参考):

1、源库和目标库的数据类型的转换,常用语句的转换

eg: MySQL:text TDSQL: text

2、为了保证转换的通用性,建议直接通过语句从数据库的获取所需的信息为最佳。因为如果通过解析文件来转换的话,没法保证文件格式的一致性。

eg:

select table_name from information_schema.tables where table_schema='test' 获取要迁移数据库的所有表

3、对于存储过程、函数来讲,要有允许失败的可能性。

eg:

select ROUTINE_NAME,ROUTINE_TYPE from information_schema.ROUTINES 获取存储过程或者函数的名称

伪代码

(元数据迁移大致分为以下四步):

源库相关连接信息(IP、PORT、USER、PASS、DB)
通过相关的语句获取到DB中的所有表
循环遍历所有表,然后对每个表的索引通过相关的语句获取到对应的索引名称、索引类型、索引列名(如果是组合索引,还需要确认顺序)
通过已经获取到的相关索引信息,生成目标库的对应索引创建语句



最终的目的

让自己变得更加懒惰,能自动实现的流程一定要自动实现。希望所有的打工人,都可以让自己变得更懒惰,有更多的时间去学习~ 2023年大吉大利发大财~

自己有通过Python实现的MySQL/Oracle的转换的提取部分的相关代码,但是我没找到上传文件的地方,不太清楚怎么上传。如果大家有需要的话,我完后单独开个帖子复制上来吧。欢迎留言讨论。

谢谢~ 最后附图一张:


自己在写的时候用到的简单流程

展开阅读全文

页面更新:2024-04-23

标签:同构   增量   语句   懒惰   函数   索引   想法   流程   厂商   数据库   数据   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top