專利名稱:一種數據庫變更方法以及裝置的制作方法
技術領域:
本申請涉及數據庫技術領域,尤其涉及一種數據庫變更方法以及裝置。
背景技術:
數據庫(Database,DB)是按照數據結構來組織、存儲和管理數據的倉庫。隨著信息技術和市場的發(fā)展,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。數據庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型數據庫系統(tǒng),都在各個方面得到了廣泛應用。數據庫提供了對數據的存儲功能,并且能夠支持用戶對所保存的數據的訪問功能。實際應用中,用戶往往對數據庫中保存的數據存在變更的需求,例如,新增數據、刪除數據、修改數據等,因此,數據庫也能夠支持用戶對數據庫進行變更的需求。 如圖I所示,用戶對數據庫進行變更,主要通過如下步驟實現步驟101、數據庫開發(fā)人員根據數據庫變更需求,編寫結構化查詢語言(Structured Query Language, SQL)語句。該步驟中,數據庫變更需求一般包括數據庫的變更對象信息以及對該數據庫變更對象執(zhí)行的操作類型信息。步驟102、數據庫開發(fā)人員將編寫的SQL語句發(fā)送給數據庫管理員(Databaseadministrator, DBA)。步驟103、DBA對接收的SQL語句進行審核,即判斷該SQL語句的編寫是否準確。步驟104、DBA對接收的SQL語句審核通過后,根據該SQL語句確定數據庫變更需求。步驟105、DBA登錄數據庫,根據確定出的數據庫變更需求,對數據庫執(zhí)行與該變更需求相應的操作。步驟106、DBA在完成對數據庫的操作后,將數據庫開發(fā)人員編寫的SQL語句應用到該數據庫的開發(fā)庫。該步驟中,將SQL語句應用到數據庫的開發(fā)庫,即將該SQL語句同步到該開發(fā)庫,并在該開發(fā)庫中執(zhí)行。至此,對數據庫進行變更的流程結束。根據上述流程,DBA能夠根據數據庫開發(fā)人員編寫的變更數據庫的SQL語句確定要執(zhí)行的變更操作,并且通過登錄數據庫完成對該數據庫的相應變更。但在實際應用中,上述過程可能存在如下問題一方面,數據庫開發(fā)人員需要根據數據庫變更需求,編寫相應的SQL語句,該過程的執(zhí)行取決于數據庫開發(fā)人員對SQL語言的掌握程度,如果數據庫開發(fā)人員對SQL語言不熟練,該編寫過程可能需要耗費大量的時間。而且SQL語句對于語句中每個命令的編寫都有嚴格的要求,例如,編寫時采用的全角或半角選擇錯誤都可能導致語句無法被執(zhí)行,因此,該過程很難保證SQL語句的正確性,需要DBA嚴格審核,并且在審核出錯誤時需要反復修改。該過程明顯地降低了數據庫變更的效率。另一方面,DBA需要對數據庫開發(fā)人員編寫的SQL語句進行審核以及識別,該過程的執(zhí)行取決于DBA對SQL語言的掌握程度,如果DBA對SQL語言不熟練,審核過程以及識別過程都需要耗費大量的時間。而且SQL語句對于語句中每個命令的編寫都有嚴格的要求,為了滿足該要求,DBA通常需要耗費較多時間對數據庫開發(fā)人員編寫的SQL進行審核,以確保SQL語句的準確性??梢?,該過程也降低了數據庫的變更效率。綜上所述,采用現有技術對數 據庫變更的效率低。
發(fā)明內容
有鑒于此,本申請實施例提供一種數據庫變更方法以及裝置,以提高數據庫變更的效率。本申請實施例通過如下技術方案實現根據本申請實施例的一個方面,提供了一種數據庫變更方法,包括數據庫保存用戶在登錄后選擇的數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息;在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作后,將與本次變更對應的結構化查詢語言SQL語句應用到所述數據庫的開發(fā)庫;其中,與本次變更對應的SQL語句根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成。根據本申請實施例的另一個方面,還提供了一種數據庫變更裝置,該裝置位于數據庫中,包括信息存儲單元,用于保存用戶在登錄數據庫后選擇的數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息;SQL語句生成單元,用于根據所述信息存儲單元保存的所述數據庫變更對象的信息以及所述操作類型的信息,生成與本次變更對應的結構化查詢語言SQL語句;SQL語句應用單元,用于在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作后,將所述SQL語句生成單元生成的與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫。通過本申請實施例提供的上述至少一個技術方案,數據庫首先保存用戶在登錄后選擇的數據庫變更對象的信息以及對數據庫變更對象執(zhí)行的操作類型的信息,在用戶對選擇的數據庫變更對象執(zhí)行與選擇的操作類型相應的操作后,將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫;其中,與本次變更對應的SQL語句根據保存的數據庫變更對象的信息以及操作類型的信息生成。根據該技術方案,用戶對數據庫執(zhí)行的變更操作可以直接登錄該數據庫實現,并且由數據庫自動根據用戶的變更需求(即數據庫變更對象以及操作類型的信息)生成相應的SQL語句,該過程與現有技術相比,無需由數據庫開發(fā)人員預先根據數據庫的變更需求編寫SQL語句,也無需DBA審核以及識別SQL語句,從而通過在數據庫變更過程實施該技術方案,能夠提高數據庫變更的效率。本申請的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本申請而了解。本申請的目的和其他優(yōu)點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
附圖用來提供對本申請的進一步理解,并且構成說明書的一部分,與本申請實施例一起用于解釋本申請,并不構成對本申請的限制。在附圖中圖I為現有技術提供的用戶對數據庫進行變更的流程圖;圖2為本申請方法實施例提供的數據庫變更的一種實現流程圖;圖3為本申請方法實施例提供的數據庫變更的又一種實現流程圖;圖4為本申請方法實施例提供的數據庫變更的測試流程圖;圖5為本申請方法實施例提供的數據庫的變更、測試以及發(fā)布的優(yōu)選實現流程 圖;圖6為本申請裝置實施例提供的數據庫變更裝置的一個示意圖;圖7為本申請裝置實施例提供的數據庫變更裝置的又一個示意圖;圖8為本申請裝置實施例提供的數據庫變更裝置的又一個示意圖。
具體實施例方式為了給出提高數據庫變更的效率的實現方案,本申請實施例提供了一種數據庫變更方法以及裝置,該技術方案可以應用于數據庫變更的過程,既可以實現為一種方法,也可以實現為一種產品。以下結合說明書附圖對本申請的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本申請,并不用于限定本申請。并且在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。方法實施例本申請方法實施例提供的一種數據庫變更方法,該方法可以應用于數據庫系統(tǒng)中。通過該方法可以提高數據庫變更的效率,具體地,該數據庫變更方法可以有兩種具體實施方式
。具體實施實施一該具體實施方式
一提供了數據庫變更的一種實現方法,如圖2所示,該方法主要包括如下步驟201至步驟205 步驟201、數據庫系統(tǒng)根據用戶登錄數據庫的請求,在對該用戶身份驗證通過后允許該用戶登錄數據庫。該步驟201中,用戶可以按照常規(guī)的提交用戶名以及密碼的登錄方式登錄該數據庫,也可以在此基礎上提交動態(tài)口令的方式登錄該數據庫,具體方式為現有技術,此處不再詳細描述。此處,用戶可以為數據庫開發(fā)人員、使用數據庫的普通用戶或DBA等。并且,若用戶非DBA,則需要預先請求數據庫開放相應的對數據庫的操作權限。該步驟201中,若數據庫對該用戶身份驗證不通過,則不允許該用戶登錄數據庫。應當理解,該步驟201中,數據庫執(zhí)行對用戶身份驗證的過程的目的在于提高數據庫的安全性,在具體實現時,也可以允許用戶直接登錄數據庫,而無需執(zhí)行此步驟。步驟202、數據庫獲取用戶在登錄數據庫后提交的數據庫變更對象信息以及對該數據庫變更對象的操作類型信息。
該步驟202中,數據庫變更對象信息可以為該待變更的數據庫對象的標識信息,其中,數據庫對象的標識可以有多種確定方式,例如,數據庫對象的標識可以根據該數據庫對象的歸屬信息確定,也可以根據創(chuàng)建該數據庫對象所對應的用戶信息確定,或者兩者結合確定數據庫對象的標識。實際應用中,數據庫對象的標識可以靈活確定,此處不再一一列舉;對該數據庫變更對象的操作類型信息可以為修改、刪除、新建或這幾種方式的組合。具體地,該步驟202中,數據庫系統(tǒng)會對用戶登錄數據庫后的用戶行為進行監(jiān)測,確定用戶在數據庫提供的菜單界面上選擇的數據庫變更對象以及相應的操作類型信息。步驟203、數據庫保存用戶在登錄后提交的數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息。該步驟203中,可以將數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息保存為系統(tǒng)日志;或者,可以在系統(tǒng)中建立包括變更對象以及操作類型兩個字段的臨時列表,將上述信息保存在該列表中。通過保存數據庫變更對象的信息及相應的操作類型信息,可以確定用戶對數據庫執(zhí)行的操作。具體地,在保存用戶選擇的數據庫變更對 象的信息及相應的操作類型信息時,可以通過該用戶的用戶標識保存的該信息,以確定是哪個用戶對數據庫執(zhí)行的操作。步驟204、數據庫在該用戶對數據庫變更對象執(zhí)行與操作類型信息相應的操作后,根據保存的數據庫變更對象的信息以及操作類型信息生成與本次變更對應的SQL語句。該步驟204中,對于具備SQL語句解析功能的數據庫,可以直接使用該數據庫的現有功能,根據保存的相關信息生成SQL語句;對于不具備SQL語句解析功能的數據庫,可以為該數據庫添加相應的SQL語句解析功能,通過該功能,能夠將數據庫變更需求(即保存的數據庫對象信息以及操作類型信息)生成對應的SQL語句。步驟205、數據庫將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫。該步驟205中,數據庫將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫,主要包括兩個過程即將該SQL語句同步到數據庫的開發(fā)庫的過程,以及在數據庫的開發(fā)庫執(zhí)行該SQL語句的過程。至此,數據庫的變更流程結束。為了更好地理解本申請實施例提供的技術方案,以下針對上述步驟203給出一個具體示例,即數據庫保存用戶在登錄后提交的數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息,可以通過如下具體手段實現數據庫變更對象的類型可以為表或表中的字段,針對該兩種類型的數據庫對象的存儲,可以在數據庫系統(tǒng)后臺、創(chuàng)建兩張臨時表,一張臨時表用于標識表的變更情況(稱為變更表),一張臨時表用于標識字段的變更情況(稱為變更字段表)。這兩張臨時表可以進一步設置狀態(tài)標識,該狀態(tài)標識用于表示用戶對該數據庫變更對象執(zhí)行相應的操作的進度,通過該狀態(tài)標識對相應變更表或變更字段表的狀態(tài)進行標識,例如,狀態(tài)標識為“New”,表示當前表(變更表或變更字段表)正在變更中,即用戶正在執(zhí)行操作;狀態(tài)標識為“Arch”表示當前表(變更表或變更字段表)已經操作完畢并且歸檔;狀態(tài)標識為“Reject”表示當前表(變更表或變更字段表)的操作已經被拒絕。數據庫保存用戶在登錄后提交的數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息,首先要根據確定的數據庫操作對象的類型,確定為該類型的數據庫對象創(chuàng)建的臨時表,并根據確定的數據庫操作對象以及對該數據庫變更對象的操作類型信息,填充相應的臨時表并保存。一個具體的應用中,變更表可以包括如下要素站點名、方案名、項目名、表名;該四個要素均用于描述發(fā)生變更的數據庫對象,通過該四個要素可以確定唯一的數據庫對象(表)。如果一個數據庫對象在2個項目里同時發(fā)生了變更,則在該變更表里記錄2條分別對應不同項目的記錄,該記錄可以包括站點名、方案名、項目名、表名、表空間、項目狀態(tài)、變更ID以及備注信息等。一個具體的應用中,變更字段表可以包括如下要素站點名、方案名、項目名、 表名、字段名;該五個要素均用于描述發(fā)生變更的數據庫對象,通過該五個要素可以確定唯一的數據庫對象(表中的字段)。如果一個字段發(fā)生了變化,則變更表和變更字段表會同時會保存記錄。如果一個字段被變更多次,則以流水帳的方式進行記錄。以上對數據庫如何保存數據庫變更對象信息的過程進行了描述,在通過上述方式保存用戶選擇的數據庫變更對象信息的基礎上,可以進一步保存變更表或變更字段所標識的數據庫變更對象所對應的操作類型信息,該操作類型信息可以通過擴展字段表示。例如在字段的變更過程中,可能存在多個操作動作,如插入、修改、刪除、重命名等,可以為每種操作類型分配標識,如標識為“New”,標識新加的表字段;標識為“Edit”,表示修改字段;標識為“Delete”,表示刪除字段;標識為“Rename”標識重命名字段。在添加上述標識的過程中,同時會把該標識與狀態(tài)標識結合,例如將“New”標識為new_del、將edit的標識為edit_del、“Rename”:修改字段名。在保存的數據庫對象信息及其操作類型信息歸檔時,取最后一次狀態(tài),例如,用于表示最后一次狀態(tài)的表包括站點名、方案名、項目名、表名、字段名、備注、項目狀態(tài)、變更ID、操作類型、字段類型、字段長度、默認值、是否為空、是否是主鍵等。變更表的情況與上述變更字段表的情況基本類似,即存在插入、修改、刪除、重命名等操作類型,可以采用上述方式標記該數據庫對象的操作類型信息,此處不再一一列舉。
具體實施方式
二該具體實施方式
二提供了數據庫變更的又一種實現方法,如圖3所示,該方法主要包括如下步驟步驟301、數據庫系統(tǒng)根據用戶登錄數據庫的請求,在對該用戶身份驗證通過后允許該用戶登錄數據庫。步驟302、數據庫獲取用戶在登錄數據庫后提交的數據庫變更對象信息以及操作類型信息。步驟303、數據庫保存用戶在登錄后提交的數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息。上述步驟301至步驟303的具體執(zhí)行過程與圖2對應流程的步驟201至步驟203的相應執(zhí)行過程一致,此處不再對詳細執(zhí)行過程進行描述。步驟304、數據庫根據保存的數據庫變更對象的信息以及操作類型信息生成與本次變更對應的SQL語句。
步驟305、數據庫在該用戶對數據庫變更對象執(zhí)行與操作類型信息相應的操作后,將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫。上述步驟301至步驟305的具體執(zhí)行過程與上述步驟201至驟205的具體執(zhí)行過程一致,此處不再贅述其具體執(zhí)行過程。根據上述實現數據庫變更的具體實施方式
一以及具體實施方式
二,生成與本次變更對應的SQL語句的過程可以在該用戶對該數據庫變更對象執(zhí)行與該操作類型信息相應的操作之前執(zhí)行,也可以在該用戶對該數據庫變更對象執(zhí)行與該操作類型信息相應的操作之后執(zhí)行。在圖2對應流程的步驟205以及圖3對應流程的步驟305中,數據庫可以在滿足相應的條件后(例如,用戶對數據庫變更對象執(zhí)行與操作類型信息相應的操作后)主動執(zhí)行將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫的過程,也可以由用戶觸發(fā)執(zhí)行該過程。具體地,用戶觸發(fā)執(zhí)行該過程,即在數據庫將與本次變更對應的SQL語句應用到該數據庫的開發(fā)庫之前,還進一步包括如下步驟 接收用于指示將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫的指示信息。通常情況下,該用于指示將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫的指示信息由執(zhí)行此次數據庫變更的用戶發(fā)送。通過本申請實施例提供的上述至少一個具體實施方式
,數據庫首先保存用戶在登錄后提交的數據庫變更對象的信息以及對數據庫變更對象執(zhí)行的操作類型信息,在用戶對數據庫變更對象執(zhí)行與操作類型信息相應的操作后,將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫。根據該技術方案,用戶對數據庫執(zhí)行的變更操作可以直接登錄該數據庫實現,并且由數據庫自動根據用戶的變更需求(即數據庫變更對象以及操作類型信息)生成相應的SQL語句,該過程與現有技術相比,無需由數據庫開發(fā)人員預先根據數據庫的變更需求編寫SQL語句,也無需DBA審核以及識別SQL語句,從而能夠提高數據庫變更的效率。通過圖2、圖3以及對應的流程對本申請實施例提供的數據庫的變更方法所涉及的主要流程進行了說明。實際應用中,在對數據庫進行變更后,為了保證變更對數據庫的正常運行不造成影響。需要進一步對此次變更進行測試。具體地,在通過圖2對應的流程或圖3對應的流程完成對數據庫的變更后,即在數據庫將與本次變更對應的SQL語句應用到該數據庫的開發(fā)庫后,如圖4所示,還進一步執(zhí)行如下測試流程步驟401、將與本次變更對應的SQL語句同步到該數據庫的測試庫。該步驟401中,數據庫可以將每次變更對應的SQL語句分多次同步到數據庫,也可以將多次變更對應的SQL語句一次同步到數據庫。步驟402、測試庫對接收的SQL語句進行測試。該步驟402中,測試庫對接收的SQL語句進行測試,即在測試環(huán)境中執(zhí)行該SQL語句,具體測試過程為現有技術,此處不詳細描述。至此,對數據庫變更對應的SQL語句測試的流程結束。根據本申請實施例提供的上述數據庫變更以及測試的實施例,由于數據庫能夠保存用戶在登錄后提交的數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息,從而在測試時,可以根據保存的上述信息,對根據保存的信息生成的SQL語句進行相應的測試。而現有技術由于數據庫未保存上述信息,是由數據庫測試人員根據DBA的指示完成相應的測試,在數據庫變更比較頻繁的情況下,可能存在DBA忘記需要測試哪些SQL語句的問題,而本申請通過上述方式克服了該問題,能夠保證對每一條SQL語句進行測試。在圖4對應流程的步驟401中,數據庫可以在滿足相應的條件后(例如,數據庫將與本次變更對應的SQL語句應用到該數據庫的開發(fā)庫后)主動執(zhí)行將與本次變更對應的SQL語句同步到該數據庫的測試庫的過程,也可以由用戶觸發(fā)執(zhí)行該過程。具體地,用戶觸發(fā)執(zhí)行該過程,即在數據庫將與本次變更對應的SQL語句同步到該數據庫的測試庫之前,還進一步包括如下步驟接收用于指示將與本次變更 對應的SQL語句同步到該數據庫的測試庫進行測試的指示信息。通常情況下,該用于指示將與本次變更對應的SQL語句同步到該數據庫的測試庫進行測試的指示信息由執(zhí)行此次數據庫變更的用戶發(fā)送,也可以由專門的測試人員發(fā)送,例如,數據庫測試人員或DBA等。通過圖4以及對應的流程,在對數據庫變更對應的SQL語句完成測試后,如果測試通過,還需要進一步執(zhí)行數據庫變更的發(fā)布流程,即在確定測試結果為通過時,還執(zhí)行如下步驟將與本次變更對應的SQL語句發(fā)布到該數據庫變更對象所在的應用環(huán)境。實際應用中,數據庫可以將每次變更對應的SQL語句分多次發(fā)布到該數據庫變更對象所在的應用環(huán)境,也可以將多次變更對應的SQL語句一次發(fā)布到該數據庫變更對象所在的應用環(huán)境。根據本申請實施例提供的上述數據庫變更、測試以及發(fā)布的實施例,由于數據庫能夠保存用戶在登錄后提交的數據庫變更對象的信息以及對該數據庫變更對象執(zhí)行的操作類型信息,從而在數據庫變更發(fā)布時,可以根據保存的上述信息,對根據保存的信息生成的SQL語句進行發(fā)布。而現有技術由于數據庫未保存上述信息,是DBA通過操作數據庫完成上述的發(fā)布過程,由于DBA需要處理大量的數據庫變更,很難記錄每個數據庫變更內容,可能存在真正發(fā)布數據庫變更的時候,出現遺漏的問題,而本申請通過上述方式克服了該問題,能夠保證對每一條通過測試的SQL語句進行發(fā)布。為了更好地理解本申請實施例所提供的上述技術方案,以下對本申請實施例在具體應用時所涉及的數據庫變更、測試以及發(fā)布階段進行詳細說明。其中,數據庫變更的操作主要由數據庫開發(fā)人員發(fā)起、數據庫變更測試的操作主要由數據庫測試人員發(fā)起、數據庫變更發(fā)布的流程主要由DBA發(fā)起。應當理解,此處僅為具體實現時的一種舉例,實際應用中,該三個過程可以由同一用戶發(fā)起,此處不再詳細舉例。如圖5所示,該數據庫的變更、測試以及發(fā)布的優(yōu)選實現流程,主要包括如下階段以及步驟數據庫變更的開發(fā)階段,主要包括如下步驟501至步驟504 步驟501、數據庫開發(fā)人員登錄數據庫后,選擇Site(站點)、Schema(結構名)。其中,Site表示該數據庫對象的歸屬信息,例如,歸屬于哪個站點,該站點用于標識對該數據庫具有所屬權的對象,例如,某部門或某單位等;Schema表示該數據庫對應在注冊時使用的用戶信息步驟502、開發(fā)人員選擇項目,如果數據庫中存在要變更的項目,則直接選擇,如果數據庫中沒有要變更的項目,則新建該項目。其中,項目為可選項,用于表示要變更的數據類型。上述步驟501以及步驟502中,通過選擇Site(站點)、Schema (結構名)以及項目信息,可以唯一地確定數據庫變更對象,即確定要對哪個數據庫中的哪些數據類型執(zhí)行變更。步驟503、完成上述步驟后,開發(fā)人員可以進一步選擇對所選擇的數據庫變更對象的操作類型,并對該數據庫變更對象執(zhí)行相應的操作。該步驟503中,選擇的操作類型可以為新建表、修改表等。 在上述步驟501、步驟502以及步驟503的執(zhí)行過程中,數據庫需要記錄用戶選擇的用于表示數據庫變更對象的Site、Schema以及項目信息,還需要記錄操作類型信息。在執(zhí)行完成該步驟503中,可以選擇性地向DBA發(fā)送郵件通知,以告知DBA本次對數據庫的變更內容,例如,數據庫變更對象信息以及相應的操作類型信息。步驟504、獲取數據庫保存的信息,應用到數據庫的開發(fā)庫。該步驟504中,可以在數據庫開發(fā)相應的菜單選項,例如,開發(fā)“自助執(zhí)行到開發(fā)庫”的選項,通過點擊該選項,數據庫能夠完成將本次變更對應的SQL語句應用到數據庫的開發(fā)庫的過程。即用戶在執(zhí)行完成選擇的操作類型(如修改表、新建表)后,調用保存的數據庫變更對象信息以及操作類型信息,通過點擊“自助執(zhí)行到開發(fā)庫”這個選項,完成將本次變更對應的SQL語句應用到開發(fā)庫的過程。該步驟的主要目的是讓開發(fā)人員提交的數據庫變更內容應用到開發(fā)庫上,在點擊“自助執(zhí)行到開發(fā)庫”后,發(fā)起應用請求,系統(tǒng)會根據用戶的變更內容自動解析得到相應的SQL語句,并將該SQL語句執(zhí)行到相應的開發(fā)庫。完成上述步驟504后,進入數據庫變更的測試階段。數據庫變更的測試階段,主要包括如下步驟505 步驟505、測試人員登錄數據庫,調用數據庫保存的用于表示數據庫變更對象的site,schema以及項目信息,以及操作類型信息,將調用的信息發(fā)送到該數據庫的測試庫進行測試。該步驟505中,可以在數據庫開發(fā)相應的菜單選項,例如,開發(fā)“自助執(zhí)行到測試庫”的選項,通過點擊該選項,數據庫能夠完成將本次變更對應的SQL語句同步到數據庫的測試庫進行測試的過程。即用戶在執(zhí)行完成選擇的操作類型(如修改表、新建表)后,調用保存的數據庫變更對象信息以及操作類型信息,通過點擊“自助執(zhí)行到測試庫”這個選項,完成本次變更對應的SQL語句同步到測試庫進行測試的過程。該步驟的主要目的是讓測試人員提交的數據庫變更內容在測試庫進行測試,在點擊“自助執(zhí)行到測試庫”后,發(fā)起測試請求,系統(tǒng)會根據用戶的變更內容自動解析得到相應的SQL語句,并將該SQL語句執(zhí)行到相應的測試庫。若上述步驟505測試通過,進入數據庫變更發(fā)布階段。數據庫變更的發(fā)布階段,主要包括如下步驟506 步驟506、DBA登錄數據庫,調用數據庫保存的用于表示數據庫變更對象的site、schema以及項目信息,以及操作類型信息,將根據調用的信息生成的SQL語句執(zhí)行到應用環(huán)境。該步驟506中,將根據調用的信息生成的SQL語句執(zhí)行到應用環(huán)境,即在數據庫變更對象所在的應用環(huán)境執(zhí)行根據調用的信息生成的SQL語句。該步驟506中,可以在數據庫開發(fā)相應的菜單選項,例如,開發(fā)“生產項目SQL”的選項,通過點擊該選項,能夠完成在數據庫變更對象所在的應用環(huán)境執(zhí)行根據調用的信息生成的SQL語句的過程。若成功執(zhí)行到應用環(huán)境,則歸檔此變更,通過歸檔此變更表示本次數據庫變更的發(fā)布已經結束。在系統(tǒng)后臺,自動把該本次變更內容標識為歷史變更內容,且一切變更中的數據從臨時表遷移到正式表中去。如果由于 種種原因未成功執(zhí)行到應用環(huán)境,則可以選擇回滾此變更,回滾變更是指本次變更的所有操作全部作廢。在系統(tǒng)里把該數據庫變更內容全部刪除。以上流程中,數據庫開發(fā)人員、測試人員以及DBA可以對應一個用戶,也可以對應多個用戶。圖5對應的流程的一個具體應用實例如下假設存在DBA-甲、開發(fā)人員-乙,測試人員-丙三個角色,最近起了一個名為“WT0”的項目,該項目經過調研分析,需要對杭州數據庫的Scott帳號進行新建表操作。則相應的數據庫變更、測試以及發(fā)布流程如下乙登錄數據庫,針對Site, Schema,項目做了如下選擇杭州數據庫,Scott,“WTO”。乙在選擇確定所要變更的Site、SCChema以及項目后,進入“新建表”操作,乙按照表單格式填寫了相應信息,確認無誤后保存。乙在確認所有的變更都已經操作完成后,調用記錄的變更內容(包括數據庫變更對象以及操作類型),點擊“自助執(zhí)行到開發(fā)庫”選項,系統(tǒng)自動把本次變更對應的SQL語句執(zhí)行到了數據庫的開發(fā)庫。乙在確定提交的變更內容都已經實施到數據庫的開發(fā)庫后,乙可以進行后續(xù)的開發(fā)工作。丙接到乙或DBA的通知,需要測試“WT0”項目,該通知中包括待測試的數據庫變更
對象信息。丙登錄數據庫,調用記錄的變更內容(包括數據庫變更對象以及操作類型),點擊“自助執(zhí)行到測試庫”選項,系統(tǒng)自動把本次變更對應的SQL語句執(zhí)行到了數據庫的測試庫。丙在確認提交的數據庫變更內容都已經實施到數據庫的測試庫后,丙可以進行后續(xù)的測試工作。甲接到丙在測試通過后發(fā)送的通知,需要發(fā)布“WT0”項目,該通知中包括待發(fā)布的
數據庫變更對象信息。。甲登錄數據庫,調用記錄的變更內容(包括數據庫變更對象以及操作類型),點擊“生產項目SQL”選項,系統(tǒng)就會將本次變更對應的SQL語句執(zhí)行到數據庫變更對象所在的生產環(huán)境(或應用環(huán)境)。在成功將本次變更對應的SQL語句執(zhí)行到數據庫變更對象所在的生產環(huán)境后,點擊“歸檔項目”,表示該項目已經發(fā)布上線,相關操作也已經歸并到正式表里。
至此,流程結束。根據本申請?zhí)峁┑纳鲜鰧嵤├?,數據庫能夠保存用戶選擇的數據庫變更對象信息以及操作類型信息,從而保證每次數據庫變更的屬性都是唯一的,便于后續(xù)對該數據庫變更操作進行測試以及發(fā)布。本申請實施例支持用戶完成數據庫變更操作后,將變更內容匯總通過郵件發(fā)送給DBA的功能,以使DBA知曉數據庫的變更情況,以便及時對數據庫進行管理與控制。裝置實施例本申請裝置實施例提供的一種數據庫變更裝置,通過該裝置可以提高數據庫變更的效率。如圖6所示,該裝置可以位于數據庫中,并且該數據庫變更裝置可以進一步被劃分為如下單元 信息存儲單元601、SQL語句生成單元602以及SQL語句應用單元603 ;其中信息存儲單元601,用于保存用戶在登錄數據庫后選擇的數據庫變更對象的信息以及對數據庫變更對象執(zhí)行的操作類型的信息;SQL語句生成單元602,用于根據信息存儲單元601保存的數據庫變更對象的信息以及操作類型的信息,生成與本次變更對應的結構化查詢語言SQL語句;SQL語句應用單元603,用于在用戶對數據庫變更對象執(zhí)行與操作類型相應的操作后,將SQL語句生成單元602生成的與本次變更對應的SQL語句應用到數據庫的開發(fā)庫。本申請裝置實施例提供的一個優(yōu)選實施方式中,圖6所示裝置包括的SQL語句應用單元603,具體用于在接收到用于指示將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫的指示信息后,將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫。本申請裝置實施例提供的一個優(yōu)選實施方式中,圖6所示裝置包括的SQL語句生成單元602,具體用于在用戶對數據庫變更對象執(zhí)行與操作類型相應的操作之前,根據保存的數據庫變更對象的信息以及操作類型的信息生成與本次變更對應的SQL語句;或在用戶對數據庫變更對象執(zhí)行與操作類型相應的操作之后,根據保存的數據庫變更對象的信息以及操作類型的信息生成與本次變更對應的SQL語句。如圖7所示,本申請裝置實施例提供的一個優(yōu)選實施方式中,圖6所示裝置還可以進一步包括SQL語句測試單元604,用于在SQL語句應用單元603將與本次變更對應的SQL語句應用到數據庫的開發(fā)庫后,將與本次變更對應的SQL語句同步到數據庫的測試庫進行測
o本申請裝置實施例提供的一個優(yōu)選實施方式中,圖7所示裝置SQL語句測試單元604,具體用于在接收到用于指示將與本次變更對應的SQL語句同步到數據庫的測試庫進行測試的指示信息后,將與本次變更對應的SQL語句同步到數據庫的測試庫進行測試。如圖8所示,本申請裝置實施例提供的一個優(yōu)選實施方式中,圖7所示裝置還可以進一步包括SQL語句發(fā)布單元605,用于在SQL語句測試單元604將與本次變更對應的SQL語句同步到數據庫的測試庫進行測試并且在確定測試結果為通過時,將與本次變更對應的SQL語句發(fā)布到數據庫變更對象所在的應用環(huán)境。本申請裝置實施例提供的一個優(yōu)選實施方式中,圖6所示裝置包括的信息存儲單元601,具體用于確定用戶選擇的數據庫操作對象以及對該數據庫變更對象的操作類型信息;
根據確定的所述數據庫操作對象的類型,確定針對所述類型的數據庫對象創(chuàng)建的臨時表;根據確定的所述數據庫操作對象以及對所述數據庫變更對象的操作類型信息,填充所述臨時表并保存。本申請裝置實施例提供的一個優(yōu)選實施方式中,圖6所示裝置包括的信息存儲單元601,還用于通過所述用戶的用戶標識對保存的所述數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息進行標識;或/和根據所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作的進度,通過設定的狀態(tài)標識對保存的所述數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息進行標識。本領域技術人員應該能夠理解,上述數據庫變更裝置包括的模塊劃分方式僅是眾多模塊劃分方式中的一種,如果劃分為其他模塊或不劃分模塊,只要該數據庫變更裝置具有上述功能,都應該在本申請的保護范圍之內。并且,上述數據庫變更裝置所實現的功能與上述方法實施例部分數據庫所執(zhí)行的步驟一一對應,具體實現細節(jié)已在上述方法實施例中描述,此處不再贅述。本領域的技術人員應明白,本申請的實施例可提供為方法、裝置(設備)、或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。本申請是參照根據本申請實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執(zhí)行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權利要求及其 等同技術的范圍之內,則本申請也意圖包含這些改動和變型在內。
權利要求
1.一種數據庫變更方法,其特征在于,包括 數據庫保存用戶在登錄后選擇的數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息; 在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作后,將與本次變更對應的結構化查詢語言SQL語句應用到所述數據庫的開發(fā)庫; 其中,與本次變更對應的SQL語句由所述數據庫根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成。
2.如權利要求I所述的方法,其特征在于,將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫之前,還包括 接收用于指示將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫的指示信息。
3.如權利要求I所述的方法,其特征在于,根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成與本次變更對應的SQL語句的方式,包括 在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作之前,根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成與本次變更對應的SQL語句;或 在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作之后,根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成與本次變更對應的SQL語句。
4.如權利要求I所述的方法,其特征在于,將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫后,還包括 將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試。
5.如權利要求4所述的方法,其特征在于,將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試之前,還包括 接收用于指示將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試的指示信息。
6.如權利要求4所述的方法,其特征在于,將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試后,還包括 在確定測試結果為通過時,將所述與本次變更對應的SQL語句發(fā)布到所述數據庫變更對象所在的應用環(huán)境。
7.如權利要求I所述的方法,其特征在于,數據庫保存用戶在登錄后選擇的數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息,包括 確定用戶選擇的數據庫操作對象以及對該數據庫變更對象的操作類型信息; 根據確定的所述數據庫操作對象的類型,確定針對所述類型的數據庫對象創(chuàng)建的臨時表; 根據確定的所述數據庫操作對象以及對所述數據庫變更對象的操作類型信息,填充所述臨時表并保存。
8.如權利要求7所述的方法,其特征在于,數據庫保存用戶在登錄后選擇的數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息,還包括 通過所述用戶的用戶標識對保存的所述數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息進行標識;或/和 根據所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作的進度,通過設定的狀態(tài)標識對保存的所述數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息進行標識。
9.一種數據庫變更裝置,位于數據庫中,其特征在于,包括 信息存儲單元,用于保存用戶在登錄數據庫后選擇的數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息; SQL語句生成單元,用于根據所述信息存儲單元保存的所述數據庫變更對象的信息以及所述操作類型的信息,生成與本次變更對應的結構化查詢語言SQL語句; SQL語句應用單元,用于在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作后,將所述SQL語句生成單元生成的與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫。
10.如權利要求9所述的裝置,其特征在于,所述SQL語句應用單元,具體用于 在接收到用于指示將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫的指示信息后,將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫。
11.如權利要求9所述的裝置,其特征在于,所述SQL語句生成單元,具體用于 在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作之前,根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成與本次變更對應的SQL語句;或在所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作之后,根據保存的所述數據庫變更對象的信息以及所述操作類型的信息生成與本次變更對應的SQL語句。
12.如權利要求9所述的裝置,其特征在于,還包括 SQL語句測試單元,用于在所述SQL語句應用單元將與本次變更對應的SQL語句應用到所述數據庫的開發(fā)庫后,將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試。
13.如權利要求12所述的裝置,其特征在于,所述SQL語句測試單元,具體用于 在接收到用于指示將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試的指示信息后,將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試。
14.如權利要求12所述的裝置,其特征在于,還包括 SQL語句發(fā)布單元,用于在所述SQL語句測試單元將與本次變更對應的SQL語句同步到所述數據庫的測試庫進行測試并且在確定測試結果為通過時,將所述與本次變更對應的SQL語句發(fā)布到所述數據庫變更對象所在的應用環(huán)境。
15.如權利要求9所述的裝置,其特征在于,所述信息存儲單元,具體用于 確定用戶選擇的數據庫操作對象以及對該數據庫變更對象的操作類型信息; 根據確定的所述數據庫操作對象的類型,確定針對所述類型的數據庫對象創(chuàng)建的臨時表; 根據確定的所述數據庫操作對象以及對所述數據庫變更對象的操作類型信息,填充所述臨時表并保存。
16.如權利要求15所述的裝置,其特征在于,所述信息存儲單元,還用于 通過所述用戶的用戶標識對保存的所述數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息進行標識;或/和 根據所述用戶對所述數據庫變更對象執(zhí)行與所述操作類型相應的操作的進度,通過設定的狀態(tài)標識對保存的所述數據庫變更對象的信息以及對所述數據庫變更對象執(zhí)行的操作類型的信息 進行標識。
全文摘要
本申請公開了一種數據庫變更方法以及裝置,主要技術方案包括數據庫保存用戶在登錄后選擇的數據庫變更對象的信息以及對數據庫變更對象執(zhí)行的操作類型的信息;在用戶對選擇的數據庫變更對象執(zhí)行與選擇的操作類型相應的操作后,將與本次變更對應的結構化查詢語言SQL語句應用到數據庫的開發(fā)庫;其中,與本次變更對應的SQL語句根據保存的數據庫變更對象的信息以及操作類型的信息生成。根據該技術方案,能夠提高數據庫變更的效率。
文檔編號G06F17/30GK102682038SQ20111006689
公開日2012年9月19日 申請日期2011年3月18日 優(yōu)先權日2011年3月18日
發(fā)明者張中靖, 張瑞, 王濤, 陳棟, 陳濤, 陳立 申請人:阿里巴巴集團控股有限公司