专利名称:一种通过提取sql模板对海量sql压缩存储的方法
技术领域:
本发明涉及数据库审计系统的信息存储技术领域。具体涉及海量SQL数据的压缩存储,特别是一种快速存储、节省数据库审计内容存储量的方法。
背景技术:
随着运营商用户规模不断扩大、企业业务平台的不断扩容、电子商务平台和云平台的兴起,其业务数据库每秒产生的查询、更新等操作数量也越来越大,这对数据库审计系统的存储容量要求也越来越高,如何快速、节省地保存海量数据也愈发紧迫。数据库审计系统的存储内容主要是SQL请求及其相关信息,对应不同的业务系统,每条SQL的长度从几个字节到几十K不等,审计记录一般存储在审计系统的数据库或文件系统中,每条审计记录都包含一条详细的SQL语句。对于需要在线查询的审计数据,出于在海量数据中查询性能的考虑,一般不采用压缩方式存储,这样就需要大量的磁盘空间来保存数据,对于离线方式保存的数据则一般采用对归档表进行压缩,对庞大的磁盘存储压缩归档意味着大量的CPU、IO资源及时间开销。另一方面,巨量的审计数据对还原历史数据进行追溯也非常不方便,每天几GB甚至上百GB的数据量,要解压缩并恢复到对应的审计设备上进行查询,也非常耗时,而更大的磁盘存储总是意味着更大的时间开销。综上所述,针对信息时代数据库SQL审计信息呈指数化增长的现状,数据库审计系统如何找到一种更加快速、高效、节约磁盘空间的存储方法变得非常迫切。
发明内容
本发明要解决的技术问题是,针对传统的数据库审计系统中海量SQL的审计导致的存储空间过大、利用率不高的问题,提供一种通过提取SQL模板对海量SQL压缩存储的方法。为解决该技术问题,本发明的解决方案是提供一种通过提取SQL模板对海量SQL压缩存储的方法,包括步骤(I)数据库审计系统审计到一条SQL时,对SQL中包括的参数常量进行识别,取出这些信息并以带固定前辍且顺序数字编号的内容替换,形成不带具体参数只带变量的SQL 行为模板的字符串;(2)替换完成后的内容,我们称之为SQL行为模板,它代表某种业务行为,具备模型的特性,随后将得到的SQL行为模板通过HASH算法生成长整形表示的唯一识别码,并在审计系统中维持一份SQL行为模板和唯一识别码的对应关系;(3)在实际存储该SQL审计记录时,把唯一识别码、替换出来的参数常量、SQL行为模板本身、及其他相关信息存入数据库审计系统的数据库;其中,一个SQL行为模板只保存一份,而该SQL审计记录中的SQL信息将以唯一识别码和参数常量代替,从而节省磁盘存储。
本发明中,所述SQL中包含的参数常量是数字、字符串或日期。本发明中,还包括基于SQL行为模板生成的唯一识别码,根据预置的规则对同一行为的SQL进行过滤,从而剔除客户不关心的或属于白名单性质的SQL。本发明中,还包括针对替换出来的动态参数中包含的敏感信息进行专项加密处理,以防止敏感信息在被审计出来后被二次泄露。本发明中,所述动态参数中包含的敏感信息是密码、手机号或身份证号码。本发明是对数据库审计系统审计出来的SQL中包含的数字、字符串、日期等参数常量进行快速替换,取而代之的是带固定前辍且顺序数字编号的变量,这样处理形成的字符串就是不带具体参数只带变量的SQL行为模板,该SQL行为模板再通过HASH算法生成长整形表示的唯一识别码,并在审计系统中维持一份SQL行为模板和唯一识别码的对应关系,而该SQL审计记录在实际存储时只保存对应的SQL唯一识别码及替换出来的参数常量, 由于长整形表示的唯一识别码总是比SQL行为模板要短得多,所以将极大节省存储空间并提升入库性能,从而实现快速存储和节省磁盘存储的目的。本发明适用于审计各种数据库类型及各种数据库版本,还可以基于SQL行为模板,对业务系统的业务分析、SQL优化、恶意行为分析提供极有效的帮助。本发明的有益效果在于本发明通过替换SQL中的参数常量形成公共的SQL行为模板,通过提取传统数据库审计系统中的冗余部分,极大地节约了该冗余部分的存储开销,同时又对每个审计记录中的SQL提取了各自的参数常量并进行了存储,所以对审计内容的完整性不产生任何不良影响,从而实现了不损害审计记录完整性前提下快速存储和节省地磁盘存储的目的。
图I是一种通过提取SQL模板对海量SQL压缩存储的工作原理图。 图2是SQL模板唯一识别码生成工作流程图。图3是SQL模板等信息存储工作流程图。
具体实施例方式首先需要说明的是,本发明涉及数据库技术,是计算机技术在信息安全技术领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本发明。前述软件功能模块包括但不限于SQL行为模板的生成、SQL行为模板唯一识别码的生成、SQL中参数常量的提取等,凡本发明申请文件提及的均属此范畴,申请人不再一一列举。为确保理解准确、避免产生歧义或不清楚,首先对本发明涉及的部分术语进行解释如下SQL :结构化查询语言(Structured Query Language),用于对数据库进行数据查询、维护的语言。数据库审计系统是一种对各种类型数据库的SQL操作进行还原、记录的审计系统。
SQL行为模板对具体的SQL语句中的参数常量用带固定前辍且顺序数字编号的变量替换后形成的字符串,SQL行为模板总是能代表一种业务系统的某个具体的业务功能, 可以抽象为一种行为意图。唯一识别码由HASH生成的一个唯一标识某一个SQL行为模板的数字。本发明的实现原理是首先通过数据库审计系统取到SQL内容,然后通过算法对其中的参数常量进行快速替换,替换的内容是带固定前辍且顺序数字编号的变量,替换出的参数根据敏感程度,进行加密处理,SQL中的参数用带固定前辍且顺序数字编号的变量替换后形成的字符串就是 SQL行为模板,再通过HASH算法生成该SQL行为模板的唯一识别码,并在审计系统中维持一份SQL行为模板和唯一识别码的对应关系,而该SQL审计记录在实际存储时只保存对应的SQL唯一识别码及替换出来的参数常量,由于长整形表示的唯一识别码总是比SQL行为模板要短得多,所以将极大节省存储空间并提升入库性能,从而实现快速存储和节省磁盘存储的目的。以下是一种通过提取SQL模板对海量SQL压缩存储典型的实施案例假设要对一个OraclelOg数据库进行数据库审计。首先配置一个审计对象并生成SQL模板字符串,具体处理流程如图I所示,包括如下步骤步骤1-1 :开启审计系统;步骤1-2 :针对我们的审计对象进行必要的配置;主要输入数据库IP、端口、版本、操作系统类型等信息。步骤1-3 :把旁路流量镜象到数据库审计系统所谓旁路流量是指通过交换机等网络设备的“端口镜像”功能,把流经交换机指定端口的流量拷贝一份到这个交换机的某一个输出端口,流向这个输出端口的流量就是旁路流量,把这个端口输出的流量通过网线接入到审计系统的采集端口,审计系统就能捕获审计对象的访问内容。步骤1-4 :审计到一条SQL ;通过审计系统的审计功能,审计到数据库中操作内容。步骤1-5 :进行参数常量提取前的判断;会根据算法进行快速扫描,决定是否进行参数常量的提取,以提高处理性能。步骤1-6 :进行参数常量提取;提取出其中的常量,替换上带固定前辍且顺序数字编号的变量步骤1-6 :形成SQL模板字符串;到此为止针对一条SQL的处理过程完成,针对没有参数常量的SQL,就不需要进行提取,SQL本身就是SQL模板字符串。接下来,需要对生成的SQL模板字符串进行唯一识别码生成处理步骤2-1 :取出SQL模板字符串;步骤2-2 :调用HASH算法;步骤2-3 :生成长整型唯一识别码;这是一个长整型数字,就是SQL模板唯一识别码;
最后,把生成的SQL模板字符串、长整型唯一识别码、提取出来的常量保存到审计系统的数据库中。步骤3-1 :保存涉及信息I :SQL模板字符串;这是一串不带任何常量的字符串,代表一种业务行为,用于帮助审计人员了解其包含的某种具有逻辑含义的行为内容。步骤3-2 :保存涉及信息2 :长整型唯一识别码;和SQL模板字符串是一对一的关系,是节省存储空间的具体表现,把原来存在于审计行为中可能非常占空间的SQL,变换成有限长度的整形。步骤3-3 :保存涉及信息3 :提取出来的常量;这些是变化的内容,和长整型唯一识别码配合,可以准确的还原原始的SQL内容。步骤3-4 :保存到审计系统数据库关系表;把步骤3-1和步骤3-2涉及的内容,也就是SQL模板字符串和长整型唯一识别码一对一的对应关系,保存下来,用于还原、显示原始SQL使用。步骤3-5 :保存到审计系统数据库主表;把步骤3-2和步骤3-3涉及的内容,也就是长整型唯一识别码和它对应的常量,一起保存在主审计表中,用于表达变化的内容。到此为止,利用以上步骤,我们既保证了审计SQL的完整性,又利用SQL长整型唯一识别码大大节省了存储空间。该实施案例在传统的一个审计记录存储一条完整的SQL信息的方法,和本发明提取SQL行为模板后一个审计记录只存储SQL行为模板的唯一识别码和参数常量后的磁盘存储变化如下假设有一条SQL长度是IOK字节,如果一小时之内执行了 100万次,那么它的存储要求量是:10K*1000000 = 9. 5G ;如果换成本发明使用的方法处理后,会形成以下内容I. SQL模板字符串10Κ左右*1条;2. SQL模板唯一识别码4字节*1条;3.对应关系10Κ+4字节;4.参数列表:100字节*1000000条;最后存储这100万条SQL的存储要求量是10K+4(对应关系)+ (4+100) *1000000 =105M。在整个数据库审计的过程中,通过上述方法,就可以实现快速、高效、安全并且以较传统方法小得多的存储代价进行海量SQL的存储。
权利要求
1.一种通过提取SQL模板对海量SQL压缩存储的方法,其特征在于,包括步骤(1)数据库审计系统审计到一条SQL时,对SQL中包括的参数常量进行识别,取出这些信息并以带固定前辍且顺序数字编号的内容替换,形成不带具体参数只带变量的SQL行为模板的字符串;(2)将得到的SQL行为模板通过HASH算法生成长整形表示的唯一识别码,并在审计系统中维持一份SQL行为模板和唯一识别码的对应关系;(3)在实际存储该SQL审计记录时,把唯一识别码、替换出来的参数常量、SQL行为模板本身、及其他相关信息存入数据库审计系统的数据库;其中,一个SQL行为模板只保存一份,而该SQL审计记录中的SQL信息将以唯一识别码和参数常量代替。
2.根据权利要求I所述的方法,其特征在于,所述SQL中包含的参数常量是数字、字符串或日期。
3.根据权利要求I所述的方法,其特征在于,还包括基于SQL行为模板生成的唯一识别码,根据预置的规则对同一行为的SQL进行过滤,从而剔除客户不关心的或属于白名单性质的SQL。
4.根据权利要求I所述的方法,其特征在于,还包括针对替换出来的动态参数中包含的敏感信息进行专项加密处理,以防止敏感信息在被审计出来后被二次泄露。
5.根据权利要求4所述的方法,其特征在于,所述动态参数中包含的敏感信息是密码、手机号或身份证号码。
全文摘要
本发明涉及数据库信息存储技术,旨在提供一种通过提取SQL模板对海量SQL压缩存储的方法。该方法包括(1)数据库审计系统对SQL的参数常量进行识别,取出这些信息并以带固定前辍且顺序数字编号的内容替换,形成不带具体参数只带变量的SQL行为模板的字符串;(2)将得到的SQL行为模板通过HASH算法生成长整形表示的唯一识别码,并在审计系统中维持其对应关系;(3)在实际存储时,把相关信息存入数据库审计系统的数据库,该SQL审计记录中的SQL信息将以唯一识别码和参数常量代替。本发明极大地节约了冗余部分的存储开销,同时又对对审计内容的完整性不产生任何不良影响,从而实现了不损害审计记录完整性前提下快速存储和节省地磁盘存储的目的。
文档编号G06F17/30GK102609462SQ20121001160
公开日2012年7月25日 申请日期2012年1月14日 优先权日2012年1月14日
发明者杨永清, 王华东, 范渊 申请人:杭州安恒信息技术有限公司