CN114385679A - 一种表结构巡检方法、表结构巡检装置和电子设备 - Google Patents
一种表结构巡检方法、表结构巡检装置和电子设备 Download PDFInfo
- Publication number
- CN114385679A CN114385679A CN202111529277.XA CN202111529277A CN114385679A CN 114385679 A CN114385679 A CN 114385679A CN 202111529277 A CN202111529277 A CN 202111529277A CN 114385679 A CN114385679 A CN 114385679A
- Authority
- CN
- China
- Prior art keywords
- field
- storage
- file
- data table
- information
- 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.)
- Pending
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/248—Presentation of query results
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种表结构巡检方法、表结构巡检装置、电子设备和存储介质,获取存储有数据表的表结构的文件;从文件的头部字段中获取文件类型;针对文件类型对应的待巡检对象,基于文件中的与文件类型对应的字段,获取待巡检信息;基于待巡检信息对待巡检对象进行巡检,以查询数据表的表结构信息。
Description
技术领域
本申请实施例涉及金融科技(Fintech)的数据处理技术领域,涉及但不限于一种表结构巡检方法、表结构巡检装置、电子设备和存储介质。
背景技术
随着计算机计算的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。
金融科技领域下,目前由于金融系统中的数据库,如关系型数据库中的代码实现存在漏洞或不严谨,因此可能造成数据库运行时性能的不稳定,或引发数据库的故障,重启甚至数据丢失的问题。为保证金融系统的数据库中数据安全和数据一致性,在实际使用的过程中,数据库管理员(Database Administrator,DBA)会对业务使用方的权限进行控制,同时以内部文档的形式规范数据库的使用从而最大程度避免出现数据不一致甚至数据丢失的情形。然而,仅仅通过宣导还不足以保证业务侧的使用都按照规范进行。进一步地,作为数据库的运维方,DBA还需要定期对线上数据库中的表结构进行巡检来确保规范得到执行。
相关技术中,巡检表结构的方法包括:
1)通过“show create table t1\G”语句,定时地将数据库实例中每一张表的表结构以建表语句的方式进行展示;
2)通过mysqldump命令,定时地将数据库实例中所有表的表结构以建表语句的形式进行导出,如“mysqldump-h localhost-u root-p--no-data--compact some_db”;
3)通过定时查询information_schema库中表的元信息来找出违规的表结构,如使用“select TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME from information_schema.tables where row_format=’compressed’”,将数据库实例中所有行记录格式为compressed的表都筛选出来。
然而,上述三种方法必须依赖在线运行中的数据库实例,至少存在依赖性强的问题。
发明内容
本申请实施例提供一种表结构巡检方法、表结构巡检装置、电子设备和存储介质,以解决相关技术必须依赖在线运行中的数据库实例,至少存在依赖性强的问题。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种方法,包括:
获取存储有数据表的表结构的文件;
从所述文件的头部字段中获取文件类型;
针对所述文件类型对应的待巡检对象,基于所述文件中的与所述文件类型对应的字段,获取待巡检信息;
基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息。
本申请实施例提供一种装置,包括:
获取模块,用于获取存储有数据表的表结构的文件;
所述获取模块,还用于从所述文件的头部字段中获取文件类型;
所述获取模块,还用于针对所述文件类型对应的待巡检对象,基于所述文件中的与所述文件类型对应的字段,获取待巡检信息;
处理模块,用于基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行存储器中存储的可执行指令时,实现上述的方法。
本申请实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。
本申请实施例具有以下有益效果:
本申请电子设备获取到存储有数据表的表结构的文件,并从文件的头部字段中获取文件类型,然后针对文件类型对应的待巡检对象,确定文件中与文件类型对应的字段以得到待巡检信息,最后,基于待巡检信息对待巡检对象进行巡检,从而查询到数据表的表结构信息。如此,本申请解决了相关技术必须依赖在线运行中的数据库实例,至少存在依赖性强的问题;实现了无需依赖运行中的数据库实例,从而也不占用数据库连接或缓冲池等资源;如此,在处理巡检任务的同时,不消耗额外的存储空间,减少了资源占用。
附图说明
图1是本申请实施例提供的电子设备的一个可选的架构示意图;
图2是本申请实施例提供的表结构巡检方法的一个可选的流程示意图;
图3是本申请实施例提供的表结构巡检方法的一个可选的流程示意图;
图4是本申请实施例提供的表结构巡检方法的一个可选的流程示意图;
图5是本申请实施例提供的表结构巡检方法的一个可选的流程示意图;
图6是本申请实施例提供的表结构巡检方法的一个可选的流程示意图;
图7是本申请实施例提供的表结构巡检方法的一个可选的流程示意图;
图8是本申请实施例提供的表结构巡检方法的一个可选的流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为笔记本电脑,平板电脑,台式计算机,智能机器人等任意具有屏幕显示功能的终端,也可以实施为服务器。下面,将说明实施为电子设备时的示例性应用。
参见图1,图1是本申请实施例提供的电子设备100的结构示意图,图1所示的电子设备100包括:至少一个处理器110、至少一个网络接口120、用户接口130和存储器150。电子设备100中的各个组件通过总线系统140耦合在一起。可理解,总线系统140用于实现这些组件之间的连接通信。总线系统140除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图1中将各种总线都标为总线系统140。
处理器110可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口130包括使得能够呈现媒体内容的一个或多个输出装置131,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口130还包括一个或多个输入装置132,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器150可以是可移除的,不可移除的或其组合。示例性地硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器150可选地包括在物理位置上远离处理器110的一个或多个存储设备。存储器150包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory,ROM),易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。本申请实施例描述的存储器150旨在包括任意适合类型的存储器。在一些实施例中,存储器150能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统151,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块152,用于经由一个或多个(有线或无线)网络接口120到达其他计算设备,示例性地网络接口120包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(Universal Serial Bus,USB)等;
输入处理模块153,用于对一个或多个来自一个或多个输入装置132之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图1示出了存储在存储器150中的一种表结构巡检装置154,该表结构巡检装置154可以是电子设备100中的表结构巡检装置,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块1541、处理模块1542、确定模块1543,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的表结构巡检方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,PLD)、复杂可编程逻辑器件(Complex ProgrammableLogic Device,CPLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他电子元件。
下面将结合本申请实施例提供的电子设备100的示例性应用和实施,说明本申请实施例提供的表结构巡检方法。参见图2,图2是本申请实施例提供的表结构巡检方法的一个可选的流程示意图,将结合图2示出的步骤进行说明,
步骤201、获取存储有数据表的表结构的文件。
本申请实施例中,文件包括数据表的表结构。这里,文件可以为frm文件,文件也可以为其他存储有数据表的表结构的文件,对此,本申请不做具体限制;这里,文件可以是二进制文件,还可以是八进制文件,也可以是十六进制文件,对此,本申请不做具体限制。这里,本申请以该文件为二进制文件进行说明。
本申请实施例中,文件在数据库管理系统中的大小是固定的。文件的大小可以为256K,文件的大小也可以为512K。因此,解析文件中的内容所消耗的内存不会超过512K。假设电子设备的存储器的内存大小为128G,则解析文件中的内容所消耗的内存空间不超过存储器内存总量的1/262144,如此,解析文件所占用的内存空间,完全不会对电子设备的性能产生影响。
需要说明的是,电子设备通过数据库如MySQL创建数据表的同时,会生成一个与数据表的名称相同的文件,即文件名与数据表名相同,且文件中存储有数据表的表结构或框架结构。需要强调的是,该文件与电子设备所使用的操作系统,以及数据库创建数据表时使用的数据引擎无关,即无论数据库运行在何种操作系统上,使用何种存储引擎创建数据表,均会生成存储有数据表的表结构的文件。
步骤202、从文件的头部字段中获取文件类型。
本申请实施例中,文件类型用于定位文件中待巡检信息所处的字段,文件类型包括表结构类型和视图类型。这里,若文件类型为表类型,则表明数据表的类型为基本表,待巡检信息所处的字段包括头部字段;若文件类型为视图类型,则表明数据表的类型为视图,待巡检信息所处的字段为文件中除头部字段外的剩余字段。
本申请实施例中,文件包括头部字段,头部字段的长度为固定字节,示例性的,固定字节为64字节,即头部字段包含有64个字节,头部字段中的指定字段如第1-2字节对应的存储值指示上述文件的文件类型。
这里,视图(view)是基于基本表建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表;视图是依据基本表存在而存在。这里,一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。需要说明的是,视图是已经编译好的结构化查询语言(Structured Quevy Language,SQL)语句,是逻辑上的概念,不占用物理空间,且视图的修改只能通过创建的语句来修改;基本表占用物理空间,并可以对基本表直接进行修改。视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,用户通过视图不接触数据表,从而不知道表结构。视图的建立和删除只影响视图本身,不影响对应的基本表。简而言之,视图是通过select语句查询出来的结果集。
在一种可实现的应用场景中,若文件为二进制frm文件,且文件的头部字段包含有64个字节,头部字段的第1-2字节对应的存储值指示文件的文件类型。若第1-2字节对应的存储值为0x01fe,则表征文件为表类型文件;若第1-2字节对应的存储值为0x5954,则表征文件为视图类型文件。
步骤203、针对文件类型对应的待巡检对象,基于文件中的与文件类型对应的字段,获取待巡检信息。
本申请实施例中,若文件类型为表类型,待巡检对象包括存储引擎、字符集、列名、列字符集、列注释、主键、行格式类型是否包括compressed模式。若文件类型为视图类型,待巡检对象包括建表语句。
需要说明的是,compressed格式是innodb表的一种行存储格式。以compressed格式存储的innodb引擎的表有着占用更少的磁盘空间等优点。但是在实际使用过程中,部分数据库在满足数据库每页显示数据的条数即page size为4K,磁盘扇区为4K,innodb_flush_me thod为O_DIRECT的条件下,访问compressed表可能导致数据库重启。为了规避这个漏洞,一般会禁止使用compressed格式的表。
本申请实施例中,电子设备获取每一数据表对应的存储有数据表的表结构的文件,从文件的头部字段的指定字段中获取文件类型;针对文件类型对应的待巡检对象,基于文件中的与文件类型对应的字段,获取待巡检对象的待巡检信息。
本申请其他实施例中,电子设备针对文件类型对应的待巡检对象,基于文件中的与文件类型对应的字段,获取待巡检信息之前,通过设定的数据类型对文件的头部字段进行解码。
这里,设定的数据类型包括无符号字符(unsigned char)类型、无符号短整数(unsig ned short)类型、设定的数据类型还包括无符号整数(unsigned int)类型。
在一种可实现的应用场景中,若B代表unsigned char类型,H代表unsigned short类型,I代表unsigned int类型,通过设定的数据类型对头部字段如BBBBHHIHHIHHHHHBBIBBBBBIIIIBBBHH进行解码,且低字节优先。如此,将头部字段解码成二进制。
需要说明的,使用什么类型对字节进行解码是存储引擎源码中决定的。在源码中,若存储的数据的数据类型是unsigned int类型,那么解码就要用unsigned int类型解码;若存储的数据的数据类型是unsigned char类型,那么解码就要用unsigned char类型解码;若存储的数据的数据类型是unsigned short类型,那么解码就要用unsigned short类型解码,否则会解析出乱码。
步骤204、基于待巡检信息对待巡检对象进行巡检,以查询数据表的表结构信息。
本申请实施例中,表结构信息包括存储数据表所使用的存储引擎、数据表中的字符集、数据表中的列名、列字符集和列注释、数据表中是否包含有主键、数据表的行格式类型是否包括compressed模式。若文件类型为视图类型,待巡检对象包括创建视图所使用的建表语句。
本申请实施例中,电子设备针对文件类型对应的待巡检对象,基于文件中的与文件类型对应的字段,获取待巡检信息的情况下,电子设备基于待巡检信息对待巡检对象进行巡检,以查询数据表的表结构信息。
本申请提供一种表结构巡检方法,通过获取存储有数据表的表结构的文件,并从文件的头部字段中获取文件类型,然后针对文件类型对应的待巡检对象,确定文件中与文件类型对应的字段以得到待巡检信息,最后,基于待巡检信息对待巡检对象进行巡检,从而查询到数据表的表结构信息。如此,本申请解决了相关技术必须依赖在线运行中的数据库实例,至少存在依赖性强的问题;实现了无需依赖运行中的数据库实例,从而也不占用数据库连接或缓冲池等资源;如此,在处理巡检任务的同时,不消耗额外的存储空间,减少了资源占用。
参见图3,图3是本申请实施例提供的表结构巡检方法的一个可选的流程示意图,将结合图3示出的步骤301至步骤305;或步骤301至步骤304,以及步骤306至步骤309进行说明,
步骤301、获取存储有数据表的表结构的文件。
步骤302、从文件的头部字段中获取文件类型。
步骤303、若文件类型为表类型,确定与表类型对应的第一待巡检对象。
本申请实施例中,若文件类型为表类型,待巡检对象包括存储引擎、字符集、列名、列字符集、列注释、主键、行格式类型是否包括compressed模式。第一待巡检对象可以是多个待巡检对象中的其中一个。
步骤304、若第一待巡检对象为存储引擎,从头部字段中的第一字段中提取第一存储值。
其中,待巡检信息包括第一存储值。
本申请实施例中,头部字段包括指定字段和第一字段。第一字段对应的第一存储值用于指示存储数据表所使用的存储引擎,或数据表为分区表。示例性的,头部字段包含有64个字节,第一字段可以是头部字段中的第4字节。
步骤305、若第一存储值指示的是存储数据表所使用的存储引擎,对存储引擎进行巡检,以查询到存储数据表所使用的存储引擎。
其中,表结构信息包括存储数据表所使用的存储引擎。
本申请实施例中,第一存储值可以指示存储数据表所使用的存储引擎,第一存储值还可以指示数据表为分区表。
本申请实施例中,第一存储值为二进制数据值,需要将第一存储值转换成是十进制数,以对存储引擎进行巡检,以查询到存储数据表所使用的存储引擎。示例性的,若第一存储值转换成十进制数后为9,那么存储数据表所使用的存储引擎为MYISAM存储引擎;若第一存储值转换成十进制数后为12,那么存储数据表所使用的存储引擎为INNODB存储引擎;若第一存储值转换成十进制数后为19,那么存储数据表所使用的存储引擎为BLACKHOLE存储引擎。需要强调的是,若第一存储值转换成十进制数后为20,则表示该数据表为分区表,需要进一步确定存储分区表所使用的存储引擎。
本申请实施例中,电子设备若第一待巡检对象为存储引擎,从头部字段中的第一字段中提取第一存储值,若第一存储值指示的是存储数据表所使用的存储引擎,对存储引擎进行巡检,确定存储数据表所使用的存储引擎。
步骤306、若第一存储值指示的是数据表为分区表,从头部字段中的第二字段中提取第二存储值,从头部字段中的第三字段中提取第三存储值,以及从头部字段中的第四字段中提取第四存储值。
其中,第二存储值用于指示文件一次写入的字节大小,第三存储值用于指示存储索引记录,第四存储值用于指示存储默认值。
本申请实施例中,头部字段包括指定字段、第一字段、第二字段、第三字段和第四字段。第二字段对应的第二存储值用于指示文件一次写入的字节大小;第三字段对应的第三存储值用于指示存储索引记录;第四字段对应的第四存储值用于指示存储默认值。示例性的,头部字段包含有64个字节,第二字段可以是头部字段中的第7-8字节、第三字段可以是头部字段中的第15-16字节、第四字段可以是头部字段中的第17-18字节。
步骤307、基于第二存储值、第三存储值和第四存储值,确定文件的分区字段。
本申请实施例中,文件包括头部字段和分区字段。
本申请实施例中,分区字段存储有电子设备存储分区表所使用的存储引擎的信息和分区信息。
本申请实施例中,若第一存储值指示的是数据表为分区表,电子设备从头部字段中的第二字段中提取第二存储值,从头部字段中的第三字段中提取第三存储值,以及从头部字段中的第四字段中提取第四存储值的情况下,基于第二存储值、第三存储值和第四存储值,确定文件的分区字段。
在一些实施例中,步骤307基于第二存储值、第三存储值和第四存储值,确定文件的分区字段,可以通过图4所示的步骤实现:
步骤A1、确定第二存储值、第三存储值和第四存储值三者之和为第一字节偏移量。
本申请实施例中,若第二字段、第三字段、第四字段分别为多个字节,将多个字节对应的存储值以低位优先的方式转换成十进制数,再进行处理。
本申请实施例中,若第二字段为多个字节,将第二存储值以低位优先的方式转换成十进制数;第三字段为多个字节,将第三存储值以低位优先的方式转换成十进制数;第四字段为多个字节,将第四存储值以低位优先的方式转换成十进制数之后,计算第二存储值、第三存储值和第四存储值三者之和,并作为第一字节偏移量。
步骤A2、获取设定的第二字节偏移量。
其中,第二字节偏移量用于表征分割字节。
示例性的,第二字节偏移量可以为两个字节。
步骤A3、基于获取的文件的第一个字节、第一字节偏移量和第二字节偏移量,确定分区字段的起始位置。
本申请实施例中,电子设备确定第二存储值、第三存储值和第四存储值三者之和为第一字节偏移量,获取设定的第二字节偏移量之后,从文件的第一个字节开始,跳过第一字节偏移量个字节,则跳过文件中记录头部字段、索引元字段和默认值字段。进一步地,电子设备继续跳过第二字节偏移量,即确定分区字段的起始位置。这里,文件包括头部字段、索引元字段、默认值字段和分区字段。
步骤308、从所述分区字段中获取多个第五存储值。
其中,待巡检信息还包括第二存储值、第三存储值、第四存储值和多个第五存储值。其中,第五存储值用于指示存储分区表所使用的存储引擎。
在一些实施例中,步骤308从分区字段中获取多个第五存储值,可以通过图5所示的步骤实现:
步骤B1、从分区字段的起始位置相邻的过渡字段中提取总字节数。
其中,总字节数用于记录存储分区表所使用的存储引擎占用的字节数。
本申请实施例中,分区字段包括过渡字段。过渡字段中存储有存储分区表所使用的存储引擎占用的总字节数,电子设备从分区字段的起始位置相邻的过渡字段中提取总字节数,以使电子设备从分区字段的过渡字段相邻的目标字段中,提取用于指示存储分区表所使用的存储引擎的存储值。
本申请其他实施例中,电子设备从分区字段的起始位置相邻的过渡字段中的第一子字段中提取第七存储值,并将第七存储值以低位优先的方式转换成十进制数;从第一子字段的终止位置开始,跳过第二子字段,其中,第二子字段的长度为第七存储值个的字节数;从第二子字段相邻的第三子字段中提取总字节数。这里,过渡字段包括第一子字段、第二子字段和第二子字段。
步骤B2、从分区字段的过渡字段相邻的目标字段中,提取多个第五存储值。
本申请实施例中,电子设备从分区字段的过渡字段相邻的目标字段中,提取多个第五存储值。
其中,目标字段的长度为总字节数。
在一种可实现的应用场景中,电子设备确定分区字段的起始位置之后,首先,电子设备从分区字段的起始位置相邻的过渡字段中的第一子字段如第1-2字节对应的第七存储值以低位优先的方式转换成十进制数,得到记录存储引擎字符所需要的字节数;其次,从第一子字段的终止位置开始,跳过第二子字段,第二子字段的长度为第七存储值个的字节数;然后,从第二子字段相邻的第三子字段如包括四个字节中提取记录着分区字符串所占用的总字节数PB,以提取PB个字节对应的多个存储值。
步骤309、基于多个第五存储值,对存储引擎进行巡检,以查询到存储分区表所使用的存储引擎。
其中,表结构信息包括存储分区表所使用的存储引擎。
在一些实施例中,步骤309基于多个第五存储值,对存储引擎进行巡检,以查询到存储分区表所使用的存储引擎,可以通过图6所示的步骤实现:
步骤C1、将每一第五存储值转换成第一字符,并将多个第一字符组成第一字符串。
本申请实例中,电子设备可以对照ASCII码表,将每一第五存储值转换成对应的第一字符;电子设备也可以对照设定的关系表,将每一第五存储值转换成对应的第一字符。对此,本申请不做具体限制。需要说明的是,若是对照ASCII码表,电子设备需要先将每一第五存储值导成十六进制,再通过ASCII码表每一第五存储值转换成第一字符。
步骤C2、通过正则表达式对第一字符串与引擎标识进行匹配,得到存储分区表所使用的存储引擎。
本申请实施例中,引擎标识用于标识存储分区表所使用的存储引擎。示例性的,引擎标识可以为关键字,如engine,或者yinqing,引擎标识还可以为其他符号,对此,本申请不做限制。
本申请实施例中,正则表达式是软件开发中的一种字符串匹配方式,其以固定的字符串模式来对某一字符串进行匹配。示例性的,若正则表达式为“^select”,表示匹配所有以“select”开头的字符串。
本申请实施例中,电子设备获取多个第五存储值的情况下,首先,电子设备将每一第五存储值转换成第一字符,并将多个第一字符组成第一字符串;其次,电子设备通过正则表达式对第一字符串与引擎标识进行匹配,得到存储分区表所使用的存储引擎。
在一种可实现的应用场景中,电子设备提取到PB个字节对应的多个第五存储值之后,对照ASCII码表多个第五存储值将其解析为第一字符串ps。示例性的,电子设备通过hexdump函数将多个第五存储值导成十六进制,如下:“70 61 72 74 69 74 69 6F6E……”。电子设备通过对照ASCII码表,将第一个第五存储值70转换成对应第一字符为“p”,第二个第五存储值“61”转换成对应第一字符为“a”,上述多个第五存储值转换成第一字符串ps为“partition”。最后,电子设备通过正则表达式对第一字符串ps和引擎标识如engine字段机型匹配,得到存储分区表所使用的存储引擎。
这里,以有3517张数据表为例,在相同的测试环境下,对存储数据表所使用的存储引擎进行巡检,将本方案的表结构巡检方法,与背景技术中提出的三种现有方案的计算效率进行比较,结果如下表所示:
这里,上表中的测试时间统计使用的是操作系统的time命令。Time命令会输出三个时间:整个程序的耗时real,用户态耗时user,程序运行在核心态的耗时sys。其中,比较巡检耗时只用看real的时间。需要说明的是,由于运行中数据库实例会将部分表结构的元信息缓存到内存中,导致统计的时间有偏差,所以本方案在测试时,选用数据库初启动时进行查询的时间作为标准。
由上表可知,本方案提出的表结构巡检方法,在巡检耗时上与背景技术中提出的三种现有方案相比,通过文件对存储数据表所使用的存储引擎进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的存储引擎进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
参见图7,图7是本申请实施例提供的表结构巡检方法的一个可选的流程示意图,将结合图7示出的步骤进行说明,
步骤401、获取存储有数据表的表结构的文件。
步骤402、从文件的头部字段中获取文件类型。
步骤403、若文件类型为表类型,确定与表类型对应的第一待巡检对象。
步骤404、若第一待巡检对象为字符集,从头部字段中获取用于运行数据表的数据库的版本信息,以及数据表的字符序编号。
其中,巡检信息包括数据库的版本信息和数据表的字符序编号。
本申请实施例中,版本信息为每间隔一段时长对所述数据库中存在的缺陷或者漏洞进行更新后对应的版本。需要说明的是,数据库每更新一次,对应一个版本信息。这里,版本信息可以为数据库的版本号。
本申请实施例中,字符序编号为对每一字符序设定的序号。
步骤405、获取与版本信息对应的字符字典。
本申请实施例中,字符字典包括字符序编号、字符集名称、字符序名称、字符集中每个字符的最大长度,以及是否含有空值。
这里,字符集可以理解为各种文字和符号的集合,如各国家文字,标点符号,图形符号,数字等;字符集还可以理解为字符的编码方式,即二进制数据与字符的映射规则。字符集名称包括ASCII、ISO 8859-1、GB2312,字符集名称还可以包括GBK、utf8、utf8mb4。
这里,字符序为在一组字符集中进行字符比较的规则,如是否忽略大小写,是否按照二进制比较字符。字符序名称包括utf8_croatian_ci、utf8mb4_unicode_ci、utf8mb4_swedish_ci,字符名称还可以包括utf8mb4_persian_ci、utf8mb4_croatian_ci、utf8mb4_bin、utf8mb4_spanish_ci。示例性的,如下所示为字符字典,
["576","utf8","utf8_croatian_ci","3",""],
["224","utf8mb4","utf8mb4_unicode_ci","4",""],
["232","utf8mb4","utf8mb4_swedish_ci","4",""],
["240","utf8mb4","utf8mb4_persian_ci","4",""],
["608","utf8mb4","utf8mb4_croatian_ci","4",""],
["46","utf8mb4","utf8mb4_bin","4",""],
["231","utf8mb4","utf8mb4_spanish_ci","4",""]
上述字符字典,第一列是字符序编号,第二列是字符集名称,第三列是字符序名称,第四列是该字符集中每个字符的最大长度,第五列是是否含有空值。
步骤406、在字符字典中按照字符序编号进行巡检,以查询到数据表中的字符集和字符序。
其中,表结构信息包括数据表中的字符集和字符序。
本申请实施例中,电子设备确定第一待巡检对象为字符集,首先,从头部字段中获取用于运行数据表的数据库的版本信息,以及数据表的字符序编号;其次,电子设备获取与版本信息对应的字符字典;最后,电子设备在字符字典中按照字符序编号进行巡检,从而查询到与数据表的字符序编号对应的数据表中的字符集和字符序。
这里,以有3517张数据表为例,在相同的测试环境下,对数据表中的字符集进行巡检,将本方案的表结构巡检方法,与背景技术中提出的三种现有方案的计算效率进行比较,结果如下表所示:
这里,上表中的测试时间统计使用的是操作系统的time命令。Time命令会输出三个时间:整个程序的耗时real,用户态耗时user,程序运行在核心态的耗时sys。其中,比较巡检耗时只用看real的时间。需要说明的是,由于运行中数据库实例会将部分表结构的元信息缓存到内存中,导致统计的时间有偏差,所以本方案在测试时,选用数据库初启动时进行查询的时间作为标准。
由上表可知,本方案提出的表结构巡检方法,在巡检耗时上与背景技术中提出的三种现有方案相比,通过文件对数据表中的字符集进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的字符集进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
本申请其他实施例中,若第一待巡检对象为行格式,电子设备可以通过如下方式实现,
从头部字段中的第五字段中提取第八存储值,若第八存储值指示的是数据表对应的行格式类型,对行格式进行巡检,以查询到数据表对应的行格式类型。
其中,表结构信息包括数据表对应的行格式类型;待巡检信息包括第八存储值;表结构信息包括数据表对应的行格式类型。
这里,第八存储值为二进制数据值,需要将第八存储值转换成是十进制数,以对行格式进行巡检,以查询到数据表对应的行格式类型。示例性的,若第八存储值转换成十进制数后为0,则数据表对应的行格式类型为默认类型;若第八存储值转换成十进制数后为1,则数据表对应的行格式类型为fixed类型;若第八存储值转换成十进制数后为2,则数据表对应的行格式类型为DYNAMIC类型;若第八存储值转换成十进制数后为3,则数据表对应的行格式类型为COMPRESSED类型;若第八存储值转换成十进制数后为4,则数据表对应的行格式类型为REDUNDANT类型;若第八存储值转换成十进制数后为5,则数据表对应的行格式类型为COMPACT类型;若第八存储值转换成十进制数后为6,则数据表对应的行格式类型为PAGE类型。如此,通过文件对数据表对应的行格式进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的行格式进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
本申请其他实施例中,若第一待巡检对象为主键,电子设备可以通过如下方式实现,
D1、从文件的索引字段的起始位置相邻的第一过渡字段中提取索引数。
本申请实施例中,电子设备跳过文件的头部字段,即可确定索引字段,进而从索引字段的起始位置相邻的第一过渡字段中提取索引数nk。
D2、从索引字段的第一过渡字段相邻的第六字段中,提取第一字节总数。
其中,第一字节总数用于指示索引包含的字段总数nkp。
这里,索引元字段存在多个,每条索引元字段由索引头部字段和索引信息字段这两部分组成。索引头部字段固定占8字节,而索引信息字段占np×9个字节,其中np的值为索引头部字段的第五个字节以unsigned char类型进行解码得到,该位表示该条索引所包含的字段总数。因此索引元字段包括的字节总数为nk×(8+np×9)。若将每条索引所占的字段数量相加,则等于第一字节总数。
D3、基于第一字节总数和第六字段,确定索引字段的第一目标字段,并从第一目标字段中提取索引数个第九存储值。
其中,待巡检信息包括第九存储值。
这里,电子设备从第六字段的起始位置,跳过第一字节总数后,确定索引字段的第一目标字段,进而从第一目标字段中提取索引数nk个第九存储值。
D4、基于索引数个第九存储值,对主键进行巡检,以查询到数据表中的主键。
其中,第九存储值用于指示数据表是否存在主键;表结构信息包括数据表中的主键。
在一种可实现的应用场景中,首先,电子设备确定文件的头部字段的字节数为64字节,从文件的起始位置跳过64个字节后,确定文件的索引字段,从索引字段中的起始位置相邻的第一过渡字段即第一个字节中读取索引数nk。从索引字段的第一过渡字段相邻的第六字段即第二个字节中读取第一字节总数nkp,即索引包含的字段总数。从索引字段的第六字段相邻的第一目标字段中,提取索引数nk个第九存储值;其中,第一目标字段的长度为第一字节总数nkp。这里,第九存储值中包括多个字符,电子设备解析索引名前,读入一个字符,以char类型解码后得到每条索引名字之间的分隔符t。接着依次逐字节读入,并按照char类型解码,解码后得到的字符如果不是分隔符t,那么该字符就属于索引名的一部分,如果解码后得到的字符是t,那么就说明当前的索引名已经读完,下一个字符属于下一个索引名。当读到了nk个分隔符t,就说明所有的索引名都已读完。查看读到的索引名中是否存在主键标识如PRIMARY字段,如果存在就说明该表存在主键,反之则说明不存在。如此,通过文件对数据表的主键进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的主键进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
本申请其他实施例中,若第一待巡检对象为列名,电子设备可以通过如下方式实现,
E1、从头部字段中的第三字段中提取第三存储值,从头部字段中的第四字段中提取第四存储值,以及从头部字段中的第七字段中提取第十存储值。
其中,第三存储值用于指示存储索引记录,第四存储值用于指示存储默认值,第十存储值用于指示主键信息值。
E2、基于第三存储值、第四存储值和第十存储值,确定文件的列元字段。
在一种实现场景中,如头部字段包含有64个字节,第三字段可以是头部字段中的第15-16字节、第四字段可以是头部字段中的第17-18字节、第七字段可以是头部字段中的第29-30字节,电子设备使用与第三字段、第四字段和第七字段存储的数据的数据类型对应的目标数据类型如unsigned short进行解码,得到第三存储值、第四存储值和第十存储值。进一步地,电子设备基于第三存储值、第四存储值和第十存储值,确定第三字节偏移量,进而电子设备从文件的头部字段的起始位置开始跳过第三字节偏移量个字节,确定文件的列元字段。这里,电子设备可以通过如下公式确定第三字节偏移量:
第三字节偏移量=((((64+第三存储值+第四存储值+第十二存储值)/64)+1)×64)+258。
E3、从列元字段的起始位置相邻的过渡字段中提取列数。
其中,列数用于记录数据表中的列的数量。
E4、从列元字段的过渡字段相邻的第八字段中,提取每一列名所占用的第二字节总数。
E5、从列元字段的第八字段相邻的第二目标字段中,提取列数个第十一存储值。
其中,第二目标字段的长度通过第二字节总数和列数确定的;待巡检信息包括列数个第十一存储值。
需要说明的是,一种情况下,存储每一列名的相邻两个字段之间不存在间隔字节数,即不存在空白字节数,第二目标字段的长度等于第二字节总数和列数乘积;另一种情况下,存储每一列名的相邻两个字段之间存在间隔字节数,即存在空白字节数,第二目标字段的长度可以通过第二字节总数、列数以及间隔字节数确定。这里,间隔字节数可以是固定的,也可以是随机的,本申请不做具体限制。
E6、基于列数个第十一存储值,对列名进行巡检,以查询到数据表中的列名。
其中,表结构信息包括数据表中的列名。
在一种可实现的应用场景中,电子设备从头部字段中的第三字段中提取第三存储值,从头部字段中的第四字段中提取第四存储值,以及从头部字段中的第七字段中提取第十存储值;基于第三存储值、第四存储值和第十存储值,确定文件的列元字段之后,首先,电子设备从列元字段的起始位置相邻的过渡字段即前两个字节中提取列数nc;其次,电子设备从列元字段的过渡字段相邻的第八字段即第三个字节中,提取每一列名所占用的第二字节总数L;再次,电子设备从列元字段的第八字段相邻的第二目标字段中,提取列数nc个第十一存储值;这里,若存储每一列名的相邻两个字段之间存在间隔字节数,且间隔字节数是固定的,第二目标字段的长度通过第二字节总数、列数以及间隔字节数确定,即第二目标字段的长度=列数nc×(1+第二字节总数L+间隔字节数)。进一步地,电子设备将每一第十一存储值转换成第三字符,并将列数nc个第三字符组成第三字符串,得到数据表的列名,进而实现了对列名的巡检。需要说明的是,如果要检测表中列名是否含有大写字母,将获取的列名即第三字符串,逐字符检测即可。如此,电子设备通过文件对数据表对应的列名进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的列名进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
本申请其他实施例中,若第一待巡检对象为列字符集,电子设备执行E6基于列数个第十一存储值,对列名进行巡检,以查询到数据表中的列名之后,还需执行如下过程:
E7、确定与列元字段的第二目标字段间隔分隔字符的列的元字段,并从元字段的第三目标字段中,提取第十二存储值。
其中,第十二存储值用于指示该列所使用的字符集;待巡检信息包括第十二存储值。
E8、基于第十二存储值,对列字符集进行巡检,以查询到数据表中的列所使用的字符集。
其中,表结构信息包括数据表中的列所使用的字符集。
在一种可实现场景中,电子设备基于列数个第十一存储值,对列名进行巡检,以查询到数据表中的列名之后,确定与列元字段的第二目标字段间隔分隔字符的列的元字段,即电子设备确定第二目标字段后,再跳过一个分隔字符,即可确定列的元字段;需要说明的是,每个列的元字段的存储顺序与列名的存储顺序一致。这里,每个列的元字段占用17个字节,所有列的元字段所占用的字节数为17×nc。进一步地,按照列名的存储顺序,电子设备从每一列的元字段的第三目标字段即第15个字节中,提取用于指示该列所使用的字符集的第十二存储值。最后,电子设备基于每一列的第十二存储值,对照获取的字符集字典,对列字符集进行巡检,进而查询到数据表中与每一列对应的列所使用的字符集。如此,电子设备通过文件对数据表对应的列所使用的字符集进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的列所使用的字符集进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
本申请其他实施例中,若第一待巡检对象为列注释,电子设备执行E6基于列数个第十一存储值,对列名进行巡检,以查询到数据表中的列名之后,还需执行如下过程:
E9、确定与列元字段的第二目标字段间隔分隔字符的列的元字段,并从元字段的第九字段中提取列的注释的第三字节总数。
E10、从列元字段的元字段相邻的列注释字段中,提取列数个第十三存储值。
其中,列注释字段的长度为通过第三字节总数与列数确定;待巡检信息包括列数个第十三存储值。
需要说明的是,一种情况下,存储每一列的列注释的相邻两个字段之间不存在间隔字节数,即不存在空白字节数,列注释字段的长度等于第三字节总数和列数乘积;另一种情况下,存储每一列的列注释的相邻两个字段之间存在间隔字节数,即存在空白字节数,列注释字段的长度可以通过第三字节总数、列数以及间隔字节数确定,这里。间隔字节数可以是固定的,也可以是随机的,本申请不做具体限制。
E11、基于列数个第十三存储值,对列注释进行巡检,以查询到对数据表中的列的注释。
其中,表结构信息包括数据表中的列的注释。
在一种可实现场景中,电子设备基于列数个第十一存储值,对列名进行巡检,以查询到数据表中的列名之后,电子设备基于列数个第十一存储值,对列名进行巡检,以查询到数据表中的列名之后,确定与列元字段的第二目标字段间隔分隔字符的列的元字段,即电子设备确定第二目标字段后,再跳过一个分隔字符,即可确定列的元字段。需要说明的是,每个列的元字段的存储顺序与列名的存储顺序一致。这里,每个列的元字段占用17个字节,所有列的元字段所占用的字节数为17×nc。进一步地,按照列名的存储顺序,电子设备从每一列的元字段的第九字段即第16-17个字节中,提取用于指示该列的注释的第三字节总数cl。然后,电子设备从列元字段的元字段相邻的列注释字段中,提取列数个第十三存储值。需要说明的是,每个列的列注释的存储顺序与列名的存储顺序一致。这里,若存储每一列的列注释的相邻两个字段之间不存在间隔字节数,列注释字段的长度为第三字节总数和列数的乘积,即列注释字段的长度=列数nc×第三字节总数。如此,基于第三字节总数,可知相邻两个列的注释之间的分割位置。示例性的,如第三字节总数为10,列注释字段中起始位置开始,往后读十个字节是第一列的注释,从第十一个字节开始便是第二列的注释,每两个列注释之间没有的间隔字节数。
最后,电子设备将每一第十三存储值转换成第四字符,这里,电子设备需要将每一列注释的所有字节表示的字符拼接起来就得到了每一列的完整注释,即第四字符串,并获取列数nc个第四字符串,得到数据表的每一列的列注释,进而实现了对列注释的巡检。需要说明的是,如果要巡检注释中是否含有高危字符,就逐个检查每列注释中是否含有该字符即可。
由上述可知,本申请实施例中,电子设备通过文件对数据表对应的列的注释进行巡检,减少了巡检时长,提高了巡检效率;同时,无需依赖运行中的数据库实例,并且不占用数据库连接或缓冲池等资源,对表类型的数据表的列的注释进行巡检,这使得巡检任务完全不会影响到数据库实例正常提供服务,提高了方法的健壮性,且完全不消耗额外的存储空间,减少了资源占用。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
参见图7,图7是本申请实施例提供的表结构巡检方法的一个可选的流程示意图,将结合图7示出的步骤进行说明,
步骤501、获取存储有数据表的表结构的文件。
步骤502、从文件的头部字段中获取文件类型。
步骤503、若文件类型为视图类型,确定与视图类型对应的第二待巡检对象为建表语句。
步骤504、从文件的剩余字段中提取多个第六存储值。
其中,待巡检信息包括第六存储值。
本申请实施例中,文件包括头部字段和剩余字段。
步骤505、将每一第六存储值转换成第二字符,并将多个第二字符组成第二字符串。
本申请实例中,电子设备可以对照ASCII码表,将每一第六存储值转换成对应的第二字符;电子设备也可以对照设定的关系表,将每一第六存储值转换成对应的第二字符。对此,本申请不做具体限制。需要说明的是,若是对照ASCII码表,电子设备需要先将每一第六存储值导成十六进制,再通过ASCII码表每一第六存储值转换成第二字符。
步骤506、通过正则表达式对第二字符串与建表标识进行匹配,得到创建数据表所使用的建表语句。
其中,表结构信息包括创建数据表所使用的建表语句。
本申请实施例中,建表标识用于标识创建数据表所使用的建表语句。示例性的,建表标识可以为关键字,如create。
本申请实施例中,正则表达式是软件开发中的一种字符串匹配方式,其以固定的字符串模式来对某一字符串进行匹配。示例性的,若正则表达式为“^create”,表示匹配所有以“create”开头的字符串。
本申请实施例中,电子设备获取多个第六存储值的情况下,首先,电子设备将每一第六存储值转换成第二字符,并将多个第二字符组成第二字符串;其次,电子设备通过正则表达式对第二字符串与建表标识进行匹配,得到创建数据表所使用的建表语句。
在一种可实现的应用场景中,电子设备提取到多个第六存储值之后,对照ASCII码表多个第六存储值将其解析为第二字符串ps,电子设备通过正则表达式对第二字符串ps和建表标识如create字段进行匹配,得到创建数据表所使用的建表语句。
由上述可知,电子设备通过获取存储有数据表的表结构的文件,并从文件的头部字段中确定文件类型为视图类型,然后,针对视图类型对应的待巡检对象即建表语句,从文件中与视图类型对应的剩余字段中,提取待巡检信息即第六存储值;进一步地,将每一第六存储值转换的字符组成第二字符串;最后,通过正则表达式对第二字符串与建表标识进行匹配,从而得到创建数据表所使用的建表语句。如此,实现了无需依赖运行中的数据库实例,从而也不占用数据库连接或缓冲池等资源,对视图类型的数据表进行巡检,得到数据表的表结构;如此,在处理巡检任务的同时,不消耗额外的存储空间,减少了资源占用。
下面继续说明本申请实施例提供的表结构巡检装置154实施为软件模块的示例性结构,在一些实施例中,如图1所示,存储在存储器150的表结构巡检装置154中的软件模块可以是电子设备100中的表结构巡检装置,包括:
获取模块1541,用于获取存储有数据表的表结构的文件;
获取模块1541,还用于从文件的头部字段中获取文件类型;
获取模块1541,还用于针对文件类型对应的待巡检对象,基于文件中的与文件类型对应的字段,获取待巡检信息;
处理模块1542,用于基于待巡检信息对待巡检对象进行巡检,以查询数据表的表结构信息。
在一些实施例中,确定模块1543,用于若文件类型为表类型,确定与表类型对应的第一待巡检对象;获取模块1541,还用于若第一待巡检对象为存储引擎,从头部字段中的第一字段中提取第一存储值,其中,待巡检信息包括第一存储值。
在一些实施例中,处理模块1542,还用于若第一存储值指示的是存储数据表所使用的存储引擎,对存储引擎进行巡检,以查询到存储数据表所使用的存储引擎,其中,表结构信息包括存储数据表所使用的存储引擎。
在一些实施例中,获取模块1541,还用于若第一存储值指示的是数据表为分区表,从头部字段中的第二字段中提取第二存储值,从头部字段中的第三字段中提取第三存储值,以及从头部字段中的第四字段中提取第四存储值,其中,第二存储值用于指示文件一次写入的字节大小,第三存储值用于指示存储索引记录,第四存储值用于指示存储默认值;确定模块1543,还用于基于第二存储值、第三存储值和第四存储值,确定文件的分区字段;获取模块1541,还用于从分区字段中获取多个第五存储值,其中,待巡检信息还包括第二存储值、第三存储值、第四存储值和多个第五存储值,第五存储值用于指示存储分区表所使用的存储引擎;处理模块1542,还用于基于多个第五存储值,对存储引擎进行巡检,以查询到存储分区表所使用的存储引擎,其中,表结构信息包括存储分区表所使用的存储引擎。
在一些实施例中,处理模块1542,还用于将每一第五存储值转换成第一字符,并将多个第一字符组成第一字符串;通过正则表达式对第一字符串与引擎标识进行匹配,得到存储分区表所使用的存储引擎。
在一些实施例中,确定模块1543,还用于确定第二存储值、第三存储值和第四存储值三者之和为第一字节偏移量;获取模块1541,还用于获取设定的第二字节偏移量,其中,第二字节偏移量用于表征分割字节;确定模块1543,还用于基于获取的文件的第一个字节、第一字节偏移量和第二字节偏移量,确定分区字段的起始位置。
在一些实施例中,获取模块1541,还用于从分区字段的起始位置相邻的过渡字段中提取总字节数,其中,总字节数用于记录存储分区表所使用的存储引擎占用的字节数;从分区字段的过渡字段相邻的目标字段中,提取多个第五存储值,其中,目标字段的长度为总字节数。
在一些实施例中,获取模块1541,还用于若第一待巡检对象为字符集,从头部字段中获取用于运行数据表的数据库的版本信息,以及数据表的字符序编号,其中,巡检信息包括数据库的版本信息和数据表的字符序编号;获取与版本信息对应的字符字典;处理模块1542,还用于在字符字典中按照字符序编号进行巡检,以查询到数据表中的字符集和字符序,其中,表结构信息包括数据表中的字符集和字符序。
在一些实施例中,确定模块1543,还用于若文件类型为视图类型,确定与视图类型对应的第二待巡检对象为建表语句;获取模块1541,还用于从文件的剩余字段中提取多个第六存储值,其中,待巡检信息包括第六存储值;处理模块1542,还用于将每一第六存储值转换成第二字符,并将多个第二字符组成第二字符串;通过正则表达式对第二字符串与建表标识进行匹配,得到创建数据表所使用的建表语句,其中,表结构信息包括创建数据表所使用的建表语句。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图2-图8示出的方法。
本申请提供一种存储介质,通过获取存储有数据表的表结构的文件,并从文件的头部字段中获取文件类型,然后针对文件类型对应的待巡检对象,确定文件中与文件类型对应的字段以得到待巡检信息,最后,基于待巡检信息对待巡检对象进行巡检,从而查询到数据表的表结构信息。如此,本申请解决了相关技术必须依赖在线运行中的数据库实例,至少存在依赖性强的问题;实现了无需依赖运行中的数据库实例,从而也不占用数据库连接或缓冲池等资源;如此,在处理巡检任务的同时,不消耗额外的存储空间,减少了资源占用。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(超文本标记语言,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (11)
1.一种表结构巡检方法,其特征在于,包括:
获取存储有数据表的表结构的文件;
从所述文件的头部字段中获取文件类型;
针对所述文件类型对应的待巡检对象,基于所述文件中的与所述文件类型对应的字段,获取待巡检信息;
基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息。
2.根据权利要求1所述的方法,其特征在于,所述针对所述文件类型对应的待巡检对象,基于所述文件中的与所述文件类型对应的字段,获取待巡检信息,包括:
若所述文件类型为表类型,确定与所述表类型对应的第一待巡检对象;
若所述第一待巡检对象为存储引擎,从所述头部字段中的第一字段中提取第一存储值,其中,所述待巡检信息包括所述第一存储值。
3.根据权利要求2所述的方法,其特征在于,所述基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息,包括:
若所述第一存储值指示的是存储所述数据表所使用的存储引擎,对所述存储引擎进行巡检,以查询到存储所述数据表所使用的存储引擎,其中,所述表结构信息包括存储所述数据表所使用的存储引擎。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述第一存储值指示的是所述数据表为分区表,从所述头部字段中的第二字段中提取第二存储值,从所述头部字段中的第三字段中提取第三存储值,以及从所述头部字段中的第四字段中提取第四存储值,其中,所述第二存储值用于指示所述文件一次写入的字节大小,所述第三存储值用于指示存储索引记录,所述第四存储值用于指示存储默认值;
基于所述第二存储值、所述第三存储值和所述第四存储值,确定所述文件的分区字段;
从所述分区字段中获取多个第五存储值,其中,所述待巡检信息还包括所述第二存储值、所述第三存储值、所述第四存储值和所述多个第五存储值,所述第五存储值用于指示存储所述分区表所使用的存储引擎;
相应地,所述基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息,包括:
基于所述多个第五存储值,对所述存储引擎进行巡检,以查询到存储所述分区表所使用的存储引擎,其中,所述表结构信息包括存储所述分区表所使用的存储引擎。
5.根据权利要求4所述的方法,其特征在于,所述基于所述多个第五存储值,对所述存储引擎进行巡检,以查询到存储所述分区表所使用的存储引擎,包括:
将每一第五存储值转换成第一字符,并将多个第一字符组成第一字符串;
通过正则表达式对所述第一字符串与引擎标识进行匹配,得到存储所述分区表所使用的存储引擎。
6.根据权利要求4所述的方法,其特征在于,所述基于所述第二存储值、所述第三存储值和所述第四存储值,确定所述文件的分区字段,包括:
确定所述第二存储值、所述第三存储值和所述第四存储值三者之和为第一字节偏移量;
获取设定的第二字节偏移量,其中,所述第二字节偏移量用于表征分割字节;
基于获取的所述文件的第一个字节、所述第一字节偏移量和所述第二字节偏移量,确定所述分区字段的起始位置。
7.根据权利要求6所述的方法,其特征在于,所述从所述分区字段中获取多个第五存储值,包括:
从所述分区字段的所述起始位置相邻的过渡字段中提取总字节数,其中,所述总字节数用于记录存储所述分区表所使用的存储引擎占用的字节数;
从所述分区字段的所述过渡字段相邻的目标字段中,提取所述多个第五存储值,其中,所述目标字段的长度为总字节数。
8.根据权利要求2所述的方法,其特征在于,所述若所述文件类型为表类型,确定与所述表类型对应的第一待巡检对象之后,所述方法还包括:
若所述第一待巡检对象为字符集,从所述头部字段中获取用于运行所述数据表的数据库的版本信息,以及所述数据表的字符序编号,其中,所述巡检信息包括所述数据库的版本信息和所述数据表的字符序编号;
相应地,所述基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息,包括:
获取与所述版本信息对应的字符字典;
在所述字符字典中按照所述字符序编号进行巡检,以查询到所述数据表中的字符集和字符序,其中,所述表结构信息包括所述数据表中的字符集和字符序。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述针对所述文件类型对应的待巡检对象,基于所述文件中的与所述文件类型对应的字段,获取待巡检信息,包括:
若所述文件类型为视图类型,确定与所述视图类型对应的第二待巡检对象为建表语句;
从所述文件的剩余字段中提取多个第六存储值,其中,所述待巡检信息包括所述第六存储值;
相应地,所述基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息,包括:
将每一第六存储值转换成第二字符,并将多个第二字符组成第二字符串;
通过正则表达式对所述第二字符串与建表标识进行匹配,得到创建所述数据表所使用的建表语句,其中,所述表结构信息包括创建所述数据表所使用的建表语句。
10.一种表结构巡检装置,其特征在于,所述装置包括:
获取模块,用于获取存储有数据表的表结构的文件;
所述获取模块,还用于从所述文件的头部字段中获取文件类型;
所述获取模块,还用于针对所述文件类型对应的待巡检对象,基于所述文件中的与所述文件类型对应的字段,获取待巡检信息;
处理模块,用于基于所述待巡检信息对所述待巡检对象进行巡检,以查询所述数据表的表结构信息。
11.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111529277.XA CN114385679A (zh) | 2021-12-14 | 2021-12-14 | 一种表结构巡检方法、表结构巡检装置和电子设备 |
PCT/CN2022/101277 WO2023109079A1 (zh) | 2021-12-14 | 2022-06-24 | 一种表结构巡检方法、表结构巡检装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111529277.XA CN114385679A (zh) | 2021-12-14 | 2021-12-14 | 一种表结构巡检方法、表结构巡检装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385679A true CN114385679A (zh) | 2022-04-22 |
Family
ID=81195222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111529277.XA Pending CN114385679A (zh) | 2021-12-14 | 2021-12-14 | 一种表结构巡检方法、表结构巡检装置和电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114385679A (zh) |
WO (1) | WO2023109079A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109079A1 (zh) * | 2021-12-14 | 2023-06-22 | 深圳前海微众银行股份有限公司 | 一种表结构巡检方法、表结构巡检装置、电子设备和存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116842000B (zh) * | 2023-07-19 | 2024-01-02 | 北京亿宇嘉隆科技有限公司 | 一种数据库的运维管理方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684160A (zh) * | 2018-09-07 | 2019-04-26 | 平安科技(深圳)有限公司 | 数据库巡检方法、装置、设备及计算机可读存储介质 |
US11893062B2 (en) * | 2019-05-14 | 2024-02-06 | Sap Se | Bulk lazy loading of structured data |
CN113656245A (zh) * | 2021-08-12 | 2021-11-16 | 北京中亦安图科技股份有限公司 | 数据的巡检方法、装置、存储介质及处理器 |
CN114385679A (zh) * | 2021-12-14 | 2022-04-22 | 深圳前海微众银行股份有限公司 | 一种表结构巡检方法、表结构巡检装置和电子设备 |
-
2021
- 2021-12-14 CN CN202111529277.XA patent/CN114385679A/zh active Pending
-
2022
- 2022-06-24 WO PCT/CN2022/101277 patent/WO2023109079A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109079A1 (zh) * | 2021-12-14 | 2023-06-22 | 深圳前海微众银行股份有限公司 | 一种表结构巡检方法、表结构巡检装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023109079A1 (zh) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020233330A1 (zh) | 批量测试方法、装置及计算机可读存储介质 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
US7912826B2 (en) | Apparatus, computer program product, and method for supporting construction of ontologies | |
CN102141916B (zh) | 嵌入式设备及其在osd界面显示语言文字的方法 | |
WO2023109079A1 (zh) | 一种表结构巡检方法、表结构巡检装置、电子设备和存储介质 | |
US7756819B2 (en) | Integrated authoring system for electronic technical manual and paper technical manual using logistics support analysis data and authoring method therefor | |
CN111460045A (zh) | 数据仓库建设的建模方法、模型、计算机设备和存储介质 | |
CN108388640B (zh) | 一种数据转换方法、装置以及数据处理系统 | |
CN112328489B (zh) | 测试用例生成方法、装置、终端设备和存储介质 | |
CN112949276A (zh) | 报表生成方法、装置、电子设备及存储介质 | |
JP4588037B2 (ja) | ドキュメントの整合性検査支援システムおよび方法、ならびにそのプログラム | |
CN113986241A (zh) | 一种基于知识图谱的业务规则的配置方法以及装置 | |
CN112949324A (zh) | 飞机维修技术手册数据的翻译、管理方法及其系统和终端 | |
US20030110175A1 (en) | Deploying predefined data warehouse process models | |
US8996357B2 (en) | Method for generating diagrams, and information processing apparatus for same | |
CN111190880A (zh) | 一种数据库检测方法、装置和计算机可读存储介质 | |
US8131728B2 (en) | Processing large sized relationship-specifying markup language documents | |
CN112328246A (zh) | 页面组件生成方法、装置、计算机设备及存储介质 | |
CN111581212A (zh) | 关系型数据库的数据存储方法、系统、服务器和存储介质 | |
CN113642291B (zh) | 上市公司报告的逻辑结构树构建方法、系统、存储介质及终端 | |
CN113687827B (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
CN115269502A (zh) | 投标文件处理方法、设备及存储介质 | |
US6357002B1 (en) | Automated extraction of BIOS identification information for a computer system from any of a plurality of vendors | |
CN102955761A (zh) | 尺寸信息输出系统及方法 | |
CN111680516A (zh) | Pdm系统产品设计需求信息语义分析提取方法及系统 |
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 |