TWI774643B - 資料庫操作方法及裝置 - Google Patents
資料庫操作方法及裝置 Download PDFInfo
- Publication number
- TWI774643B TWI774643B TW105118405A TW105118405A TWI774643B TW I774643 B TWI774643 B TW I774643B TW 105118405 A TW105118405 A TW 105118405A TW 105118405 A TW105118405 A TW 105118405A TW I774643 B TWI774643 B TW I774643B
- Authority
- TW
- Taiwan
- Prior art keywords
- executed
- transaction
- target data
- database
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Vehicle Body Suspensions (AREA)
Abstract
本申請提供一種資料庫操作方法及裝置。方法包括:獲取對待執行事務進行預測執行時產生的預測執行資料,預測執行資料包括待執行事務所需的目標資料的主鍵值以及目標資料在預測執行時的取值;根據目標資料的主鍵值,從待執行事務對應的目標分庫中加載目標資料的當前取值;在目標資料的當前取值與目標資料在預測執行時的取值不相同時,判斷目標資料的當前取值是否影響待執行事務的業務邏輯;若目標資料的當前取值不影響待執行事務的業務邏輯,將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上。本申請可以節約多版本並行控制的儲存開銷,減少資料庫所需的磁碟容量。
Description
本申請係關於資料庫技術領域,尤其關於一種資料庫操作方法及裝置。
單機資料庫能夠方便的滿足用戶對於關係查詢類的需求,是目前業務應用中最常使用的資料庫類型。然而,對於很多應用而言,單機資料庫最終都會碰到單機性能上的瓶頸,例如在每秒事務處理量(Transaction Per Second,TPS)、每秒查詢量(Query Per Second,QPS)、記憶體容量、磁碟容量等一系列系統資源上會碰到各類限制。分散式資料庫就是為解決這個問題而誕生的,將原來單機資料庫中的資料分散儲存到多個透過網路連接的資料儲存節點上,以獲取更大的儲存容量和更高的並行訪問量。
在分散式資料庫系統中,當運行一個涉及多個分庫的事務時,一個分庫可能需要從別的分庫上獲取資料。由於在分散式資料庫系統中各分庫是異步運行的,運行速度有快有慢,所以當一個運行慢的分庫向一個運行快的分庫獲取所需資料時,為了保證運行慢的分庫能夠從運行快的分
庫上獲取到所需的資料,一般會採用多版本並行控制(Multi-Version Concurrency Control,MVCC)機制。對於同一資料,MVCC機制會針對每批涉及該資料的事務分別在分庫上記錄相應版本的資料,從而讓運行慢的分庫能夠從運行快的分庫上讀取相應版本的資料。
但是,MVCC機制會增加資料庫的儲存開銷。舉例說明,在分散式資料庫系統中,處理速度為每秒鐘100批事務,假設某個分庫因為故障延誤了10分鐘,則其他分庫上需要保存10×60×100=60000個資料版本,這會占用分庫上很大磁碟容量。
本申請的多個態樣提供一種資料庫操作方法及裝置,用以節約多版本並行控制的儲存開銷,減少資料庫所需的磁碟容量。
本申請的一方面,提供一種資料庫操作方法,包括:獲取對待執行事務進行預測執行時產生的預測執行資料,所述預測執行資料包括所述待執行事務所需的目標資料的主鍵值以及所述目標資料在預測執行時的取值;根據所述目標資料的主鍵值,從所述待執行事務對應的目標分庫中加載所述目標資料的當前取值;在所述目標資料的當前取值與所述目標資料在預測執行時的取值不相同時,判斷所述目標資料的當前取值是否影響所述待執行事務的業務邏輯;
若所述目標資料的當前取值不影響所述待執行事務的業務邏輯,將所述目標資料的當前取值作為所述待執行事務對應的版本資料記錄在所述目標分庫上。
本申請的另一方面,提供一種資料庫操作裝置,包括:獲取模組,用於獲取對待執行事務進行預測執行時產生的預測執行資料,所述預測執行資料包括所述待執行事務所需的目標資料的主鍵值以及所述目標資料在預測執行時的取值;加載模組,用於根據所述目標資料的主鍵值,從所述待執行事務對應的目標分庫中加載所述目標資料的當前取值;判斷模組,用於在所述目標資料的當前取值與所述目標資料在預測執行時的取值不相同時,判斷所述目標資料的當前取值是否影響所述待執行事務的業務邏輯;版本資料處理模組,用於在所述目標資料的當前取值不影響所述待執行事務的業務邏輯時,將所述目標資料的當前取值作為所述待執行事務對應的版本資料記錄在所述目標分庫上。
在本申請中,預先對待執行事務進行預測執行,預先獲得待執行事務所需的目標資料的主鍵值以及該目標資料在預測執行時的取值,在待執行事務的實際執行過程中,將目標資料在預測執行時的取值與目標資料的當前取值進行比較,只有在目標資料存在衝突但目標資料的當前取值
又不影響待執行事務的業務邏輯的情況下,才將目標資料的當前取值作為待執行事務對應的版本資料記錄在分庫上。本申請一方面實現了記錄多版本資料的目的,有利於解決分散式資料庫系統中分庫之間相互讀取資料時無法讀取相應版本資料的問題,另一方面,只有在資料存在衝突且還要正常執行待執行事務的情況下才記錄版本資料,有利於減少所記錄的資料量,節約儲存開銷,減少資料庫所需的磁碟容量。
10‧‧‧應用伺服器
20‧‧‧資料庫
30‧‧‧資料庫預測執行裝置
41‧‧‧獲取模組
42‧‧‧加載模組
43‧‧‧判斷模組
44‧‧‧版本資料處理模組
45‧‧‧事務執行模組
46‧‧‧預測執行模組
為了更清楚地說明本申請實施例中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本申請的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為現有技術中資料庫應用系統的部署圖;圖2為本申請一實施例提供的資料庫應用系統的部署圖;圖3為本申請一實施例提供的資料庫操作方法的流程示意圖;圖4為本申請另一實施例提供的資料庫操作裝置的結構示意圖;圖5為本申請又一實施例提供的資料庫操作裝置的結構示意圖。
為使本申請實施例的目的、技術方案和優點更加清楚,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本申請保護的範圍。
圖1為現有技術中一種資料庫應用系統的部署圖。如圖1所示,該系統包括:應用伺服器10和至少兩個資料庫20。至少兩個資料庫20構成一分散式資料庫系統,每個資料庫20作為該分散式資料庫系統中的一個分庫。在分散式資料庫系統中,當運行一個涉及多個分庫的事務時,一個分庫可能需要從別的分庫上獲取資料。由於在分散式資料庫系統中各分庫是異步運行的,運行速度有快有慢,所以當一個運行慢的分庫向一個運行快的分庫獲取所需資料時,為了保證運行慢的分庫能夠從運行快的分庫上獲取到所需的資料,一般會採用MVCC機制,即對於同一資料,MVCC機制會針對每批涉及該資料的事務分別在分庫上記錄相應版本的資料,從而讓運行慢的分庫能夠從運行快的分庫上讀取相應版本的資料。
但是,MVCC機制會增加資料庫的儲存開銷,記錄的多版本資料會占用分庫上很大磁碟容量。
針對現有分散式資料庫存在的缺陷,本申請提供一種資料庫操作方法,主要原理是:預先對待執行事務進行預測執行,預先獲得待執行事務所需的目標資料的主鍵值以及該目標資料在預測執行時的取值,在待執行事務的實際執行過程中,將目標資料在預測執行時的取值與目標資料的當前取值進行比較,只有在目標資料存在衝突但其當前取值又不影響待執行事務的業務邏輯的情況下,才將目標資料的當前取值作為待執行事務對應的版本資料記錄在分庫上;而在其它情況下,則禁止在分庫上為待執行事務記錄相應的版本資料。這樣不僅實現了記錄多版本資料的目的,有利於解決分散式資料庫系統中分庫之間相互讀取資料時無法讀取相應版本資料的問題,而且只有在資料存在衝突且不影響待執行事務的業務邏輯的情況下才記錄版本資料,減少所記錄的版本資料,節約儲存開銷,有利於減少資料庫所需的磁碟容量。
為了實現對待執行事務進行預測執行,本申請提供一種新的資料庫應用系統,如圖2所示。該系統在應用伺服器10和至少兩個資料庫20之間增加資料庫預測執行裝置30。資料庫預測執行裝置30用以預先對待執行事務進行預測執行,提前獲得該執行事務中需要實際執行的資料庫操作指令,實現執行路徑的預測,預先獲得待執行事務所需的目標資料的主鍵值以及該目標資料在預測執行時的取值等預測執行資料。
另外,本系統中的資料庫預測執行裝置30不僅可以
對待執行事務進行預測執行,而且可以根據預測執行得到的資料庫操作指令和預測執行資料控制資料庫20實際執行待執行事務。在圖1所示系統中,當需要以事務方式對資料庫20進行訪問時,應用伺服器10執行事務邏輯,依次將事務中的資料庫操作指令作用於資料庫20上,這種事務執行方式的效率較低,事務吞吐量較低。與圖1所示系統中的資料庫執行方式相比,圖2所示系統提供的資料庫執行方式有利於提高事務執行效率,增大事務吞吐量。事務吞吐量是指單位時間內處理事務的數量。
值得說明的是,資料庫預測執行裝置30實際上是一種邏輯處理裝置,其可以單獨部署,位於應用伺服器10和資料庫20之間,也可以部署於應用伺服器10一端實現,或者也可以部署於資料庫20一端實現。
由於本申請提供的資料庫操作方法需要基於對待執行事務進行預測執行產生的預測執行資料,因此在介紹本申請提供的資料庫操作方法之前,首先對資料庫預測執行裝置對待執行事務進行預測執行的過程進行詳細介紹。
資料庫預測執行裝置對待執行事務進行預測執行的過程具體如下:
資料庫預測執行裝置在應用伺服器執行待執行事務的過程中,依次獲取應用伺服器執行到的待執行事務中的資料庫操作指令;對所獲取的資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料
庫操作指令以及預測執行產生的預測執行資料。
首先說明,本實施例中的待執行事務主要包括用於對資料庫進行操作的操作指令,除資料庫操作指令之外還包括一些用於控制目標事務執行狀態的控制指令,例如事務開始指令、事務提交指令、事務轉返(rollback)指令等。這些指令實際上是由資料庫語言編寫的語句。根據資料庫語言的不同,這些指令可以是不同語言編寫的語句。舉例說明,若採用SQL,則上述資料庫操作指令和控制指令實際上是一系列的SQL語句。
在上述預測執行過程中,應用伺服器控制整個待執行事務的執行邏輯,可以按照現有方式執行待執行事務。資料庫預測執行裝置在應用伺服器執行待執行事務的過程中,依次獲取應用伺服器執行到的待執行事務中的資料庫操作指令。
在一可選實施方式中,應用伺服器按照現有方式向待執行事務對應的目標分庫發送資料庫操作指令,以實現對目標分庫的訪問。資料庫預測執行裝置可以對應用伺服器與目標分庫之間的通信進行監控,以攔截應用伺服器發往目標分庫的資料庫操作指令。為便於描述和區分,將本實施例涉及的待執行事務對應的分庫稱為目標分庫,該目標分庫是分散式資料庫系統中的一個資料庫。
在另一可選實施方式中,對應用伺服器的處理邏輯進行稍微修改,將原來向待執行事務對應的目標分庫發送資料庫操作指令的邏輯改為向資料庫預測執行裝置發送。基
於此,資料庫預測執行裝置可以接收應用伺服器主動下發的資料庫操作指令。
在此說明,若待執行事務是顯式事務,則待執行事務中的首個指令是事務開始指令,如開始事務(begin transaction),基於此,資料庫預測執行裝置在獲取應用伺服器執行到的資料庫操作指令之前,可以攔截應用伺服器發往目標分庫的待執行事務中的事務開始指令,根據該事務開始指令,獲知需要執行待執行事務。或者,資料庫預測執行裝置在獲取應用伺服器執行到的資料庫操作指令之前,可以接收應用伺服器主動下發的待執行事務中的事務開始指令,根據該事務開始指令,獲知需要執行待執行事務。若待執行事務是隱式事務,則待執行事務的首個指令就是資料庫操作指令,不包括獲取事務開始指令的步驟。
資料庫預測執行裝置在獲取應用伺服器執行到的資料庫操作指令後,對獲取到的資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器,以供應用伺服器確定下一個需要執行的資料庫操作指令。其中,預測執行結果決定著待執行事務的執行路徑,這裏的執行路徑是指資料庫操作指令之間的跳轉邏輯。透過將預測執行結果返回給應用伺服器,從而達到由應用伺服器控制整個待執行事務的執行邏輯的目的。
另外,資料庫預測執行裝置還需要在本地記錄所獲取到的資料庫操作指令,以及記錄對該資料庫操作指令進行
預測執行產生的預測執行資料。所述預測執行資料主要是指對資料庫操作指令進行預測執行過程中的一些資料,例如待執行事務所需的目標資料的主鍵以及該目標資料在預測執行時的取值等。
例如,資料庫預測執行裝置可以在本地創建記憶體庫,將所獲取到的資料庫操作指令以及預測執行資料存入記憶體庫中。
其中,在本實施例中,資料庫操作指令的主要目的是訪問目標分庫中的資料,則可以模擬資料庫操作指令的資料環境,基於所模擬的資料環境對資料庫操作指令進行預測執行。基於此,一種對資料庫操作指令進行預測執行的方式可以是:在本地創建的記憶體庫中模擬資料庫操作指令所需的資料環境,基於所模擬的資料環境對資料庫操作指令進行預測執行。
進一步,一種在本地創建的記憶體庫中模擬資料庫操作指令的資料環境,基於所模擬的資料環境對資料庫操作指令進行預測執行的實施方式包括:將獲取到的資料庫操作指令拆分為一個讀指令和一個寫指令,將讀指令運行於真正的目標分庫上,即在目標分庫中執行該讀指令以獲取讀資料集(ReadSet),將讀資料集存入本地記憶體庫中,以模擬資料庫操作指令所需的資料環境。然後,將寫指令作用於記憶體庫上,以實現對資料庫操作指令的預測執行,即在記憶體庫中執行寫指令以修改讀資料集,例如對讀資料集中的有關資料進行更新
或查詢處理等。其中,執行寫指令以修改讀資料集可以產生結果資料集(affectRowInMemdb),該結果資料集包括預測執行結果。
在上述預測執行過程中,資料庫預測執行裝置可以在本地記錄讀指令所讀取的讀資料集以及執行寫指令產生的結果資料集。所述預測執行資料可以包括讀資料集和結果資料集,或者也可以包括讀資料集和結果資料集中的部分資料,例如能夠對在資料庫中實際執行待執行事務產生有益效果的一些資料,例如待執行事務所需的目標資料的主鍵值以及該目標資料在預測執行時刻的取值等。
資料庫預測執行裝置對依次獲取到的資料庫操作指令分別執行上述預測操作,獲得各資料庫操作指令及其對應的預測執行資料儲存到記憶體庫中。
基於上述獲得的待執行事務的預測執行資料,可以按照以下實施例提供的流程對待執行事務進行實際執行。
圖3為本申請一實施例提供的資料庫操作方法的流程示意圖。如圖3所示,該方法包括:
301、獲取對待執行事務進行預測執行時產生的預測執行資料,該預測執行資料包括待執行事務所需的目標資料的主鍵值以及目標資料在預測執行時的取值。
302、根據目標資料的主鍵值,從待執行事務對應的目標分庫中加載目標資料的當前取值。
303、判斷目標資料的當前取值與目標資料在預測執行時的取值是否相同;若判斷結果為否,即目標資料的當
前取值與目標資料在預測執行時的取值不相同,則執行步驟304;若判斷結果為是,在可以執行步驟306。
304、判斷目標資料的當前取值是否影響待執行事務的業務邏輯;若判斷結果為否,即目標資料的當前取值不影響待執行事務的業務邏輯,則執行步驟305;若判斷結果為是,則執行步驟306。
305、將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上。
306、禁止將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上。
本實施例的提供的資料庫操作方法可由資料庫操作裝置來執行,該資料庫操作裝置實際上是一種邏輯處理裝置,其可以單獨部署,位於應用伺服器10和資料庫20之間,或者也可以部署於資料庫20一端實現,例如可以作為資料庫20上的執行進程實現。
另外,本實施例的資料庫操作裝置與資料庫預測執行裝置可以作為兩個獨立裝置實現,獨立部署,則上述對待執行事務的預測執行過程由資料庫預測執行裝置實現。或者,本實施例的資料庫操作裝置與資料庫預測執行裝置也可以作為一個裝置(例如資料庫操作裝置)實現,這意味著上述對待執行事務的預測執行過程可由資料庫操作裝置實現。
在一可選實施方式中,資料庫預測執行裝置還可以在獲取到待執行事務中的事務提交指令時,根據本地記錄的
資料庫操作指令以及預測執行資料,控制應用伺服器對應的目標分庫實際執行待執行事務。值得說明的是,資料庫預測執行裝置可以向資料庫操作裝置下發預測執行資料以及資料庫操作指令,以指示資料庫操作裝置在目標分庫上實際執行該待執行事務。對資料庫操作裝置來說,可以接收資料庫預測執行裝置下發的預測執行資料。另外,資料庫操作裝置還會接收資料庫預測執行裝置下發的資料庫操作指令,並根據接收到的預測執行資料以及資料庫操作指令,在目標分庫上實際執行該待執行事務。
在獲取預測執行資料之後,資料庫操作裝置可以根據預測執行資料中待執行事務所需的資料的主鍵值,從待執行事務對應的目標分庫中加載該目標資料的當前取值;然後,將所加載的目標資料的當前取值與預測執行資料中該目標資料在預測執行時的取值進行比較,判斷該目標資料的當前取值與該目標資料在預測執行時的取值是否相同。
若上述比較結果為目標資料的當前取值與該目標資料在預測執行時的取值不相同,說明資料出現衝突,於是進一步判斷該目標資料的當前取值是否影響待執行事務的業務邏輯,即根據該目標資料的當前取值,該待執行事務是否可以成功執行。
若上述判斷結果為目標資料的當前取值不影響待執行事務的業務邏輯,說明資料雖然存在衝突但不影響待執行事務的正常執行,為了降低事務轉返機率,可以正常執行該待執行事務。但是,由於目標資料不一致,所以可能出
現其他分庫從目標分庫獲取目標資料時無法獲取相應版本目標資料的問題,為此,本實施例需要為該待執行事務保存相應的版本資料,於是將該目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上,並根據目標資料的當前取值執行待執行事務,並根據待執行事務的執行結果更新目標分庫中該目標資料的當前取值。
進一步,若判斷出該目標資料的當前取值影響待執行業務的業務邏輯,說明該資料不僅出現衝突而且影響了待執行事務的業務邏輯,這個待執行事務需要轉返,因為該待執行事務需要轉返,所以其他分庫在執行到該待執行事務時也要轉返,因此拿到這個待執行事務對應版本資料已經沒有意義,顯然在目標分庫中記錄該待執行事務對應的版本資料也就毫無意義。因此,資料庫操作裝置在判斷出資料出現衝突且其當前取值影響待執行業務的業務邏輯時,禁止將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上,節約了儲存開銷,有利於減少目標分庫所需的磁碟容量。另外,資料庫操作裝置還需要將該待執行事務進行轉返。再者,由於不需要向目標分庫中寫入待執行事務對應的版本資料,並且因為未寫入所以也不需要執行相應的刪除操作,減少了與目標分庫之間的交互操作,有利於提高待執行事務的處理速度。
進一步,在上述判斷過程中,若判斷出目標資料的當前取值與目標資料在預測執行時的取值相同,則由於在預測執行時已經對該資料進行了記錄或保存,當待執行事務
出現錯誤時,可以透過預測執行時記錄的資料進行恢復,所以可以不用在目標分庫上再次對該資料進行記錄。因此,資料庫操作裝置在判斷出目標資料的當前取值與目標資料在預測執行時的取值相同時,禁止將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上,節約了儲存開銷,有利於減少目標分庫所需的磁碟容量。另外,資料庫操作裝置還需要根據目標資料的當前取值執行待執行事務,並根據待執行事務的執行結果更新目標分庫中目標資料的當前取值。再者,由於只需對目標分庫中目標資料的當前取值進行更新,而不需要向目標分庫中寫入待執行事務對應的版本資料,並且因為未寫入所以也不需要執行相應的刪除操作,減少了與目標分庫之間的交互操作,有利於提高待執行事務的處理速度。
在上述需要根據目標資料的當前取值執行待執行事務的情況下,資料庫操作裝置還可以獲取對待執行事務進行預測執行時確定的待執行事務中需要實際執行的資料庫操作指令。例如,資料庫操作裝置可以接收資料庫預測執行裝置下發的上述待執行事務中需要實際執行的資料庫操作指令。資料庫操作裝置具體根據待執行事務中需要實際執行的資料庫操作指令,對目標資料的當前取值進行處理,以獲得待執行事務的執行結果。這裏對目標資料的當前取值進行處理的方式視待執行事務的業務邏輯而定,例如在入帳情況下,可以是將該目標資料的當前取值增大50、30或100等;又例如,在減庫存情況下,可以將目標資
料的當前取值減少1、2或10等,等等。
以待執行事務為減庫存事務為例,在一種假設情況中,在減庫存事務的預測執行過程中讀取到的庫存量為10,而在減庫存事務的實際執行過程中讀取到庫存量的當前取值為10,由於庫存量並未發生變化,而且該庫存量已經在預測執行過程中被記錄或保存了,因此在減庫存事務的實際執行過程中可以不再為該減庫存事務記錄相應版本的庫存量,從而節約儲存開銷,減少與目標分庫之間的交互操作,提高了事務處理速度。
以待執行事務為減庫存事務為例,在一種假設情況中,在減庫存事務的預測執行過程中讀取到的庫存量為10,但在減庫存事務的實際執行過程中讀取到庫存量的當前取值為8。庫存量的當前取值(即8)與預測執行時的取值(即10)不相同,於是,進一步判斷庫存量的當前取值是否影響待執行事務的業務邏輯。一種假設為:待執行事務是購買1件商品,其業務邏輯為在庫存量大於或等於1時將庫存量減1,則由於庫存量的當前取值為8,不影響該待執行事務的業務邏輯,於是可以將該庫存量由8減去1變為7,同時將該庫存量8作為該減庫存事務的版本資料記錄在目標分庫中。另一種假設為:待執行事務是購買10件商品,其業務邏輯為在庫存量大於或等於10時將庫存量減10,則由於庫存量的當前取值為8,影響該減庫存事務的業務邏輯,這意味著該減庫存事務無法成功執行,需要轉返該減庫存事務,此時不需要在目標分庫上記
錄該減庫存事務對應的版本資料,有利於節約儲存開銷,減少目標分庫所需的磁碟容量,另外,由於不需要向目標分庫中寫入減庫存事務對應的庫存量,並且因為未寫入所以也不需要執行相應的刪除操作,減少了與目標分庫之間的交互操作,有利於提高減庫存事務的處理速度。
由上述可見,資料庫預測執行裝置與應用伺服器相互配合,在應用伺服器執行待執行事務的過程加入預測執行過程,預先獲得並記錄待執行事務需要執行的全部資料庫操作指令以及預測執行資料,為真實執行事務提供了條件,之後在根據記錄的資料庫操作指令以及預測執行資料實際執行該待執行事務時,可以提前獲取有關資料資訊並且可以減少指令之間的跳轉等,有利於提高執行效率,增大事務吞吐量。
另外,在資料庫操作裝置執行實際待執行事務的過程中,基於預測執行過程時產生的預測執行資料判斷資料是否出現衝突以及是否影響待執行事務的業務邏輯,進而只有在資料存在衝突且還要正常執行待執行事務的情況下才記錄版本資料,有利於減少所記錄的資料量,節約儲存開銷,減少資料庫所需的磁碟容量。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請並不受所描述的動作順序的限制,因為依據本申請,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所
描述的實施例均屬於較佳實施例,所涉及的動作和模組並不一定是本申請所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖4為本申請另一實施例提供的資料庫操作裝置的結構示意圖。如圖4所示,該裝置包括:獲取模組41、加載模組42、判斷模組43和版本資料處理模組44。
獲取模組41,用於獲取對待執行事務進行預測執行時產生的預測執行資料,該預測執行資料包括待執行事務所需的目標資料的主鍵值以及目標資料在預測執行時的取值。
加載模組42,用於根據獲取模組41獲取的目標資料的主鍵值,從待執行事務對應的目標分庫中加載目標資料的當前取值。
判斷模組43,用於在加載模組42加載的目標資料的當前取值與獲取模組41獲取的目標資料在預測執行時的取值不相同時,判斷目標資料的當前取值是否影響待執行事務的業務邏輯。
版本資料處理模組44,用於在判斷模組43判斷出目標資料的當前取值不影響待執行事務的業務邏輯時,將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上。
在一可選實施方式中,版本資料處理模組44還用
於:
在目標資料的當前取值與目標資料在預測執行時的取值相同時,禁止將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上。
在一可選實施方式中,如圖5所示,該資料庫操作裝置還包括:事務執行模組45。
事務執行模組45,用於在判斷模組43判斷出目標資料的當前取值不影響待執行事務的業務邏輯時,或者在目標資料的當前取值與目標資料在預測執行時的取值相同時,根據目標資料的當前取值執行待執行事務,並根據待執行事務的執行結果更新目標分庫中目標資料的當前取值。
可選的,獲取模組41除了用於獲取待執行事務的預測執行資料之外,還用於獲取對待執行事務進行預測執行時確定的待執行事務中需要實際執行的資料庫操作指令。例如,在對待執行事務的預測執行過程由不同於資料庫操作裝置的其它裝置實現的情況下,獲取模組41具體可用於接收對待執行事務進行預測執行的裝置下發的預測執行資料以及待執行事務中需要實際執行的資料庫操作指令。
基於上述,事務執行模組45具體可用於:根據待執行事務中需要實際執行的資料庫操作指令,對目標資料的當前取值進行處理,以獲得待執行事務的執行結果。
在一可選實施方式中,版本資料處理模組44還用於:
在判斷模組43判斷出目標資料的當前取值影響待執行事務的業務邏輯,則禁止將目標資料的當前取值作為待執行事務對應的版本資料記錄在目標分庫上,並將待執行事務轉返。
在一可選實施方式中,如圖5所示,該資料庫操作裝置還包括:預測執行模組46。
預測執行模組46,用於對待執行事務進行預測執行,以生成預測執行資料。
預測執行模組46具體用於:在應用伺服器執行待執行事務的過程中,依次獲取應用伺服器執行到的待執行事務中的資料庫操作指令;對所獲取的資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料庫操作指令以及預測執行產生的預測執行資料。
本實施例提供的資料庫操作裝置,在執行實際待執行事務的過程中,基於預測執行過程時產生的預測執行資料判斷資料是否出現衝突以及是否影響待執行事務的業務邏輯,進而只有在資料存在衝突且還要正常執行待執行事務的情況下才記錄版本資料,有利於減少所記錄的資料量,節約儲存開銷,減少資料庫所需的磁碟容量。
所屬領域的技術人員可以清楚地瞭解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以透過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是透過一些介面,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用硬體加軟體功能單元的形式實現。
上述以軟體功能單元的形式實現的集成的單元,可以儲存在一個電腦可讀取儲存媒體中。上述軟體功能單元儲存在一個儲存媒體中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或處理器(processor)執行本申請各個實施例所述方法的部分步
驟。而前述的儲存媒體包括:隨身碟、移動硬碟、唯讀記憶體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式代碼的媒體。
最後應說明的是:以上實施例僅用以說明本申請的技術方案,而非對其限制;儘管參照前述實施例對本申請進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本申請各實施例技術方案的精神和範圍。
Claims (10)
- 一種由資料庫操作裝置執行之資料庫操作方法,其特徵在於,包括:對待執行事務進行預測執行,以生成預測執行資料;獲取對待執行事務進行預測執行時產生的預測執行資料,該預測執行資料包括該待執行事務所需的目標資料的主鍵值以及該目標資料在預測執行時的取值;根據該目標資料的主鍵值,從該待執行事務對應的目標分庫中加載該目標資料的當前取值;在該目標資料的當前取值與該目標資料在預測執行時的取值相同時,禁止將該目標資料的該當前取值作為該待執行事務對應的版本資料記錄在該目標分庫上;在該目標資料的當前取值與該目標資料在預測執行時的取值不相同時,判斷該目標資料的當前取值是否影響該待執行事務的業務邏輯;若該目標資料的當前取值不影響該待執行事務的業務邏輯,將該目標資料的當前取值作為該待執行事務對應的版本資料記錄在該目標分庫上;以及若該目標資料的當前取值影響該待執行事務的業務邏輯,則禁止將該目標資料的當前取值作為該待執行事務對應的版本資料記錄在該目標分庫上,並將該待執行事務轉返(rollback)。
- 根據申請專利範圍第1項所述的方法,其中,還包括: 根據該目標資料的當前取值執行該待執行事務,並根據該待執行事務的執行結果更新該目標分庫中該目標資料的當前取值。
- 根據申請專利範圍第2項所述的方法,其中,還包括:獲取對該待執行事務進行預測執行時確定的該待執行事務中需要實際執行的資料庫操作指令;根據該目標資料的當前取值執行該待執行事務,包括:根據該待執行事務中需要實際執行的資料庫操作指令,對該目標資料的當前取值進行處理,以獲得該待執行事務的執行結果。
- 根據申請專利範圍第1項所述的方法,其中,獲取對待執行事務進行預測執行產生的預測執行資料之前,還包括:對該待執行事務進行預測執行,以生成該預測執行資料。
- 根據申請專利範圍第1項所述的方法,其中,獲取對待執行事務進行預測執行時產生的預測執行資料,包括:接收對該待執行事務進行預測執行的裝置下發的該預測執行資料。
- 一種資料庫操作裝置,其特徵在於,包括:預測執行模組,用於對待執行事務進行預測執行,以 生成預測執行資料;獲取模組,用於獲取對待執行事務進行預測執行時產生的預測執行資料,該預測執行資料包括該待執行事務所需的目標資料的主鍵值以及該目標資料在預測執行時的取值;加載模組,用於根據該目標資料的主鍵值,從該待執行事務對應的目標分庫中加載該目標資料的當前取值;判斷模組,用於在該目標資料的當前取值與該目標資料在預測執行時的取值不相同時,判斷該目標資料的當前取值是否影響該待執行事務的業務邏輯;版本資料處理模組,用於在該目標資料的當前取值不影響該待執行事務的業務邏輯時,將該目標資料的當前取值作為該待執行事務對應的版本資料記錄在該目標分庫上,其中,該版本資料處理模組還用於:在該目標資料的當前取值與該目標資料在預測執行時的取值相同時,禁止將該目標資料的當前取值作為該待執行事務對應的版本資料記錄在該目標分庫上,其中,該版本資料處理模組還用於:在該目標資料的當前取值影響該待執行事務的業務邏輯,則禁止將該目標資料的當前取值作為該待執行事務對應的版本資料記錄在該目標分庫上,並將該待執行事務轉返。
- 根據申請專利範圍第6項所述的裝置,其中,還包括: 事務執行模組,用於根據該目標資料的當前取值執行該待執行事務,並根據該待執行事務的執行結果更新該目標分庫中該目標資料的當前取值。
- 根據申請專利範圍第7項所述的裝置,其中,該獲取模組還用於:獲取對該待執行事務進行預測執行時確定的該待執行事務中需要實際執行的資料庫操作指令;該事務執行模組具體用於:根據該待執行事務中需要實際執行的資料庫操作指令,對該目標資料的當前取值進行處理,以獲得該待執行事務的執行結果。
- 根據申請專利範圍第6項所述的裝置,其中,還包括:預測執行模組,用於對該待執行事務進行預測執行,以生成該預測執行資料。
- 根據申請專利範圍第6項所述的裝置,其中,該獲取模組具體用於:接收對該待執行事務進行預測執行的裝置下發的該預測執行資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510897535.8 | 2015-12-08 | ||
CN201510897535.8A CN106855858B (zh) | 2015-12-08 | 2015-12-08 | 数据库操作方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201721471A TW201721471A (zh) | 2017-06-16 |
TWI774643B true TWI774643B (zh) | 2022-08-21 |
Family
ID=58799122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105118405A TWI774643B (zh) | 2015-12-08 | 2016-06-13 | 資料庫操作方法及裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170161353A1 (zh) |
CN (1) | CN106855858B (zh) |
TW (1) | TWI774643B (zh) |
WO (1) | WO2017100105A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110213357B (zh) * | 2019-05-22 | 2022-04-22 | 深圳壹账通智能科技有限公司 | 业务数据回退方法、装置、计算机设备和存储介质 |
CN110825752B (zh) * | 2019-10-16 | 2020-11-10 | 深圳巨杉数据库软件有限公司 | 基于无碎片回收的数据库多版本并发控制系统 |
CN111291021B (zh) * | 2020-01-21 | 2024-04-26 | 北京奇艺世纪科技有限公司 | 一种数据库管理方法、装置、电子设备及存储介质 |
CN111400360A (zh) * | 2020-02-12 | 2020-07-10 | 利姆斯(北京)区块链技术有限公司 | 基于区块链的标准管理方法、服务器和客户端 |
CN112231144A (zh) * | 2020-09-29 | 2021-01-15 | 上海艾融软件股份有限公司 | 一种数据处理方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102250A1 (en) * | 2000-08-04 | 2005-05-12 | Carr Richard W. | Automatic transaction management |
US20080178153A1 (en) * | 2003-06-09 | 2008-07-24 | International Business Machines Corporation | Maintaining Multiple Valid Concurrent Serialized Object Versions |
CN101876983A (zh) * | 2009-04-30 | 2010-11-03 | 国际商业机器公司 | 数据库分区方法与系统 |
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
TW201439792A (zh) * | 2013-01-29 | 2014-10-16 | Hon Hai Prec Ind Co Ltd | 資料庫訪問系統及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020165724A1 (en) * | 2001-02-07 | 2002-11-07 | Blankesteijn Bartus C. | Method and system for propagating data changes through data objects |
US7913234B2 (en) * | 2006-02-13 | 2011-03-22 | Research In Motion Limited | Execution of textually-defined instructions at a wireless communication device |
CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
US9304753B2 (en) * | 2009-06-30 | 2016-04-05 | Sap Se | Handling data access requests in computer program updates |
CN101699439B (zh) * | 2009-11-16 | 2011-12-28 | 中兴通讯股份有限公司 | 一种数据库的事务提交方法和装置 |
US20110231289A1 (en) * | 2010-03-18 | 2011-09-22 | Yi-Tsung Liu | Method and system for transaction of sport information |
US9794135B2 (en) * | 2013-11-11 | 2017-10-17 | Amazon Technologies, Inc. | Managed service for acquisition, storage and consumption of large-scale data streams |
-
2015
- 2015-12-08 CN CN201510897535.8A patent/CN106855858B/zh active Active
-
2016
- 2016-06-13 TW TW105118405A patent/TWI774643B/zh active
- 2016-12-02 US US15/367,259 patent/US20170161353A1/en not_active Abandoned
- 2016-12-03 WO PCT/US2016/064871 patent/WO2017100105A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102250A1 (en) * | 2000-08-04 | 2005-05-12 | Carr Richard W. | Automatic transaction management |
US20080178153A1 (en) * | 2003-06-09 | 2008-07-24 | International Business Machines Corporation | Maintaining Multiple Valid Concurrent Serialized Object Versions |
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
CN101876983A (zh) * | 2009-04-30 | 2010-11-03 | 国际商业机器公司 | 数据库分区方法与系统 |
TW201439792A (zh) * | 2013-01-29 | 2014-10-16 | Hon Hai Prec Ind Co Ltd | 資料庫訪問系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017100105A1 (en) | 2017-06-15 |
CN106855858A (zh) | 2017-06-16 |
CN106855858B (zh) | 2020-09-29 |
US20170161353A1 (en) | 2017-06-08 |
TW201721471A (zh) | 2017-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI774643B (zh) | 資料庫操作方法及裝置 | |
EP3401804B1 (en) | Adaptive query routing in a replicated database environment | |
US10572510B2 (en) | Distributed database transaction protocol | |
EP3413215B1 (en) | Dynamic snapshot isolation protocol selection | |
CN101390094B (zh) | 针对复制数据库的分布式冲突解决 | |
US11314719B2 (en) | Method for implementing change data capture in database management system | |
US20180218023A1 (en) | Database concurrency control through hash-bucket latching | |
US11928089B2 (en) | Data processing method and device for distributed database, storage medium, and electronic device | |
US20190146886A1 (en) | Database system recovery using preliminary and final slave node replay positions | |
US9075858B2 (en) | Non-disruptive data movement and node rebalancing in extreme OLTP environments | |
JP6795259B2 (ja) | データベーストランザクションを最適化するための方法および装置 | |
WO2017107811A1 (zh) | 数据库操作方法及装置 | |
CN106897123B (zh) | 数据库操作方法及装置 | |
CN111949673B (zh) | 基于Hbase存储的分布式悲观锁及其实现方法 | |
CN110955719A (zh) | 一种数据存取处理设备、系统和方法 | |
WO2017041637A1 (zh) | 数据库操作方法及装置 | |
TWI725110B (zh) | 資料庫操作方法及裝置 | |
TWI805544B (zh) | 資料庫操作方法及裝置 | |
Zhu | Towards Automated Online Schema Evolution | |
TWI735512B (zh) | 資料庫操作方法及裝置 | |
WO2024109415A1 (zh) | 一种数据库重分布的方法、系统、设备集群及存储介质 | |
TWI790991B (zh) | 資料庫操作方法及裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |