新四季網

資料庫的數據模型更新方法和系統與流程

2023-04-29 23:07:11


本發明涉及資料庫技術領域,特別是涉及一種資料庫的數據模型更新方法和系統。



背景技術:

ORM(Object-Relation-Mapping,對象關係映射)框架是採用元數據來描述對象一關係映射細節,元數據一般採用XML格式,並且存放在專門的對象一映射文件中。

現有ORM框架中,如Hibernate可以對數據模型的修改進行檢測,並自動同步修改資料庫結構;但由於缺乏回滾和記錄變更的手段,用戶必須手動備份資料庫表單,以防升級出錯。

由此,在進行資料庫遷移、升降級等更新過程中,如果用戶不能及時備份,則在系統的數據模型發生變化時就無法記錄資料庫的差異和變更記錄,降低了資料庫的使用效率。



技術實現要素:

基於此,有必要針對上述技術問題,提供一種資料庫的數據模型更新方法和系統,提高資料庫的使用效率。

一種資料庫的數據模型更新方法,包括:

獲取當前資料庫的表單數據,並反向生成對象模型;

讀取新版本資料庫的數據模型,對比所述對象模型與新版本的數據模型的差異,並生成帶版本號的差分腳本;

將所述版本號記錄到預先創建的數據表中;

根據所述數據表記錄的版本號和差分腳本,對資料庫的數據模型進行更新。

一種資料庫的數據模型更新系統,包括:

轉換模塊,用於獲取當前資料庫的表單數據,並反向生成對象模型;

比對模塊,用於利用資料庫工具讀取新版本的數據模型,對比所述對象模型與新版本的數據模型的差異,並生成帶版本號的差分腳本;

記錄模塊,用於將所述版本號依據先後順序記錄到預先創建的數據表中;

更新模塊,用於根據所述數據表記錄的版本號和差分腳本,對資料庫的數據模型進行更新。

上述資料庫的數據模型更新方法和系統,將當前資料庫的表單數據反向生成對象模型,將新版本資料庫的數據模型與對象模型進行比對,將模型差異生成帶版本號的差分腳本記錄到預先創建的數據表中,在需要更新時,利用記錄的版本號和差分腳本自動執行對資料庫的數據模型的新。該技術方案,可以在數據模型發生變化是,記錄數據模型的差異和變更記錄,並可以為更新提供便捷的差分腳本,提高資料庫的使用效率。

附圖說明

圖1是本發明實施例的資料庫的數據模型更新方法流程圖;

圖2是一個實例的生成差分腳本的流程圖;

圖3是本發明實施例的資料庫的數據模型更新系統結構示意圖。

具體實施方式

下面結合附圖闡述本發明的資料庫的數據模型更新方法和系統的實施例。

參考圖1所示,圖1是本發明實施例的資料庫的數據模型更新方法流程圖,包括:

S110,獲取當前資料庫的表單數據,並反向生成對象模型;

此步驟中,在執行資料庫的數據模型更新時,首先獲取當前資料庫的表單數據,根據原對象模型反向生成數據模型,便於對模型之間進行代碼比對。

在一個實施例中,在反向生成對象模型前,可以使用ORM對象關係模型建立資料庫表單;根據資料庫的連接地址、用戶名和密碼,建立與資料庫的連接;

進一步的,建立數據表,用於記錄資料庫的版本號;其中,初始化版本號置為0;創建所述資料庫的備份腳本目錄,並生成配置信息。

上述實施例,通過讀取資料庫的配置信息,建立與資料庫的連接,然後執行資料庫的數據模型的更新流程。

在一個實施例中,S110的反向生成對象模型的步驟,可以包括如下:

調用資料庫引擎驅動,讀取當前資料庫的表單數據,根據表單數據進行代碼轉換,反向生成對象模型;具體的,獲取所述表單數據中的名稱和欄位,對所述名稱和欄位進行排序,將所述名稱和欄位轉換成代碼。

S120,讀取新版本資料庫的數據模型,對比所述對象模型與新版本的數據模型的差異,並生成帶版本號的差分腳本;

此步驟中,可以利用資料庫工具(如sqlalchemy)讀取新版本資料庫的數據模型,

由於新的數據模型位於系統代碼中,可以加載新舊版本的數據模型進行差異對比。

在一個實施例中,生成帶版本號的差分腳本的步驟,可以將所述對象模型和新版本的數據模型中的每個元數據進行對比;根據所述元數據的欄位差異,生成差分腳本及其版本號。

S130,將所述版本號記錄到預先創建的數據表中;

此步驟中,通過在資料庫中新增數據表,從而實現對資料庫表單變更的版本控制,是對資料庫進行更新的前提;例如,可以在預先創建的數據表中,在原版本號基礎上將版本號加1。

