本發(fā)明涉及數(shù)據(jù)庫技術領域,特別涉及一種基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)處理方法。
背景技術:數(shù)據(jù)庫是用來保存計算的最終結(jié)果的,所以是整個信息系統(tǒng)的最重要組成部分。在滿足不斷增長的聯(lián)機事務處理應用方面,當前的數(shù)據(jù)庫技術其實還存在不少急迫需要解決的技術問題。對于所有的數(shù)據(jù)庫而言,除了記錄正確的處理結(jié)果之外,它們都面臨著四方面的挑戰(zhàn):如何提高處理速度,數(shù)據(jù)可用性、數(shù)據(jù)安全性和數(shù)據(jù)集可擴展性,也就是說,如何使當前的數(shù)據(jù)庫具有這四方面的可伸縮性,使客戶能同時得到更高的處理速度、更高的數(shù)據(jù)可用性、更高的數(shù)據(jù)安全性和更大的數(shù)據(jù)集。將多個數(shù)據(jù)庫聯(lián)在一起組成數(shù)據(jù)庫集群來達到上述目標應該說是一個很自然的想法。集群技術是使用特定的連接方式,將價格相對較低的硬件設備結(jié)合起來,提供高性能相當?shù)娜蝿仗幚砟芰?,同時保證事務處理的正確性。數(shù)據(jù)庫集群主要有以下三種結(jié)構(gòu):1)共享內(nèi)存(主存儲器)結(jié)構(gòu)(Shared_Memory,SM)2)共享磁盤結(jié)構(gòu)(Shared_Disk,SD)3)無共享資源結(jié)構(gòu)(Shared_Nothing,SN)在共享磁盤結(jié)構(gòu)下,目前比較典型的系統(tǒng)是OracleRealApplicationCluster(OracleRAC),這種系統(tǒng)是Oracle的并行集群,位于不同服務器系統(tǒng)的Oracle實例同時訪問同一個Oracle數(shù)據(jù)庫,節(jié)點之間通過私有網(wǎng)絡進行通信,所有的控制文件、聯(lián)機日志和數(shù)據(jù)文件存放在共享的設備上,能夠被集群中的所有節(jié)點同時讀寫。RAC中的各個節(jié)點是對等關系,每個節(jié)點都接收用戶的請求,并給用戶返回結(jié)果。RAC采用了CacheFusion(高速緩存合并)技術,各個節(jié)點的數(shù)據(jù)緩沖區(qū)通過高速、低延遲的內(nèi)部網(wǎng)絡進行數(shù)據(jù)塊的傳輸。該方案存在的主要問題是節(jié)點間通信量大,節(jié)點緩沖區(qū)同步技術復雜。
技術實現(xiàn)要素:本發(fā)明的目的是針對上述問題,提出一種基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)處理方法,以克服現(xiàn)有技術中節(jié)點間通信量大,節(jié)點緩沖區(qū)同步技術復雜的問題。為實現(xiàn)上述目的,本發(fā)明提出一種基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng),該系統(tǒng)包括:主控節(jié)點和事務節(jié)點;所述事務節(jié)點,用于處理集群數(shù)據(jù)庫中的事務處理和靜態(tài)數(shù)據(jù)的查詢;所述主控節(jié)點,用于對集群數(shù)據(jù)庫進行數(shù)據(jù)更新操作,產(chǎn)生動態(tài)數(shù)據(jù),保存和查詢所述動態(tài)數(shù)據(jù)??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點進一步用于查詢所述動態(tài)數(shù)據(jù),將查詢結(jié)果返回至所述事務節(jié)點;所述事務節(jié)點進一步用于根據(jù)數(shù)據(jù)處理請求查詢磁盤上的靜態(tài)數(shù)據(jù)獲取靜態(tài)查詢結(jié)果,根據(jù)標識將所述主控節(jié)點的查詢結(jié)果與所述靜態(tài)查詢結(jié)果合并得到結(jié)果集??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點用于將插入的數(shù)據(jù)進行保存??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點用于記錄需要修改的數(shù)據(jù)的標識和對應更新后的數(shù)據(jù);可選的,在本發(fā)明一實施例中,所述主控節(jié)點用于記錄需要刪除的數(shù)據(jù)的標識??蛇x的,在本發(fā)明一實施例中,所述事務節(jié)點采用關系數(shù)據(jù)庫管理系統(tǒng)引擎??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點采用主存數(shù)據(jù)庫引擎??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點進一步用于定期或根據(jù)內(nèi)存緩沖區(qū)的使用情況將所述動態(tài)數(shù)據(jù)轉(zhuǎn)換為磁盤上的靜態(tài)數(shù)據(jù)??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點進一步用于定期或根據(jù)內(nèi)存緩沖區(qū)的使用情況將所述動態(tài)數(shù)據(jù)轉(zhuǎn)發(fā)至所述事務節(jié)點;所述事務節(jié)點進一步用于將所述主控節(jié)點轉(zhuǎn)發(fā)過來的數(shù)據(jù)轉(zhuǎn)換為磁盤上的靜態(tài)數(shù)據(jù)。為實現(xiàn)上述目的,本發(fā)明還提出一種數(shù)據(jù)處理方法,該方法包括:所述事務節(jié)點處理集群數(shù)據(jù)庫中的靜態(tài)數(shù)據(jù)的查詢操作;所述主控節(jié)點對集群數(shù)據(jù)庫進行數(shù)據(jù)更新操作,產(chǎn)生動態(tài)數(shù)據(jù),保存和查詢所述動態(tài)數(shù)據(jù)??蛇x的,在本發(fā)明一實施例中,該方法還包括:所述主控節(jié)點查詢所述動態(tài)數(shù)據(jù)得到第一查詢結(jié)果,并轉(zhuǎn)發(fā)至所述事務節(jié)點;所述事務節(jié)點根據(jù)數(shù)據(jù)處理請求查詢磁盤上的靜態(tài)數(shù)據(jù)獲取靜態(tài)查詢結(jié)果,根據(jù)標識將所述第一查詢結(jié)果與所述靜態(tài)查詢結(jié)果合并得到結(jié)果集??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點將插入的數(shù)據(jù)進行保存??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點記錄需要被修改的數(shù)據(jù)的標識和對應更新后的數(shù)據(jù);可選的,在本發(fā)明一實施例中,所述主控節(jié)點記錄需要刪除的數(shù)據(jù)的標識。上述技術方案具有如下有益效果:在一種新的共享磁盤架構(gòu)的集群環(huán)境下,數(shù)據(jù)庫管理系統(tǒng)架構(gòu)及其數(shù)據(jù)處理方法,利用最新硬件技術的優(yōu)勢(如大內(nèi)存、SSD等最新硬件技術),顯著提高了數(shù)據(jù)庫的性能,并且充分利用多臺計算機協(xié)同工作,突破數(shù)據(jù)庫在擴展性方面的局限,提高系統(tǒng)的性能和事務處理的吞吐量。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提出的一種基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng)框圖;圖2為本發(fā)明提出的一種數(shù)據(jù)處理方法流程圖之一;圖3為本發(fā)明提出的一種數(shù)據(jù)處理方法流程圖之二;圖4為本發(fā)明實施例基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng)架構(gòu)圖;圖5為本發(fā)明實施例中數(shù)據(jù)處理方法流程圖;圖6為本發(fā)明實施例基于圖4的系統(tǒng)架構(gòu)的數(shù)據(jù)處理方法流程圖;具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。如圖1所示,為本發(fā)明提出的一種基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng)框圖。該系統(tǒng)包括:主控節(jié)點101和事務節(jié)點102;所述事務節(jié)點102,用于處理集群數(shù)據(jù)庫中的事務處理和靜態(tài)數(shù)據(jù)的查詢操作;所述主控節(jié)點101,用于對集群數(shù)據(jù)庫進行數(shù)據(jù)更新操作,產(chǎn)生動態(tài)數(shù)據(jù),保存和查詢所述動態(tài)數(shù)據(jù)??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點101進一步用于查詢所述動態(tài)數(shù)據(jù),將查詢結(jié)果返回至所述事務節(jié)點;所述事務節(jié)點102進一步用于根據(jù)數(shù)據(jù)處理請求查詢磁盤上的靜態(tài)數(shù)據(jù)獲取靜態(tài)查詢結(jié)果,根據(jù)標識將所述主控節(jié)點的查詢結(jié)果與所述靜態(tài)查詢結(jié)果合并得到結(jié)果集。可選的,在本發(fā)明一實施例中,所述主控節(jié)點101用于將插入的數(shù)據(jù)進行保存??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點101用于記錄被修改的數(shù)據(jù)的標識和對應更新后的數(shù)據(jù);可選的,在本發(fā)明一實施例中,所述主控節(jié)點101用于記錄需要刪除的數(shù)據(jù)的標識??蛇x的,在本發(fā)明一實施例中,所述事務節(jié)點102采用關系數(shù)據(jù)庫管理系統(tǒng)引擎??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點101采用主存數(shù)據(jù)庫引擎??蛇x的,在本發(fā)明一實施例中,所述主控節(jié)點101進一步用于定期將所述動態(tài)數(shù)據(jù)轉(zhuǎn)換為磁盤上的靜態(tài)數(shù)據(jù)。可選的,在本發(fā)明一實施例中,所述主控節(jié)點101進一步用于定期將所述動態(tài)數(shù)據(jù)轉(zhuǎn)發(fā)至所述事務節(jié)點;所述事務節(jié)點102進一步用于將所述主控節(jié)點101轉(zhuǎn)發(fā)過來的數(shù)據(jù)轉(zhuǎn)換為磁盤上的靜態(tài)數(shù)據(jù)。如圖2所示,為本發(fā)明提出的一種數(shù)據(jù)處理方法流程圖之一。該方法包括:步驟201):所述事務節(jié)點處理集群數(shù)據(jù)庫中的靜態(tài)數(shù)據(jù)的查詢操作;步驟202):所述主控節(jié)點對集群數(shù)據(jù)庫進行數(shù)據(jù)更新操作,產(chǎn)生動態(tài)數(shù)據(jù),保存和查詢所述動態(tài)數(shù)據(jù)。如圖3所示,為本發(fā)明提出的一種數(shù)據(jù)處理方法流程圖之二。該方法還包括:步驟203):所述主控節(jié)點查詢所述動態(tài)數(shù)據(jù)得到第一查詢結(jié)果,并轉(zhuǎn)發(fā)至所述事務節(jié)點;步驟204):所述事務節(jié)點根據(jù)數(shù)據(jù)處理請求查詢磁盤上的靜態(tài)數(shù)據(jù)獲取靜態(tài)查詢結(jié)果,根據(jù)標識將所述第一查詢結(jié)果與所述靜態(tài)查詢結(jié)果合并得到結(jié)果集。實施例:本實施例提供一種新的共享磁盤架構(gòu)的集群環(huán)境下數(shù)據(jù)庫管理系統(tǒng)架構(gòu)及其數(shù)據(jù)處理方法,利用最新硬件技術的優(yōu)勢(如大內(nèi)存、SSD等最新硬件技術),顯著提高了數(shù)據(jù)庫的性能,并且充分利用多臺計算機協(xié)同工作,突破數(shù)據(jù)庫在擴展性方面的局限,提高系統(tǒng)的性能和事務處理的吞吐量。如圖4所示,為本發(fā)明實施例的一種基于共享磁盤架構(gòu)的集群數(shù)據(jù)庫系統(tǒng)架構(gòu)圖。組成數(shù)據(jù)庫集群的計算機節(jié)點有兩種類型:事務節(jié)點和主控節(jié)點;事務節(jié)點采用關系數(shù)據(jù)庫管理系統(tǒng)(RDB)引擎,主控節(jié)點采用主存數(shù)據(jù)庫(MMDB)引擎。事務節(jié)點接受用戶的數(shù)據(jù)處理請求。事務節(jié)點查詢磁盤上的靜態(tài)數(shù)據(jù),所有對數(shù)據(jù)庫集群的增、刪、改都在主控節(jié)點上進行,更新結(jié)果保存在主控節(jié)點的內(nèi)存中。當主控節(jié)點的數(shù)據(jù)緩沖區(qū)充滿或系統(tǒng)空閑時,系統(tǒng)則把更新數(shù)據(jù)批量合并到磁盤上,形成新的靜態(tài)數(shù)據(jù)。請求中的增、刪、改操作由主控節(jié)點處理;對于用戶的請求中查詢操作,則分為兩部分進行:事務節(jié)點查詢磁盤上的靜態(tài)數(shù)據(jù),主控結(jié)點查詢動態(tài)數(shù)據(jù),把這兩部分合并成正確的結(jié)果集,返回給用戶。對于數(shù)據(jù)庫的插入操作(INSERT語句),由主控節(jié)點處理,存放到內(nèi)存數(shù)據(jù)緩沖區(qū)中;對于數(shù)據(jù)庫的修改操作(UPDATE語句),首先查詢出需要修改的老元組,生成更新后的新元組;新元組由主控節(jié)點處理,在主控節(jié)點的數(shù)據(jù)緩沖區(qū)中記錄修改元組的標識和對應的新元組;對于數(shù)據(jù)庫的刪除操作(DELETE語句),首先查詢需要修改的老元組,如果存在,則在主控節(jié)點的數(shù)據(jù)緩沖區(qū)中記錄刪除的元組標識;對于數(shù)據(jù)庫的查詢操作(SELECT語句),分為兩部分:靜態(tài)數(shù)據(jù)查詢和動態(tài)數(shù)據(jù)查詢,靜態(tài)數(shù)據(jù)查詢在事務節(jié)點上進行,動態(tài)數(shù)據(jù)查詢在主控節(jié)點上進行,根據(jù)元組標識把這兩部分合并形成最終的正確結(jié)果返回給用戶;通常情況下,一個典型的共享磁盤架構(gòu)數(shù)據(jù)庫集群由一個主控節(jié)點及多個事務節(jié)點構(gòu)成。在高可用配置情況下,還可增加一臺服務器,作為主控節(jié)點的備機,為主控節(jié)點配置專門的雙機做內(nèi)存鏡像,從而保證事務服務的真正不間斷,同時備機還可接受讀請求。另外,還可以在同一個服務器上同時運行關系數(shù)據(jù)庫(RDB)引擎和主存數(shù)據(jù)庫(MMDB)引擎,即主控節(jié)點和事務節(jié)點集成在同一臺服務器上,按照上述方式同時處理數(shù)據(jù)庫的用戶請求。如圖5所示,為本發(fā)明實施例中數(shù)據(jù)處理方法流程圖。該方法包括:步驟501):客戶端向事務節(jié)點發(fā)送SQL查詢指令;步驟502):事務節(jié)點對所述SQL查詢指令進行解析生成查詢計劃;步驟503):查詢計劃插入一數(shù)據(jù)時,所述事務節(jié)點將插入的數(shù)據(jù)發(fā)送至主控節(jié)點;查詢計劃刪除一數(shù)據(jù)時,所述事務節(jié)點和所述主控節(jié)點執(zhí)行查詢操作來獲取需要刪除的數(shù)據(jù)的標識,并將需要刪除的數(shù)據(jù)的標識發(fā)送至主控節(jié)點;查詢計劃修改一數(shù)據(jù)時,所述事務節(jié)點查詢出被修改的數(shù)據(jù)的標識,將被修改的數(shù)據(jù)的標識和對應更新后的數(shù)據(jù)發(fā)送至所述主控節(jié)點;步驟504):查詢計劃查詢一數(shù)據(jù)時,所述事務節(jié)點查詢磁盤上的靜態(tài)數(shù)據(jù)獲取靜態(tài)查詢結(jié)果;步驟505):所述主控節(jié)點執(zhí)行查詢計劃的操作,并向所述事務節(jié)點返回一結(jié)果集;步驟506):所述事務節(jié)點根據(jù)標識將所述主控節(jié)點返回的結(jié)果集與所述靜態(tài)查詢結(jié)果合并得到最終結(jié)果集,并將所述最終結(jié)果集返回至所述客戶端。優(yōu)選地,還包括:所述事務節(jié)點對所述SQL查詢指令進行解析生成查詢計劃后出現(xiàn)異常處理,則所述事務節(jié)點向所述客戶端發(fā)送錯誤指示。如圖6所示,為本發(fā)明實施例基于圖4的系統(tǒng)架構(gòu)的數(shù)據(jù)處理方法流程圖。下面使用一個具體的數(shù)據(jù)庫操作實例結(jié)合圖6進一步說明:假設數(shù)據(jù)庫集群有三個節(jié)點N1、N2和N3組成,其中N1、N2是事務節(jié)點,N3是主控節(jié)點;假設數(shù)據(jù)庫中有表A,A中有三個元組(1,1,1),(2,2,2),(3,3,3),假設第一列是表中元組的唯一標識;當節(jié)點N1接收到用戶查詢A表的請求時,表A的三個元組從磁盤讀到節(jié)點N1的數(shù)據(jù)緩沖區(qū)中,從節(jié)點N1中查詢到3條元組,然后查詢節(jié)點N3,無A表的元組,則返回給用戶三條元組;當節(jié)點N1接收到用戶向A表插入新元組(4,4,4)請求時,節(jié)點N1構(gòu)造新元組,發(fā)送給節(jié)點N3,插入到節(jié)點N3的數(shù)據(jù)緩沖區(qū);當節(jié)點N1接收到用戶把A表中的元組(1,1,1)修改成(1,2,2)的請求時,則節(jié)點N1構(gòu)造新元組(1,2,2),發(fā)送給節(jié)點N3,新元組插入到節(jié)點N3的數(shù)據(jù)緩沖區(qū);當節(jié)點N1接收到用戶刪除A表中的元組(2,2,2)請求時,則節(jié)點N1首先查詢確認存在元組(2,2,2),然后通知節(jié)點N3,在節(jié)點N3的數(shù)據(jù)緩沖區(qū)中插入一條特殊元組(2,del);當節(jié)點N1接到當用戶再次查詢A表時,從節(jié)點N1中查詢到三條元組(1,1,1),(2,2,2),(3,3,3),從節(jié)點N3中查詢到三條元組(4,4,4),(1,2,2),(2,del),節(jié)點N1把兩個結(jié)果集合并,可以得到結(jié)果集(1,2,2),(3,3,3),(4,4,4),返回給用戶。以上所述的具體實施方式,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。