百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

迁移到MySQL的语法转换工具初步设计

mhr18 2024-09-20 20:46 17 浏览 0 评论

这是学习笔记的第 2260篇文章

读完需要

9

分钟

速读仅需7分钟

迁移到MySQL有很多原因,在基础准备工作中,源库的建表语句到MySQL建表语句的转换,不仅涉及到数据库间的语法,数据类型等差异,同时在SQL开发规范方向也有一些相应的规范,如何提高开发效率,同时使得开发规范更容易落地,向MySQL迁移的语法转换工具的作用就尤为重要。

以下仅以SQL Server作为参考,对于Oracle等其他商业数据库也可以采用类似的处理方式。

经过调研分析和使用经验,计划支持两种使用模式。

模式1:指定数据库表

其中数据库的库,表,字段等元数据信息存储在运维系统元数据中,需要周期性和线上环境做字典信息同步,在接受到前端请求之后,提供一键转换接口,在这个处理过程中实现如下两个步骤:

1)构建出SQL Server侧的建表语句,该建表语句可以供前端显示和转换为MySQL语法作为参考。

2)将语句转换为符合MySQL基本规范的SQL语句,主要涉及数据类型,默认值,存储引擎,自增列值,字符集等。

在语法转换完成后,可以使用已有的SQL审核服务进一步审核修正,直至满足自动化上线的标(比如SQL打分为80分以上即可实现自动化上线)

模式2:输入SQL文本

输入SQL文本目前存在两类通用问题:

1)目前业务方使用的客户端工具存在差异,create table语句转换会生成两种风格的建表语句,第一类是create table xxxx,只有一条语句,第二类是:create table xxxxx,alter table xxxx add xxx;会有多条SQL语句

2)输入文本转换为MySQL文本的过程中,因为前端输入信息的差异在解析实现中复杂度较高。

在执行SQL文本时,会将SQL执行在虚拟数据库上面,执行完成后会同步推送SQL Servre侧的字典数据到运维系统的临时元数据存储中,然后在这个基础上,提供一键转换接口,在这个处理过程中实现如下两个步骤:

3)构建出SQL Server侧的建表语句,该建表语句可以供前端显示和转换为MySQL语法作为参考,此时建表语句会整合为独立的条SQL.

4)将语句转换为符合MySQL基本规范的SQL语句,主要涉及数据类型,默认值,存储引擎,自增列值,字符集等。

在语法转换完成后,可以使用已有的SQL审核服务进一步审核修正,但是没有对接SQL自动化上线流程。

整个一套体系下来,需要设计哪几个接口,哪些是对内对外的服务就一目了然了。

相关推荐

1024程序员节 花了三个小时调试 集合近50种常用小工具 开源项目

开篇1024是程序员节了,本来我说看个开源项目花半个小时调试之前看的一个不错的开源项目,一个日常开发常常使用的工具集,结果花了我三个小时,开源作者的开源项目中缺少一些文件,我一个个在网上找的,好多坑...

免费全开源,功能强大的多连接数据库管理工具!-DbGate

DBGate是一个强大且易于使用的开源数据库管理工具,它提供了一个统一的Web界面,让你能够轻松地访问和管理多种类型的数据库。无论你是开发者、数据分析师还是DBA,DBGate都能帮助你提升工作效率...

10个最佳的开源免费的酒店系统,接私活创业拿来改改
  • 10个最佳的开源免费的酒店系统,接私活创业拿来改改
  • 10个最佳的开源免费的酒店系统,接私活创业拿来改改
  • 10个最佳的开源免费的酒店系统,接私活创业拿来改改
  • 10个最佳的开源免费的酒店系统,接私活创业拿来改改
使用operator部署Prometheus

一、介绍Operator是CoreOS公司开发,用于扩展kubernetesAPI或特定应用程序的控制器,它用来创建、配置、管理复杂的有状态应用,例如数据库,监控系统。其中Prometheus-Op...

java学习总结

SpringBoot简介https://spring.io/guideshttp://www.spring4all.com/article/246http://www.spring4all.com/a...

Swoole难上手?从EasySwoole开始

前言有些童鞋感觉对Swoole不从下手,也不知在什么业务上使用它,看它这么火却学不会也是挺让人捉急的一件事情。Swoole:面向生产环境的PHP异步网络通信引擎啥是异步网络通信?10年架构师领你架...

一款商用品质的开源商城系统(Yii2+Vue2.0+uniapp)

一、项目简介这是一套很成熟的开源商城系统【开店星】,之前推过一次,后台感兴趣的还不少,今天再来详细介绍一下:基于Yii2+Vue2.0+uniapp框架研发,代码质量堪称商用品质,下载安装无门槛,UI...

Yii2中对Composer的使用

如何理解Composer?若使用Composer我们应该先知道这是一个什么东西,主要干什么用的,我们可以把Composer理解为PHP包的管理工具,管理我们用到的Yii2相关的插件。安装Compose...

SpringBoot实现OA自动化办公管理系统源码+代码讲解+开发文档

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的自动化OA办公管理系统,主要实现了日常办公的考勤签到等一些办公基本操作流程的全部功能,系统分普通员工、部门经理、管理员等...

7层架构解密:从UI到基础设施,打造真正可扩展的系统

"我们系统用户量暴增后完全崩溃了!"这是多少工程师的噩梦?选择正确的数据库只是冰山一角,真正的系统扩展性是一场全栈战役。客户端层:用户体验的第一道防线当用户点击你的应用时,0.1秒...

Win11系统下使用Django+Celery异步任务队列以及定时(周期)任务

首先明确一点,celery4.1+的官方文档已经详细说明,该版本之后不需要引入依赖django-celery这个库了,直接用celery本身就可以了,就在去年年初的一篇文章python3.7....

HL7消息编辑器的使用手册

REDISANT提供互联网与物联网开发测试套件#互联网与中间件:RedisAssistantZooKeeperAssistantKafkaAssistantRocketMQAssistant...

后台改了商品,前端却不更新?一次被运营怒怼后的数据同步机制复盘

在电商运营中,后台数据更新与前端展示的同步问题一直是困扰团队的常见痛点。本文通过一次“运营怒怼开发”的真实案例,深入剖析了商城前后台数据同步机制的缺陷,并从产品视角复盘了问题的根源。运营:“我都改了价...

Redis 8为向量相似性推出新的数据结构

作者|RenatoLosio审校|明知山策划|TinaRedis最近推出向量集合(VectorSet)功能,这是一种专为向量相似性设计的数据类型,也是Redis针对人工智能...

redis主从同步是怎样的过程

Redis的主从同步机制用于在多个Redis实例之间复制数据,以实现数据冗余、读写分离和高可用性。下面为你详细介绍Redis主从同步的过程,它主要分为全量同步和增量同步。全量同步全量同步一般...

取消回复欢迎 发表评论: