專利名稱:共享數(shù)據(jù)更新裝置和共享數(shù)據(jù)更新方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體而言,涉及ー種共享數(shù)據(jù)更新裝置和一種共享數(shù)據(jù)更新方法。
背景技術(shù):
在業(yè)務(wù)系統(tǒng)中,很多共享數(shù)據(jù)面臨高并發(fā)的用戶訪問,而共享數(shù)據(jù)往往是系統(tǒng)核心業(yè)務(wù)模型,因此,共享數(shù)據(jù)正確性必須得到保障。如果要保證數(shù)據(jù)的正確性,那必然會涉及事務(wù)更新共享數(shù)據(jù)時的競爭及等待,如圖1所示,用戶I正在更新數(shù)據(jù)表記錄增加數(shù)量20,同時,用戶2通過操作需要將同一條記錄的數(shù)量減少40,而可能此時仍然存在其他用戶正在更新同一條記錄。如何支持用戶并發(fā)訪問并最大限度提升系統(tǒng)支持的并發(fā)度是必須解決的問題。為了保證業(yè)務(wù)數(shù)據(jù)的準(zhǔn)確性,絕大部分業(yè)務(wù)系統(tǒng)會采用兩種如下方法方法一首先對操作的數(shù)據(jù)進(jìn)行鎖定,然后更新數(shù)據(jù),最后校驗數(shù)據(jù),事務(wù)結(jié)束后釋放鎖 ,方法ニ :首先更新數(shù)據(jù),然后鎖定數(shù)據(jù),最后校驗數(shù)據(jù),事務(wù)結(jié)束釋放鎖。以上兩種方法都會至少涉及到兩次業(yè)務(wù)數(shù)據(jù)加鎖,一次為了保證數(shù)據(jù)的正確性,在校驗數(shù)據(jù)時對數(shù)據(jù)加鎖。另外一次在數(shù)據(jù)持久化時,需要數(shù)據(jù)庫級別進(jìn)行加鎖。而系統(tǒng)在高并發(fā)的情況下,對數(shù)據(jù)進(jìn)行頻繁加鎖,會導(dǎo)致事務(wù)出現(xiàn)大量等待,從而出現(xiàn)系統(tǒng)性能瓶頸,導(dǎo)致系統(tǒng)支持并發(fā)能力下降。一般的系統(tǒng)處理業(yè)務(wù)數(shù)據(jù)更新流程如圖2所示??梢悦黠@看出,一次用戶操作導(dǎo)致的更新事務(wù),可能導(dǎo)致兩次鎖等待。在高并發(fā)的情況下,導(dǎo)致系統(tǒng)支持并發(fā)能力下降。因此,需要ー種共享數(shù)據(jù)更新技木,能夠在保證數(shù)據(jù)更新正確性的前提下,消除數(shù)據(jù)更新及校驗過程的加鎖處理,從而提高系統(tǒng)支持的并發(fā)度。
發(fā)明內(nèi)容
本發(fā)明正是基于上述問題,提出了ー種共享數(shù)據(jù)更新技術(shù),能夠在保證數(shù)據(jù)更新 正確性的前提下,消除數(shù)據(jù)更新及校驗過程的加鎖處理,從而提高系統(tǒng)支持的并發(fā)度。有鑒于此,根據(jù)本發(fā)明的ー個方面,提供了ー種共享數(shù)據(jù)更新裝置,包括存儲單元,用于保存基本數(shù)據(jù)庫表和緩存數(shù)據(jù)庫表,所述基本數(shù)據(jù)庫表用于保存所述共享數(shù)據(jù)的匯總數(shù)據(jù),所述緩存數(shù)據(jù)庫表用于保存所述共享數(shù)據(jù)的差異數(shù)據(jù);差異數(shù)據(jù)計算單元,計算本次更新操作引起所述共享數(shù)據(jù)的差異數(shù)據(jù);數(shù)據(jù)持久化単元,采用獨立事務(wù)將所述差異數(shù)據(jù)插入至所述緩存數(shù)據(jù)庫表中;數(shù)據(jù)校驗単元,查詢所述基本數(shù)據(jù)庫表和所述緩存數(shù)據(jù)庫表校驗所述差異數(shù)據(jù),根據(jù)校驗結(jié)果確定是否提交所述獨立事務(wù)。上述技術(shù)方案采用新增差異記錄的方式持久化,避免了數(shù)據(jù)庫級別的加鎖過程。差異數(shù)據(jù)采用獨立事務(wù)直接提交至緩存表,并基于緩存表序列機(jī)制進(jìn)行數(shù)據(jù)校驗,使得數(shù)據(jù)校驗過程無需對業(yè)務(wù)數(shù)據(jù)進(jìn)行鎖定,可以在保證數(shù)據(jù)正確性的基礎(chǔ)上,消除數(shù)據(jù)校驗的加鎖過程。由于加鎖在基于緩存表序列的數(shù)據(jù)更新過程中完全消除,可以明顯提高系統(tǒng)的支持的并發(fā)度,優(yōu)化系統(tǒng)并發(fā)性能。在上述技術(shù)方案中,優(yōu)選的,數(shù)據(jù)持久化単元包括序列生成子単元,為所述本次更新操作引起的所述差異數(shù)據(jù)生成唯一緩存表遞增序列,根據(jù)所述獨立事務(wù)的發(fā)生時間確定所述唯一緩存表遞增序列的大小。在上述技術(shù)方案中,優(yōu)選的,所述數(shù)據(jù)校驗單元還用于在校驗所述差異數(shù)據(jù)時,首先校驗所述唯一緩存表遞增序列小于等于當(dāng)前序列值的差異數(shù)據(jù)。緩存表的序列按事務(wù)發(fā)生時間遞增,在數(shù)據(jù)校驗查詢時,只查詢序列小于等于當(dāng)前事務(wù)序列的記錄。因此,對于用戶并發(fā)更新數(shù)據(jù)導(dǎo)致共享數(shù)據(jù)資源爭用的情形下,采用了先到先得的排隊策略進(jìn)行共享數(shù)據(jù)資源的分配。在上述技術(shù)方案中,優(yōu)選的,所述數(shù)據(jù)校驗單元還用于在所述校驗結(jié)果為通過時,提交所述獨立事務(wù),在所述校驗結(jié)果為未通過時,回滾所述獨立事務(wù)。在上述任一技術(shù)方案中,優(yōu)選的,還包括數(shù)據(jù)查詢単元,用于對所述緩存數(shù)據(jù)庫表和所述基本數(shù)據(jù)庫表進(jìn)行查詢并定期將所述緩存數(shù)據(jù)庫表的數(shù)據(jù)匯總至所述基本數(shù)據(jù)庫表。由于緩存表采用差異插入方式持久化數(shù)據(jù),差異明細(xì)的數(shù)據(jù)量較大,因此需要定期對緩存表數(shù)據(jù)按業(yè)務(wù)維度匯總至基本表。根據(jù)本發(fā)明的另一方面,還提供了ー種共享數(shù)據(jù)更新方法,包括以下步驟步驟402,將所述共享數(shù)據(jù)的匯總數(shù)據(jù)保存于基本數(shù)據(jù)庫表中,以及將所述共享數(shù)據(jù)的差異數(shù)據(jù)保存于緩存數(shù)據(jù)庫表中;步驟404,計算本次更新操作引起所述共享數(shù)據(jù)的差異數(shù)據(jù)并采用獨立事務(wù)將所述差異數(shù)據(jù)插入至所述緩存數(shù)據(jù)庫表中;步驟406,查詢所述基本數(shù)據(jù)庫表和所述緩存數(shù)據(jù)庫表校驗所述差異數(shù)據(jù);步驟408,根據(jù)校驗結(jié)果確定是否提交所述獨立事務(wù)。上述技術(shù)方案采用新增差異記錄的方式持久化,避免了數(shù)據(jù)庫級別的加鎖過程。差異數(shù)據(jù)采用獨立事務(wù)直接提交至緩存表,并基于緩存表序列機(jī)制進(jìn)行數(shù)據(jù)校驗,使得數(shù)據(jù)校驗過程無需對業(yè)務(wù)數(shù)據(jù)進(jìn)行鎖定,可以在保證數(shù)據(jù)正確性的基礎(chǔ)上,消除數(shù)據(jù)校驗的加鎖過程。由于加鎖在基于緩存表序列的數(shù)據(jù)更新過程中完全消除,可以明顯提高系統(tǒng)的支持的并發(fā)度,優(yōu)化系統(tǒng)并發(fā)性能。在上述技術(shù)方案中,優(yōu)選的,所述步驟404還包括為所述本次更新操作引起的所述差異數(shù)據(jù)生成唯一緩存表遞增序列,根據(jù)所述獨立事務(wù)的發(fā)生時間確定所述唯一緩存表遞增序列的大小。在上述技術(shù)方案中,優(yōu)選的,所述步驟406還可以包括在校驗所述差異數(shù)據(jù)吋,首先校驗所述唯一緩存表遞增序列小于等于當(dāng)前序列值的差異數(shù)據(jù)。緩存表的序列按事務(wù)發(fā)生時間遞增,在數(shù)據(jù)校驗查詢時,只查詢序列小于等于當(dāng)前事務(wù)序列的記錄。因此,對于用戶并發(fā)更新數(shù)據(jù)導(dǎo)致共享數(shù)據(jù)資源爭用的情形下,采用了先到先得的排隊策略進(jìn)行共享數(shù)據(jù)資源的分配。在上述技術(shù)方案中,優(yōu)選的,在所述校驗結(jié)果為通過時,提交所述獨立事務(wù),在所述校驗結(jié)果為未通過時,回滾所述獨立事務(wù)。如果數(shù)據(jù)校驗通過,則先提交差異數(shù)據(jù)新增事務(wù)(即所述獨立事務(wù)),然后提交用戶數(shù)據(jù)更新事務(wù)。如果數(shù)據(jù)校驗不通過,則先回滾差異數(shù)據(jù)新增事務(wù)(即所述獨立事務(wù)),保證緩存表數(shù)據(jù)記錄的合法性,然后回滾用戶數(shù)據(jù)更新事務(wù)。
在上述任一技術(shù)方案中,優(yōu)選的,所述步驟408還可以包括,定期將所述緩存數(shù)據(jù)庫表的數(shù)據(jù)匯總至所述基本數(shù)據(jù)庫表。由于緩存表采用差異插入方式持久化數(shù)據(jù),差異明細(xì)的數(shù)據(jù)量較大,因此需要定期對緩存表數(shù)據(jù)按業(yè)務(wù)維度匯總至基本表。數(shù)據(jù)的持久化操作采用在緩存表中新增差異數(shù)據(jù)記錄的方式,減少了數(shù)據(jù)庫級別的鎖等待,解決了不同事務(wù)對同一行共享數(shù)據(jù)更新的資源競爭。采用獨立事務(wù)并引入序列機(jī)制進(jìn)行數(shù)據(jù)正確性驗證,避免了數(shù)據(jù)加鎖校驗。而且對于數(shù)據(jù)的查詢操作分?jǐn)傊羶蓮埍?,可提升?shù)據(jù)的訪問性能。因此,共享數(shù)據(jù)訪問系統(tǒng)通過消除數(shù)據(jù)更新中的兩次加鎖,減少系統(tǒng)性能瓶頸,保證系統(tǒng)能夠支持高并發(fā)數(shù)據(jù)訪問。
圖1示出了在實際應(yīng)用場景中并發(fā)訪問示意圖;圖2示出了相關(guān)技術(shù)中的共享數(shù)據(jù)更新流程圖;圖3示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新裝置的框圖;圖4示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新方法的流程圖;圖5示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)存儲表結(jié)構(gòu)示意圖;圖6示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新方法的流程圖;圖7示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新裝置的示意圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式
對本發(fā)明進(jìn)行進(jìn)一歩的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明并不限于下面公開的具體實施例的限制。圖3示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新裝置的框圖。如圖3所示,根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新裝置300包括存儲單元302,用于保存基本數(shù)據(jù)庫表和緩存數(shù)據(jù)庫表,所述基本數(shù)據(jù)庫表用于保存所述共享數(shù)據(jù)的匯總數(shù)據(jù),所述緩存數(shù)據(jù)庫表用于保存所述共享數(shù)據(jù)的差異數(shù)據(jù);差異數(shù)據(jù)計算單元304,計算本次更新操作引起所述共享數(shù)據(jù)的差異數(shù)據(jù);數(shù)據(jù)持久化単元306,采用獨立事務(wù)將所述差異數(shù)據(jù)插入至所述緩存數(shù)據(jù)庫表中;數(shù)據(jù)校驗単元308,查詢所述基本數(shù)據(jù)庫表和所述緩存數(shù)據(jù)庫表校驗所述差異數(shù)據(jù),根據(jù)校驗結(jié)果確定是否提交所述獨立事務(wù)。上述技術(shù)方案采用新增差異記錄的方式持久化,避免了數(shù)據(jù)庫級別的加鎖過程。差異數(shù)據(jù)采用獨立事務(wù)直接提交至緩存表,并基于緩存表序列機(jī)制進(jìn)行數(shù)據(jù)校驗,使得數(shù)據(jù)校驗過程無需對業(yè)務(wù)數(shù)據(jù)進(jìn)行鎖定,可以在保證數(shù)據(jù)正確性的基礎(chǔ)上,消除數(shù)據(jù)校驗的加鎖過程。由于加鎖在基于緩存表序列的數(shù)據(jù)更新過程中完全消除,可以明顯提高系統(tǒng)的支持的并發(fā)度,優(yōu)化系統(tǒng)并發(fā)性能。在上述技術(shù)方案中,優(yōu)選的,數(shù)據(jù)持久化単元306包括序列生成子単元,為所述本次更新操作引起的所述差異數(shù)據(jù)生成唯一緩存表遞增序列,根據(jù)所述獨立事務(wù)的發(fā)生時間確定所述唯一緩存表遞增序列的大小。
在上述技術(shù)方案中,優(yōu)選的,所述數(shù)據(jù)校驗單元還用于在校驗所述差異數(shù)據(jù)時,首先校驗所述唯一緩存表遞增序列小于等于當(dāng)前序列值的差異數(shù)據(jù)。緩存表的序列按事務(wù)發(fā)生時間遞增,在數(shù)據(jù)校驗查詢時,只查詢序列小于等于當(dāng)前事務(wù)序列的記錄。因此,對于用戶并發(fā)更新數(shù)據(jù)導(dǎo)致共享數(shù)據(jù)資源爭用的情形下,采用了先到先得的排隊策略進(jìn)行共享數(shù)據(jù)資源的分配。在上述技術(shù)方案中,優(yōu)選的,所述數(shù)據(jù)校驗單元308還用于在所述校驗結(jié)果為通過時,提交所述獨立事務(wù),在所述校驗結(jié)果為未通過時,回滾所述獨立事務(wù)。在上述任一技術(shù)方案中,優(yōu)選的,還包括數(shù)據(jù)查詢単元310,用于對所述緩存數(shù)據(jù)庫表和所述基本數(shù)據(jù)庫表進(jìn)行查詢并定期將所述緩存數(shù)據(jù)庫表的數(shù)據(jù)匯總至所述基本數(shù)據(jù)庫表。由于緩存表采用差異插入方式持久化數(shù)據(jù),差異明細(xì)的數(shù)據(jù)量較大,因此需要定期對緩存表數(shù)據(jù)按業(yè)務(wù)維度匯總至基本表。圖4示出了根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新方法的流程圖。如圖4所示,根據(jù)本發(fā)明的實施例的共享數(shù)據(jù)更新方法,包括步驟402,將共享數(shù)據(jù)的匯總數(shù)據(jù)保存于基本數(shù)據(jù)庫表中,以及將共享數(shù)據(jù)的差異數(shù)據(jù)保存于緩存數(shù)據(jù)庫表中;步驟404,計算本次更新操作引起共享數(shù)據(jù)的差異數(shù)據(jù)并采用獨立事務(wù)將差異數(shù)據(jù)插入至緩存數(shù)據(jù)庫表中;步驟406,查詢基本數(shù)據(jù)庫表和緩存數(shù)據(jù)庫表校驗差異數(shù)據(jù);步驟408,根據(jù)校驗結(jié)果確定是否提交獨立事務(wù)。上述技術(shù)方案采用新增差異記錄的方式持久化,避免了數(shù)據(jù)庫級別的加鎖過程。差異數(shù)據(jù)采用獨立事務(wù)直接提交至緩存表,并基于緩存表序列機(jī)制進(jìn)行數(shù)據(jù)校驗,使得數(shù)據(jù)校驗過程無需對業(yè)務(wù)數(shù)據(jù)進(jìn)行鎖定,可以在保證數(shù)據(jù)正確性的基礎(chǔ)上,消除數(shù)據(jù)校驗的加鎖過程。由于加鎖在基于緩存表序列的數(shù)據(jù)更新過程中完全消除,可以明顯提高系統(tǒng)的支持的并發(fā)度,優(yōu)化系統(tǒng)并發(fā)性能。在上述技術(shù)方案中,優(yōu)選的,所述步驟404還包括為所述本次更新操作引起的所述差異數(shù)據(jù)生成唯一緩存表遞增序列,根據(jù)所述獨立事務(wù)的發(fā)生時間確定所述唯一緩存表遞增序列的大小。在上述技術(shù)方案中,優(yōu)選的,所述步驟406還可以包括在校驗所述差異數(shù)據(jù)吋,首先校驗所述唯一緩存表遞增序列小于等于當(dāng)前序列值的差異數(shù)據(jù)。緩存表的序列按事務(wù)發(fā)生時間遞增,在數(shù)據(jù)校驗查詢時,只查詢序列小于等于當(dāng)前事務(wù)序列的記錄。因此,對于用戶并發(fā)更新數(shù)據(jù)導(dǎo)致共享數(shù)據(jù)資源爭用的情形下,采用了先到先得的排隊策略進(jìn)行共享數(shù)據(jù)資源的分配。在上述技術(shù)方案中,優(yōu)選的,在所述校驗結(jié)果為通過時,提交所述數(shù)據(jù)更新事務(wù),在所述校驗結(jié)果為未通過時,回滾所述數(shù)據(jù)更新事務(wù)。如果數(shù)據(jù)校驗通過,則先提交差異數(shù)據(jù)新增事務(wù)(即所述獨立事務(wù)),然后提交用戶數(shù)據(jù)更新事務(wù)。如果數(shù)據(jù)校驗不通過,則先回滾差異數(shù)據(jù)新增事務(wù)(即所述獨立事務(wù)),保證緩存表數(shù)據(jù)記錄的合法性,然后回滾用戶數(shù)據(jù)更新事務(wù)。在上述任一技術(shù)方案中,優(yōu)選的,所述步驟408還可以包括,定期將所述緩存數(shù)據(jù)庫表的數(shù)據(jù)匯總至所述基本數(shù)據(jù)庫表。由于緩存表采用差異插入方式持久化數(shù)據(jù),差異明細(xì)的數(shù)據(jù)量較大,因此需要定期對緩存表數(shù)據(jù)按業(yè)務(wù)維度匯總至基本表。由于緩存表采用差異插入方式持久化數(shù)據(jù),差異明細(xì)的數(shù)據(jù)量較大,因此需要定期對緩存表數(shù)據(jù)按業(yè)務(wù)維度匯總至基本表。基于緩存表序列的并發(fā)度優(yōu)化原理如下1)將共享數(shù)據(jù)記錄的持久化方式,由傳統(tǒng)的每次更新數(shù)據(jù)記錄改為每次首先計算本次更新差異值,然后將采用獨立事務(wù)將差異值新增插入至緩存表,可以減少在數(shù)據(jù)更新及刪除時加鎖,避免了數(shù)據(jù)庫鎖等待。由于采用獨立事務(wù)持久化數(shù)據(jù),可以查詢未提交用戶事務(wù)的差異明細(xì),以便后續(xù)數(shù)據(jù)校驗。2)緩存表引入序列機(jī)制,校驗時通過序列過濾相同業(yè)務(wù)維度的緩存表數(shù)據(jù),消除數(shù)據(jù)校驗加鎖。數(shù)據(jù)校驗過程同時查詢基本表及緩存表,能夠有效保證數(shù)據(jù)正確性。3)由于緩存表采用差異插入方式持久化數(shù)據(jù),差異明細(xì)的數(shù)據(jù)量較大,因此需要定期對緩存表數(shù)據(jù)按業(yè)務(wù)維度匯總至基本表。采用緩存表序列的數(shù)據(jù)存儲模型如圖5所示。其中共享數(shù)據(jù)在存儲上被拆分至兩張基本同構(gòu)的數(shù)據(jù)庫表?;颈?即基本數(shù)據(jù)庫表)存儲共享數(shù)據(jù)按業(yè)務(wù)維度的匯總值。緩存表(即緩存數(shù)據(jù)庫表)存儲共享數(shù)據(jù)的差異流水明細(xì)。其中,緩存表添加遞增序列,作為數(shù)據(jù)校驗的篩選條件。差異明細(xì)持久化至緩存表時生成唯一遞增序列,因此,每個用戶事務(wù)可以得到唯一序列,且用戶事務(wù)發(fā)生時間決定序列值大小,發(fā)生時間較早的事務(wù)對應(yīng)的序列值小于發(fā)生時間較晚的事務(wù)。數(shù)據(jù)校驗時,只需關(guān)注序列小于等于當(dāng)前事務(wù)序列的緩存表數(shù)據(jù)記錄。緩存表的數(shù)據(jù)定期匯總至基本表。一般在實踐中,選擇系統(tǒng)空閑時進(jìn)行數(shù)據(jù)的匯總。基于優(yōu)化模型的系統(tǒng)處理流程如圖6所示。針對用戶的數(shù)據(jù)更新事務(wù),首先計算本次更新導(dǎo)致的差異數(shù)據(jù)。然后,在用戶事務(wù)中啟動差異數(shù)據(jù)新增事務(wù),采用新啟動事務(wù)完成數(shù)據(jù)的持久化,在新增差異記錄過程中,生成緩存表數(shù)據(jù)記錄的序列。最后,差異數(shù)據(jù)持久化后,進(jìn)行數(shù)據(jù)業(yè)務(wù)正確性校驗。如果數(shù)據(jù)校驗通過,則先提交差異數(shù)據(jù)新增事務(wù),然后提交用戶數(shù)據(jù)更新事務(wù)。如果數(shù)據(jù)校驗不同過,則先回滾差異數(shù)據(jù)新增事務(wù),保證緩存表數(shù)據(jù)記錄的合法性,然后回滾用戶數(shù)據(jù)更新事務(wù)。由于存儲模型的改變導(dǎo)致業(yè)務(wù)數(shù)據(jù)分布在基本表及緩存表中。其中,實時發(fā)生的業(yè)務(wù)數(shù)據(jù)分布在緩存表,而匯總數(shù)據(jù)分布在基本表。因此,為保證查詢?nèi)繑?shù)據(jù)進(jìn)行業(yè)務(wù)規(guī)則校驗,數(shù)據(jù)校驗過程需同時查詢緩存表及基本表數(shù)據(jù)。由于緩存表采用獨立事務(wù)進(jìn)行數(shù)據(jù)持久化,因此,數(shù)據(jù)校驗時可以查詢到未提交的用戶事務(wù)對共享數(shù)據(jù)的更新差異,從而避免由于事務(wù)的隔離機(jī)制必須進(jìn)行數(shù)據(jù)校驗加鎖,實現(xiàn)用戶事務(wù)對共享數(shù)據(jù)資源的實時占用。如前文所述,緩存表的序列按事務(wù)發(fā)生時間遞增,在數(shù)據(jù)校驗查詢時,只查詢序列小于等于當(dāng)前事務(wù)序列的記錄。因此,對于用戶并發(fā)更新數(shù)據(jù)導(dǎo)致共享數(shù)據(jù)資源爭用的情形下,采用了先到先得的排隊策略進(jìn)行共享數(shù)據(jù)資源的分配。需要強(qiáng)調(diào)的是,所有的數(shù)據(jù)校驗過程必須發(fā)生在差異數(shù)據(jù)新增事務(wù)內(nèi)部,以便數(shù)據(jù)校驗失敗時,通過差異數(shù)據(jù)新增事務(wù)的回滾,撤銷緩存表數(shù)據(jù)持久化。通過圖2與圖6的比較,相比以往的共享數(shù)據(jù)更新過程,可以看出基于緩存表序列的數(shù)據(jù)更新完全消除了加鎖過程。圖2中,用戶更新事務(wù)開始,為了保證數(shù)據(jù)校驗正確性,就對操作數(shù)據(jù)進(jìn)行加鎖,在事務(wù)提交吋,才會釋放數(shù)據(jù)校驗鎖。在數(shù)據(jù)持久化時,采用更新記錄方式,使得在數(shù)據(jù)庫級別上又増加一次加鎖過程。圖6中,用戶數(shù)據(jù)采用新增差異記錄的方式持久化,避免了數(shù)據(jù)庫級別的加鎖過程。差異數(shù)據(jù)采用獨立事務(wù)直接提交至緩存表,并基于緩存表序列機(jī)制進(jìn)行數(shù)據(jù)校驗,使得數(shù)據(jù)校驗過程無需對業(yè)務(wù)數(shù)據(jù)進(jìn)行鎖定,可以在保證數(shù)據(jù)正確性的基礎(chǔ)上,消除數(shù)據(jù)校驗的加鎖過程。由于加鎖在基于緩存表序列的數(shù)據(jù)更新過程中完全消除,可以明顯提高系統(tǒng)的支持的并發(fā)度,優(yōu)化系統(tǒng)并發(fā)性能?;谝陨喜l(fā)優(yōu)化方法設(shè)計的共享數(shù)據(jù)訪問系統(tǒng)結(jié)構(gòu)如圖7所示。共享數(shù)據(jù)訪問系統(tǒng)主要包含以下兩個模塊1)數(shù)據(jù)更新模塊702,處理用戶更新事務(wù),完成數(shù)據(jù)的新増、修改、刪除。其可以包含四個部分用戶更新服務(wù)接ロ、差異數(shù)據(jù)計算單元、數(shù)據(jù)持久化單元、數(shù)據(jù)校驗単元。差異數(shù)據(jù)計算單元計算用戶操作引起的差異數(shù)據(jù)明細(xì)。數(shù)據(jù)持久化單元負(fù)責(zé)緩存表序列的生成及緩存表數(shù)據(jù)的插入。數(shù)據(jù)校驗単元查詢基本表和緩存表,根據(jù)業(yè)務(wù)規(guī)則進(jìn)行數(shù)據(jù)校驗。2)數(shù)據(jù)查詢模塊704,處理用戶查詢事務(wù),包含用戶查詢服務(wù)接ロ和數(shù)據(jù)查詢単元兩個部分。數(shù)據(jù)查詢単元完成對基本表及緩存表數(shù)據(jù)的查詢及合井。從圖7中可看出,對于共享數(shù)據(jù)的訪問被分?jǐn)傊羶蓮埍恚瑢τ跀?shù)據(jù)持久化操作只在緩存表完成,基本表只提供數(shù)據(jù)的查詢服務(wù)?;诖私Y(jié)構(gòu)的系統(tǒng),數(shù)據(jù)的持久化操作由于采用在緩存表中新增差異數(shù)據(jù)記錄的方式,因而減少了數(shù)據(jù)庫級別的鎖等待,解決了不同事務(wù)對同一行共享數(shù)據(jù)更新的資源競爭。在數(shù)據(jù)校驗單元采用獨立事務(wù)并引入序列機(jī)制進(jìn)行數(shù)據(jù)正確性驗證,避免了數(shù)據(jù)加鎖校驗。而且對于數(shù)據(jù)的查詢操作分?jǐn)傊羶蓮埍?,可提升?shù)據(jù)的訪問性能。因此,共享數(shù)據(jù)訪問系統(tǒng)通過消除數(shù)據(jù)更新中的兩次加鎖,減少系統(tǒng)性能瓶頸,保證系統(tǒng)能夠支持高并發(fā)數(shù)據(jù)訪問。下面結(jié)合實際應(yīng)用舉例說明。對于ERP系統(tǒng)的核心業(yè)務(wù)需求物料可用量管理??捎昧坑涗浳锪显谝欢〞r間的預(yù)計可用庫存量??捎昧孔鳛镋RP系統(tǒng)的核心共享數(shù)據(jù),其業(yè)務(wù)場景較多,大量操作單據(jù)事務(wù)會導(dǎo)致系統(tǒng)可用量更新。例如銷售訂單、生產(chǎn)訂單、采購訂單、出入庫單據(jù)在保存吋,都會更新系統(tǒng)的可用量。ERP系統(tǒng)的可用量需要支持高并發(fā)的事務(wù)更新,否則,會成為ERP系統(tǒng)的性能瓶頸,影響主要單據(jù)的用戶日常操作。采用上述緩存表優(yōu)化可用量更新的ERP系統(tǒng)處理如下I)建立與現(xiàn)有可用量表同構(gòu)的緩存表,并且在緩存表新增序列字段。2)計算單據(jù)操作對可用量影響的差異明細(xì),并持久化。舉例如下1.物料1,截至2012-9-7日累計預(yù)計入庫量30。得到如下表所示的基本表和緩存表??捎昧炕颈砜捎昧烤彺姹?br>
權(quán)利要求
1.一種共享數(shù)據(jù)更新裝置,其特征在于,包括 存儲單元,用于保存基本數(shù)據(jù)庫表和緩存數(shù)據(jù)庫表,所述基本數(shù)據(jù)庫表用于保存所述共享數(shù)據(jù)的匯總數(shù)據(jù),所述緩存數(shù)據(jù)庫表用于保存所述共享數(shù)據(jù)的差異數(shù)據(jù); 差異數(shù)據(jù)計算單元,計算本次更新操作引起所述共享數(shù)據(jù)的差異數(shù)據(jù); 數(shù)據(jù)持久化單元,采用獨立事務(wù)將所述差異數(shù)據(jù)插入至所述緩存數(shù)據(jù)庫表中; 數(shù)據(jù)校驗單元,查詢所述基本數(shù)據(jù)庫表和所述緩存數(shù)據(jù)庫表校驗所述差異數(shù)據(jù),根據(jù)校驗結(jié)果確定是否提交所述獨立事務(wù)。
2.根據(jù)權(quán)利要求1所述的共享數(shù)據(jù)更新裝置,其特征在于,數(shù)據(jù)持久化單元包括序列生成子單元,為所述本次更新操作引起的所述差異數(shù)據(jù)生成唯一緩存表遞增序列,根據(jù)所述獨立事務(wù)的發(fā)生時間確定所述唯一緩存表遞增序列的大小。
3.根據(jù)權(quán)利要求2所述的共享數(shù)據(jù)更新裝置,其特征在于,所述數(shù)據(jù)校驗單元還用于在校驗所述差異數(shù)據(jù)時,首先校驗所述唯一緩存表遞增序列小于等于當(dāng)前序列值的差異數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的共享數(shù)據(jù)更新裝置,其特征在于,所述數(shù)據(jù)校驗單元還用于在所述校驗結(jié)果為通過時,提交所述獨立事務(wù),在所述校驗結(jié)果為未通過時,回滾所述獨立事務(wù)。
5.根據(jù)權(quán)利要求1至4中任一項所述的共享數(shù)據(jù)更新裝置,其特征在于,還包括數(shù)據(jù)查詢單元,用于對所述緩存數(shù)據(jù)庫表和所述基本數(shù)據(jù)庫表進(jìn)行查詢并定期將所述緩存數(shù)據(jù)庫表的數(shù)據(jù)匯總至所述基本數(shù)據(jù)庫表。
6.一種共享數(shù)據(jù)更新方法,其特征在于,包括以下步驟 步驟402,將所述共享數(shù)據(jù)的匯總數(shù)據(jù)保存于基本數(shù)據(jù)庫表中,以及將所述共享數(shù)據(jù)的差異數(shù)據(jù)保存于緩存數(shù)據(jù)庫表中; 步驟404,計算本次更新操作引起所述共享數(shù)據(jù)的差異數(shù)據(jù)并采用獨立事務(wù)將所述差異數(shù)據(jù)插入至所述緩存數(shù)據(jù)庫表中; 步驟406,查詢所述基本數(shù)據(jù)庫表和所述緩存數(shù)據(jù)庫表校驗所述差異數(shù)據(jù); 步驟408,根據(jù)校驗結(jié)果確定是否提交所述獨立事務(wù)。
7.根據(jù)權(quán)利要求6所述的共享數(shù)據(jù)更新方法,其特征在于,所述步驟404還包括為所述本次更新操作引起的所述差異數(shù)據(jù)生成唯一緩存表遞增序列,根據(jù)所述獨立事務(wù)的發(fā)生時間確定所述唯一緩存表遞增序列的大小。
8.根據(jù)權(quán)利要求7所述的共享數(shù)據(jù)更新方法,其特征在于,所述步驟406還包括在校驗所述差異數(shù)據(jù)時,首先校驗所述唯一緩存表遞增序列小于等于當(dāng)前序列值的差異數(shù)據(jù)。
9.根據(jù)權(quán)利要求6所述的共享數(shù)據(jù)更新方法,其特征在于,在所述校驗結(jié)果為通過時,提交所述獨立事務(wù),在所述校驗結(jié)果為未通過時,回滾所述獨立事務(wù)。
10.根據(jù)權(quán)利要求6至9中任一項所述的共享數(shù)據(jù)更新方法,其特征在于,所述步驟408還包括,定期將所述緩存數(shù)據(jù)庫表的數(shù)據(jù)匯總至所述基本數(shù)據(jù)庫表。
全文摘要
本發(fā)明提供了一種共享數(shù)據(jù)更新裝置,包括存儲單元,用于保存基本數(shù)據(jù)庫表和緩存數(shù)據(jù)庫表,基本數(shù)據(jù)庫表用于保存共享數(shù)據(jù)的匯總數(shù)據(jù),緩存數(shù)據(jù)庫表用于保存共享數(shù)據(jù)的差異數(shù)據(jù);差異數(shù)據(jù)計算單元,計算本次更新操作引起共享數(shù)據(jù)的差異數(shù)據(jù);數(shù)據(jù)持久化單元,采用獨立事務(wù)將差異數(shù)據(jù)插入至緩存數(shù)據(jù)庫表中;數(shù)據(jù)校驗單元,查詢基本數(shù)據(jù)庫表和緩存數(shù)據(jù)庫表校驗差異數(shù)據(jù),根據(jù)校驗結(jié)果確定是否提交獨立事務(wù)。本發(fā)明還提供了一種共享數(shù)據(jù)更新方法。根據(jù)本發(fā)明的技術(shù)方案,能夠在保證數(shù)據(jù)更新正確性的前提下,消除數(shù)據(jù)更新及校驗過程的加鎖處理,從而提高系統(tǒng)支持的并發(fā)度。
文檔編號G06F17/30GK103020149SQ201210479818
公開日2013年4月3日 申請日期2012年11月22日 優(yōu)先權(quán)日2012年11月22日
發(fā)明者陳倪娜 申請人:用友軟件股份有限公司