麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種數據庫的版本控制方法及系統與流程

文檔序號:41771065發布日期:2025-04-29 18:41閱讀:6來源:國知局
本技術涉及數據庫,尤其涉及一種數據庫的版本控制方法及系統。
背景技術
::1、目前,版本控制技術在程序代碼等基于文本文件的數據方面較為成熟,比如git、svn,可以方便地進行版本提交、版本查詢、版本回退、版本對比等操作。但現實場景中大量的數據是以結構化的形式存儲在數據庫中,這些數據也普遍有版本控制的業務需求,比如以數據庫形式維護的工業設計、財務信息、人員情況等,但這些數據由于不是使用文本形式存儲,無法使用git、svn等工具進行版本控制。2、數據庫領域也有一些數據庫版本控制工具,比如liquibase、flyway等,這些工具是實現對整個數據庫的版本控制,它們主要用于整個數據庫的歷史回滾,管理粒度過粗,無法在不回滾數據庫的情況下直接進行歷史數據的查詢,更無法實現歷史版本間記錄級直接對比。3、一些已有的和“數據庫”、“版本控制”相關的發明專利,比如“數據庫版本管理方法、裝置及電子設備(申請公開號cn?115167841?a)”、“基于xml實現數據庫版本管理及結構自動遷移方法(申請公開號cn?116166635?a)”、“基于元模型的數據模型版本管理方法、裝置、設備及介質(申請公開號cn?118012847?a)”、“一種基于數據庫快照的數據庫版本管理方法(申請公開號cn?108255994?a)”、“一種數據庫ddl管理的方法和裝置(申請公開號cn112445781?a)”等,都是對整個數據庫進行版本管理,用于數據庫數據或數據庫結構的回滾、遷移、升級目的,無法實現不同版本數據共存情況下的版本控制,即不具備版本控制本身即業務的能力。技術實現思路1、本技術實施例提供一種數據庫的版本控制方法及系統,針對使用數據庫作為數據存儲方式,且版本控制即業務的場景,可提供類似git的版本控制功能。2、本技術實施例提供一種數據庫的版本控制方法,包括:3、為數據庫配置工程表、版本提交表以及各類別的業務數據表,其中工程表、版本提交表以及各類別的業務數據表具有基于工程id設置有對應的字段;4、基于所述工程表中的當前版本字段,在創建一個工程的情況下,將當前版本字段的值配置為初始值,后續任一次提交,則進行遞增;5、基于所述業務數據表的首次版本字段、末次版本字段以及提交狀態字段,結合所述工程表中的當前版本字段,形成記錄的數據庫版本狀態;6、基于數據庫版本狀態的記錄,根據操作和提交情況實現版本控制過程。7、可選的,所述工程表包含的字段包括:工程id、工程名稱、當前版本、工程創建時間,記為project_table(id,?project_name,?current_version,?project_create_time);8、所述版本提交表包含的字段包括:提交id、工程id、版本、提交時間、描述信息,記為commit_table(id,?project_id,?version,?commit_time,?commit_msg);9、所述業務數據表用于版本控制的輔助字段包括:記錄id、工程id、實體id、首次版本、末次版本、提交狀態,記為data_table(id,?project_id,?entity_id,?first_version,last_version,?committed,?[property1],?[property2],?…),其余字段為業務屬性,其中工程id為指向工程表id字段的外鍵,首次版本為該條記錄首次加入該業務數據表時的版本;末次版本為該條記錄刪除前的最后一個版本,提交狀態為該條記錄是否已提交。10、可選的,基于所述業務數據表的首次版本字段、末次版本字段以及提交狀態字段,結合所述工程表中的當前版本字段,所形成記錄的數據庫版本狀態包括:新增未提交狀態、可用已提交狀態、刪除未提交狀態、已刪除已提交狀態,其中:11、新增未提交狀態為滿足{first_version:?current_version,?last_version:null,?committed:?false}的記錄;12、可用已提交狀態為滿足{last_version:?null,?committed:?true}的記錄;13、刪除未提交狀態為滿足{last_version:?current_version-1,?committed:true}的記錄;14、已刪除已提交狀態為滿足{last_version?<=?current_version-2,?committed:true}的記錄。15、可選的,基于數據庫版本狀態的記錄,根據操作和提交情況實現版本控制過程包括:16、基于新增操作,觸發起始狀態轉換至新增未提交狀態;17、基于刪除操作,觸發可用已提交狀態轉換至刪除未提交狀態,或,新增未提交狀態轉換至結束狀態;18、基于修改操作,觸發可用已提交狀態轉換至刪除未提交狀態,同時觸發另一條記錄起始狀態轉換為新增未提交狀態,或者保持新增未提交狀態不變;19、基于版本提交操作,觸發新增未提交狀態轉換為可用已提交狀態,或刪除未提交狀態轉換至已刪除已提交狀態;20、基于版本回退操作,觸發已刪除已提交狀態轉換至刪除未提交狀態,或者觸發刪除未提交狀態、已刪除已提交狀態轉換到可用已提交狀態,或者觸發可用已提交狀態轉換到新增未提交狀態,或者觸發新增未提交狀態、可用已提交狀態、刪除未提交狀態、已刪除已提交狀態轉換至結束狀態;21、基于放棄修改操作,觸發刪除未提交狀態轉換至可用已提交狀態,或新增未提交狀態轉換至結束狀態;22、基于版本提交操作,版本提交時新增一條當前版本的版本提交記錄,版本回退時刪除大于目標版本的版本提交記錄。23、可選的,基于數據庫版本狀態的記錄,根據操作和提交情況實現版本控制過程還包括:24、對于新增操作,插入一條新的記錄,將first_version賦值為current_version,將last_version賦值為null,以及將committed賦值為false;25、對于刪除操作,對于當前版本的可視數據,對于新增未提交狀態直接刪除,對于可用已提交狀態,則將相應字段將其轉換為刪除未提交狀態;26、對于修改操作,對于當前版本的可視數據,對于新增未提交狀態直接修改,對于可用已提交狀態的記錄,先轉換為刪除未提交狀態,再新增一條記錄;27、對于版本提交操作,先判斷當前版本業務數據是否包含新增未提交狀態的記錄或刪除未提交狀態的記錄,若包含則:對于新增未提交狀態的記錄committed賦值為true;對于刪除未提交狀態的記錄,不執行修改;在版本提交表中插入一條記錄,version賦值為current_version,commit_time賦值為當前時間,commit_msg賦值為相應描述信息,更新工程表中對應的工程記錄,current_version的值遞增。28、可選的,基于數據庫版本狀態的記錄,根據操作和提交情況實現版本控制過程還包括:29、對于版本回退操作,包含完全退回指定版本的第一模式和指回退到指定版本,該版本之后的版本提交記錄全部刪除的第二模式,其中:30、對于所述第一模式,將first_version大于目標版本的記錄從數據庫中刪除;31、last_version不是null且last_version大于等于目標版本的記錄,將其last_version賦值為null;32、更新工程表中對應的工程記錄,current_version的值改為目標版本遞增;33、對于所述第二模式,將first_version大于目標版本且last_version不為null的記錄從數據庫中刪除;34、將first_version大于目標版本的記錄first_version改為目標版本遞增,committed賦值為false;35、將last_version不是null且last_version大于目標版本的記錄,將其last_version賦值為目標版本;36、更新工程表中對應的工程記錄,current_version的值改為目標版本遞增。37、可選的,基于數據庫版本狀態的記錄,根據操作和提交情況實現版本控制過程還包括:38、對于版本對比操作,指定兩個版本,并執行:39、查詢出version1可見且version2不可見的記錄,記為tmp_table1;40、查詢出version1不可見且version2可見的記錄,記為tmp_table2;41、將tmp_table1和tmp_table2關于entity_id做全連接操作,以執行版本對比。42、本技術實施例還提出一種數據庫的版本控制系統,包括處理器和存儲器,所述存儲器上存儲有計算機程序,所述計算機程序被處理器執行時實現如前述的方法的步驟。43、本技術實施例針對使用數據庫作為數據存儲方式,且版本控制即業務的場景,提供了類似git的版本控制功能。44、上述說明僅是本技術技術方案的概述,為了能夠更清楚了解本技術的技術手段,而可依照說明書的內容予以實施,并且為了讓本技術的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本技術的具體實施方式。當前第1頁12當前第1頁12
當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 平昌县| 萨迦县| 乐平市| 平江县| 开封县| 迁安市| 崇阳县| 丰台区| 永春县| 青河县| 文山县| 梨树县| 凤翔县| 铁岭县| 红安县| 墨竹工卡县| 阜康市| 沂水县| 镇巴县| 河间市| 连城县| 浏阳市| 文山县| 蒙自县| 都江堰市| 化隆| 集安市| 通辽市| 温州市| 原阳县| 通城县| 微山县| 桂东县| 成都市| 砚山县| 北流市| 凤庆县| 云梦县| 太湖县| 金门县| 阿拉善右旗|