CN111104161B - 一种数据库sql脚本的自动审批执行方法 - Google Patents
一种数据库sql脚本的自动审批执行方法 Download PDFInfo
- Publication number
- CN111104161B CN111104161B CN201911220721.2A CN201911220721A CN111104161B CN 111104161 B CN111104161 B CN 111104161B CN 201911220721 A CN201911220721 A CN 201911220721A CN 111104161 B CN111104161 B CN 111104161B
- Authority
- CN
- China
- Prior art keywords
- sql
- statement
- program
- database
- executing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库sql脚本的自动审批执行方法,涉及前后端编程和数据库技术领域,其采用目前流行的前后端分离的架构设计,前端采用基于vue的前端框架iview‑admin,后端采用golang语言的gin框架,通过jwt做的token认证。本发明降低DBA人工参与次数,提升效率,降低成本;提高数据库发布的实时性和高效性;实时掌握所有sql的进度,前后端高效通讯;系统部署方便,整个系统没有第三方依赖,可以直接拷贝部署。
Description
技术领域
本发明涉及前后端编程技术领域,尤其涉及一种数据库sql脚本的自动审批执行方法。
背景技术
目前一种典型的前后端分离的分布式应用环境的部署是这样的,将全部的服务和中间件以及数据库部署在服务器上,分布式服务之间通过注册到同一个服务注册中心相连,使用共同的消息队列集群,redis集群等中间件,然后通过nginx来做一个负载均衡。
如图1所示,基于这种方式部署的环境,由于每个服务只能提供一个版本的服务,所以具有几个显著的特性:
用作测试环境时,稳定性低。主要是由几个因素导致,1.代码变更频繁,难免有低质量代码会被合并和发布到测试环境中,导致服务不稳定 2.不同需求之间存在冲突,api变更频繁,可能会导致冲突
用作线上环境时,不够灵活。不能够灵活的支撑业务需要的A/B版本测试,或者是针对特定用户的beta测试等
在业务需要重新部署一套环境的情况下,代价很大,服务和中间件还有环境的配置等都需要重新弄。浪费了大量的人力和计算资源,提高了成本
基于上述原因,我们迫切的需要一种能够保障测试环境稳定运行,线上环境能很好的服务用户,同时能够快速部署新环境的解决方案,于是一种用于分布式系统的流量标签路由方法出现了,通过对分布式服务打标签,控制流量按照标签路由来解决我们遇到的分布式服务环境中的问题。
发明内容
本发明所要解决的技术问题是针对背景技术的问题提供一种数据库sql脚本的自动审批执行方法,其采用目前流行的前后端分离的架构设计,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证。
本发明为解决上述技术问题采用以下技术方案:
一种数据库sql脚本的自动审批执行方法,采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证,具体包含如下步骤:
步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个job id ;
步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的jobid 一并传入到go程序的后端程序;
步骤3,后端go程序接收到job id 后,从数据库中取出发布单中的sql语句;
步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面;
步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql语句,以1000为单位,每执行1000条以后就commit一次,同时将已经执行的sql语句的条数的条数,通过websocket发送到前端页面中。
作为本发明一种数据库sql脚本的自动审批执行方法的进一步优选方案,在步骤2中,w
ebsocket用于前后端实时通讯的技术,可实时发送执行的信息到前端页面,让执行发布的开发了解工单的执行情况。
作为本发明一种数据库sql脚本的自动审批执行方法的进一步优选方案,在步骤3中,若发布单中的sql语句是ddl语句,则判断发布单中的sql语句是否为create table语句,若是create table语句,则直接调用goInception去执行create语句;若判断sql语句为alter 修改表结构,则先检查alter操作的表的数据量,若alter操作的表的数据量在50万以内,则同样用goInception直接去执行该ddl语句;若alter操作的表的数据量大于50万数据,则采用gh-ost工具,去执行ddl语句,并提供从库的延时的判断,确保从库执行没有延时。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、降低DBA人工参与次数,提升效率,降低成本;
2、提高数据库发布的实时性和高效性;
3、实时掌握所有sql的进度,前后端高效通讯;
4、系统部署方便,整个系统没有第三方依赖,可以直接拷贝部署。
附图说明
图1是本发明的软件架构图;
图2是本发明的流程图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种数据库sql脚本的自动审批执行方法,采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token权限认证,具体包含如下步骤:
步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个job id ;
步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的jobid 一并传入到go程序的后端程序;其中,websocket用于前后端实时通讯的技术,可实时发送执行的信息到前端页面,让执行发布的开发了解工单的执行情况
步骤3,后端go程序接收到job id 后,从数据库中取出发布单中的sql语句:
若发布单中的sql语句是ddl语句,则判断发布单中的sql语句是否为createtable语句,若是create table语句,则直接调用goInception去执行create语句;若判断sql语句为alter 修改表结构,则先检查alter修改表的数据量,若alter操作的表的数据量在50万以内,则同样用goInception直接去执行该ddl语句;若alter操作的表的数据量大于50万数据,则采用gh-ost工具,去执行ddl语句,并提供从库的延时的判断,确保从库执行没有延时;
步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面,让执行sql的开发人员,可以了解大表修改的进度。
步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql语句,以1000为单位,每执行1000条以后就commit一次,同时将已经执行的sql语句的条数的条数,通过websocket发送到前端页面中。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。上面对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (3)
1.一种数据库sql脚本的自动审批执行方法,其特征在于:采用前后端分离的架构,前端采用基于vue的前端框架iview-admin,后端采用golang语言的gin框架,通过jwt做的token认证,具体包含如下步骤:
步骤1,通过前端提供的页面,将要发布的sql语句信息录入到页面的编辑器中,并调用后端的go提供的接口,做goInceptioin的sql语句检查,保存到数据库中,并得到一个jobid ;
步骤2,发布的时候,前端通过websocket和后端的go程序通讯,并将要发布的job id一并传入到go程序的后端程序;
步骤3,后端go程序接收到job id 后,从数据库中取出发布单中的sql语句;
步骤4,对于gh-ost程序的执行,用go程序的exec包中的cmd对象去执行,然后开启2个go的协程去实时读取out日志和error日志,并通过websocket将日志发送到前端页面;
步骤5,对于dml语句,做sql条数的判断:若sql语句的条数在1000条以内,直接调用goInception去执行sql;若sql语句的条数超过1000条,则用go程序去执行sql语句,以1000为单位,每执行1000条以后就commit一次,同时将已经执行的sql语句的条数通过websocket发送到前端页面中。
2.根据权利要求1所述的一种数据库sql脚本的自动审批执行方法,其特征在于:在一个实施方式中,在步骤2中,websocket用于前后端实时通讯的技术,可实时发送执行的信息到前端页面,让执行发布的开发了解工单的执行情况。
3.根据权利要求1所述的一种数据库sql脚本的自动审批执行方法,其特征在于:在一个实施方式中,在步骤3中,若发布单中的sql语句是ddl语句,则判断发布单中的sql语句是否为create table语句,若是create table语句,则直接调用goInception去执行create语句;若判断sql语句为alter 修改表结构,则先检查alter操作的表的数据量,若alter操作的表的数据量在50万以内,则同样用goInception直接去执行该ddl语句;若alter操作的表的数据量大于50万数据,则采用gh-ost工具,去执行ddl语句,并提供从库的延时的判断,确保从库执行没有延时。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911220721.2A CN111104161B (zh) | 2019-12-03 | 2019-12-03 | 一种数据库sql脚本的自动审批执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911220721.2A CN111104161B (zh) | 2019-12-03 | 2019-12-03 | 一种数据库sql脚本的自动审批执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104161A CN111104161A (zh) | 2020-05-05 |
CN111104161B true CN111104161B (zh) | 2022-07-08 |
Family
ID=70420961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911220721.2A Active CN111104161B (zh) | 2019-12-03 | 2019-12-03 | 一种数据库sql脚本的自动审批执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104161B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625465B (zh) * | 2020-05-29 | 2024-04-12 | 中国工商银行股份有限公司 | 程序生成方法、装置、系统和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123227A (zh) * | 2014-08-13 | 2014-10-29 | 广东电网公司信息中心 | 一种自动生成测试用例的方法 |
CN108304172A (zh) * | 2017-01-13 | 2018-07-20 | 北京畅游天下网络技术有限公司 | 一种web开发方法及web开发引擎 |
CN108491422A (zh) * | 2018-02-07 | 2018-09-04 | 平安健康互联网股份有限公司 | 数据库自动化运维管理方法、服务器及存储介质 |
-
2019
- 2019-12-03 CN CN201911220721.2A patent/CN111104161B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123227A (zh) * | 2014-08-13 | 2014-10-29 | 广东电网公司信息中心 | 一种自动生成测试用例的方法 |
CN108304172A (zh) * | 2017-01-13 | 2018-07-20 | 北京畅游天下网络技术有限公司 | 一种web开发方法及web开发引擎 |
CN108491422A (zh) * | 2018-02-07 | 2018-09-04 | 平安健康互联网股份有限公司 | 数据库自动化运维管理方法、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111104161A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106557470B (zh) | 数据提取方法和装置 | |
CN105786998B (zh) | 数据库中间件系统及利用其处理数据的方法 | |
US20200320059A1 (en) | Transaction change data replication | |
CN108564463B (zh) | 一种银行异常交易冲正方法及系统 | |
US11385898B2 (en) | Task orchestration method for data processing, orchestrator, device and readable storage medium | |
CN108111364B (zh) | 一种业务系统的测试方法及装置 | |
CN111737140A (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
CN111200523A (zh) | 中台系统配置方法、装置、设备及存储介质 | |
CN111104161B (zh) | 一种数据库sql脚本的自动审批执行方法 | |
CN115480753A (zh) | 应用集成系统及相应计算机设备和存储介质 | |
CN107463390B (zh) | 一种软件升级方法及升级服务器 | |
US8997116B2 (en) | Event logging application programming interface (API) | |
CN106446064A (zh) | 一种数据转换方法及装置 | |
CN111538659B (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
CN117707837A (zh) | 一种接口参数校验方法、装置、设备及可读存储介质 | |
CN110968569B (zh) | 数据库的管理方法、数据库的管理装置及存储介质 | |
CN102591714B (zh) | 一种流程调用方法、系统及应用服务器 | |
CN101141767A (zh) | 一种网络管理平台测试系统及方法 | |
CN115760085A (zh) | 分布式实时支付系统的报文处理方法及装置 | |
CN107015787B (zh) | 一种交互式应用框架设计的方法及装置 | |
CN111782373B (zh) | 作业调度方法及装置 | |
CN111309297B (zh) | 脚本开发系统及方法 | |
CN110032608B (zh) | 系统数据的信息组装方法、装置、存储介质及电子设备 | |
CN114356430A (zh) | 一种基于airflow调度系统的DAG依赖配置工具 | |
CN108694046B (zh) | 容器装配方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 211100 floor 5, block a, China Merchants high speed rail Plaza project, No. 9, Jiangnan Road, Jiangning District, Nanjing, Jiangsu (South Station area) Applicant after: JIANGSU AIJIA HOUSEHOLD PRODUCTS Co.,Ltd. Address before: 211100 No. 18 Zhilan Road, Science Park, Jiangning District, Nanjing City, Jiangsu Province Applicant before: JIANGSU AIJIA HOUSEHOLD PRODUCTS Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |