CN115422280A - 一种不确定数据结构的数据增删改的接口方法 - Google Patents
一种不确定数据结构的数据增删改的接口方法 Download PDFInfo
- Publication number
- CN115422280A CN115422280A CN202211373902.0A CN202211373902A CN115422280A CN 115422280 A CN115422280 A CN 115422280A CN 202211373902 A CN202211373902 A CN 202211373902A CN 115422280 A CN115422280 A CN 115422280A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- field
- calling system
- interface
- 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.)
- Granted
Links
Images
Classifications
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种不确定数据结构的数据增删改的接口方法,属于数据结构技术领域,其包括以下步骤:步骤S1,数据库表结构感知及存储;定时或按需遍历查询配置库中的所有数据库中所有表结构,同步表的名称和注释以及表结构信息并存储到配置库;步骤S2,信息提取、校验并进行数据库操作:对外暴露一整套对数据的增删改查的接口,并提供数据传输标准,符合标准的数据将被解析并进行校验,校验通过后对对应数据库执行对应的操作,操作完毕后返回对应操作的结果数据;步骤S3,日志记录。本方法通过提供一套统一的数据处理接口方式,可以在不需要改变服务的情况下,适应业务数据结构的变动,无需再次对基础数据服务的接口进行开发。
Description
技术领域
本发明属于数据结构技术领域,具体涉及一种不确定数据结构的数据增删改的接口方法。
背景技术
针对未指定业务结构或无法预见业务结构时,又需要将数据统一集中管理等情形下,构建统一可维护的集中数据处理服务,以应对不同结构的数据的增删改查等操作而无需变更程序本身。如不断接入新的业务,但又需要将某些数据进行开放共享,即考虑将新的结构数据统一集中管理,而此类新的业务很可能是在系统建设初期无法预见的或者根据业务需求不断变化的。而数据根据安全要求或网络问题也不便于直接通过数据库开放给其他场景使用,必须通过外部接口完成数据的交互工作。且直接开放数据库读写权限,无法对数据的变更情况做有效地追踪,数据安全性无法得到有效保障。
典型的已投入使用的业务场景:基础数据接口服务。建设方希望能够将大多数基础数据建设采用共享共用的模式,并有限地提供给其他应用场景使用,在建设时,由于建设方数字化也是在不断摸索,能够汇集的数据和字段内容也是在逐渐增加的,如果采用传统的模式来构建该套接口服务,则可能要长期经历3天一小改,5天一大改的开发方式直到数据结构相对稳定,费时费力,还经常需要上线部署发布,严重影响程序的安全性、稳定性。
在传统的系统开发中,每个系统都有自己独立的业务逻辑、数据库进行相关业务处理和数据存储,当不同系统需要存储或读取相同的数据时,需要各自维护各自的数据,并通过一系列其他技术手段来同步数据,会导致数据的不一致性,同时,如果采用多系统共用数据库的方式,则会出现数据被不同系统更改后,无法有效追溯数据变更情况。
发明内容
鉴于上述现有技术的不足之处,本发明的目的在于提供一种不确定数据结构的数据增删改的接口方法。
为了达到上述目的,本发明采取了以下的技术方案。
一种不确定数据结构的数据增删改的接口方法,包括调用系统、数据服务接口和配置库;所述调用系统和配置库均与数据服务接口连接;所述配置库配置有至少1个数据库;其包括以下步骤:
步骤S1,数据库表结构感知及存储;定时或按需遍历查询配置库中的所有数据库中所有表结构,同步表的名称和注释以及表结构信息并存储到配置库;
步骤S2,信息提取、校验并进行数据库操作:对外暴露一整套对数据的增删改查的接口,并提供数据传输标准,符合标准的数据将被解析并进行校验,校验通过后对对应数据库执行对应的操作,操作完毕后返回对应操作的结果数据;
步骤S3,日志记录:日志,记录对每个调用系统每次操作的数据信息。
进一步,步骤S1中,记录每张表上次同步的时间信息,对预设的时间段内同步过的表将跳过,不重复执行检查;同时,将表的名称和注释以及表结构信息在自身内存中同步维护一份。
进一步,步骤S2中,数据传输标准,包含以下基本要素:增删改查的操作、操作的数据库、操作的表、操作的字段、操作的数据条件、设定的值。
进一步,步骤S2,包括:
步骤S201,接口请求的合法性校验:使用接口前,调用系统必须在数据服务接口中进行注册,以获取对应的系统ID及密钥信息,用于系统鉴权;数据服务接口,接收调用系统接口请求后,根据数据传输标准获取调用系统信息,并进行鉴权;鉴权不通过,返回鉴权失败;鉴权通过则进行下一步;
步骤S202,对接口请求进行数据解析,判断基本要素,包括:
获取操作要素,判断其是否是增删改查4种操作要素之一,是则进行下一步,否则返回操作不当的消息给调用系统,流程结束;
获取要操作的数据库,若未获取到,则判断系统数据库是否唯一,是则使用唯一的数据库,否则返回未指定数据库的消息给调用系统,流程结束;
将获取到的操作数据库进行驼峰命名转蛇形命名,并检查数据库命名是否在预配制的数据库中存在,若不存在则返回数据库无法操作的消息给调用系统,流程结束;
获取要操作的表,并进行驼峰转蛇形命名,同时检查表命名要操作的数据库下是否存在该表,若不存在,则尝试调用表结构同步方法尝试同步,若无此表结构则返回无此表结构的消息给调用系统,流程结束;
获取要操作的字段及数据条件的字段,并进行驼峰转蛇形命名,对该表下的字段做匹配,若有字段未匹配到,则判断表结构上次同步时间,若在预设时间段内,则返回表字段不存在的消息给调用系统,流程结束;超过预设时间段则尝试重新调用表结构同步,同步后若仍不存在,则返回表字段不存在的消息给调用系统,流程结束;
判断操作要素,若为增删改,则对操作字段的赋值类型进行判断,判断其是否符合该字段对应的赋值类型及精度,若不符合,则尝试转换设定的值到字段对应的赋值类型及精度,若失败则返回具体字段不合法的消息给调用系统,流程结束。
进一步,步骤S2,还包括:
步骤S203,SQL组装适配:根据基本要素组装SQL语句,对非查询类操作启用事务进行执行,对调用系统、接口入参、执行的SQL和执行时间进行记录,执行完毕后返回执行结果;对查询类操作直接记录,并将查询结果返回。
采用本方法后,基本上可以做到一次部署发布,便应对各种基础数据结构变化。本方案,对外暴露一整套对数据的增删改查的接口,并提供数据传输标准,符合标准的数据将被解析并进行校验,校验通过后对对应数据库执行对应的操作并记录操作日志,操作完毕后返回对应操作的结果数据。
本方法将公共数据库进行剥离,并在其上增加了服务接口,供各个系统来调用,而不是直接暴露数据库,增加数据库本身的安全性同时可以解耦不同系统对共用数据库的依赖(如不同系统可能使用不同类型的数据库进行数据存储)。同时对所有数据的变动会自动记录,便于追溯数据变化情况,保证数据安全。
传统的公共数据服务开发的方式是提供基础数据接口,并固化了这些数据结构,如果业务变动,需要对表结构进行改变,或增加新的表结构时,公共数据服务需要再次针对变动进行开发;本方法通过提供一套统一的数据处理接口方式,可以在不需要改变服务的情况下,适应业务数据结构的变动,无需再次对基础数据服务的接口进行开发。
附图说明
图1为本发明的结构框图;
图2为本发明步骤S2和S3的流程图。
具体实施方式
下面结合附图,对本发明作进一步详细说明。
背景知识。
数据库:用于存储系统数据的一套标准化系统,目前所使用的数据库绝大多数还是关系型数据库,其表现形式为存储的数据采用表格行列的方式进行存储展现。关系型数据库目前大部分sql语法在行业内都进行了标准化,只有少数具有各自数据库特性的语法是某些数据库产品独有的。
系统开发:目前软件系统的开发,基本上都要经历需求调研、需求分析、系统设计、数据库设计、系统开发、系统测试、系统发布上线等几个环节。而绝大多数系统在做设计时就会将系统内要用到的数据结构定义明确,以更精准地进行业务逻辑处理。
命名法:驼峰命名为不同单词间使用首字母大写来组合,如testCase,一般在接口或程序中使用; 蛇形命名法则使用下划线来组合,如test_case,一般在数据库中使用。
本方法通过读取数据库表结构,感知数据结构变化,并利用json格式的灵活性,通过程序对传入的信息进行提取,校验,对数据库操作并记录日志,便于溯源。数据库方面,要求表名、字段名采用规范的蛇形命名方式,所有表结构中约定delete_time default(null)作为删除标识符。
一种不确定数据结构的数据增删改的接口方法,如图1所示,包括调用系统、数据服务接口和配置库。
所述调用系统,可以为多个,例如调用系统A、调用系统B。所述配置库,为数据服务接口使用的数据库,供配置信息存储,由单个或者多个数据库构成,对需要操作的数据库在配置库中进行配置。
一种不确定数据结构的数据增删改的接口方法,包括以下步骤: 步骤S1,数据库表结构感知及存储;定时或按需遍历查询配置库中的所有数据库中所有表结构,对每个数据库获取其所有的表的名称和注释并存储到配置库,对每个表获取其表结构信息(包括字段名称、字段类型及字段长度、字段精度等信息)并存储到配置库;记录每张表上次同步的时间信息,对预设的时间段内同步过的表将跳过,不重复执行检查;同时,将表的名称和注释以及表结构信息在自身内存中同步维护一份,便于后续快速进行字段判断和合法性判断。
步骤S2,信息提取、校验并进行数据库操作:如图2所示,对外暴露一整套对数据的增删改查的接口,并提供数据传输标准,符合标准的数据将被解析并进行校验,校验通过后对对应数据库执行对应的操作,操作完毕后返回对应操作的结果数据。
数据传输标准,包含以下基本要素:1、操作(增删改查);2、操作的数据库(可选,只有一个库可不传);3、操作的表;4、操作的字段;5、操作的数据条件; 6、设定的值。
步骤S201,接口请求的合法性校验。使用接口前,调用系统必须在数据服务接口中进行注册,以获取对应的系统ID及密钥信息,用于系统鉴权,以保证系统数据交互安全。数据服务接口,接收调用系统接口请求后,根据数据传输标准获取调用系统信息,并进行鉴权;鉴权不通过,返回鉴权失败;鉴权通过则进行下一步。
步骤S202,对接口请求进行数据解析,判断基本要素,包括:
获取操作要素,判断其是否是增删改查4种操作要素之一,是则进行下一步,否则返回操作不当的消息给调用系统,流程结束;
获取要操作的数据库,若未获取到,则判断系统数据库是否唯一,是则使用唯一的数据库,否则返回未指定数据库的消息给调用系统,流程结束;
将获取到的操作数据库进行驼峰命名转蛇形命名(将程序或接口的命名方式转为数据库的命名方式),并检查数据库命名是否在预配制的数据库中存在,若不存在则返回数据库无法操作的消息给调用系统,流程结束;
获取要操作的表,并进行驼峰转蛇形命名,同时检查表命名要操作的数据库下是否存在该表,若不存在,则尝试调用表结构同步方法尝试同步(数据库表结构自动感知,按需感知),若无此表结构则返回无此表结构的消息给调用系统,流程结束;
获取要操作的字段及数据条件的字段,并进行驼峰转蛇形命名,对该表下的字段做匹配,若有字段未匹配到,则判断表结构上次同步时间,若在预设时间段内,则返回表字段不存在的消息给调用系统,流程结束;超过预设时间段则尝试重新调用表结构同步(数据库表结构自动感知,按需同步),同步后若仍不存在,则返回表字段不存在的消息给调用系统,流程结束;
判断操作要素,若为增删改,则对操作字段的赋值类型(例如:字符串、整数、小数、日期等)进行判断,判断其是否符合该字段对应的赋值类型及精度,若不符合,则尝试转换设定的值到字段对应的赋值类型及精度,若失败则返回具体字段不合法的消息给调用系统,流程结束。
步骤S203,SQL组装适配:根据基本要素组装SQL语句,对非查询类操作启用事务进行执行,对调用系统、接口入参、执行的SQL和执行时间进行记录,执行完毕后返回执行结果;对查询类操作直接记录,并将查询结果返回。
步骤S3,日志记录:如图2所示,日志,记录对每个调用系统每次操作的数据信息,方便查看追溯。
通用场景:在数据库db_test中建表 table_test,并建立数据结构,表1是建立的数据结构表。
调用系统A在本系统中注册并得到了系统ID:aid,和密钥a,调用系统B未进行注册。
为了方便说明,本案例约定使用特定的数据结构为json,应用鉴权使用简单的密钥匹配,实际使用可以采用更多的加密手段完成。
调用系统A尝试做以下操作:
1、新增db_faked库(不存在的库)中的table_test记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
2、新增db_test库中的table_faked(不存在的表)记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
3、新增db_test库中的table_test记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
4、修改db_test库中的table_test记录,设置field_i=2,field_s=”str222”,field_d=”2022-08-01 00:00:00”。
5、查询db_test库中的table_test记录,条件field_i=1。
6、查询db_test库中的table_test记录,条件field_i=2。
7、删除db_test库中的table_test记录,条件field_i=2。
8、操作传值unknownOpera(未定义的操作),进行未知操作的处理。
调用系统B尝试做以下操作:
9、新增db_test库中的table_test记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
示例解析:
示例1.调用系统A新增db_faked库中的table_test记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
1.1.调用系统A请求本系统接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”add”,”dbName”:”db_faked”,”table”:”table_test”,”setter”:{“field_i”:1,”field_s”:”str”,”field_d”:”2022-07-01 00:00:00”},“condition”:[]}
其中的基本要素含义如下:
appId: 调用系统ID。
secretKey: 调用系统密钥。
operate:执行的操作。
dbName:操作的数据库名。
table: 操作的表名。
setter:设置的字段及对应字段要设置的值。
condition:数据条件。
1.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
1.3.判断操作add,为数据操作:增。
1.4.获取需要操作的数据库 db_faked, 在系统中未找到该数据库,返回数据库不存在,结束流程。
本示例说明在调用系统欲操作未配置的数据库时,无法成功操作。
示例2:调用系统A新增db_test库中的table_faked记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”
2.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”add”,”dbName”:” db_test”,”table”:”table_faked”,”setter”:{“field_i”:1,”field_s”:”str”,”field_d”:”2022-07-01 00:00:00”}, “condition”:[]}
2.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
2.3.判断操作add,为数据操作:增。
2.4.获取需要操作的数据库为 db_test,系统中存在该数据库。
2.5.获取需要操作的数据表为 table_faked, 系统信息中不存在该表,尝试重新调用表结构同步方法同步db_test数据库中的数据表信息[数据库表结构自动感知,按需感知],未能找到该表,返回数据表不存在。
本示例说明在调用系统欲操作不存在的数据表时,无法成功操作。
示例3:调用系统A新增db_test库中的table_test记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
3.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”add”,”dbName”:” db_test”,”table”:”table_test”,”setter”:{“field_i”:1,”field_s”:”str”,”field_d”:”2022-07-01 00:00:00”}, “condition”:[]}。
3.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
3.3.判断操作add,为数据操作:增。
3.4.获取需要操作的数据库为 db_test,系统中存在该数据库。
3.5.获取需要操作的数据表为 table_test,db_test库信息中存在该表。
3.6.获取要操作的字段:field_i, field_s, field_d,table_test表中存在这些字段 。
3.7.字段field_i为整型,field_s为字符串,field_d为字符串可转为日期时间类型,符合table_test相应的字段类型。
3.8.组装sql语句:insert into table_test (field_i, field_s, field_d)values (1, ‘str’, ‘2022-07-01 00:00:00’),并开启事务,执行该sql,获得执行结果:更新1条记录。
3.9.同时使用相应的SQL: insert into operate_log(app_id, request, sql_content, create_time) values (‘aid’, ‘{“appId”:“aid”,“secretKey”:”a”,”operate”:”add”,”dbName”:” db_test”,”table”:”table_test”,”setter”:{“field_i”:1,”field_s”:”str”,”field_d”:”2022-07-01 00:00:00”}, “condition”:[]}’,‘insert into table_test (field_i, field_s, field_d) values (1, \‘str\’, \‘2022-07-01 00:00:00\’)’, now()) 执行记录日志操作。
3.10.执行事务提交,完成流程,返回更新1条记录的结果。
本示例说明调用系统操作配置的数据库中存在的表及字段的数据新增时,可正常新增数据并添加操作日志。
示例4:调用系统A修改db_test库中的table_test记录,设置field_i=2,field_s=”str222”,field_d=”2022-08-01 00:00:00”。
4.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”update”,”dbName”:” db_test”,”table”:”table_test”,”setter”:{“field_i”:2,”field_s”:”str222”,”field_d”:”2022-08-01 00:00:00”},“condition”:[]}。
4.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
4.3.判断操作update,为数据操作:改。
4.4.获取需要操作的数据库为 db_test,系统中存在该数据库。
4.5.获取需要操作的数据表为 table_test,db_test库信息中存在该表。
4.6.获取要操作的字段:field_i, field_s, field_d,table_test表中存在这些字段 。
4.7.字段field_i为整型,field_s为字符串,field_d为字符串可转为日期时间类型,符合table_test相应的字段类型。
4.8.组装sql语句:update table_test set field_i=2, field_s=’str222’,field_d=‘2022-07-01 00:00:00’,并开启事务,执行该sql,获得执行结果:更新1条记录。
4.9.同时使用相应的SQL: insert into operate_log(app_id, request, sql_content, create_time) values (‘aid’, ‘{“appId”:“aid”,“secretKey”:”a”,”operate”:”update”,”dbName”:” db_test”,”table”:”table_test”,”setter”:{“field_i”:2,”field_s”:”str222”,”field_d”:”2022-08-01 00:00:00”}, “condition”:[]}’,‘update table_test set field_i=2, field_s=\’str222\’, field_d=\‘2022-07-0100:00:00\’’, now()) 执行记录日志操作。
4.10.执行事务提交,完成流程,返回更新1条记录的结果。
本示例说明调用系统操作配置的数据库中存在的表及字段的数据修改时,可正常修改数据并添加操作日志。
示例5:调用系统A查询db_test库中的table_test记录,条件field_i=1。
5.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”query”,”dbName”:” db_test”,”table”:”table_test”,”cols”:[],“condition”:[{“field”:”field_i”,”oper”:”eq”,”value”:1}]}。
5.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
5.3.判断操作query,为数据操作:查。
5.4.获取需要操作的数据库为 db_test,系统中存在该数据库。
5.5.获取需要操作的数据表为 table_test,db_test库信息中存在该表。
5.6.获取要查询的字段为空,获取全部字段。
5.7.获取要查询的条件 字段field_i,操作eq为等于,值为1。
5.8.拼装sql语句:select * from table_test where delete_time is nulland field_i=1,获得查询结果集list(空数组)。
5.9.同时使用相应的SQL:insert into operate_log(app_id, request, sql_content, create_time) values (‘aid’, ‘{“appId”:“aid”,“secretKey”:”a”,”operate”:”query”,”dbName”:” db_test”,”table”:”table_test”,”cols”:[],“condition”:[{“field”:”field_i”,”oper”:”eq”,”value”:1}]}’, ‘select * fromtable_test where delete_time is null and field_i=1’, now())执行记录日志操作。
5.10.完成流程,返回查询的结果集list(空数组)。
本示例说明调用系统操作配置的数据库中存在的表及字段的数据查询时,可正常查询数据并添加操作日志。
示例6:调用系统A查询db_test库中的table_test记录,条件field_i=2。
6.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”query”,”dbName”:” db_test”,”table”:”table_test”,”cols”:[],“condition”:[{“field”:”field_i”,”oper”:”eq”,”value”:2}]}。
6.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
6.3.判断操作query,为数据操作:查。
6.4.获取需要操作的数据库为 db_test,系统中存在该数据库。
6.5.获取需要操作的数据表为 table_test,db_test库信息中存在该表。
6.6.获取要查询的字段为空,获取全部字段。
6.7.获取要查询的条件 字段field_i,操作eq为等于,值为2。
6.8.拼装sql语句:select * from table_test where delete_time is nulland field_i=2,获得查询结果集list(一条记录)。
6.9.同时使用相应的SQL:insert into operate_log(app_id, request, sql_content, create_time) values (‘aid’, ‘{“appId”:“aid”,“secretKey”:”a”,”operate”:”query”,”dbName”:” db_test”,”table”:”table_test”,”cols”:[],“condition”:[{“field”:”field_i”,”oper”:”eq”,”value”:2}]}’, ‘select * fromtable_test where delete_time is null and field_i=2’, now())执行记录日志操作。
6.10.完成流程,返回查询的结果集list(一条记录)。
本示例说明调用系统操作配置的数据库中存在的表及字段的数据查询时,可正常查询数据并添加操作日志。
示例7:调用系统A删除db_test库中的table_test记录,条件field_i=2。
7.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:”delete”,”dbName”:” db_test”,”table”:”table_test”, “condition”:[{“field”:”field_i”,”oper”:”eq”,”value”:2}]}。
7.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
7.3.判断操作delete,为数据操作:删。
7.4.获取需要操作的数据库为 db_test,系统中存在该数据库。
7.5.获取需要操作的数据表为 table_test,db_test库信息中存在该表。
7.6.获取要查询的条件 字段field_i,操作eq为等于,值为2。
7.7.拼装sql语句:delete table_test where field_i=2,获得执行结果:更新一条记录。
7.8.同时使用相应的SQL:insert into operate_log(app_id, request, sql_content, create_time) values (‘aid’, ‘{“appId”:“aid”,“secretKey”:”a”,”operate”:”query”,”dbName”:” db_test”,”table”:”table_test”, “condition”:[{“field”:”field_i”,”oper”:”eq”,”value”:2}]}’, ‘update table_test set delete_time=now() where field_i=2’, now())执行记录日志操作。
7.9.完成流程,返回执行结果:更新一条记录。
本示例说明调用系统操作配置的数据库中存在的表及字段的数据删除时,可正常删除数据并添加操作日志。
示例8:调用系统A操作传值unknownOpera,进行未知操作的处理。
8.1.调用系统A请求接口,使用的json格式如下:{“appId”:“aid”,“secretKey”:”a”,”operate”:” unknownOpera”}。
8.2.根据调用系统ID:aid得到调用系统为调用系统A,判断密钥a与本系统保存的调用系统A的密钥相同,鉴权验证通过。
8.3.判断操作unknownOpera,未找到对应的操作,返回操作非法,结束流程。
本示例说明调用系统进行未定义操作时,无法成功操作。
实例9:调用系统B新增db_test库中的table_test记录,设置field_i=1,field_s=”str”,field_d=”2022-07-01 00:00:00”。
9.1.调用系统B请求接口,使用的json格式如下:{“appId”:“”,“secretKey”:””,”operate”:” unknownOpera”}。
9.2.根据调用系统ID未得到app信息,鉴权验证不通过,返回应用未注册的消息,流程结束。
本示例说明调用系统未在本系统中注册而调用接口时,无法成功操作。
本方案中提到的调用表结构同步的方法,为常规的使用程序获取数据库表结构的方式进行表结构信息获取并同步到配置数据库中。
本方案具有以下优势:
1、对不同数据库结构采用统一的接口进行操作,针对数据结构发生变化或新增无需再次进行开发,避免结构变化时需要重新部署程序,导致业务中断,同时增加了系统的稳定性。
2、对数据操作提供统一接口,统一标准,简化开发,保障数据一致性。
3、接口操作中对每次操作进行了日志记录,确保操作行为可追溯,能够对数据及操作进行溯源,增加了系统及数据的安全性。
4、对调用系统有鉴权机制,确保非法调用无法成功操作数据。
5、对外不直接暴露数据库,而是以接口方式提供,保障了数据库的安全性。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。
Claims (5)
1.一种不确定数据结构的数据增删改的接口方法,其特征在于,包括调用系统、数据服务接口和配置库;所述调用系统和配置库均与数据服务接口连接;所述配置库配置有至少1个数据库;其包括以下步骤:
步骤S1,数据库表结构感知及存储;定时或按需遍历查询配置库中的所有数据库中所有表结构,同步表的名称和注释以及表结构信息并存储到配置库;
步骤S2,信息提取、校验并进行数据库操作:对外暴露一整套对数据的增删改查的接口,并提供数据传输标准,符合标准的数据将被解析并进行校验,校验通过后对对应数据库执行对应的操作,操作完毕后返回对应操作的结果数据;
步骤S3,日志记录:对每个调用系统每次操作的数据信息,均记录与日志。
2.根据权利要求1所述的一种不确定数据结构的数据增删改的接口方法,其特征在于,
步骤S1中,记录每张表上次同步的时间信息,对预设的时间段内同步过的表将跳过,不重复执行检查;同时,将表的名称和注释以及表结构信息在自身内存中同步维护一份。
3.根据权利要求1或2所述的一种不确定数据结构的数据增删改的接口方法,其特征在于,步骤S2中,数据传输标准,包含以下基本要素:增删改查的操作、操作的数据库、操作的表、操作的字段、操作的数据条件、设定的值。
4.根据权利要求3所述的一种不确定数据结构的数据增删改的接口方法,其特征在于,步骤S2,包括:
步骤S201,接口请求的合法性校验:使用接口前,调用系统必须在数据服务接口中进行注册,以获取对应的系统ID及密钥信息,用于系统鉴权;数据服务接口,接收调用系统接口请求后,根据数据传输标准获取调用系统信息,并进行鉴权;鉴权不通过,返回鉴权失败;鉴权通过则进行下一步;
步骤S202,对接口请求进行数据解析,判断基本要素,包括:
获取操作要素,判断其是否是增删改查4种操作要素之一,是则进行下一步,否则返回操作不当的消息给调用系统,流程结束;
获取要操作的数据库,若未获取到,则判断系统数据库是否唯一,是则使用唯一的数据库,否则返回未指定数据库的消息给调用系统,流程结束;
将获取到的操作数据库进行驼峰命名转蛇形命名,并检查数据库命名是否在预配制的数据库中存在,若不存在则返回数据库无法操作的消息给调用系统,流程结束;
获取要操作的表,并进行驼峰转蛇形命名,同时检查表命名要操作的数据库下是否存在该表,若不存在,则尝试调用表结构同步方法尝试同步,若无此表结构则返回无此表结构的消息给调用系统,流程结束;
获取要操作的字段及数据条件的字段,并进行驼峰转蛇形命名,对该表下的字段做匹配,若有字段未匹配到,则判断表结构上次同步时间,若在预设时间段内,则返回表字段不存在的消息给调用系统,流程结束;超过预设时间段则尝试重新调用表结构同步,同步后若仍不存在,则返回表字段不存在的消息给调用系统,流程结束;
判断操作要素,若为增删改,则对操作字段的赋值类型进行判断,判断其是否符合该字段对应的赋值类型及精度,若不符合,则尝试转换设定的值到字段对应的赋值类型及精度,若失败则返回具体字段不合法的消息给调用系统,流程结束。
5.根据权利要求4所述的一种不确定数据结构的数据增删改的接口方法,其特征在于,步骤S2,还包括:
步骤S203,SQL组装适配:根据基本要素组装SQL语句,对非查询类操作启用事务进行执行,对调用系统、接口入参、执行的SQL和执行时间进行记录,执行完毕后返回执行结果;对查询类操作直接记录,并将查询结果返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211373902.0A CN115422280B (zh) | 2022-11-04 | 2022-11-04 | 一种不确定数据结构的数据增删改的接口方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211373902.0A CN115422280B (zh) | 2022-11-04 | 2022-11-04 | 一种不确定数据结构的数据增删改的接口方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115422280A true CN115422280A (zh) | 2022-12-02 |
CN115422280B CN115422280B (zh) | 2023-02-14 |
Family
ID=84207633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211373902.0A Active CN115422280B (zh) | 2022-11-04 | 2022-11-04 | 一种不确定数据结构的数据增删改的接口方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115422280B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041566A1 (en) * | 2004-08-20 | 2006-02-23 | International Business Machines Corporation | Method, system and computer program for inserting records into a database |
CN102054034A (zh) * | 2010-12-27 | 2011-05-11 | 华中科技大学 | 企业信息系统的业务基础数据持久化实现方法 |
CN102682096A (zh) * | 2012-04-27 | 2012-09-19 | 北京航空航天大学 | 一种仿真资源信息与模型源码协同管理装置及其方法 |
CN106096446A (zh) * | 2016-06-15 | 2016-11-09 | 北京工业大学 | 一种可信计算环境中密码服务接口的封装方法 |
CN109542506A (zh) * | 2018-12-06 | 2019-03-29 | 广州万惠信息技术咨询服务有限公司 | 一种可灵活配置接口和快速交付服务的系统 |
WO2019205415A1 (zh) * | 2018-04-22 | 2019-10-31 | 平安科技(深圳)有限公司 | 数据导入管理方法、装置、移动终端和存储介质 |
CN110597827A (zh) * | 2019-09-26 | 2019-12-20 | 北京润科通用技术有限公司 | 一种接口控制文件数据的存储方法及系统 |
CN111414350A (zh) * | 2020-03-18 | 2020-07-14 | 腾讯科技(深圳)有限公司 | 一种服务生成方法及装置 |
CN114443015A (zh) * | 2022-01-29 | 2022-05-06 | 江苏南大先腾信息产业股份有限公司 | 一种基于数据库元数据的增删改查服务接口生成方法 |
CN114490892A (zh) * | 2022-02-16 | 2022-05-13 | 中银金融科技有限公司 | 一种基于datax的数据传输方法和装置 |
CN114510478A (zh) * | 2021-12-31 | 2022-05-17 | 福建亿能达信息技术股份有限公司 | 一种基于数据模型的通用数据录入方法、装置、设备和介质 |
-
2022
- 2022-11-04 CN CN202211373902.0A patent/CN115422280B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041566A1 (en) * | 2004-08-20 | 2006-02-23 | International Business Machines Corporation | Method, system and computer program for inserting records into a database |
CN102054034A (zh) * | 2010-12-27 | 2011-05-11 | 华中科技大学 | 企业信息系统的业务基础数据持久化实现方法 |
CN102682096A (zh) * | 2012-04-27 | 2012-09-19 | 北京航空航天大学 | 一种仿真资源信息与模型源码协同管理装置及其方法 |
CN106096446A (zh) * | 2016-06-15 | 2016-11-09 | 北京工业大学 | 一种可信计算环境中密码服务接口的封装方法 |
WO2019205415A1 (zh) * | 2018-04-22 | 2019-10-31 | 平安科技(深圳)有限公司 | 数据导入管理方法、装置、移动终端和存储介质 |
CN109542506A (zh) * | 2018-12-06 | 2019-03-29 | 广州万惠信息技术咨询服务有限公司 | 一种可灵活配置接口和快速交付服务的系统 |
CN110597827A (zh) * | 2019-09-26 | 2019-12-20 | 北京润科通用技术有限公司 | 一种接口控制文件数据的存储方法及系统 |
CN111414350A (zh) * | 2020-03-18 | 2020-07-14 | 腾讯科技(深圳)有限公司 | 一种服务生成方法及装置 |
CN114510478A (zh) * | 2021-12-31 | 2022-05-17 | 福建亿能达信息技术股份有限公司 | 一种基于数据模型的通用数据录入方法、装置、设备和介质 |
CN114443015A (zh) * | 2022-01-29 | 2022-05-06 | 江苏南大先腾信息产业股份有限公司 | 一种基于数据库元数据的增删改查服务接口生成方法 |
CN114490892A (zh) * | 2022-02-16 | 2022-05-13 | 中银金融科技有限公司 | 一种基于datax的数据传输方法和装置 |
Non-Patent Citations (3)
Title |
---|
MUHAMMED JASSEMAL-MUHAMMED 等: "《Ontology-aware dynamically adaptable free-form natural language agent interface for querying databases》", 《KNOWLEDGE-BASED SYSTEMS》 * |
乔文娟: "《数据服务平台的设计与实现》", 《中国优秀硕士学位论文全文数据库》 * |
梁家海等: "基于.NET Remoting技术的存储网格的设计", 《江西理工大学学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115422280B (zh) | 2023-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8918447B2 (en) | Methods, apparatus, systems and computer readable mediums for use in sharing information between entities | |
US8010844B2 (en) | File mutation method and system using file section information and mutation rules | |
CN112148509A (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
CN110334326B (zh) | 一种识别配方文件并转化为xml文件的方法及系统 | |
JPS62164136A (ja) | デ−タベ−ス・アクセス制御方式 | |
US20030163802A1 (en) | Method, apparatus, and program for constructing an execution environment, and computer readable medium recording program thereof | |
CN111259067B (zh) | 一种基于Spring实现DAO接口的方法、装置及设备 | |
CN110704475A (zh) | 一种etl加载表结构的比对方法及系统 | |
JP2006268118A (ja) | アプリケーション環境チェック装置及び方法とそのプログラム | |
US6915313B2 (en) | Deploying predefined data warehouse process models | |
JPH1021061A (ja) | クライアントソフトウェア自動バージョンアップシステム | |
CN111125213A (zh) | 数据采集的方法、装置及其系统 | |
CN112579461A (zh) | 断言处理方法、系统和存储介质 | |
CN112930534A (zh) | 管理系统、取得装置和管理方法 | |
CN115422280B (zh) | 一种不确定数据结构的数据增删改的接口方法 | |
CN112699183A (zh) | 数据处理方法、系统、可读存储介质及计算机设备 | |
CN111159020B (zh) | 一种应用于同步软件测试的方法和装置 | |
CN111177239B (zh) | 一种基于hdp大数据集群的统一日志处理方法及系统 | |
CN116932649A (zh) | 数据库同步方法、数据库同步设备以及可读存储介质 | |
CN111639478B (zh) | 一种基于excel文档的数据自动稽核方法及系统 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN112068842A (zh) | 依赖关系的建立方法、联动编译方法及其系统 | |
AU2017202199B1 (en) | Software integration testing with unstructured database | |
JP3547691B2 (ja) | ジョブ検査装置、ジョブ検査方法、及びジョブ検査プログラムを記録した記録媒体 | |
CN115408474B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 105, 1st Floor, Building 3, Xixi Yinzuo, Xihu District, Hangzhou City, Zhejiang Province, 310000 Patentee after: Hangzhou West Lake New Infrastructure Digital Technology Co.,Ltd. Address before: Room 502, 5/F, Building 1, No. 199, Wensan Road, Xihu District, Hangzhou City, Zhejiang Province, 310000 Patentee before: Hangzhou West Lake New Infrastructure Digital Technology Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |