專利名稱:一種分布式數(shù)據(jù)庫的管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別是涉及一種分布式數(shù)據(jù)庫的管理方法和系統(tǒng)。
背景技術(shù):
在通信系統(tǒng)中,由于需要對大量的數(shù)據(jù)進行處理,因此對數(shù)據(jù)庫訪問的實時性和訪問效率要求比較高。目前的數(shù)據(jù)庫從數(shù)據(jù)庫存儲方式分為內(nèi)存數(shù)據(jù)庫和磁盤數(shù)據(jù)庫。其中,內(nèi)存數(shù)據(jù)庫用于將數(shù)據(jù)庫的所有數(shù)據(jù)和索引存儲在內(nèi)存中,數(shù)據(jù)庫的訪問和操作基于內(nèi)存進行。磁盤數(shù)據(jù)庫用于將數(shù)據(jù)庫的所有數(shù)據(jù)和索引存儲在文件中,數(shù)據(jù)庫訪問和操作基于文件進行。為了提高訪問的實時性和訪問效率,在通信系統(tǒng)中通常會采用內(nèi)存數(shù)據(jù)庫。但是由于存儲在內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)在系統(tǒng)掉電后會丟失,因此對于其中一些重要的數(shù)據(jù)還需 要永久存儲,例如,在通信中需要對配置信息或者重要的計費信息等進行存盤,此時就要求數(shù)據(jù)庫同時具備內(nèi)存數(shù)據(jù)庫和磁盤數(shù)據(jù)庫的特點。針對上述情況,目前常用的一種方法是在訪問內(nèi)存數(shù)據(jù)庫時將需要永久存儲的數(shù)據(jù)寫入磁盤文件,系統(tǒng)啟動時再將數(shù)據(jù)從磁盤文件加載到內(nèi)存中。但是該方法需要針對內(nèi)存數(shù)據(jù)庫設(shè)計對應(yīng)的磁盤文件格式,設(shè)計過程復(fù)雜,并且磁盤的操作性能不高,從而導(dǎo)致數(shù)據(jù)庫的管理過程復(fù)雜,數(shù)據(jù)庫的訪問效率低下。
發(fā)明內(nèi)容
本申請所要解決的技術(shù)問題是提供一種分布式數(shù)據(jù)庫的管理方法和系統(tǒng),以解決數(shù)據(jù)庫的管理過程復(fù)雜,訪問效率低下的問題。為了解決上述問題,本申請公開了一種分布式數(shù)據(jù)庫的管理方法,包括將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口 ;為節(jié)點創(chuàng)建數(shù)據(jù)庫,所述為節(jié)點創(chuàng)建的數(shù)據(jù)庫為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第二數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫和第二數(shù)據(jù)庫;在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)點;依據(jù)所述節(jié)點注冊信息完成源節(jié)點的數(shù)據(jù)庫與目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同
止/J/ O 優(yōu)選的,所述第一數(shù)據(jù)庫為內(nèi)存數(shù)據(jù)庫,所述第二數(shù)據(jù)庫為物理數(shù)據(jù)庫。優(yōu)選的,所述依據(jù)所述節(jié)點注冊信息完成源節(jié)點的數(shù)據(jù)庫與目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步的步驟包括通過查找源節(jié)點的節(jié)點注冊信息來確定與源節(jié)點同步的目標節(jié)點;完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。優(yōu)選的,每個節(jié)點具有發(fā)送鏈表和接收鏈表,其中,發(fā)送鏈表用于存儲該節(jié)點要發(fā)送的同步數(shù)據(jù)塊,接收鏈表用于存儲該節(jié)點接收的同步數(shù)據(jù)塊;
所述完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步的步驟包括源節(jié)點依據(jù)自己的發(fā)送鏈表、目標節(jié)點依據(jù)自己的接收鏈表,完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。優(yōu)選的,所述源節(jié)點依據(jù)自己的發(fā)送鏈表、目標節(jié)點依據(jù)自己的接收鏈表,完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步的步驟包括源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上;源節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述發(fā)送鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊,并將同步數(shù)據(jù)塊發(fā)送至目標節(jié)點;
所述目標節(jié)點在接收到所述同步數(shù)據(jù)塊后,該目標節(jié)點上的消息收發(fā)線程將所述同步數(shù)據(jù)塊存儲在該目標節(jié)點的接收鏈表上;所述目標節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述接收鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊;所述目標節(jié)點依據(jù)所述同步數(shù)據(jù)塊更新該節(jié)點的數(shù)據(jù)庫,完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。優(yōu)選的,在源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上之前,還包括通過查找目標節(jié)點的節(jié)點注冊信息來確定向該目標節(jié)點同步的源節(jié)點;目標節(jié)點發(fā)送數(shù)據(jù)同步請求至所述源節(jié)點。優(yōu)選的,所述方法還包括將所述目標節(jié)點作為源節(jié)點,通過查找該節(jié)點的節(jié)點注冊信息確定與該節(jié)點同步的其他目標節(jié)點;完成該節(jié)點的數(shù)據(jù)庫與所述其他目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。優(yōu)選的,在為節(jié)點創(chuàng)建數(shù)據(jù)庫之后,還包括針對每個數(shù)據(jù)庫創(chuàng)建多個數(shù)據(jù)表,并為每個數(shù)據(jù)表分配一個數(shù)據(jù)表名;為每個數(shù)據(jù)表分配一個句柄,所述句柄和所述數(shù)據(jù)表名的下標一一對應(yīng);查找與所述句柄相對應(yīng)的數(shù)據(jù)表名,訪問所述數(shù)據(jù)表名對應(yīng)的數(shù)組中登記的數(shù)據(jù)表的結(jié)構(gòu)信息。優(yōu)選的,所述方法還包括每個應(yīng)用對應(yīng)一個應(yīng)用標識,針對每個應(yīng)用標識注冊與其相匹配的數(shù)據(jù)表;當(dāng)節(jié)點上的數(shù)據(jù)表中的數(shù)據(jù)更新之后,查找與所述數(shù)據(jù)表相匹配的應(yīng)用標識;該節(jié)點通過所述統(tǒng)一接口將所述數(shù)據(jù)更新通知給所述相匹配的應(yīng)用標識對應(yīng)的應(yīng)用。另一方面,本申請還公開了一種分布式數(shù)據(jù)庫的管理系統(tǒng),所述管理系統(tǒng)應(yīng)用于分布式節(jié)點,所述管理系統(tǒng)包括封裝模塊,用于將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接Π ;其中,每個分布式節(jié)點包括第一創(chuàng)建模塊、登記模塊和同步模塊,第一創(chuàng)建模塊,用于為節(jié)點創(chuàng)建數(shù)據(jù)庫,所述為節(jié)點創(chuàng)建的數(shù)據(jù)庫為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第二數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫和第二數(shù)據(jù)庫;登記模塊,用于在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)點;
源節(jié)點上的同步模塊和目標節(jié)點上的同步模塊用于依據(jù)所述數(shù)據(jù)同步信息完成第一節(jié)點的數(shù)據(jù)庫與第二節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。優(yōu)選的,每個節(jié)點上的同步模塊包括第一查找單元,用于當(dāng)所述節(jié)點為源節(jié)點時,通過查找該源節(jié)點的節(jié)點注冊信息來確定與源節(jié)點同步的目標節(jié)點;源節(jié)點上的同步模塊和目標節(jié)點上的同步模塊用于完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。優(yōu)選的,每個節(jié)點具有發(fā)送鏈表和接收鏈表,其中,發(fā)送鏈表用于存儲該節(jié)點要發(fā)送的同步數(shù)據(jù)塊,接收鏈表用于存儲該節(jié)點接收的同步數(shù)據(jù)塊;所述源節(jié)點上的同步模塊和目標節(jié)點上的同步模塊還用于通過源節(jié)點依據(jù)自己的發(fā)送鏈表、目標節(jié)點依據(jù)自己的接收鏈表,完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。優(yōu)選的,每個節(jié)點上的同步模塊還包括第一存儲單元,用于當(dāng)所述節(jié)點為源節(jié)點時,通過該源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上;第一獲取單元,用于當(dāng)所述節(jié)點為源節(jié)點時,通過該源節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述發(fā)送鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊,并將同步數(shù)據(jù)塊發(fā)送至目標節(jié)點;第二存儲單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,在接收到所述同步數(shù)據(jù)塊后,通過該目標節(jié)點上的消息收發(fā)線程將所述同步數(shù)據(jù)塊存儲在該目標節(jié)點的接收鏈表上;第二獲取單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,通過該目標節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述接收鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊;更新單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,依據(jù)所述同步數(shù)據(jù)塊更新該節(jié)點的數(shù)據(jù)庫,完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。優(yōu)選的,每個節(jié)點上的同步模塊還包括第二查找單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,在第一存儲單元通過源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上之前,通過查找該目標節(jié)點的節(jié)點注冊信息來確定向該目標節(jié)點同步的源節(jié)點;發(fā)送單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,發(fā)送數(shù)據(jù)同步請求至所述源節(jié)點。優(yōu)選的,所述第一查找單元還用于當(dāng)將所述目標節(jié)點作為源節(jié)點時,通過查找該節(jié)點的節(jié)點注冊信息確定與該節(jié)點同步的其他目標節(jié)點;所述該節(jié)點上的同步模塊和所述其他節(jié)點上的同步模塊用于完成該節(jié)點的數(shù)據(jù)庫與所述其他目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。優(yōu)選的,所述每個分布式節(jié)點還包括第二創(chuàng)建模塊,用于在為節(jié)點創(chuàng)建數(shù)據(jù)庫之后,針對每個數(shù)據(jù)庫創(chuàng)建多個數(shù)據(jù)表,并為每個數(shù)據(jù)表分配一個數(shù)據(jù)表名;
分配模塊,用于為每個數(shù)據(jù)表分配一個句柄,所述句柄和所述數(shù)據(jù)表名一一對應(yīng);訪問模塊,用于查找與所述句柄相對應(yīng)的數(shù)據(jù)表名,訪問所述數(shù)據(jù)表名對應(yīng)的數(shù)據(jù)表的結(jié)構(gòu)信息。優(yōu)選的,每個應(yīng)用對應(yīng)一個應(yīng)用標識,所述每個分布式節(jié)點還包括注冊模塊,用于針對每個應(yīng)用標識注冊與其相匹配的數(shù)據(jù)表;第二查找模塊,用于當(dāng)節(jié)點上的數(shù)據(jù)表中的數(shù)據(jù)更新之后,查找與所述數(shù)據(jù)表相匹配的應(yīng)用標識;通知模塊,用于該節(jié)點通過所述統(tǒng)一接口將所述數(shù)據(jù)更新通知給所述相匹配的應(yīng)用標識對應(yīng)的應(yīng)用。與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點首先,本申請通過將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口,從而通過所述統(tǒng)一接口即可訪問第一數(shù)據(jù)庫或者第二數(shù)據(jù)庫,或者同時訪問第一數(shù)據(jù)庫和第二數(shù)據(jù)庫。因此在為節(jié)點創(chuàng)建數(shù)據(jù)庫時,可以為不同的節(jié)點創(chuàng)建不同的數(shù)據(jù)庫,其可以為第一數(shù)據(jù)庫,或者第二數(shù)據(jù)庫,或者第一數(shù)據(jù)庫和第二數(shù)據(jù)庫。并且,本申請通過在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)點,當(dāng)某一節(jié)點的數(shù)據(jù)庫需要將其數(shù)據(jù)同步到其他節(jié)點時,即可根據(jù)節(jié)點注冊信息完成節(jié)點之間的數(shù)據(jù)庫同步,實現(xiàn)了不同節(jié)點的數(shù)據(jù)庫的一致性同步。因此,本申請針對于內(nèi)存數(shù)據(jù)庫和磁盤數(shù)據(jù)庫來說,可以更加簡便地實現(xiàn)兩者之間的數(shù)據(jù)同步,避免了設(shè)計復(fù)雜的磁盤文件格式,簡化了數(shù)據(jù)庫的管理。其次,本申請將不同數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口,應(yīng)用通過所述統(tǒng)一接口即可訪問不同的數(shù)據(jù)庫,有利于應(yīng)用移植不同的數(shù)據(jù)庫,提高了數(shù)據(jù)庫的可移植性。再次,本申請針對每個應(yīng)用注冊與其相匹配的數(shù)據(jù)表,當(dāng)數(shù)據(jù)表中的數(shù)據(jù)更新之 后,即可通過所述統(tǒng)一接口實時將數(shù)據(jù)更新通知給與數(shù)據(jù)表相匹配的應(yīng)用,提高了數(shù)據(jù)庫管理的實時性。
圖I是本申請實施例一所述一種分布式數(shù)據(jù)庫的管理方法的流程圖;圖2是本申請實施例二所述一種分布式數(shù)據(jù)庫的管理方法的流程圖;圖3是本申請實施例所述內(nèi)存庫和物理庫整合的結(jié)構(gòu)示意圖;圖4是本申請實施例所述各個節(jié)點的數(shù)據(jù)庫的分布和數(shù)據(jù)同步示意圖;圖5是本申請實施例三所述一種分布式數(shù)據(jù)庫的管理方法的流程圖;圖6是本申請實施例四所述一種分布式數(shù)據(jù)庫的管理系統(tǒng)的結(jié)構(gòu)框圖;圖7是本申請實施例五所述一種分布式數(shù)據(jù)庫的管理系統(tǒng)的結(jié)構(gòu)框圖;圖8是本申請實施例六所述一種分布式數(shù)據(jù)庫的管理系統(tǒng)的結(jié)構(gòu)框圖。
具體實施例方式為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本申請作進一步詳細的說明。
本申請通過將不同數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口,通過所述統(tǒng)一接口即可訪問不同形式的數(shù)據(jù)庫,可以訪問一個數(shù)據(jù)庫或多個數(shù)據(jù)庫,提高了訪問效率。對于各個節(jié)點也可更加靈活地為其創(chuàng)建不同形式的數(shù)據(jù)庫,當(dāng)一個節(jié)點的數(shù)據(jù)庫有數(shù)據(jù)更新時,可以將其同步到其他相關(guān)聯(lián)節(jié)點的數(shù)據(jù)庫中,實現(xiàn)了不同節(jié)點不同形式數(shù)據(jù)庫之間的數(shù)據(jù)同步,簡化了數(shù)據(jù)庫的管理過程。參照圖1,示出了本申請實施例一所述的一種分布式數(shù)據(jù)庫的管理方法的流程圖,所述方法包括步驟SlOl,將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口。
本申請實施例中數(shù)據(jù)庫的接口分為兩個層次的封裝,第一層封裝即分別將第一數(shù)據(jù)庫的kernel (內(nèi)核)和第二數(shù)據(jù)庫的kernel (內(nèi)核)封裝為各自的訪問接口,第二層封裝即為將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口。其中,對于第一層封裝在數(shù)據(jù)庫的開發(fā)過程中即可完成,本申請對其不再進行詳細論述。第二層封裝所得到的統(tǒng)一接口是針對應(yīng)用提供的,應(yīng)用可以直接通過所述統(tǒng)一接口訪問不同的數(shù)據(jù)庫,具體的,可以訪問第一數(shù)據(jù)庫或者第二數(shù)據(jù)庫,或者訪問第一數(shù)據(jù)庫和第二數(shù)據(jù)庫。步驟S102,為節(jié)點創(chuàng)建數(shù)據(jù)庫,所述為節(jié)點創(chuàng)建的數(shù)據(jù)庫為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第二數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫和第二數(shù)據(jù)庫。對于每個節(jié)點,首先為其創(chuàng)建數(shù)據(jù)庫,由于通過所述統(tǒng)一接口可以訪問第一數(shù)據(jù)庫或者第二數(shù)據(jù)庫,或者訪問第一數(shù)據(jù)庫和第二數(shù)據(jù)庫,因此,為節(jié)點創(chuàng)建的數(shù)據(jù)庫可以為第一數(shù)據(jù)庫,或者第二數(shù)據(jù)庫,或者第一數(shù)據(jù)庫和第二數(shù)據(jù)庫。各個節(jié)點可以通過所述統(tǒng)一接口調(diào)用各自對應(yīng)的數(shù)據(jù)庫。步驟S103,在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)點。在為節(jié)點創(chuàng)建數(shù)據(jù)庫之后,某些節(jié)點的數(shù)據(jù)庫之間是需要同步的。因此本申請實施例首先需要注冊數(shù)據(jù)庫待同步的節(jié)點,注冊之后即表示這些節(jié)點的數(shù)據(jù)庫之間是需要數(shù)據(jù)同步的。如果其中一個節(jié)點的數(shù)據(jù)庫有數(shù)據(jù)更新,則要把所述數(shù)據(jù)更新同步至注冊的其他節(jié)點的數(shù)據(jù)庫中;或者其中一個節(jié)點需要和注冊的其他節(jié)點數(shù)據(jù)同步,則需要將注冊的其他節(jié)點的數(shù)據(jù)庫中的數(shù)據(jù)同步至該節(jié)點的數(shù)據(jù)庫中。在注冊數(shù)據(jù)庫待同步的節(jié)點的過程中,這些數(shù)據(jù)庫待同步的節(jié)點可以是由某個應(yīng)用指定的,即如果該應(yīng)用需要用到某些節(jié)點,則注冊這些節(jié)點為數(shù)據(jù)庫待同步的節(jié)點。另外,所述數(shù)據(jù)庫待同步的節(jié)點也可以不由應(yīng)用指定,如果某兩個節(jié)點的數(shù)據(jù)庫之間是有關(guān)聯(lián)的,但是應(yīng)用只是用到了其中一個節(jié)點,那么也應(yīng)該將這兩個節(jié)點注冊為數(shù)據(jù)庫待同步的節(jié)點,即只要兩個節(jié)點的數(shù)據(jù)庫之間有關(guān)聯(lián),則可將其注冊為數(shù)據(jù)庫待同步的節(jié)點。具體的,為節(jié)點創(chuàng)建數(shù)據(jù)庫之后,某些節(jié)點的數(shù)據(jù)庫之間可能存在關(guān)聯(lián)(例如,兩個數(shù)據(jù)庫中可能包括相同的數(shù)據(jù)表,或者數(shù)據(jù)表中包括相同的數(shù)據(jù)),如果某一個節(jié)點的數(shù)據(jù)庫中的數(shù)據(jù)有更新,則需要將數(shù)據(jù)更新同步至與其相關(guān)聯(lián)的節(jié)點中的數(shù)據(jù)庫,從而實現(xiàn)具有關(guān)聯(lián)關(guān)系的節(jié)點之間的數(shù)據(jù)庫的數(shù)據(jù)同步更新。例如,兩個節(jié)點的數(shù)據(jù)庫中包括相同的數(shù)據(jù)表(如均為數(shù)據(jù)表I),當(dāng)其中一個節(jié)點的數(shù)據(jù)庫中的數(shù)據(jù)表I有數(shù)據(jù)更新時,則需要將所述數(shù)據(jù)更新同步至另一個節(jié)點的數(shù)據(jù)庫中的數(shù)據(jù)表1,以使兩個數(shù)據(jù)表I中的數(shù)據(jù)保持同步。在本申請實施例中,每個節(jié)點中都含有自己的節(jié)點注冊信息,所述節(jié)點注冊信息可以采用下述表一的形式表示表一
權(quán)利要求
1.一種分布式數(shù)據(jù)庫的管理方法,其特征在于,包括 將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口; 為節(jié)點創(chuàng)建數(shù)據(jù)庫,所述為節(jié)點創(chuàng)建的數(shù)據(jù)庫為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第二數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫和第二數(shù)據(jù)庫; 在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)點; 依據(jù)所述節(jié)點注冊信息完成源節(jié)點的數(shù)據(jù)庫與目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第一數(shù)據(jù)庫為內(nèi)存數(shù)據(jù)庫,所述第二數(shù)據(jù)庫為物理數(shù)據(jù)庫。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述依據(jù)所述節(jié)點注冊信息完成源節(jié)點的數(shù)據(jù)庫與目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步的步驟包括 通過查找源節(jié)點的節(jié)點注冊信息來確定與源節(jié)點同步的目標節(jié)點; 完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于, 每個節(jié)點具有發(fā)送鏈表和接收鏈表,其中,發(fā)送鏈表用于存儲該節(jié)點要發(fā)送的同步數(shù)據(jù)塊,接收鏈表用于存儲該節(jié)點接收的同步數(shù)據(jù)塊; 所述完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步的步驟包括 源節(jié)點依據(jù)自己的發(fā)送鏈表、目標節(jié)點依據(jù)自己的接收鏈表,完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述源節(jié)點依據(jù)自己的發(fā)送鏈表、目標節(jié)點依據(jù)自己的接收鏈表,完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步的步驟包括 源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上; 源節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述發(fā)送鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊,并將同步數(shù)據(jù)塊發(fā)送至目標節(jié)點; 所述目標節(jié)點在接收到所述同步數(shù)據(jù)塊后,該目標節(jié)點上的消息收發(fā)線程將所述同步數(shù)據(jù)塊存儲在該目標節(jié)點的接收鏈表上; 所述目標節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述接收鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊; 所述目標節(jié)點依據(jù)所述同步數(shù)據(jù)塊更新該節(jié)點的數(shù)據(jù)庫,完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上之前,還包括 通過查找目標節(jié)點的節(jié)點注冊信息來確定向該目標節(jié)點同步的源節(jié)點; 目標節(jié)點發(fā)送數(shù)據(jù)同步請求至所述源節(jié)點。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括 將所述目標節(jié)點作為源節(jié)點,通過查找該節(jié)點的節(jié)點注冊信息確定與該節(jié)點同步的其他目標節(jié)點; 完成該節(jié)點的數(shù)據(jù)庫與所述其他目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。
8.根據(jù)權(quán)利要求I所述的方法,其特征在于,在為節(jié)點創(chuàng)建數(shù)據(jù)庫之后,還包括 針對每個數(shù)據(jù)庫創(chuàng)建多個數(shù)據(jù)表,并為每個數(shù)據(jù)表分配一個數(shù)據(jù)表名; 為每個數(shù)據(jù)表分配一個句柄,所述句柄和所述數(shù)據(jù)表名一一對應(yīng); 查找與所述句柄相對應(yīng)的數(shù)據(jù)表名,訪問所述數(shù)據(jù)表名對應(yīng)的數(shù)據(jù)表的結(jié)構(gòu)信息。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括 每個應(yīng)用對應(yīng)一個應(yīng)用標識,針對每個應(yīng)用標識注冊與其相匹配的數(shù)據(jù)表; 當(dāng)節(jié)點上的數(shù)據(jù)表中的數(shù)據(jù)更新之后,查找與所述數(shù)據(jù)表相匹配的應(yīng)用標識; 該節(jié)點通過所述統(tǒng)一接口將所述數(shù)據(jù)更新通知給所述相匹配的應(yīng)用標識對應(yīng)的應(yīng)用。
10.一種分布式數(shù)據(jù)庫的管理系統(tǒng),其特征在于,所述管理系統(tǒng)應(yīng)用于分布式節(jié)點,所述管理系統(tǒng)包括 封裝模塊,用于將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口 ; 其中,每個分布式節(jié)點包括第一創(chuàng)建模塊、登記模塊和同步模塊, 第一創(chuàng)建模塊,用于為節(jié)點創(chuàng)建數(shù)據(jù)庫,所述為節(jié)點創(chuàng)建的數(shù)據(jù)庫為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第二數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫和第二數(shù)據(jù)庫; 登記模塊,用于在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)占. 源節(jié)點上的同步模塊和目標節(jié)點上的同步模塊用于依據(jù)所述節(jié)點注冊信息完成源節(jié)點的數(shù)據(jù)庫與目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于, 每個節(jié)點上的同步模塊包括 第一查找單元,用于當(dāng)所述節(jié)點為源節(jié)點時,通過查找該源節(jié)點的節(jié)點注冊信息來確定與源節(jié)點同步的目標節(jié)點; 源節(jié)點上的同步模塊和目標節(jié)點上的同步模塊用于完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于, 每個節(jié)點具有發(fā)送鏈表和接收鏈表,其中,發(fā)送鏈表用于存儲該節(jié)點要發(fā)送的同步數(shù)據(jù)塊,接收鏈表用于存儲該節(jié)點接收的同步數(shù)據(jù)塊; 所述源節(jié)點上的同步模塊和目標節(jié)點上的同步模塊還用于通過源節(jié)點依據(jù)自己的發(fā)送鏈表、目標節(jié)點依據(jù)自己的接收鏈表,完成源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫的數(shù)據(jù)同步。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于, 每個節(jié)點上的同步模塊還包括 第一存儲單元,用于當(dāng)所述節(jié)點為源節(jié)點時,通過該源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上; 第一獲取單元,用于當(dāng)所述節(jié)點為源節(jié)點時,通過該源節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述發(fā)送鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊,并將同步數(shù)據(jù)塊發(fā)送至目標節(jié)點; 第二存儲單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,在接收到所述同步數(shù)據(jù)塊后,通過該目標節(jié)點上的消息收發(fā)線程將所述同步數(shù)據(jù)塊存儲在該目標節(jié)點的接收鏈表上; 第二獲取單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,通過該目標節(jié)點上的同步任務(wù)每隔預(yù)設(shè)時間段檢測所述接收鏈表上是否包括同步數(shù)據(jù)塊,若是,則獲取所述同步數(shù)據(jù)塊; 更新單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,依據(jù)所述同步數(shù)據(jù)塊更新該節(jié)點的數(shù)據(jù)庫,完成所述源節(jié)點的數(shù)據(jù)庫向目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,每個節(jié)點上的同步模塊還包括 第二查找單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,在第一存儲單元通過源節(jié)點上的消息收發(fā)線程將同步數(shù)據(jù)塊存儲在該源節(jié)點的發(fā)送鏈表上之前,通過查找該目標節(jié)點的節(jié)點注冊信息來確定向該目標節(jié)點同步的源節(jié)點; 發(fā)送單元,用于當(dāng)所述節(jié)點為目標節(jié)點時,發(fā)送數(shù)據(jù)同步請求至所述源節(jié)點。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于, 所述第一查找單元還用于當(dāng)將所述目標節(jié)點作為源節(jié)點時,通過查找該節(jié)點的節(jié)點注冊信息確定與該節(jié)點同步的其他目標節(jié)點; 所述該節(jié)點上的同步模塊和所述其他節(jié)點上的同步模塊用于完成該節(jié)點的數(shù)據(jù)庫與所述其他目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。
16.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述每個分布式節(jié)點還包括第二創(chuàng)建模塊,用于在為節(jié)點創(chuàng)建數(shù)據(jù)庫之后,針對每個數(shù)據(jù)庫創(chuàng)建多個數(shù)據(jù)表,并為每個數(shù)據(jù)表分配一個數(shù)據(jù)表名; 分配模塊,用于為每個數(shù)據(jù)表分配一個句柄,所述句柄和所述數(shù)據(jù)表名一一對應(yīng); 訪問模塊,用于查找與所述句柄相對應(yīng)的數(shù)據(jù)表名,訪問所述數(shù)據(jù)表名對應(yīng)的數(shù)據(jù)表的結(jié)構(gòu)信息。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,每個應(yīng)用對應(yīng)一個應(yīng)用標識,所述每個分布式節(jié)點還包括 注冊模塊,用于針對每個應(yīng)用標識注冊與其相匹配的數(shù)據(jù)表; 第二查找模塊,用于當(dāng)節(jié)點上的數(shù)據(jù)表中的數(shù)據(jù)更新之后,查找與所述數(shù)據(jù)表相匹配的應(yīng)用標識; 通知模塊,用于該節(jié)點通過所述統(tǒng)一接口將所述數(shù)據(jù)更新通知給所述相匹配的應(yīng)用標識對應(yīng)的應(yīng)用。
全文摘要
本申請?zhí)峁┝艘环N分布式數(shù)據(jù)庫的管理方法和系統(tǒng),以解決數(shù)據(jù)庫的管理過程復(fù)雜,訪問效率低下的問題。其中,所述方法包括將第一數(shù)據(jù)庫的訪問接口和第二數(shù)據(jù)庫的訪問接口封裝為統(tǒng)一接口;為節(jié)點創(chuàng)建數(shù)據(jù)庫,所述為節(jié)點創(chuàng)建的數(shù)據(jù)庫為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第二數(shù)據(jù)庫,或者為通過所述統(tǒng)一接口訪問的第一數(shù)據(jù)庫和第二數(shù)據(jù)庫;在每個節(jié)點的節(jié)點注冊信息中登記數(shù)據(jù)庫待同步的源節(jié)點和目標節(jié)點;依據(jù)所述節(jié)點注冊信息完成源節(jié)點的數(shù)據(jù)庫與目標節(jié)點的數(shù)據(jù)庫之間的數(shù)據(jù)同步。本申請簡化了數(shù)據(jù)庫的管理,提高了訪問效率。
文檔編號G06F17/30GK102831223SQ20121030366
公開日2012年12月19日 申請日期2012年8月23日 優(yōu)先權(quán)日2012年8月23日
發(fā)明者林秋利 申請人:大唐移動通信設(shè)備有限公司