一种数据库对象的变更方法及装置制造方法

文档序号:6489978阅读:169来源:国知局
一种数据库对象的变更方法及装置制造方法【专利摘要】本申请提供了一种数据库对象的变更方法和装置。所述方法包括:收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息;接收并解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息;判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息;若是,则向对应的数据库依赖系统发送变更提示信息,并执行所述对数据库对象的变更操作。通过本申请,可以在数据库中的数据表结构发生变化时,对依赖系统中的相应的数据表做变更。【专利说明】一种数据库对象的变更方法及装置【
技术领域
】[0001]本申请涉及数据库【
技术领域
】,特别是涉及一种数据库对象的变更方法和装置。【
背景技术
】[0002]数据库已经在信息【
技术领域
】有了广泛的应用,特别是在互联网公司,数据库集群规模随着业务的拓展越来越大;在数据库规模发展的同时,产生了各种数据库的依赖系统(如数据仓库、搜索系统),以满足各种各样的数据分析和数据搜索的需求。[0003]数据仓库需要基于数据库中的线上业务数据做分析,然后转换为适合于各类数据报表提取的内容;搜索系统需要基于线上业务数据进行分析,然后转换为为适合于搜索业务的数据内容。[0004]依赖系统来提取数据是通过表来获取的,如果表的结构发生变化,提取数据的过程就会出现错误,从而导致依赖系统出现问题。例如:依赖系统需要一张用户信息表“USER_INF0”,每天提取一次,当白天有人将该表的表名修改为“USER_BASE_INF0”,如果下游系统不知道表名称发生改变,还是按照以前的表名就没办法提取到所需数据。[0005]目前一些大型网络公司的数据库,仅仅目前在线使用的就达到几十万个表。同时,这些依赖于数据库的系统各自又都有着庞大而又繁杂的存储内容,并且会采用更多的云计算技术,因此,数据库和依赖系统之间的依赖关系非常复杂,当数据库中的表结构发生变更时,人为无法判断需要对哪些依赖系统的数据表做相应的变更,从而导致依赖系统的正常运行出现问题。[0006]因此,目前需要本领域技术人员解决的一个技术问题就是,提供一种数据库对象的变更机制,使得数据库中的数据表结构发生变化时,可以对依赖系统中的相应的数据表做变更。【
发明内容】[0007]本申请所要解决的技术问题是提供一种数据库对象的变更方法,使得数据库中的数据表结构发生变化时,可以对依赖系统中的相应的数据表做变更。[0008]本申请还提供了一种数据库对象的变更装置,用以保证上述方法在实际中的应用及实现。[0009]为了解决上述问题,本申请公开了一种数据库对象的变更方法,包括:[0010]收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息;[0011]接收并解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息;[0012]判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息;[0013]若是,则向对应的数据库依赖系统发送变更提示信息,并执行所述对数据库对象的变更操作。[0014]优选的,所述数据库对象为数据表,所述变更操作为数据表结构操作,所述数据库依赖系统包括数据仓库和搜索系统。[0015]优选的,所述属性信息包括主机名称、端口、数据库名称和数据表名。[0016]优选的,所述收集数据库依赖系统与数据库对象的依赖关系的步骤为,[0017]在数据仓库和搜索系统中,分别提取对数据库对象的依赖关系记录。[0018]优选的,所述收集的依赖关系存储在内存的哈希表中。[0019]优选的,所述方法还包括:[0020]对所述属性信息中的数据表名进行格式转换;[0021]按照预设hash算法,对格式转换后的数据表名取hash值作为key,将主机名称、数据库名称和端口作为value,以key-value的数据结构存储在哈希表中。[0022]优选的,所述解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息的步骤包括:[0023]将所述变更操作拆分为多个子操作,并提取出对数据库对象进行修改、结构变更和删除的子操作;[0024]利用正则表达式,对提取的各个子操作进行正则匹配,得出各个子操作对应的属性信息,其中所述主机名称在提交所述变更操作的同时提交。[0025]优选的,所述属性信息中的数据库名称为主库名称,所述解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息的步骤还包括:[0026]在数据库监控平台中提取主库和备库的对应表;[0027]依据所述对应表和主库名称,得出各个子操作对应的主机名称、端口、数据库名称和数据表名,其中,数据库名称包括主库名称和备库名称。[0028]优选的,所述解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息的步骤还包括:[0029]修正所述变更操作中的目标字符。[0030]优选的,所述收集数据库依赖系统与数据库对象的依赖关系的步骤按照预设频率执行,并依据最新一次收集的依赖关系进行更新。[0031]优选的,所述方法还包括:[0032]若否,则执行所述对数据库对象的变更操作。[0033]优选的,所述判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息的步骤包括:[0034]提取解析出的属性信息中的数据表名,按照预设hash算法,将所述数据表名转换为hash值;[0035]在哈希表中搜索与所述hash值相同的key,若存在,贝U判断所述变更操作中的其余属性信息,是否包含该key对应的value;[0036]若一致,则判定所述依赖关系中包含请求变更的数据库对象的属性信息。[0037]优选的,所述变更提示信息包括请求变更的数据库对象的属性信息,以及所述变更操作的链接。[0038]本申请还提供了一种数据库对象的变更装置,包括:[0039]依赖关系收集模块,用于收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息;[0040]变更操作解析模块,用于接收并解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息;[0041]判断模块,用于判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息,若是,则执行提示信息发送模块和变更模块;[0042]提示信息发送模块,用于向对应的数据库依赖系统发送变更提示信息;[0043]变更模块,用于执行所述对数据库对象的变更操作。[0044]与现有技术相比,本申请具有以下优点:[0045]依据本申请,预先收集数据库依赖系统与数据表的依赖关系,依赖关系中包含数据表的属性,然后判断提交的数据库对象变更操作中,是否也包含这些信息,若包含,则说明对该依赖表的修改操作会影响依赖系统,可以向依赖表对应的依赖系统发送提示信息,使得数据库中的数据表结构发生变化时,自动分析变更任务所涉及到的依赖系统,可以对依赖系统中的相应的数据表做变更。[0046]其次,本申请将收集的依赖关系以key-value的数据结构保存在hash表中,以key为标识快速查找到对应的数据表,然后对比value即可完成分析,大大提高了分析效率。[0047]当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。【专利附图】【附图说明】[0048]图1是本申请的一种数据库对象的变更方法实施例1的流程图;[0049]图2是本申请的一种数据库对象的变更方法实施例2的流程图;[0050]图3是本申请的一种数据库对象的变更装置实施例1的结构框图;[0051]图4是本申请的一种数据库对象的变更装置实施例2的结构框图。【具体实施方式】[0052]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。[0053]本申请提出一种数据库对象的变更方法,预先收集了数据库依赖系统与数据库的依赖关系,业务人员在变更系统提交对数据库对象的变更操作,并通知数据库任务管理平台;数据库任务管理平台通过调度系统,建立并调度执行数据库的各个任务,数据库任务平台接收到通知后,由调度系统建立分析任务,分析任务会按照预设的调度规则被调度,依据依赖关系分析变更操作会对哪些依赖系统产生影响。进而可以对依赖系统中的相应的数据表做变更。[0054]参考图1,其示出了本申请的一种数据库对象的变更方法实施例1的流程图,具体可以包括以下步骤:[0055]步骤101、收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息。[0056]本申请中,所述数据库可以是OLTP(OnlineTransactionProcessing,在线事务处理)数据库,OLTP数据库是线上业务系统的后台数据库,一般具有较高的并发;本申请也可以应用于其他类型的数据库,例如,DSS(DecisionSuportSystem,决策支持系统)数据库。[0057]数据库对象可以是最基本的数据表和视图,以及约束、序列、函数、存储过程、包、触发器等。若所述数据库对象为数据表,则所述变更操作为数据表结构操作,所述属性信息可以包括主机名称、端口、数据库名称和数据表名。[0058]所述数据库依赖系统可以包括数据仓库和搜索系统,均需要用到数据库对象做数据分析。[0059]优选的,所述步骤101可以包括:[0060]子步骤S11、在数据仓库和搜索系统中,分别提取数据库对象的依赖关系记录。[0061]数据仓库和搜索系统的数据表依赖于数据库,会以数据库的数据为基础,通过数据库名、数据库对象名、主机名等作为提取数据的单位,所以其依赖关系也是以这些为基础。数据仓库和搜索系统中记录了在数据库中提取的数据库对象,提取的时间,数据库对象的属性信息,可以将依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息整理出来备用。[0062]在具体的实现中,所述收集数据库依赖系统与数据库对象的依赖关系的步骤可以按照预设频率执行,并依据最新一次收集的依赖关系进行更新。收集的依赖关系可以保存在公共数据库中。[0063]步骤102、接收并解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息。[0064]对数据库表结构变更是基于业务需求的,业务人员在变更系统提交变更单操作,变更系统接收变更操作后会通知数据库任务管理平台,数据库任务平台接收变更系统发送过来的变更操作,建立分析任务,并调度执行分析任务,对变更操作进行解析。[0065]当数据库对象为数据表时,对数据库对象的变更操作即是进行表结构变更的DDL语句(DataDescriptionLanguage,数据库模式定义语言)。变更操作的内容主要可包含执行的具体主机、端口、数据库名、数据表名;其中主机定位到一个数据库实例,库名定位到具体的数据库上,DDL语句为修改对应数据库上的一个或多个表结构的语句,该语句可以在一个数据库中正常的执行,经过正则表达式转换后可以被执行。[0066]在具体的实现中,主机名称可能并不包含在DDL语句中,而是在提交数据库对象变更操作时,一同提交。具体的,可以在变更系统填写变更时,在选项“变更设备”中填写主机名称。[0067]如下两个DDL语句:172.23.100.17:3306sns_01库中执行:[0068]DDL语句1、Createtablesns_blogs(idnumber,namevarchar2(32));[0069]DDL语句2、Altertablesns_groupsaddcolumngroup_descvarchar2(32)?[0070]填写changefree变更时,填写为主机名称为A。[0071]前一个DDL语句表示在sns_01数据库中进行创建表sns_blogs的操作;[0072]后一个DDL语句表示在sns_01数据库中进行修改表sns_groups的操作。[0073]对上面的DDL语句提取得到请求变更的数据库对象的属性信息如下:[0074]DDL语句1:主机名称172.23.100.17、端口3306、数据库名sns_01、表sns_blogs[0075]DDL语句2:主机名称172.23.100.17、端口3306、数据库名sns_01、表sns_groups。[0076]在本申请的一种优选实施例中,所述步骤102可以包括:[0077]子步骤S21、将所述变更操作拆分为多个子操作,并提取出对数据库对象进行修改、结构变更和删除的子操作;[0078]子步骤S22、利用正则表达式,对提取的各个子操作进行正则匹配,得出各个子操作对应的属性信息,其中,所述主机名称在提交所述变更操作的同时提交。[0079]由于变更操作可能会涉及到对多个不同的数据库对象的进行变更的多个操作,因此,还需要将变更操作拆分为多个子操作。对于数据表而言,即是将变更语句拆分为单个操作的DDL语句,然后提取出其中对数据库对象进行修改,结构变更和删除的语句,因为这些语句才会对依赖系统造成影响。[0080]由于每个DDL语句都有可能会对依赖系统带来影响,所以拆分出来的数据是循环判定的。首先判断各个DDL语句中是否altertable类型的操作,那么就是对表要进行修改,再看该语句中是否包含关键词add、drop或rename,若是,则表示该语句的确对表结构进行变化;如果该语句并非altertable类型,那么就看语句是否包含关键词droptable或turncate,如果是,则进行表的删除或数据删除操作。[0081]变更操作一般会包含有多个语句,这些语句可能会操作多个主机多个库多个表,在具体执行的时候,是将它们拆分开来执行的,如下例:[0082]Usedbl;[0083]Createtabletestl(idbigint);[0084]Createtabletest2(idbigint,namevarchar(32));[0085]droptabletest3。[0086]按照操作对象的不同,上述变更操作可以被依次拆分为4个DDL语句,分别对应着如下的操作:[0087]第一步:切换到dbl库操作;[0088]第二步:创建表testl,包含列id类型bigint,其他属性默认;[0089]步骤三:创建表test2,包含列id和name,属性分别是bigint和varchar,name长度为32;[0090]步骤四:丢弃表test3。[0091]在判断的过程中,首先判断上述DDL语句中并不是altertable类型的操作,因此也不会含关键词add、drop或rename中的任一个;然后判断上述DDL语句中包含关键词droptable,因此,上述DDL语句中包含了对表的删除操作,可以将droptabletest3这个语句提取出来,进行进一步的分析。[0092]本申请利用正则表达式对于拆分出来的各个子操作进行匹配,利用正则匹配有效对大批量DDL语句进行划分和过滤,能精准提取各个子操作中的属性信息。[0093]数据库是有主、备的关系,可以认为主、备的结构和数据是一样的。变更操作必须针对主库中的数据库对象进行变更,对主库信息进行修改后,会自动对备库信息进行更新,但由于依赖系统既可以从主库也可以从备库上提取信息,不一定从主库上提取信息,因此,对于依赖备库的依赖系统,依赖关系的属性信息中还会包括备库名称,所以需要进一步提取较为完整的主备关系,得出一个变更对应影响的主库和备库信息。在本申请中,主库和备库的对应关系可以保存在数据库监控平台中。[0094]所述步骤102还可以包括:[0095]子步骤S23、在数据库监控平台中提取主库和备库的对应表;[0096]子步骤S24、依据所述对应表和主库名称,得出各个子操作对应的主机名称、端口、数据库名称和数据表名,其中,数据库名称包括主库名称和备库名称。[0097]依据上述步骤中得出的各个子操作对应的主机名称、端口、主库名称和数据表名,以及数据库监控平台中主库和备库的对应关系,可以进一步得出,各个子操作对应的主机名称、端口、主库名称、备库名称和数据表名的对应关系。[0098]在具体的实现中,所述步骤102还可以包括:[0099]子步骤S25、修正所述变更操作中的目标字符。[0100]变更操作中可能会存在一些特殊的字符需要处理,将这些特殊字符作为目标字符,在拆分变更操作为多个子操作之前,需要针对执行脚本中分析若存在目标字符,则需要进行修正,得到较为标准的语句。特殊字符包括如下两种情况:[0101]1、分号[0102]在具体的实现中,由于多个DDL语句是同时提交的,所以多个语句之间就有分隔符号,例如,SQL(StructuredQueryLanguage,结构化查询语言)语句默认的分隔符号是“;”,如果DDL语句内容中本身也存在“;”那么在按照分隔符拆分语句时,就可能拆分错误。[0103]对于结构变更语句(包含createtable、altertable>droptable等关键词)中,如果在语句内容中出现分号,检测出来后,可以将这个分号,替换为逗号或其他符号,使得拆分出错的问题得以解决。[0104]如下例:[0105]createtableabc([0106]idbigint,[0107]ss_descvarchar(400)comment‘1:XXX;2ddd;DD”D,[0108])[0109]可以将其中的分号修正为逗号:[0110]createtableabc([0111]idbigint,[0112]ss_descvarchar(400)comment‘1:XXX,2ddd;DD”D’[0113])[0114]对于订正语句(包含insert、update、delete等关键词),就是对数据库数据内容进行修改的语句,此时不能修改原本的语句内容,可以对语句进行转义,将分号转为相应的ascii码值,例如分号的ascii码为59。[0115]例如:[0116]Insertintoabc(id,ss_desc)[0117]Values(I,‘abc;ddd’);[0118]如果在mysql(关联数据库管理系统)中会被转义为:[0119]Insertintoabc(id,ss_desc)[0120]Values(I,concat(‘abc’,char(59),’ddd’));[0121]在oracle数据库中会被转义为:[0122]Insertintoabc(id,ss_desc)[0123]Values(I,‘abc’|chr(59)|I’ddd’);[0124]2、其他[0125]由于数据库对象的变更操作可以同时在多台机器上运行,中间存在如/**/-#这类符号包含的数据,会被认为是注释信息,这些内容不是语句中的内容,主要是方便审核和查看,和系统无关,也不是DDL语句所要执行内容,本申请对于此类的符号可以直接做删除处理,和执行内容放在一起会使得执行内容报错。[0126]步骤103、判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息,若是,则执行步骤104。[0127]通过步骤101收集了依赖系统与所依赖的数据库对象的对应关系,以及数据库对象的属性信息;通过步骤102得到了变更操作所针对的数据库对象的属性信息。若依赖关系中存在变更操作所涉及的数据库对象,说明此次变更操作所针对的数据库对象存在相应的依赖系统,那么此次变更就会对依赖系统产生影响。[0128]具体的,可以依据数据库对象的属性信息来进行判断,依赖关系中包含了依赖系统所依赖的数据库对象的属性信息,若收集的依赖关系中,包含了请求变更的数据库对象的属性信息,则说明本次变更会对依赖系统产生影响。[0129]如下例收集的依赖关系:[0130]DB主机:172.23.100.17、DB端口:3306,DB库名:sns_01、DB表名:sns_blog_[0000-0255]、依赖库:ABC、依赖目标表:XXX。[0131]该依赖关系表示依赖库ABC和依赖目标表XXX,依赖于数据库sns_01中的数据表sns_blog_[0000-0255],该数据表的DB主机为172.23.100.17、DB端口为3306。[0132]提交的变更操作如下:[0133]在172.23.100.17:3306sns_01库执行:Createtablesns_blogs(idnumber,namevarchar2(32));[0134]解析变更操作得出请求变更的数据库对象的属性信息如下:[0135]主机名称172.23.100.17、端口3306、数据库名sns_01、表sns_blogs[0136]将解析得到的属性信息与依赖关系进行对照,可以发现主机名称、端口、数据库名和表名,均包含在上述上述依赖关系中。[0137]步骤104、向对应的数据库依赖系统发送变更提示信息,并执行所述对数据库对象的变更操作。[0138]由于依赖关系中保存了依赖系统和其所依赖的数据库对象的对应的关系,因此,可以向对应的依赖系统发送提示信息。具体的,所述变更提示信息可以包括请求变更的数据库对象的属性信息,以及所述变更操作的链接,依赖系统接收到变更提示信息后,可以依据数据库对象的属性信息,找到相应的数据库对象,并依据变更操作的链接,进行相应的变更操作。[0139]参考图2,其示出了本申请的一种数据库对象的变更方法实施例2的流程图,具体可以包括以下步骤:[0140]步骤201、收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息。[0141]步骤202、对所述属性信息中的数据表名进行格式转换。[0142]在数据库中,存在大量的分库分表,每个表会被拆分为几千个表,所以不论在写DDL脚本还是在配置数据时,每天语句如果不做处理,就会变成几千条语句,这样书写代价和评审代价都是很高的,由于这些分表的结构都是一摸一样的(只有名称后缀有变化),所以在配置和变更单编写时可以采用一些简易写法,例如:[0143]Createtableuser_info_[0000-1023](.....)[0144]这样就可以代表1024个表的创建,评审人员可以一目了然,也有逐个编写的,以及跳跃式的如:[0145]Createtableuser_info_[0,3,5,7,9](.....)[0146]等等写法不一,但是最终拿到数据库中执行时,相应的数据库名称会和数据库中的表名保持一致。因此,需要进一步进行转换为可进行快速匹配的实际数据的格式。[0147]例如,对Createtabletest_[0000-0255](idbigint)中的数据表名进行格式转换后可以得到256条语句:[0148]Createtabletest_0000(idbigint);[0149]Createtabletest_0001(idbigint);[0150]Createtabletest_0002(idbigint);[0151]Createtabletest_0255(idbigint)。[0152]不论书写格式是什么样,转换后都转换为一种统一的标准格式存放在内存中,在判断属性信息是否一致的时候,就不用考虑是什么书写格式,转换为同一的格式,不论是分表还是单表都能得到准确的匹配,大大提高了分析的效率。[0153]步骤203、按照预设hash算法,对格式转换后的数据表名取hash值作为key,将主机名称、数据库名称和端口作为value,以key-value的数据结构存储在哈希表中。[0154]哈希表(Hashmap)是一种数据存放结构,具备高效查找的特征。例如,若每个物品有一个数字标号ID,从I开始自动增长,此时,根据物品的ID查找物品的内容信息,如果是从I开始逐个匹配,如果数据量比较大,匹配过程就会非常慢而且极度消耗性能。Hash算法就是将这些ID进行散列,例如,以数组10为基数,此时ID为1、11、21、31等等数据就会放在第一个数组下标中,Hashmap内部一般是使用链表存储,若要进一步优化就可以使用范围存储更加细化定位。[0155]本申请中,收集的依赖关系可以存储在内存的哈希表(HashMap)中。使用预先定义的内存hash来提高匹配的性能,所有的匹配过程都不依赖于文件系统和数据库本身,这大大提高了匹配的速度。[0156]HashMap中的数据以Key-Value的数据结构存放,其中,Key是通过预设的hash算法,对转换格式后的数据表名计算出来的。[0157]例如,对字符串的ascii值进行拼接,即将每个表名的一串字符串的数字叠加起来,然后与预置的一个Hash的基本数组大小进行取模,得到所存放的Hash数组(即哈希桶)的下标。例如=Hash桶个数为100,编号从0-99,那么任意数字和100取模就能得到0_99之间的数字,对应的就是Hash桶的编号,可以将查找范围直接缩小一百倍。并且随着数据量增大,每次计算缩小的范围也会随着桶的个数增加而增加,也就是不会随着数据量增加。[0158]以下例的依赖关系来说明依据数据表名计算key的过程:[0159]DB主机:172.23.100.17、DB端口:3306、DB库名:sns_01、DB表名:abc_table、依赖库:ABC、依赖目标表:XXX。[0160]表名包括12个字符,对应的每个字符的ascii列表为:[0161]【权利要求】1.一种数据库对象的变更方法,其特征在于,包括:收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息;接收并解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息;判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息;若是,则向对应的数据库依赖系统发送变更提示信息,并执行所述对数据库对象的变更操作。2.如权利要求1所述的方法,其特征在于,所述数据库对象为数据表,所述变更操作为数据表结构操作,所述数据库依赖系统包括数据仓库和搜索系统。3.如权利要求2所述的方法,其特征在于,所述属性信息包括主机名称、端口、数据库名称和数据表名。4.如权利要求3所述的方法,其特征在于,所述收集数据库依赖系统与数据库对象的依赖关系的步骤为,在数据仓库和搜索系统中,分别提取对数据库对象的依赖关系记录。5.如权利要求4所述的方法,其特征在于,所述收集的依赖关系存储在内存的哈希表中。6.如权利要求5所述的方法,其特征在于,还包括:对所述属性信息中的数据表名进行格式转换;按照预设hash算法,对格式转换后的数据表名取hash值作为key,将主机名称、数据库名称和端口作为value,以key-value的数据结构存储在哈希表中。7.如权利要求3所述的方法,其特征在于,所述解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息的步骤包括:将所述变更操作拆分为多个子操作,并提取出对数据库对象进行修改、结构变更和删除的子操作;利用正则表达式,对提取的各个子操作进行正则匹配,得出各个子操作对应的属性信息,其中所述主机名称在提交所述变更操作的同时提交。8.如权利要求7所述的方法,其特征在于,所述属性信息中的数据库名称为主库名称,所述解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息的步骤还包括:在数据库监控平台中提取主库和备库的对应表;依据所述对应表和主库名称,得出各个子操作对应的主机名称、端口、数据库名称和数据表名,其中,数据库名称包括主库名称和备库名称。9.如权利要求7或8所述的方法,其特征在于,所述解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息的步骤还包括:修正所述变更操作中的目标字符。10.如权利要求1所述的方法,其特征在于,所述收集数据库依赖系统与数据库对象的依赖关系的步骤按照预设频率执行,并依据最新一次收集的依赖关系进行更新。11.如权利要求1所述的方法,其特征在于,还包括:若否,则执行所述对数据库对象的变更操作。12.如权利要求6所述的方法,其特征在于,所述判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息的步骤包括:提取解析出的属性信息中的数据表名,按照预设hash算法,将所述数据表名转换为hash值;在哈希表中搜索与所述hash值相同的key,若存在,则判断所述变更操作中的其余属性信息,是否包含该key对应的value;若一致,则判定所述依赖关系中包含请求变更的数据库对象的属性信息。13.如权利要求1所述的方法,其特征在于,所述变更提示信息包括请求变更的数据库对象的属性信息,以及所述变更操作的链接。14.一种数据库对象的变更装置,其特征在于,包括:依赖关系收集模块,用于收集数据库依赖系统与数据库对象的依赖关系,所述依赖关系中包括依赖系统与所依赖的数据库对象的对应关系,以及所述数据库对象的属性信息;变更操作解析模块,用于接收并解析对数据库对象的变更操作,得到请求变更的数据库对象的属性信息;判断模块,用于判断所述依赖关系中,是否包含请求变更的数据库对象的属性信息,若是,则执行提示信息发送模块和变更模块;提示信息发送模块,用于向对应的数据库依赖系统发送变更提示信息;变更模块,用于执行所述对数据库对象的变更操作。【文档编号】G06F17/30GK103778133SQ201210398278【公开日】2014年5月7日申请日期:2012年10月18日优先权日:2012年10月18日【发明者】谢宇,徐连虎申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1