本發明專利技術公開了一種關系型數據庫序列號應用方法和系統,所述方法包括:序列定義,預置序列號映射表,所述序列號映射表中存儲有與數據表序列標識對應的一條或多條記錄,所述記錄包括一個或多個字段,所述字段包括序列號名稱、序列號當前值;序列取值,根據序列號名稱匹配所述序列號映射表,若存在匹配記錄,則從所述記錄中獲取對應的序列號當前值,按照對應的序列號增長值計算序列號返回值;返回所述序列號返回值;使用所述序列號返回值更新所述記錄中對應的序列號當前值。這樣一來,消除了不同類型數據庫序列號生成規則差異導致的程序代碼差異,有效降低了數據庫遷移時的程序改造成本。
【技術實現步驟摘要】
本專利技術涉及數據庫
,具體涉及一種關系型數據庫的序列號應用方法和系統。
技術介紹
關系型數據庫是建立在關系模型基礎上的數據庫,是當今最主流的數據庫產品。經過幾十年的發展,關系型數據庫已被廣泛應用于不同行業和領域,如,甲骨文公司的Oracle、MySQL,微軟公司的 SQLServer,IBM 公司的 DB2 等。在關系型數據庫中,數據表用來存儲數據對象,一般包括字段名稱,取值和數據類型等屬性。數據表中,主鍵是一個字段或者一個字段集合用于唯一的標識表中每一行數據。一般而言,數據表會自動生成等間隔數值的序列號作為表中的主鍵。而不同公司的數據庫產品都有其各自的序列號管理和生成方式,例如Oracle的序列被定義成一個對象進行管理,使用時遵循Oracle定義語法,如通過Sequence_name. nextval獲取序列號當前值;SQLServer使用Identity屬性創建自增數據列,由數據庫自動管理序列號的遞增;MySQL使用Auto_increment屬性創建自增數據列,由數據庫自動管理序列號的遞增;DB2使用的序列被定義成一個對象進行管理,使用時遵循DB2定義語法。在不同的行業應用和項目中,由于項目規模和需求的不同,往往會使用不同的數據庫產品,這就導致在跨類型數據庫程序遷移時,需要通過對程序中大量數據庫操作代碼進行相應的改造,才能適應不同數據庫序列號生成和使用方式造成的差異。總之,需要本領域技術人員解決的技術問題就是在跨類型數據庫程序遷移時,如何降低因序列號生成和使用方式差異造成的代碼改造成本。
技術實現思路
鑒于上述問題,提出了本專利技術以便提供一種克服上述問題或者至少部分地解決上述問題的關系型數據庫序列號應用方法和相應的系統。依據本專利技術的一個方面,提供了一種關系型數據庫序列號應用方法,包括序列定義,預置序列號映射表,所述序列號映射表中存儲有與數據表序列標識對應的一條或多條記錄,所述記錄包括一個或多個字段,所述字段包括序列號名稱、序列號當前值;序列取值,根據序列號名稱匹配所述序列號映射表,若存在匹配記錄,則從所述記錄中獲取對應的序列號當前值,按照對應的序列號增長值計算序列號返回值;返回所述序列號返回值;使用所述序列號返回值更新所述記錄中對應的序列號當前值。可選地,所述序列號映射表記錄的字段還包括序列號當前狀態;所述序列取值中,若存在匹配記錄之后還包括判斷序列號當前狀態是否可用,若為非可用狀態,則返回當前序列不可用提示信肩、O可選地,所述序列取值還包括若所述序列號當前狀態為可用狀態,則進一步判斷所述序列號當前狀態是否為鎖定狀態,若為鎖定,則等待預定時間間隔后重新判斷所述當前序列號狀態是否為鎖定狀態,直到超出等待時間閾值,并返回當前序列不可用的提示信息;若不為鎖定,則修改所述序列號當前狀態為鎖定狀態;以及在計算出序列號返回值后,將所述序列號當前狀態置為可用狀態。可選地,所述方法還包括序列池定義,所述序列池以鍵和數值對的結構存儲所述序列號映射表中對應的記錄;所述序列池還包括對指定序列號名稱的序列操作方法,包括新增序列號,用于向所述序列號映射表中增加一條新的序列記錄;和/或刪除序列號,用于按照指定的序列號名稱,從所述序列號映射表中刪除一條對應的序列記錄;和/或獲取序列號,用于將所述序列取值中包括的步驟封裝在所述獲取序列號的方法中。可選地,所述序列池中的序列操作方法還包括序列池初始化,包括從所述序列號映射表中獲取全部有效記錄按照鍵和數值對的結構存儲到內存中;所述獲取序列號中,返回序列號返回值后還包括判斷當前返回值是否超出更新閾值,若未超出,則僅更新內存中對應的序列號當前值;若超出更新閾值,則同時更新內存和所述序列號映射表中對應的序列號當前值。根據本專利技術的另一方面,提供了一種關系型數據庫序列號應用系統,包括序列定義模塊,用于預置序列號映射表,所述序列號映射表中存儲有與數據表序列標識對應的一條或多條記錄,所述記錄包括一個或多個字段,所述字段包括序列號名稱、序列號當前值;序列取值模塊,用于根據序列號名稱匹配所述序列號映射表,若存在匹配記錄,則從所述記錄中獲取對應的序列號當前值,按照對應的序列號增長值計算序列號返回值;返回所述序列號返回值;使用所述序列號返回值更新所述記錄中對應的序列號當前值。可選地,所述序列號映射表記錄的字段還包括序列號當前狀態;所述序列取值模塊還用于,若存在匹配記錄之后還包括判斷序列號當前狀態是否可用,若為非可用狀態,則返回當前序列不可用提示信肩、O可選地,所述序列取值模塊還用于若所述序列號當前狀態為可用狀態,則進一步判斷所述序列號當前狀態是否為鎖定狀態,若為鎖定,則等待預定時間間隔后重新判斷所述當前序列號狀態是否為鎖定狀態,直到超出等待時間閾值,并返回當前序列不可用的提示信息;若不為鎖定,則修改所述序列號當前狀態為鎖定狀態;以及在計算出序列號返回值后,將所述序列號當前狀態置為可用狀態。可選地,所述系統還包括序列池模塊,所述序列池以鍵和數值對的結構存儲所述序列號映射表中對應的記錄;所述序列池模塊還包括新增序列號單元,用于向所述序列號映射表中增加一條新的序列記錄;和/或刪除序列號單元,用于按照指定的序列號名稱,從所述序列號映射表中刪除一條對應的序列記錄;和/或獲取序列號單元,用于將所述序列取值中包括的步驟封裝在所述獲取序列號的方法中。可選地,所述序列池模塊還包括序列池初始化單元,用于從所述序列號映射表中獲取全部有效記錄按照鍵和數值對的結構存儲到內存中;所述獲取序列號單元,還用于判斷當前返回值是否超出更新閾值,若未超出,則僅更新內存中對應的序列號當前值;若超出更新閾值,則同時更新內存和所述序列號映射表中對應的序列號當前值。現有技術中,由于不同類型數據庫對序列號使用方式存在的差異,因此,當程序在不同類型數據庫間遷移時,必須對程序中原有的數據庫操作代碼進行適應性改造,導致遷移成本大幅增加。而本專利技術通過定義序列號映射表存儲各數據表對應的序列號,并按照統一規則對序列號進行取值和更新,其所獲取的序列號可被應用于任一類型數據庫,消除了不同類型數據庫中序列號的生成機制帶來的差異,程序代碼可按統一的規則使用序列號,即使改變數據庫也無需對程序代碼做出修改,因此,取得了降低數據庫遷移改造成本的有益效果。上述說明僅是本專利技術技術方案的概述,為了能夠更清楚了解本專利技術的技術手段,而可依照說明書的內容予以實施,并且為了讓本專利技術的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本專利技術的具體實施方式。附圖說明通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本專利技術的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1示出了根據本專利技術一個實施例的一種關系型數據庫序列號應用方法的流程示意圖;圖2示出了根據本專利技術一個實施例的一種關系型數據庫序列號應用方法中序列取值的流程示意圖;圖3示出了根據本專利技術一個實施例的一種關系型數據庫序列號應用系統的結構示意圖。具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反本文檔來自技高網...
【技術保護點】
一種關系型數據庫序列號應用方法,其特征在于,包括:序列定義,預置序列號映射表,所述序列號映射表中存儲有與數據表序列標識對應的一條或多條記錄,所述記錄包括一個或多個字段,所述字段包括序列號名稱、序列號當前值;序列取值,根據序列號名稱匹配所述序列號映射表,若存在匹配記錄,則從所述記錄中獲取對應的序列號當前值,按照對應的序列號增長值計算序列號返回值;返回所述序列號返回值;使用所述序列號返回值更新所述記錄中對應的序列號當前值。
【技術特征摘要】
1.一種關系型數據庫序列號應用方法,其特征在于,包括序列定義,預置序列號映射表,所述序列號映射表中存儲有與數據表序列標識對應的一條或多條記錄,所述記錄包括一個或多個字段,所述字段包括序列號名稱、序列號當前值;序列取值,根據序列號名稱匹配所述序列號映射表,若存在匹配記錄,則從所述記錄中獲取對應的序列號當前值,按照對應的序列號增長值計算序列號返回值;返回所述序列號返回值;使用所述序列號返回值更新所述記錄中對應的序列號當前值。2.如權利要求1所述的方法,其特征在于,所述序列號映射表中記錄的字段還包括序列號當前狀態;所述序列取值中,若存在匹配記錄之后還包括判斷序列號當前狀態是否可用,若為非可用狀態,則返回當前序列不可用提示信息。3.如權利要求2所述的方法,其特征在于,所述序列取值還包括若所述序列號當前狀態為可用狀態,則進一步判斷所述序列號當前狀態是否為鎖定狀態,若為鎖定,則等待預定時間間隔后重新判斷所述當前序列號狀態是否為鎖定狀態,直到超出等待時間閾值,并返回當前序列不可用的提示信息;若不為鎖定,則修改所述序列號當前狀態為鎖定狀態;以及在計算出序列號返回值后,將所述序列號當前狀態置為可用狀態。4.如權利要求1、2或3所述的方法,其特征在于,所述方法還包括序列池定義,所述序列池以鍵和數值對的結構存儲所述序列號映射表中對應的記錄; 所述序列池還包括對指定序列號名稱的序列操作方法,包括新增序列號,用于向所述序列號映射表中增加一條新的序列記錄;和/或刪除序列號,用于按照指定的序列號名稱,從所述序列號映射表中刪除一條對應的序列記錄;和/或獲取序列號,用于將所述序列取值中包括的步驟封裝在所述獲取序列號的方法中。5.如權利要求4所述的方法,其特征在于,所述序列池中的序列操作方法還包括 序列池初始化,包括從所述序列號映射表中獲取全部有效記錄按照鍵和數值對的結構存儲到內存中;所述獲取序列號中,返回序列號返回值后還包括判斷當前返回值是否超出更新閾值,若未超出,則僅更新內存中對應的序列號當前值; 若超出更新閾值,則同時更新內存和所述序列號映射表中對應的序列...
【專利技術屬性】
技術研發人員:栗增光,周訓波,
申請(專利權)人:大唐軟件技術股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。