本發(fā)明涉及數據處理領域,特別是涉及一種日志分片方法和裝置。
背景技術:
::數據庫一般采用主從的架構模式,其中包括主數據庫服務器和從數據庫服務器。主數據庫服務器用于對外提供服務,從數據庫服務器作為主數據庫服務器的備份,當主數據庫服務器宕機時,從數據庫服務器可以繼續(xù)提供原來主數據庫服務器所提供的服務。由此提高數據庫的可用性。用戶在使用數據庫的過程中,可以對數據庫中的數據進行操作,其中可能會造成數據改動,所述數據改動可以包括對數據的刪除、增加、替換等會造成數據發(fā)生變化的操作。主數據庫服務器為了記錄這些數據改動,針對一個數據改動會生成一個對應的數據日志,以記錄被改動的數據對象和這個數據改動的改動內容。在主數據庫服務器宕機時,從數據庫服務器為了能夠實現(xiàn)繼續(xù)為用戶提供原來主數據庫服務器所提供的服務,需要持續(xù)從主數據庫服務器接收主數據庫服務器記錄的數據日志,并利用這些數據日志進行日志回放,實現(xiàn)從數據庫服務器中的數據庫數據和主數據庫服務器的數據庫數據之間的同步。在主數據庫服務器的用戶連接數較多時,主數據庫服務器會產生大量的數據日志,如果從數據庫服務器的日志回放速度過慢,會導致從主數據庫服務器接收的數據日志不能及時被日志回放,造成數據日志在從數據庫服務器處的堆積,若果這時主數據庫服務器宕機,從數據庫服務器無法馬上接替主數據庫服務器,從數據庫服務器只能在將堆積的數據日志都完成日志回放后,從數據庫服務器才能夠開始為用戶提供服務,影響了用戶體驗。從數據庫服務器為了保證能夠及時的將從主數據庫服務器接收到的數據日志完成日志回放,需要對數據日志進行并行的日志回放,提高日志回放效率。為了能夠實現(xiàn)對數據日志進行并行的日志回放,從數據庫服務器需要將接收到的數據日志進行日志分片,以得到多個分片。從數據庫服務器可以同 時對多個分片都進行日志回放,從而在從數據庫服務器上實現(xiàn)并行的日志回放功能。如何能夠高效的對日志進行日志分片是目前亟需解決的問題。技術實現(xiàn)要素:為了解決上述技術問題,本發(fā)明提供了一種日志分片方法和裝置,使得日志分片后各個分片中的數據日志數量較為平衡,從而提高了從數據庫服務器進行日志回放的效率。本發(fā)明實施例公開了如下技術方案:一種日志分片方法,所述方法包括:從數據庫服務器接收主數據庫服務器發(fā)送的第一日志,所述第一日志攜帶對應的數據表標識和匹配標識;所述從數據庫服務器根據所述第一日志的數據表標識確定匹配樹;所述從數據庫服務器根據所述匹配樹對所述第一日志進行日志分片??蛇x的,還包括:根據目標表集合獲取對應的所述匹配樹,所述目標表集合包括數據庫中的至少一個數據表,所述匹配樹的樹結構包括一個根節(jié)點和所述根節(jié)點的至少一層子節(jié)點,所述根節(jié)點用于匹配的匹配值的范圍根據多個目標日志攜帶的匹配標識的范圍確定,所述多個目標日志為對應所述至少一個數據表的數據日志,所述第一日志為所述多個目標日志中的一個目標日志;處于一層的子節(jié)點中,各個子節(jié)點用于匹配的子匹配值的總范圍與所述根節(jié)點的匹配值的范圍相同,通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值,所述匹配樹的樹結構最下一層的一個子節(jié)點對應一個分片。可選的,所述從數據庫服務器根據所述匹配樹對所述第一日志進行日志分片,其中包括:所述從數據庫服務器將所述第一日志的匹配標識與所述匹配樹進行匹配,根據所述匹配樹的樹結構確定出與所述第一日志的匹配標識相匹配的目標子節(jié)點,所述第一日志的匹配標識處于所述目標子節(jié)點的子匹配值的范圍 中,所述目標子節(jié)點為所述樹結構最下一層中的一個子節(jié)點;所述從數據庫服務器將所述第一日志分到所述目標子節(jié)點對應的分片??蛇x的,所述第一日志的匹配標識具體用于標識第一數據記錄,所述第一數據記錄為所述第一日志對應的數據表中的一條數據記錄。可選的,所述第一日志的匹配標識為所述第一數據記錄的主鍵值??蛇x的,所述匹配樹包括用于描述所述至少一個數據表中一個數據表的平衡樹的一部分樹結構;相應的,所述匹配樹的根節(jié)點為所述平衡樹的根節(jié)點,所述至少一層子節(jié)點為所述平衡樹的至少一層枝節(jié)點。可選的,在進行所述日志分片的過程中,若分到一個分片中的目標日志超出預設閾值,增加所述匹配樹包括所述平衡樹的枝節(jié)點的層數,由此增加通過所述日志分片后得到的分片的數量??蛇x的,所述第一日志還包括日志標識和對所述第一日志對應的數據表的數據改動,所述方法還包括:所述從數據庫服務器對通過所述日志分片得到的多個分片進行并行的日志回放,其中,所述從數據庫服務器根據所述第一日志的日志標識和數據改動,對所述第一日志進行日志回放。一種日志分片裝置,所述裝置包括:接收單元,用于接收主數據庫服務器發(fā)送的第一日志,所述第一日志攜帶對應的數據表標識和匹配標識;確定單元,用于根據所述第一日志的數據表標識確定匹配樹;分片單元,用于根據所述匹配樹對所述第一日志進行日志分片。可選的,還包括:匹配樹設置單元,用于根據目標表集合獲取對應的匹配樹,所述目標表集合包括數據庫中的至少一個數據表,所述匹配樹的樹結構包括一個根節(jié)點和所述根節(jié)點的至少一層子節(jié)點,所述根節(jié)點用于匹配的匹配值的范圍根據多個目標日志攜帶的匹配標識的范圍確定,所述多個目標日志為對應所述至少一個數據表的數據日志,所述第一日志為所述多個目標日志中的一個目標日志,處于一層的子節(jié)點中,各個子節(jié)點用于匹配的子匹配值的總范圍與所述根節(jié)點的匹配值的范圍相同,通過設置所述匹配樹的樹結構最下一層子節(jié) 點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值,所述匹配樹的樹結構最下一層的一個子節(jié)點對應一個分片??蛇x的,所述分片單元具體用于將所述第一日志的匹配標識與所述匹配樹進行匹配,根據所述匹配樹的樹結構確定出與所述第一日志的匹配標識相匹配的目標子節(jié)點,所述第一日志的匹配標識處于所述目標子節(jié)點的子匹配值的范圍中,所述目標子節(jié)點為所述樹結構最下一層中的一個子節(jié)點;將所述第一日志分到所述目標子節(jié)點對應的分片??蛇x的,所述第一日志的匹配標識具體用于標識第一數據記錄,所述第一數據記錄為所述第一日志對應的數據表中的一條數據記錄??蛇x的,所述第一日志的匹配標識為所述第一數據記錄的主鍵值。可選的,所述匹配樹包括用于描述所述至少一個數據表中一個數據表的平衡樹的一部分樹結構;相應的,所述匹配樹的根節(jié)點為所述平衡樹的根節(jié)點,所述至少一層子節(jié)點為所述平衡樹的至少一層枝節(jié)點。可選的,在進行所述日志分片的過程中,若分到一個分片中的目標日志超出預設閾值,增加所述匹配樹包括所述平衡樹的枝節(jié)點的層數,由此增加通過所述日志分片后得到的分片的數量。可選的,所述第一日志還包括日志標識和對所述第一日志對應的數據表的數據改動,還包括:回放單元,用于對通過所述日志分片得到的多個分片進行并行的日志回放,其中,所述從數據庫服務器根據所述第一日志的日志標識和數據改動,對所述第一日志進行日志回放。由上述技術方案可以看出,從數據庫服務器接收主數據庫服務器發(fā)送的第一日志,根據所述第一日志的數據表標識確定所述匹配樹,根據所述匹配樹對所述第一日志進行日志分片。通過設置的匹配樹,可以有效的利用匹配樹的樹結構對日志進行日志分片,分片后的日志并發(fā)度高,提高了進行日志回放的效率。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實 施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為一種數據庫架構示意圖;圖2為本發(fā)明實施例提供的一種匹配樹的使用示意圖;圖3為本發(fā)明實施例提供的一種日志分片方法的方法流程圖;圖4為本發(fā)明實施例提供的一種日志分片裝置的裝置結構圖。具體實施方式為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。數據庫一般采用主從的架構模式,其中包括主數據庫服務器和從數據庫服務器??梢詤⒁妶D1,圖1為一種數據庫架構示意圖。圖1左側的為主數據庫服務器,右側的為從數據庫服務器。主數據庫服務器用于對外提供服務,從數據庫服務器作為主數據庫服務器的備份,當主數據庫服務器宕機時,從數據庫服務器可以繼續(xù)提供原來主數據庫服務器所提供的服務。由此提高數據庫的可用性。為了在主數據庫服務器宕機時,從數據庫服務器能夠快速的實現(xiàn)繼續(xù)為用戶提供原來主數據庫服務器所提供的服務,主、從數據庫服務器之間需要實時保持數據同步。如圖1所示,從數據庫服務器接收主數據庫服務器發(fā)送的數據日志,通過日志回放實現(xiàn)與主數據庫服務器的數據同步。需要注意的是,假設圖1左側的數據庫服務器為服務器a,圖1右側的數據庫服務器為服務器b,在服務器b接替服務器a繼續(xù)為用戶提供服務的過程中,服務器b將從從數據庫服務器變成主數據庫服務器,之后服務器b可以配置有相應的從數據庫服務器,服務器b可以執(zhí)行如原主數據庫服務器的操作,將生成的數據日志發(fā)送給服務器b的從數據庫服務器。服務器b的從數據庫服務器可以是重新恢復工作能力的服務器a,也可以是其他數據庫服務器,這里不做限定。從數據庫服務器為了能夠快速有效的進行日志回放,需要將接收到的數據日志先日志分片,再對日志分片得到的多個分片進行并行的日志回放。為此,本發(fā)明實施例提供了一種日志分片方法和裝置,從數據庫服務器接收主數據庫服務器發(fā)送的第一日志,根據所述第一日志的數據表標識確定所述匹配樹,根據所述匹配樹對所述第一日志進行日志分片。通過設置的匹配樹,可以有效的利用匹配樹的樹結構對日志進行日志分片,分片后的日志并發(fā)度高,提高了進行日志回放的效率。目前傳統(tǒng)的日志分片方法主要是mysql(一種關系型數據庫管理系統(tǒng))官方版本使用的日志分片方法,以數據庫為粒度,對數據日志進行分片。當數據集中在一個或少數幾個數據庫時,會導致大部分的數據日志都是針對這幾個數據庫生成的。因此在從數據庫服務器使用這種傳統(tǒng)分片方法進行日志分片時,會導致數據日志集中在幾個分片中,各個分片中分到的數據日志數量差異太大。例如這幾個數據庫的分片中分到的數據日志過多,其他分片中分到的數據日志過少。那么在從數據庫服務器進行并行的日志回放時,并發(fā)度過低,對日志回放的效率提升不高。也就是說,如何能夠平衡的對數據日志進行分片,使得得到的各個分片中的數據日志數量相差不大,是目前希望達到的分片效果。針對這種分片不平衡的問題,在本發(fā)明實施例中,通過設置與目標表集合中數據表對應的匹配樹,并使用所述匹配樹作為對目標日志進行日志分片的依據,在設置匹配樹時,通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值。在具體的分片過程中,所述從數據庫服務器針對接收的第一日志,通過第一日志的數據表標識確定出對應的所述匹配樹,匹配所述第一日志的匹配標識和所述匹配樹中子節(jié)點的子匹配值得到目標子節(jié)點,將所述第一日志分到所述目標子節(jié)點對應的分片。由于所述預設差值一般設置較小,由此得到的各個分片中包括目標日志的數量差別不大,較為平衡。那么在從數據庫服務器進行并行的日志回放時,并發(fā)度高,提高了進行日志回放的效率。本發(fā)明實施例提供的日志分片方法,將利用預設設置的匹配樹,通過匹 配樹的樹結構最后一層子節(jié)點的子匹配值的合理設置,使得匹配到該層各個子節(jié)點的數據日志的數量相差不大,以保持各個分片中數據日志的平衡。數據庫中多以表(table)的形式存儲數據,本發(fā)明實施例中的數據表可以理解為數據庫中的表。本發(fā)明實施例中的匹配樹是根據表集合獲得的。可以理解為,在本發(fā)明實施例中,匹配樹與表集合中數據表的標識相關,所述從數據庫服務器可以根據數據日志攜帶的數據表標識調用該數據表標識所對應的匹配樹,使用該匹配樹對該數據日志進行日志分片。也就是說,針對處于不同表集合中數據表,所述從數據庫服務器所調用的用于日志分片的匹配樹可以不同。若一個表集合中包含多個數據表,那么針對該多個數據表,所述從數據庫服務器可以調用相同的匹配樹作為日志分片的依據。針對一個目標表集合獲取的匹配樹,所述匹配樹的樹結構包括一個根節(jié)點和所述根節(jié)點的至少一層子節(jié)點,所述根節(jié)點用于匹配的匹配值的范圍根據多個目標日志攜帶的匹配標識的范圍確定,所述多個目標日志為對應所述至少一個數據表的數據日志,需要注意的是,下文中將會提到的第一日志為所述多個目標日志中的一個目標日志。處于一層的子節(jié)點中,各個子節(jié)點用于匹配的子匹配值的總范圍與所述根節(jié)點的匹配值的范圍相同,通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值,最下一層的一個子節(jié)點對應一個分片。舉例說明,所述根節(jié)點的匹配值的范圍一般是可以涵蓋所有目標日志的匹配標識,也就是說,匹配值的數值類型和匹配標識的數值類型是相關的。針對同一個目標表集合,若設定所述目標日志攜帶的匹配標識為標識類型a,那么所述根節(jié)點的匹配值的數值類型將與標識類型a的數值類型相關,若設定所述目標日志攜帶的匹配標識為標識類型b,那么所述根節(jié)點的匹配值的數值類型將與標識類型b的數值類型相關。相應的,子節(jié)點的子匹配值的數值類型與根節(jié)點的匹配值的數值類型相同。而且,每一層中,各個子節(jié)點用于匹配的子匹配值的范圍之間沒有重疊,這樣就不會出現(xiàn)一個目標日志通過匹配,其匹配標識與兩個子節(jié)點均能匹配的情況。這里所述的通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,本發(fā)明實施例提供了至少兩種方式。第一種方式,可以通過經驗值,自行架構出一個匹配樹,這種方式中,自行架構出的匹配樹可以在根節(jié)點下只設置一層子節(jié)點,這一層子節(jié)點即為最下一層的子節(jié)點。各個子節(jié)點的子匹配值的范圍可以隨著所述從數據庫服務器的日志分布結果進行動態(tài)的調整,以達到各個分片中的目標日志的數量之間差值滿足小于預設差值的條件。動態(tài)調整可以是,當分到一個分片的目標日志數量明顯多于其他分片中目標日志的數量時,可以相應的縮小這個分片對應子節(jié)點的子匹配值的范圍,以此減少分到這個分片中目標日志的速度。當分到一個分片的目標日志數量明顯少于其他分片中目標日志的數量時,可以相應的增加這個分片對應子節(jié)點的子匹配值的范圍,以此提高分到這個分片中目標日志的速度。第二種方式,使用現(xiàn)有的樹結構作為所述匹配樹,所述匹配樹包括用于描述所述至少一個數據表中一個數據表的平衡樹的一部分樹結構;相應的,所述匹配樹的根節(jié)點為所述平衡樹的根節(jié)點,所述至少一層子節(jié)點為所述平衡樹的至少一層枝節(jié)點。這里的平衡樹的樹結構可以為B樹(英文:balancedtree)或者B+樹或者其他B樹的具體結構類型。由于平衡樹的結構特點,導致了這個數據表的目標日志在通過這種匹配樹進行分片后,能夠有較大的可能,獲得的各個分片中的目標日志數量之間較為平衡。一般情況下,本發(fā)明實施例只使用所述平衡樹的根節(jié)點和一部分直接相連的枝節(jié)點作為匹配樹。圖2為本發(fā)明實施例提供的一種匹配樹的使用示意圖,如圖2所示,匹配樹包括用于描述所述至少一個數據表中一個數據表的平衡樹的一部分樹結構。所述匹配樹的樹結構的第一層為根節(jié)點,根節(jié)點的匹配值的范圍為從1到190(這個取值范圍根據匹配標識確定),其中具體分了四個部分,一個部分為1到10,一個部分為11到30,一個部分為31到60,一個部分為91到190。不同的部分對應了樹結構中第二層也是最后一層的部分子節(jié)點(平衡樹的枝節(jié)點)。第二層包括了20個子節(jié)點,各個子節(jié)點的子匹配值的范圍由平衡樹確定。例如圖2中最上面的子節(jié)點的子匹配值的范圍為1到2,第二個子節(jié)點的子匹配值的范圍的3 到5等。在所述第二種方式中,需要注意的是,如果在所述從數據庫服務器進行日志分片的過程中,各個分片的目標日志的數量過多時,可以認為所述從數據庫服務器并行的日志回放速度已經低于日志分片過程中向各個分片分目標日志的速度??梢酝ㄟ^增加分片數量的方式,相應的降低向各個分片分目標日志的速度。由于在平衡樹中,層數越大,枝節(jié)點的數量相對越多,也就是說,可選的,在進行所述日志分片的過程中,若分到一個分片中的目標日志超出預設閾值,增加所述匹配樹包括所述平衡樹的枝節(jié)點的層數,由此增加通過所述日志分片后得到的分片的數量。在采用所述第二種方式設置匹配樹時,若所述目標表集合中只包括一個數據表,也就是說構成所述匹配樹的平衡樹是用于描述這個數據表的,那么在所述從數據庫服務器進行日志分片時,可以達到最佳的分片效果,即各個分片中的目標日志的數量之間可以相對于最為平衡。接下來通過實施例描述,在本發(fā)明中,所述從數據庫服務器如何通過設置的匹配樹,對目標日志進行日志分片。圖3為本發(fā)明實施例提供的一種日志分片方法的方法流程圖,所述方法包括:S301:從數據庫服務器接收主數據庫服務器發(fā)送的第一日志,所述第一日志攜帶對應的數據表標識和匹配標識。舉例說明,由于數據日志是為了記錄用戶針對數據表的改動生成的,故至少需要攜帶對應的數據表標識。為了能夠使得從數據庫服務器能夠完成日志分片,還需要攜帶對應的匹配標識。出于方便日志回放的考慮,希望分到一個分片中目標日志均對應于同一個數據表。為了能夠達到這個效果,可選的,一個目標日志攜帶的匹配標識用于標識這個目標日志對應的數據表。在傳統(tǒng)的日志分片方式中,分片時可能會將主鍵值相鄰的目標日志分到不同的分片中,比如主鍵值為1000和10001的主鍵所對應的數據日志,被分配到不同的分片并行處理,而它們對應的數據記錄可能位于同一數據頁面,那么在進行日志回放的過程中,可能會產生鎖沖突和等待的情況。為了解決 這種情況,可選的,所述第一日志的匹配標識具體用于標識第一數據記錄,所述第一數據記錄為所述第一日志對應的數據表中的一條數據記錄。進一步,可選的,本發(fā)明實施例中,所述第一日志的匹配標識為所述第一數據記錄的主鍵值。這樣,在日志分片后,相鄰的主鍵對應的數據日志可以盡可能的被分到相同的分片,由一個進程進行后續(xù)的日志回放,減少了日志回放過程中的鎖沖突,和頁面的反復加鎖解鎖。S302:所述從數據庫服務器根據所述第一日志的數據表標識確定匹配樹。也就是說,根據不同數據表標識,所述從數據庫服務器可以調取不同的匹配樹進行日志分片。S303:所述從數據庫服務器根據所述匹配樹對所述第一日志進行日志分片。可見,從數據庫服務器接收主數據庫服務器發(fā)送的第一日志,根據所述第一日志的數據表標識確定所述匹配樹,根據所述匹配樹對所述第一日志進行日志分片。通過設置的匹配樹,可以有效的利用匹配樹的樹結構對日志進行日志分片,分片后的日志并發(fā)度高,提高了進行日志回放的效率??蛇x的,本發(fā)明實施例還提供了一種具體的針對所述第一日志的日志分片方式,所述所述從數據庫服務器根據所述匹配樹對所述第一日志進行日志分片,其中包括:所述從數據庫服務器將所述第一日志的匹配標識與所述匹配樹進行匹配,根據所述匹配樹的樹結構確定出與所述第一日志的匹配標識相匹配的目標子節(jié)點,所述第一日志的匹配標識處于所述目標子節(jié)點的子匹配值的范圍中,所述目標子節(jié)點為所述樹結構最下一層中的一個子節(jié)點。所述從數據庫服務器將所述第一日志分到所述目標子節(jié)點對應的分片。舉例說明,以一個根據update操作而對應生成的數據日志為例,所述從數據庫服務器對該數據日志進行日志分片的過程如下。假如此操作對應的表為T1,匹配標識為主鍵值,這張表T1分片所用的匹配樹的樹結構可以為圖2所示的結構。如果該update操作所修改的數據記錄的主鍵的主鍵值為78,則所述從數據庫服務器在接收到這個數據日志時,根據作為匹配標識的主鍵值,以圖2所示匹配樹進行匹配。按照匹配索引的流程,先匹配根節(jié)點的鍵值, 匹配為60到90鍵值之間的位置。繼續(xù)向下一層的子節(jié)點進行匹配,在下一層子節(jié)點中,匹配到子匹配值的范圍為75到80之間的子節(jié)點,而所有通過匹配落入這一子匹配值范圍的數據日志,都會被分片到分片5。針對這張表T1的其他數據日志,所述從數據庫服務器也可以按照其攜帶的作為匹配標識的主鍵值,使用如圖2的匹配樹進行類似的匹配和分片??梢?,設置與目標表集合中數據表對應的匹配樹,并使用所述匹配樹作為對目標日志進行日志分片的依據,在設置匹配樹時,通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值。在具體的分片過程中,所述從數據庫服務器針對接收的第一日志,通過第一日志的數據表標識確定出對應的所述匹配樹,匹配所述第一日志的匹配標識和所述匹配樹中子節(jié)點的子匹配值得到目標子節(jié)點,將所述第一日志分到所述目標子節(jié)點對應的分片。由于所述預設差值一般設置較小,由此得到的各個分片中包括目標日志的數量差別不大,較為平衡。那么在從數據庫服務器進行并行的日志回放時,并發(fā)度高,提高了進行日志回放的效率。進一步的,所述從數據庫服務器在分片的過程中,還會同時對分片中的目標日志進行并行的日志回放。為此,所述第一日志還包括日志標識和對所述第一日志對應的數據表的數據改動,所述方法還包括:所述從數據庫服務器對通過所述日志分片得到的多個分片進行并行的日志回放,其中,所述從數據庫服務器根據所述第一日志的日志標識和數據改動,對所述第一日志進行日志回放。從而完成與主數據庫服務器的數據同步。圖4為本發(fā)明實施例提供的一種日志分片裝置的裝置結構圖,所述裝置包括:接收單元401,用于接收主數據庫服務器發(fā)送的第一日志,所述第一日志攜帶對應的數據表標識和匹配標識。出于方便日志回放的考慮,希望分到一個分片中目標日志均對應于同一個數據表。為了能夠達到這個效果,可選的,一個目標日志攜帶的匹配標識 用于標識這個目標日志對應的數據表。在傳統(tǒng)的日志分片方式中,分片時可能會將主鍵值相鄰的目標日志分到不同的分片中,比如主鍵值為1000和10001的主鍵所對應的數據日志,被分配到不同的分片并行處理,而它們對應的數據記錄可能位于同一數據頁面,那么在進行日志回放的過程中,可能會產生鎖沖突和等待的情況。為了解決這種情況,可選的,所述第一日志的匹配標識具體用于標識第一數據記錄,所述第一數據記錄為所述第一日志對應的數據表中的一條數據記錄。進一步,可選的,本發(fā)明實施例中,所述第一日志的匹配標識為所述第一數據記錄的主鍵值。這樣,在日志分片后,相鄰的主鍵對應的數據日志可以盡可能的被分到相同的分片,由一個進程進行后續(xù)的日志回放,減少了日志回放過程中的鎖沖突,和頁面的反復加鎖解鎖。確定單元402,用于根據所述第一日志的數據表標識確定匹配樹。分片單元403,用于根據所述匹配樹對所述第一日志進行日志分片??梢姡瑥臄祿旆掌鹘邮罩鲾祿旆掌靼l(fā)送的第一日志,根據所述第一日志的數據表標識確定所述匹配樹,根據所述匹配樹對所述第一日志進行日志分片。通過設置的匹配樹,可以有效的利用匹配樹的樹結構對日志進行日志分片,分片后的日志并發(fā)度高,提高了進行日志回放的效率。可選的,所述分配單元具體用于將所述第一日志的匹配標識與所述匹配樹進行匹配,根據所述匹配樹的樹結構確定出與所述第一日志的匹配標識相匹配的目標子節(jié)點,所述第一日志的匹配標識處于所述目標子節(jié)點的子匹配值的范圍中,所述目標子節(jié)點為所述樹結構最下一層中的一個子節(jié)點;將所述第一日志分到所述目標子節(jié)點對應的分片??蛇x的,匹配樹設置單元400,用于根據目標表集合獲取對應的匹配樹,所述目標表集合包括數據庫中的至少一個數據表,所述匹配樹的樹結構包括一個根節(jié)點和所述根節(jié)點的至少一層子節(jié)點,所述根節(jié)點用于匹配的匹配值的范圍根據多個目標日志攜帶的匹配標識的范圍確定,所述多個目標日志為對應所述至少一個數據表的數據日志,所述第一日志為所述多個目標日志中的一個目標日志,處于一層的子節(jié)點中,各個子節(jié)點用于匹配的子匹配值的 總范圍與所述根節(jié)點的匹配值的范圍相同,通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值,所述匹配樹的樹結構最下一層的一個子節(jié)點對應一個分片??蛇x的,所述匹配樹包括用于描述所述至少一個數據表中一個數據表的平衡樹的一部分樹結構;相應的,所述匹配樹的根節(jié)點為所述平衡樹的根節(jié)點,所述至少一層子節(jié)點為所述平衡樹的至少一層枝節(jié)點??蛇x的,在進行所述日志分片的過程中,若分到一個分片中的目標日志超出預設閾值,增加所述匹配樹包括所述平衡樹的枝節(jié)點的層數,由此增加通過所述日志分片后得到的分片的數量。可見,設置與目標表集合中數據表對應的匹配樹,并使用所述匹配樹作為對目標日志進行日志分片的依據,在設置匹配樹時,通過設置所述匹配樹的樹結構最下一層子節(jié)點的子匹配值的范圍,使得在通過所述匹配樹進行日志分片時,通過匹配分到最下一層各個子節(jié)點的目標日志的數據之間差值小于預設差值。在具體的分片過程中,所述從數據庫服務器針對接收的第一日志,通過第一日志的數據表標識確定出對應的所述匹配樹,匹配所述第一日志的匹配標識和所述匹配樹中子節(jié)點的子匹配值得到目標子節(jié)點,將所述第一日志分到所述目標子節(jié)點對應的分片。由于所述預設差值一般設置較小,由此得到的各個分片中包括目標日志的數量差別不大,較為平衡。那么在從數據庫服務器進行并行的日志回放時,并發(fā)度高,提高了進行日志回放的效率。進一步的,所述從數據庫服務器在分片的過程中,還會同時對分片中的目標日志進行并行的日志回放。為此,所述第一日志還包括日志標識和對所述第一日志對應的數據表的數據改動,可選的,在圖4所對應實施例的基礎上,還包括:回放單元,用于對通過所述日志分片得到的多個分片進行并行的日志回放,其中,所述從數據庫服務器根據所述第一日志的日志標識和數據改動,對所述第一日志進行日志回放。本領域普通技術人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟 可以通過程序指令相關的硬件來完成,前述程序可以存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質可以是下述介質中的至少一種:只讀存儲器(英文:read-onlymemory,縮寫:ROM)、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于設備及系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的設備及系統(tǒng)實施例僅僅是示意性的,其中作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕嶋H的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術領域:
:的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。當前第1頁1 2 3 當前第1頁1 2 3