S140,根據所述數據表記錄的版本號和差分腳本,對資料庫的數據模型進行更新;

此步驟中,利用數據表記錄的版本號和差分腳本,可以對資料庫模型進行更新,例如資料庫的升降機操作,同時可以確保在更新過程當中的差異和變更記錄。

參考圖2所示,圖2是一個實例的生成差分腳本的流程圖,首先建立與資料庫的連接,然後調用資料庫引擎驅動器,將資料庫變動數據反向生成對象模型與新版本的數據模型比對後,得到模型的差異,生成資料庫腳本,保存為差分腳本。

在一個實施例中,所述更新操作為降級操作;對應的,所述步驟S140中具體的降級操作可以如下:

讀取所述數據表中記錄的最新的版本號;

查找所述最新的版本號的上一個版本號對應的差分腳本;

執行所述上一個版本號中的降級函數,將資料庫的數據模型降級到上一個版本;其中,所述降級函數記錄從資料庫表單從新版本到舊版本的操作。

上述實施例中,通過數據表記錄的最新的版本號,在降級的過程中,通過版本號減1後,找到對應的差分腳本,運行降級函數,即可恢復到相應版本的數據模型。

在一個實施例中,所述更新操作為升級操作;對應的,所述步驟S140中具體的升級操作可以如下:

讀取所述數據表中記錄的最新的版本號;

根據所述最新的版本號查找對應的差分腳本;

執行所述差分腳本中的升級函數,將資料庫的數據模型升級到最新版本;其中,所述升級函數記錄從資料庫表單從舊版本到新版本的操作。

上述實施例中,在進行資料庫的升級前,將要升級到的版本的數據模型與記錄在數據表中的最新版本的數據模型進行差異比對,然後將兩者差異生成差分腳本及其版本號,並將該版本號記錄在數據表中,以供後續進行更新時使用。

本發明的技術,可以應用在軟體開發過程中,特別是具備ORM的WEB框架中,在資料庫的對象模型發生改變之後,自動對比原數據模型和新的數據模型,當模型不一致時,可以動態修改資料庫欄位;在數據模型新增欄位,不影響原資料庫中數據,僅進行新增欄位的操作;資料庫進行升級之前,可以自動把前後數據模型的差異記錄為SQL差分腳本並保存;在進行升降級時,可分別執行升級腳本和降級腳本對資料庫結構進行覆蓋和修改;另外,數據模型和升降級腳本(如Class類和方法)可以使用Python通用庫生成,可任意移植並轉化成其他語言的數據模型。

綜合上述實施例的方案,本發明的資料庫的數據模型更新方法,具有如下優點:

(1)設計了資料庫表單版本控制的方案;通過在數據表單中引進版本的概念,新增記錄版本號的數據表單,表單名可以記為「version」從而實現對資料庫表單變更的版本控制。

(2)通過資料庫引擎驅動器,配置文件指定連接的資料庫類型,對於連接不同類型的資料庫,可以通過提供不同的參數類型,例如URL、用戶名或密碼等組合,使用不同的SQL語句;資料庫引擎驅動器採用基於SQLalchemy實現的一種多資料庫支持的庫,使得在工作的時候,可以跨越不同的資料庫系統,例如Mysql,Sqlite等。

(3)在進行升降級時,反向生成數據模型,並與新的數據模型進行差異對比,自動生成升降級的差分腳本,並將差分腳本名稱以版本號作為標識,例如,可以記為「如0001_migrateion.**」以便升降級使用;

藉助SQLalchemy庫可以反向生成數據模型,差異對比新舊的數據模型,生成相應的升降級腳本函數。

參考圖3所示,圖3是本發明實施例的資料庫的數據模型更新系統結構示意圖,主要包括:

轉換模塊110,用於獲取當前資料庫的表單數據,並反向生成對象模型;

比對模塊120,用於利用資料庫工具讀取新版本的數據模型,對比所述對象模型與新版本的數據模型的差異,並生成帶版本號的差分腳本;

記錄模塊130,用於將所述版本號依據先後順序記錄到預先創建的數據表中;

更新模塊140,用於根據所述數據表記錄的版本號和差分腳本,對資料庫的數據模型進行更新。

本發明的資料庫的數據模型更新系統與本發明的資料庫的數據模型更新方法一一對應,在上述資料庫的數據模型更新方法的實施例闡述的技術特徵及其有益效果均適用於資料庫的數據模型更新系統的實施例中,特此聲明。

以上所述實施例的各技術特徵可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特徵所有可能的組合都進行描述,然而,只要這些技術特徵的組合不存在矛盾,都應當認為是本說明書記載的範圍。

以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但並不能因此而理解為對發明專利範圍的限制。應當指出的是,對於本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬於本發明的保護範圍。因此,本發明專利的保護範圍應以所附權利要求為準。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