專利名稱:Sql語(yǔ)句的檢測(cè)方法、系統(tǒng)及服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種SQL語(yǔ)句的檢測(cè)方法、系統(tǒng)及服務(wù)器。
背景技術(shù):
SQL (Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)是一種數(shù)據(jù)庫(kù)查詢和程序設(shè) 計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。SQL允許用戶在高層數(shù)據(jù)結(jié) 構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式, 所以具有不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫(kù)系統(tǒng)可以使用相同的SQL語(yǔ)言作為數(shù)據(jù)輸入與管理 的接口。以支付寶(胃w. alipay.com)為例,其為客戶提供業(yè)務(wù)時(shí),每一個(gè)業(yè)務(wù)功能都具有 可操作的數(shù)據(jù)庫(kù),而對(duì)數(shù)據(jù)庫(kù)的所有操作動(dòng)作均通過(guò)SQL實(shí)現(xiàn),因此對(duì)SQL語(yǔ)句的性能和可 靠性具有較高的要求。尤其對(duì)于在線支付系統(tǒng),由于客戶群數(shù)量龐大,對(duì)該系統(tǒng)的使用頻率 較高,因此對(duì)其中的SQL語(yǔ)句的性能和可靠性的要求更高,通常每一條SQL語(yǔ)句都需要經(jīng)過(guò) DBA (Database Administrator,數(shù)據(jù)庫(kù)管理員)的檢測(cè),當(dāng)符合要求時(shí)才可以應(yīng)用于客戶服 務(wù)。發(fā)明人在對(duì)現(xiàn)有技術(shù)的研究和實(shí)踐過(guò)程中發(fā)現(xiàn),現(xiàn)有技術(shù)中當(dāng)SQL開發(fā)人員完成 某個(gè)項(xiàng)目的SQL代碼書寫后,DBA需要手工下載該項(xiàng)目中的每一個(gè)SQL代碼,并根據(jù)個(gè)人經(jīng) 驗(yàn)對(duì)SQL代碼的問題進(jìn)行主觀判斷;或者,當(dāng)某個(gè)項(xiàng)目中的若干SQL代碼發(fā)生改變時(shí),也需 要手工下載發(fā)生改變的SQL代碼并進(jìn)行主觀判斷。由此可知,對(duì)于一個(gè)大型的在線支付系 統(tǒng),其能提供多個(gè)業(yè)務(wù)功能,每個(gè)業(yè)務(wù)功能都有各自的SQL代碼,因此在進(jìn)行SQL檢測(cè)時(shí), DBA需要多次手動(dòng)下載不同業(yè)務(wù)功能的SQL代碼,并人工判斷SQL代碼是否滿足要求,由此 增加了 DBA的工作量;并且,由于需要判斷的SQL代碼數(shù)量龐大,且DBA均通過(guò)主觀判斷SQL 代碼的問題,因此容易產(chǎn)生錯(cuò)誤,由此導(dǎo)致SQL代碼所應(yīng)用的數(shù)據(jù)庫(kù)系統(tǒng)的可靠性下降。
發(fā)明內(nèi)容
本申請(qǐng)實(shí)施例的目的是提供一種SQL語(yǔ)句的檢測(cè)方法、系統(tǒng)及服務(wù)器,以解決現(xiàn) 有技術(shù)中SQL代碼需要DBA通過(guò)手動(dòng)下載并進(jìn)行主觀檢測(cè),導(dǎo)致錯(cuò)誤率增加,由此降低數(shù)據(jù) 庫(kù)系統(tǒng)可靠性的問題。為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供了一種SQL語(yǔ)句的檢測(cè)方法,是這樣實(shí) 現(xiàn)的一種SQL語(yǔ)句的檢測(cè)方法,預(yù)先配置SQL語(yǔ)句的匹配規(guī)則,包括獲取發(fā)生變化的SQL文件;解析所述發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得所述發(fā)生變化的SQL文件中發(fā) 生變化的SQL語(yǔ)句;將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配,根據(jù)所述發(fā)生變化的SQL 語(yǔ)句與所述匹配規(guī)則是否匹配,判斷所述發(fā)生變化的SQL語(yǔ)句是否正確。為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例還提供了一種SQL語(yǔ)句的檢測(cè)系統(tǒng),是這樣
5實(shí)現(xiàn)的一種SQL語(yǔ)句的檢測(cè)系統(tǒng),包括代理服務(wù)器和檢測(cè)服務(wù)器,所述代理服務(wù)器,用于獲取發(fā)生變化的SQL文件,解析所述發(fā)生變化的SQL文件, 根據(jù)解析結(jié)果獲得所述發(fā)生變化的SQL文件中發(fā)生變化的SQL語(yǔ)句,并將所述發(fā)生變化的 SQL語(yǔ)句傳輸?shù)剿鰴z測(cè)服務(wù)器;所述檢測(cè)服務(wù)器,用于預(yù)先配置SQL語(yǔ)句的匹配規(guī)則,將所述發(fā)生變化的SQL語(yǔ)句 與所述匹配規(guī)則進(jìn)行匹配,根據(jù)所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則是否匹配,判斷 所述發(fā)生變化的SQL語(yǔ)句是否正確。為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例還提供了一種SQL語(yǔ)句的檢測(cè)服務(wù)器,是這 樣實(shí)現(xiàn)的一種SQL語(yǔ)句的檢測(cè)服務(wù)器,包括預(yù)置單元,用于預(yù)先配置SQL語(yǔ)句的匹配規(guī)則;獲取單元,用于獲取發(fā)生變化的SQL文件;解析單元,用于解析所述發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得所述發(fā)生變化 的SQL文件中發(fā)生變化的SQL語(yǔ)句;檢測(cè)單元,用于將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配,根據(jù)所述 發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則是否匹配,判斷所述發(fā)生變化的SQL語(yǔ)句是否正確??梢?,本申請(qǐng)實(shí)施例中預(yù)先配置了 SQL語(yǔ)句的匹配規(guī)則,當(dāng)SQL文件發(fā)生變化時(shí), 解析發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得發(fā)生變化的SQL文件中發(fā)生變化的SQL語(yǔ)句, 將發(fā)生變化的SQL語(yǔ)句與匹配規(guī)則進(jìn)行匹配,根據(jù)發(fā)生變化的SQL語(yǔ)句與匹配規(guī)則是否匹 配,判斷發(fā)生變化的SQL語(yǔ)句是否正確。應(yīng)用本申請(qǐng)實(shí)施例,由于預(yù)先配置了匹配規(guī)則,因 此當(dāng)SQL語(yǔ)句發(fā)生變化時(shí),無(wú)需DBA對(duì)SQL語(yǔ)句進(jìn)行下載和檢測(cè),而是通過(guò)服務(wù)器自身解 析,得到變化的SQL語(yǔ)句,并利用預(yù)先配置的規(guī)則對(duì)SQL語(yǔ)句進(jìn)行檢測(cè),因此降低了 DBA檢 測(cè)SQL代碼的工作量,并且服務(wù)器根據(jù)規(guī)則可以進(jìn)行更為客觀的匹配檢測(cè),降低了錯(cuò)誤檢 測(cè)率,由此提升了數(shù)據(jù)庫(kù)系統(tǒng)的可靠性。
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本 申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提 下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請(qǐng)SQL語(yǔ)句的檢測(cè)方法的第一實(shí)施例流程圖;圖2A為本申請(qǐng)SQL語(yǔ)句的檢測(cè)方法的第二實(shí)施例流程圖;圖2B為上述第二實(shí)施例中一種執(zhí)行計(jì)劃的結(jié)果示意圖;圖3為本申請(qǐng)SQL語(yǔ)句的檢測(cè)系統(tǒng)的實(shí)施例框圖;圖4為本申請(qǐng)SQL語(yǔ)句的檢測(cè)服務(wù)器的第一實(shí)施例框圖;圖5為本申請(qǐng)SQL語(yǔ)句的檢測(cè)服務(wù)器的第二實(shí)施例框圖。
具體實(shí)施例方式本申請(qǐng)實(shí)施例提供一種SQL語(yǔ)句的檢測(cè)方法、系統(tǒng)及服務(wù)器。為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)實(shí)施例中的技術(shù)方案,并使本申請(qǐng)實(shí) 施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本申請(qǐng)實(shí)施例中技術(shù)方 案作進(jìn)一步詳細(xì)的說(shuō)明。參見圖1,為本申請(qǐng)SQL語(yǔ)句的檢測(cè)方法的第一實(shí)施例流程圖步驟101 預(yù)先配置SQL語(yǔ)句的匹配規(guī)則。SQL是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系 數(shù)據(jù)庫(kù)系統(tǒng)語(yǔ)句。本申請(qǐng)實(shí)施例中的SQL語(yǔ)句是對(duì)各種項(xiàng)目數(shù)據(jù)庫(kù)(或稱業(yè)務(wù)數(shù)據(jù)庫(kù))進(jìn) 行操作的SQL語(yǔ)句,通常SQL語(yǔ)句在書寫時(shí)可能涉及查詢字段“SELECT”,條件字段“WHERE” 等。對(duì)SQL語(yǔ)句中不同字段檢測(cè)的難易程度也不相同,基于此,本申請(qǐng)實(shí)施例可以根據(jù)需要 預(yù)先分別配置簡(jiǎn)單匹配規(guī)則和復(fù)雜匹配規(guī)則。其中,簡(jiǎn)單匹配規(guī)則根據(jù)正則表達(dá)式進(jìn)行匹 配,其匹配過(guò)程比較簡(jiǎn)單,一般將SQL語(yǔ)句本身與規(guī)則進(jìn)行匹配即可,例如,一條簡(jiǎn)單匹配 規(guī)則為“SQL語(yǔ)句中使用SELECT*”;復(fù)雜匹配規(guī)則需要通過(guò)SQL語(yǔ)句的執(zhí)行計(jì)劃進(jìn)行匹配, 其匹配過(guò)程較為復(fù)雜,需要對(duì)SQL語(yǔ)句本身進(jìn)行解析,例如,一條復(fù)雜匹配規(guī)則為“WHERE條 件中沒有使用索引”。上述僅分別示例了一條簡(jiǎn)單匹配規(guī)則和一條復(fù)雜匹配規(guī)則,實(shí)際應(yīng)用中可以根據(jù) 檢測(cè)需要和要求配置多條簡(jiǎn)單匹配規(guī)則和復(fù)雜匹配規(guī)則,當(dāng)檢測(cè)時(shí),將SQL語(yǔ)句順序與每 一條匹配規(guī)則進(jìn)行匹配,只要有一條匹配即說(shuō)明該SQL語(yǔ)句不正確,如果全不匹配,則說(shuō)明 該SQL語(yǔ)句正確。步驟102 獲取發(fā)生變化的SQL文件。當(dāng)SQL代碼庫(kù)中的SQL文件接受操作并發(fā)生變化后,接收該SQL代碼庫(kù)發(fā)送的發(fā) 生變化的SQL文件,該發(fā)生變化的SQL文件中可以包括變化前的SQL語(yǔ)句文件及變化后的 SQL語(yǔ)句文件,并將發(fā)生變化的SQL文件存放在其所應(yīng)用項(xiàng)目的項(xiàng)目文件下。通常每個(gè)項(xiàng)目 可能對(duì)應(yīng)多個(gè)SQL文件,因此屬于某一個(gè)項(xiàng)目的SQL文件發(fā)生變化時(shí),都保存到該項(xiàng)目的項(xiàng) 目文件下,便于分類統(tǒng)計(jì)。步驟103 解析發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得發(fā)生變化的SQL文件中發(fā) 生變化的SQL語(yǔ)句。比較變化前的SQL語(yǔ)句文件和變化后的SQL語(yǔ)句文件,根據(jù)比較結(jié)果,獲取發(fā)生變 化的SQL文件中發(fā)生了變化的SQL語(yǔ)句的標(biāo)識(shí),根據(jù)該SQL語(yǔ)句的標(biāo)識(shí)可以查找變化的SQL 文件,并獲取發(fā)生變化的SQL語(yǔ)句中的SQL內(nèi)容。步驟104 將發(fā)生變化的SQL語(yǔ)句與匹配規(guī)則進(jìn)行匹配,根據(jù)發(fā)生變化的SQL語(yǔ)句 與匹配規(guī)則是否匹配,判斷發(fā)生變化的SQL語(yǔ)句是否正確。具體的,可以在檢測(cè)到發(fā)生變化的SQL語(yǔ)句與匹配規(guī)則匹配時(shí),判斷發(fā)生變化的 SQL語(yǔ)句不正確,或者,也可以在檢測(cè)到發(fā)生變化的SQL語(yǔ)句與匹配規(guī)則匹配時(shí),判斷發(fā)生 變化的SQL語(yǔ)句正確。參見圖2A,為本申請(qǐng)SQL語(yǔ)句的檢測(cè)方法的第二實(shí)施例流程圖,該實(shí)施例詳細(xì)示 出了分別通過(guò)簡(jiǎn)單匹配規(guī)則和負(fù)雜匹配規(guī)則對(duì)SQL語(yǔ)句進(jìn)行檢測(cè)的過(guò)程步驟201 服務(wù)器預(yù)先配置SQL語(yǔ)句的匹配規(guī)則,包括根據(jù)正則表達(dá)式進(jìn)行匹配的簡(jiǎn)單匹配規(guī)則和通過(guò)SQL語(yǔ)句的執(zhí)行計(jì)劃進(jìn)行匹配的復(fù)雜匹配規(guī)則。SQL是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系 數(shù)據(jù)庫(kù)系統(tǒng)語(yǔ)句。本申請(qǐng)實(shí)施例中的SQL語(yǔ)句是對(duì)各種項(xiàng)目數(shù)據(jù)庫(kù)(或稱業(yè)務(wù)數(shù)據(jù)庫(kù))進(jìn) 行操作的SQL語(yǔ)句,通常SQL語(yǔ)句在書寫時(shí)可能涉及查詢字段“SELECT”,條件字段“WHERE” 等。對(duì)SQL語(yǔ)句中不同字段檢測(cè)的難易程度也不相同,基于此,本申請(qǐng)實(shí)施例可以根據(jù)需要 預(yù)先分別配置簡(jiǎn)單匹配規(guī)則和復(fù)雜匹配規(guī)則。其中,簡(jiǎn)單匹配規(guī)則根據(jù)正則表達(dá)式進(jìn)行匹 配,其匹配過(guò)程比較簡(jiǎn)單,一般將SQL語(yǔ)句本身與規(guī)則進(jìn)行匹配即可,例如,一條簡(jiǎn)單匹配 規(guī)則為“SQL語(yǔ)句中使用SELECT*”;復(fù)雜匹配規(guī)則需要通過(guò)SQL語(yǔ)句的執(zhí)行計(jì)劃進(jìn)行匹配, 其匹配過(guò)程較為復(fù)雜,需要對(duì)SQL語(yǔ)句本身進(jìn)行解析,例如,一條復(fù)雜匹配規(guī)則為“WHERE條 件中沒有使用索引”,則如果SQL語(yǔ)句與該規(guī)則匹配,說(shuō)明SQL語(yǔ)句錯(cuò)誤;或者,也可以設(shè)置 該復(fù)雜匹配規(guī)則為“WHERE條件中使用了索引”,則如果SQL語(yǔ)句與該規(guī)則匹配,則說(shuō)明SQL 語(yǔ)句正確,對(duì)于匹配規(guī)則的設(shè)置與SQL語(yǔ)句之間匹配的關(guān)系本申請(qǐng)實(shí)施例不進(jìn)行限制。上述僅分別示例了一條簡(jiǎn)單匹配規(guī)則和一條復(fù)雜匹配規(guī)則,實(shí)際應(yīng)用中可以根據(jù) 檢測(cè)需要和要求配置多條簡(jiǎn)單匹配規(guī)則和復(fù)雜匹配規(guī)則,當(dāng)檢測(cè)時(shí),將SQL語(yǔ)句順序與每 一條匹配規(guī)則進(jìn)行匹配,只要有一條匹配即說(shuō)明該SQL語(yǔ)句不正確,如果全不匹配,則說(shuō)明 該SQL語(yǔ)句正確。后續(xù)步驟將結(jié)合匹配規(guī)則對(duì)檢測(cè)過(guò)程進(jìn)行詳細(xì)描述,本步驟不再詳述。步驟202 當(dāng)SQL代碼庫(kù)中的SQL文件接受操作并發(fā)生變化后,接收該SQL代碼庫(kù) 發(fā)送的發(fā)生變化的SQL文件。通常每個(gè)項(xiàng)目數(shù)據(jù)庫(kù)都有對(duì)其進(jìn)行操作的SQL語(yǔ)句文件,當(dāng)項(xiàng)目的功能改進(jìn)時(shí), 相應(yīng)的對(duì)其進(jìn)行操作的SQL語(yǔ)句文件也將發(fā)生變化,在SQL代碼庫(kù)中就存儲(chǔ)了這些SQL語(yǔ) 句文件,對(duì)每個(gè)項(xiàng)目數(shù)據(jù)庫(kù)建立至少一個(gè)SQL文件。例如,開始某個(gè)SQL文件中保存了變化 前的SQL語(yǔ)句文件(對(duì)應(yīng)具體的業(yè)務(wù)數(shù)據(jù)庫(kù)時(shí),也可稱為前一版本的SQL語(yǔ)句文件),當(dāng)對(duì) SQL語(yǔ)句文件中的某些SQL語(yǔ)句操作后,則在該SQL文件中再保存一個(gè)變化后的SQL語(yǔ)句文 件(對(duì)應(yīng)具體的業(yè)務(wù)數(shù)據(jù)庫(kù)時(shí),也可稱為后一版本的SQL語(yǔ)句文件)。一旦SQL代碼庫(kù)中的 SQL語(yǔ)句被操作后,SQL代碼庫(kù)就將保存了變化前的SQL語(yǔ)句文件和變化后的SQL語(yǔ)句文件 的SQL文件發(fā)送到服務(wù)器。步驟203 將發(fā)生變化的SQL文件存放在其所應(yīng)用項(xiàng)目的項(xiàng)目文件下。服務(wù)接收到包含了變化前的SQL語(yǔ)句文件和變化后的SQL語(yǔ)句文件的SQL文件 后,將該SQL文件保存在對(duì)應(yīng)的項(xiàng)目文件下,該項(xiàng)目的項(xiàng)目數(shù)據(jù)庫(kù)就是該SQL文件所要操作 的數(shù)據(jù)庫(kù)。步驟204 比較變化前的SQL語(yǔ)句文件和變化后的SQL語(yǔ)句文件,并根據(jù)比較結(jié)果 獲取變化的SQL文件中發(fā)生變化的SQL語(yǔ)句的標(biāo)識(shí)。為了示例清晰,假設(shè)一個(gè)保存的SQL文件中,變化前的SQL語(yǔ)句文件中包含如下兩 條SQL語(yǔ)句
8
權(quán)利要求
1.一種SQL語(yǔ)句的檢測(cè)方法,其特征在于,預(yù)先配置SQL語(yǔ)句的匹配規(guī)則,包括 獲取發(fā)生變化的SQL文件;解析所述發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得所述發(fā)生變化的SQL文件中發(fā)生變 化的SQL語(yǔ)句;將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配,根據(jù)所述發(fā)生變化的SQL語(yǔ)句 與所述匹配規(guī)則是否匹配,判斷所述發(fā)生變化的SQL語(yǔ)句是否正確。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取發(fā)生變化的SQL文件包括當(dāng)SQL代碼庫(kù)中的SQL文件接受操作并發(fā)生變化后,接收所述SQL代碼庫(kù)發(fā)送的所述 發(fā)生變化的SQL文件,所述發(fā)生變化的SQL文件中包括變化前的SQL語(yǔ)句文件及變化后的 SQL語(yǔ)句文件;將所述發(fā)生變化的SQL文件存放在其所應(yīng)用項(xiàng)目的項(xiàng)目文件下。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述解析所述發(fā)生變化的SQL文件,根據(jù) 解析結(jié)果獲得所述SQL文件中發(fā)生變化的SQL語(yǔ)句包括比較所述變化前的SQL語(yǔ)句文件和所述變化后的SQL語(yǔ)句文件; 根據(jù)比較結(jié)果,獲取所述變化的SQL文件中發(fā)生變化的SQL語(yǔ)句的標(biāo)識(shí); 根據(jù)所述SQL語(yǔ)句的標(biāo)識(shí)查找所述變化的SQL文件,獲取發(fā)生變化的SQL語(yǔ)句中的SQL 內(nèi)容。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述發(fā)生變化的SQL語(yǔ)句包括對(duì)變化前 的SQL語(yǔ)句進(jìn)行修改后的SQL語(yǔ)句,或者新增加的SQL語(yǔ)句,或者已刪除的SQL語(yǔ)句。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)解析結(jié)果獲得發(fā)生變化的SQL文 件中發(fā)生變化的SQL語(yǔ)句后,還包括保存所述發(fā)生變化的SQL語(yǔ)句;當(dāng)?shù)竭_(dá)預(yù)設(shè)的時(shí)間間隔時(shí),執(zhí)行所述將發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配 的操作。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述匹配規(guī)則包括 根據(jù)正則表達(dá)式進(jìn)行匹配的簡(jiǎn)單匹配規(guī)則,和/或通過(guò)所述SQL語(yǔ)句的執(zhí)行計(jì)劃進(jìn)行匹配的復(fù)雜匹配規(guī)則。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,當(dāng)所述匹配規(guī)則為簡(jiǎn)單匹配規(guī)則時(shí),所述 將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配包括將所述簡(jiǎn)單匹配規(guī)則轉(zhuǎn)換為正則表達(dá)式; 將所述正則表達(dá)式與所述發(fā)生變化的SQL語(yǔ)句進(jìn)行匹配。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,當(dāng)所述匹配規(guī)則為復(fù)雜匹配規(guī)則時(shí),所述 將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配包括獲取發(fā)生變化的SQL語(yǔ)句所應(yīng)用項(xiàng)目的項(xiàng)目數(shù)據(jù)庫(kù)的連接信息,并根據(jù)所述連接信息 連接到所述項(xiàng)目數(shù)據(jù)庫(kù);在所述項(xiàng)目數(shù)據(jù)庫(kù)中執(zhí)行所述發(fā)生變化的SQL語(yǔ)句,如果執(zhí)行結(jié)果正確,則接收所述 項(xiàng)目數(shù)據(jù)庫(kù)根據(jù)所述執(zhí)行結(jié)果輸出的執(zhí)行計(jì)劃; 將所述執(zhí)行計(jì)劃與所述復(fù)雜匹配規(guī)則進(jìn)行匹配。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷發(fā)生變化的SQL語(yǔ)句是否正確具體為如果檢測(cè)到所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則匹配,則所述發(fā)生變化的SQL語(yǔ) 句不正確;或者,如果檢測(cè)到所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則匹配,則所述發(fā)生變化的SQL語(yǔ) 句正確。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括將對(duì)所述發(fā)生變化的SQL語(yǔ)句的檢測(cè)結(jié)果存儲(chǔ)到預(yù)設(shè)的檢測(cè)信息表中; 根據(jù)輸入的統(tǒng)計(jì)條件,通過(guò)所述檢測(cè)信息表輸出相應(yīng)的檢測(cè)報(bào)表。
11.一種SQL語(yǔ)句的檢測(cè)系統(tǒng),其特征在于,包括代理服務(wù)器和檢測(cè)服務(wù)器,所述代理服務(wù)器,用于獲取發(fā)生變化的SQL文件,解析所述發(fā)生變化的SQL文件,根據(jù) 解析結(jié)果獲得所述發(fā)生變化的SQL文件中發(fā)生變化的SQL語(yǔ)句,并將所述發(fā)生變化的SQL 語(yǔ)句傳輸?shù)剿鰴z測(cè)服務(wù)器;所述檢測(cè)服務(wù)器,用于預(yù)先配置SQL語(yǔ)句的匹配規(guī)則,將所述發(fā)生變化的SQL語(yǔ)句與所 述匹配規(guī)則進(jìn)行匹配,根據(jù)所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則是否匹配,判斷所述 發(fā)生變化的SQL語(yǔ)句是否正確。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述檢測(cè)服務(wù)器還用于,當(dāng)?shù)竭_(dá)預(yù)設(shè)的 時(shí)間間隔時(shí),執(zhí)行所述將發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配的操作。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述檢測(cè)服務(wù)器還用于,將對(duì)所述發(fā)生 變化的SQL語(yǔ)句的檢測(cè)結(jié)果存儲(chǔ)到預(yù)設(shè)的檢測(cè)信息表中,并根據(jù)輸入的統(tǒng)計(jì)條件,通過(guò)所 述檢測(cè)信息表輸出相應(yīng)的檢測(cè)報(bào)表。
14.一種SQL語(yǔ)句的檢測(cè)服務(wù)器,其特征在于,包括 預(yù)置單元,用于預(yù)先配置SQL語(yǔ)句的匹配規(guī)則; 獲取單元,用于獲取發(fā)生變化的SQL文件;解析單元,用于解析所述發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得所述發(fā)生變化的SQL 文件中發(fā)生變化的SQL語(yǔ)句;檢測(cè)單元,用于將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配,根據(jù)所述發(fā)生 變化的SQL語(yǔ)句與所述匹配規(guī)則是否匹配,判斷所述發(fā)生變化的SQL語(yǔ)句是否正確。
15.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,所述獲取單元包括接收文件單元,用于當(dāng)SQL代碼庫(kù)中的SQL文件接受操作并發(fā)生變化后,接收所述SQL 代碼庫(kù)發(fā)送的所述發(fā)生變化的SQL文件,所述發(fā)生變化的SQL文件中包括變化前的SQL語(yǔ) 句文件及變化后的SQL語(yǔ)句文件;保存文件單元,用于將所述發(fā)生變化的SQL文件存放在其所應(yīng)用項(xiàng)目的項(xiàng)目文件下。
16.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,所述解析單元包括比較文件單元,用于比較所述變化前的SQL語(yǔ)句文件和所述變化后的SQL語(yǔ)句文件; 獲取結(jié)果單元,用于根據(jù)比較結(jié)果,獲取所述變化的SQL文件中發(fā)生變化的SQL語(yǔ)句的 標(biāo)識(shí);查找文件單元,用于根據(jù)所述SQL語(yǔ)句的標(biāo)識(shí)查找所述變化的SQL文件,獲取發(fā)生變化 的SQL語(yǔ)句中的SQL內(nèi)容。
17.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,還包括保存單元,用于保存所述解析單元解析出的發(fā)生變化的SQL語(yǔ)句;觸發(fā)單元,用于當(dāng)?shù)竭_(dá)預(yù)設(shè)的時(shí)間間隔時(shí),觸發(fā)所述檢測(cè)單元執(zhí)行所述將發(fā)生變化的 SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配的操作。
18.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,所述檢測(cè)單元包括轉(zhuǎn)換規(guī)則單元,用于當(dāng)預(yù)置單元中保存了根據(jù)正則表達(dá)式進(jìn)行匹配的簡(jiǎn)單匹配規(guī)則 時(shí),將所述簡(jiǎn)單匹配規(guī)則轉(zhuǎn)換為正則表達(dá)式;簡(jiǎn)單匹配單元,用于將所述正則表達(dá)式與所述發(fā)生變化的SQL語(yǔ)句進(jìn)行匹配。
19.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,所述檢測(cè)單元包括連接數(shù)據(jù)庫(kù)單元,用于當(dāng)預(yù)置單元中保存了通過(guò)所述SQL語(yǔ)句的執(zhí)行計(jì)劃進(jìn)行匹配的 復(fù)雜匹配規(guī)則時(shí),獲取發(fā)生變化的SQL語(yǔ)句所應(yīng)用項(xiàng)目的項(xiàng)目數(shù)據(jù)庫(kù)的連接信息,并根據(jù) 所述連接信息連接到所述項(xiàng)目數(shù)據(jù)庫(kù);獲取執(zhí)行計(jì)劃單元,用于在所述項(xiàng)目數(shù)據(jù)庫(kù)中執(zhí)行所述發(fā)生變化的SQL語(yǔ)句,如果執(zhí) 行結(jié)果正確,則接收所述項(xiàng)目數(shù)據(jù)庫(kù)根據(jù)所述執(zhí)行結(jié)果輸出的執(zhí)行計(jì)劃;復(fù)雜匹配單元,用于將所述執(zhí)行計(jì)劃與所述復(fù)雜匹配規(guī)則進(jìn)行匹配。
20.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,所述檢測(cè)單元具體用于,將所述發(fā)生 變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配,如果檢測(cè)到所述發(fā)生變化的SQL語(yǔ)句與所述匹 配規(guī)則匹配,則所述發(fā)生變化的SQL語(yǔ)句不正確;或者,如果檢測(cè)到所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則匹配,則所述發(fā)生變化的SQL語(yǔ) 句正確。
21.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,還包括存儲(chǔ)單元,用于將所述檢測(cè)單元對(duì)所述發(fā)生變化的SQL語(yǔ)句的檢測(cè)結(jié)果存儲(chǔ)到預(yù)設(shè)的 檢測(cè)信息表中;報(bào)表單元,用于根據(jù)輸入的統(tǒng)計(jì)條件,通過(guò)所述檢測(cè)信息表輸出相應(yīng)的檢測(cè)報(bào)表。
全文摘要
本申請(qǐng)實(shí)施例公開了一種SQL語(yǔ)句的檢測(cè)方法、系統(tǒng)及服務(wù)器,所述方法預(yù)先配置SQL語(yǔ)句的匹配規(guī)則,該方法包括獲取發(fā)生變化的SQL文件;解析所述發(fā)生變化的SQL文件,根據(jù)解析結(jié)果獲得發(fā)生變化的SQL文件中發(fā)生變化的SQL語(yǔ)句;將所述發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則進(jìn)行匹配,根據(jù)發(fā)生變化的SQL語(yǔ)句與所述匹配規(guī)則是否匹配,判斷所述發(fā)生變化的SQL語(yǔ)句是否正確。本申請(qǐng)實(shí)施例中當(dāng)SQL語(yǔ)句發(fā)生變化時(shí),無(wú)需DBA對(duì)SQL語(yǔ)句進(jìn)行下載和檢測(cè),而是通過(guò)服務(wù)器自身解析出變化的SQL語(yǔ)句,并利用預(yù)先配置的規(guī)則對(duì)SQL語(yǔ)句進(jìn)行檢測(cè),因此降低了DBA的工作量,并且降低了錯(cuò)誤檢測(cè)率,由此提升了數(shù)據(jù)庫(kù)系統(tǒng)的可靠性。
文檔編號(hào)G06F17/30GK102073640SQ20091022188
公開日2011年5月25日 申請(qǐng)日期2009年11月19日 優(yōu)先權(quán)日2009年11月19日
發(fā)明者鐘離 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司