專利名稱:數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法、設(shè)備及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù),特別涉及數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)技術(shù)。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的進(jìn)步,越來(lái)越多的用戶對(duì)快速數(shù)據(jù)和事務(wù)處理服務(wù)提出 更高的要求。電信和金融服務(wù)市場(chǎng)等許多行業(yè)都迫切需要可以提供實(shí)時(shí)服務(wù) 的商業(yè)數(shù)據(jù)管理系統(tǒng)。然而,傳統(tǒng)的基于磁盤的數(shù)據(jù)庫(kù)管理系統(tǒng)已經(jīng)不能夠 滿足如此大量、高速的處理要求。為了突破這種由于數(shù)據(jù)庫(kù)瓶頸而造成的性 能上的限制,新型的高效內(nèi)存數(shù)據(jù)庫(kù)管理系統(tǒng)為用戶提供了有效的解決方案。 與傳統(tǒng)的磁盤數(shù)據(jù)庫(kù)相比,內(nèi)存數(shù)據(jù)庫(kù)具有極高的數(shù)據(jù)存取速度和極強(qiáng)的并 發(fā)訪問(wèn)能力。
目前,在現(xiàn)有技術(shù)中,為了保證數(shù)據(jù)庫(kù)的可靠性,很多軟件系統(tǒng)開(kāi)發(fā)的 專用內(nèi)存數(shù)據(jù)庫(kù), 一般依附于基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)(即商業(yè)物理 數(shù)據(jù)庫(kù)),不做完善持久化機(jī)制,只提供查詢功能。數(shù)據(jù)維護(hù)操作采用直接 操作基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù),再刷新內(nèi)存數(shù)據(jù)庫(kù),或同步更新基于 非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)和內(nèi)存數(shù)據(jù)庫(kù)。從而保證更新的數(shù)據(jù)不會(huì)因?yàn)榉?務(wù)器意外掉電或者宕機(jī)等原因丟失數(shù)據(jù)。
然而,本發(fā)明的發(fā)明人發(fā)現(xiàn),在用戶更新數(shù)據(jù)時(shí),不是直接更新基于非 易失性物理介質(zhì)的數(shù)據(jù)庫(kù),就是內(nèi)存數(shù)據(jù)庫(kù)和基于非易失性物理介質(zhì)的數(shù)據(jù) 庫(kù)進(jìn)行同步更新,這樣對(duì)于應(yīng)用來(lái)說(shuō),由于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)處理 數(shù)據(jù)的速度不是很快,因此如果需要進(jìn)行大量數(shù)據(jù)操作的時(shí)候,其低下的性 能將影響到性能要求高的系統(tǒng)(如電信在線計(jì)費(fèi)系統(tǒng)等)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施方式要解決的主要技術(shù)問(wèn)題是提供一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù) 方法、設(shè)備及其系統(tǒng),使得在創(chuàng)建、修改或刪除數(shù)據(jù)時(shí),在不影響或盡量少 影響內(nèi)存數(shù)據(jù)庫(kù)性能的情況下,能夠保證該內(nèi)存數(shù)據(jù)庫(kù)的可靠性。
為解決上述技術(shù)問(wèn)題,本發(fā)明的實(shí)施方式提供了 一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)
方法,包括以下步驟
接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;
根據(jù)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)維護(hù)操作請(qǐng)求,生成記錄該操作的維護(hù)操作曰
志5
根據(jù)維護(hù)操作日志,指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù) 操作。
本發(fā)明的實(shí)施方式還提供了 一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),包括
接收單元,用于接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;
生成單元,用于根據(jù)接收單元收到的對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求,生 成記錄該操作的維護(hù)操作日志;
指示單元,用于根據(jù)生成單元生成的維護(hù)操作日志,指示基于非易失性 物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。
本發(fā)明的實(shí)施方式還提供了一種數(shù)據(jù)維護(hù)設(shè)備,包括
接收單元,用于接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;
生成單元,用于根據(jù)接收單元收到的對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求,生 成記錄該操作的維護(hù)操作日志;
指示單元,用于根據(jù)生成單元生成的維護(hù)操作日志,指示基于非易失性
物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。
本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要效果在于
能夠及時(shí)地從內(nèi)存數(shù)據(jù)庫(kù)中把用戶更新的數(shù)據(jù)持久化到了基于非易失 性物理介質(zhì)的數(shù)據(jù)庫(kù)中,使得在不影響或盡量少影響內(nèi)存數(shù)據(jù)庫(kù)性能的情況 下(尤其是在創(chuàng)建、修改或刪除數(shù)據(jù)時(shí)),能夠保證該內(nèi)存數(shù)據(jù)庫(kù)的可靠性, 改善了目前內(nèi)存數(shù)據(jù)庫(kù)的高效和可靠性不能并存的局面。
圖1是根據(jù)本發(fā)明第一實(shí)施方式的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法示意圖; 圖2是根據(jù)本發(fā)明第 一 實(shí)施方式的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法流程圖; 圖3是根據(jù)本發(fā)明第二實(shí)施方式的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法流程圖; 圖4是根據(jù)本發(fā)明第三實(shí)施方式的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā) 明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。
本發(fā)明的第一實(shí)施方式涉及一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,在本實(shí)施方式 中,如圖1所示,當(dāng)用戶請(qǐng)求對(duì)內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作(包括數(shù)據(jù)的 增加、刪除或修改)時(shí),接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求,生成記錄該操 作的維護(hù)操作日志,并緩存到內(nèi)存數(shù)據(jù)庫(kù)邏輯日志中,再由數(shù)據(jù)持久化服務(wù) 進(jìn)程對(duì)內(nèi)存數(shù)據(jù)庫(kù)邏輯日志文件中的各維護(hù)操作日志進(jìn)行解析,并將解析后 的數(shù)據(jù)持久化到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)。其中,基于非易失性物理 介質(zhì)的數(shù)據(jù)庫(kù)通常是基于硬盤的數(shù)據(jù)庫(kù),不過(guò)也可以是基于磁帶、閃存、或 光存儲(chǔ)介質(zhì)的數(shù)據(jù)庫(kù)等。
下面對(duì)本實(shí)施方式的 一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法的流程進(jìn)行具體說(shuō)明, 如圖2所示。
在步驟201中,接收用戶的對(duì)內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的請(qǐng)求,并 且由內(nèi)存數(shù)據(jù)庫(kù)所在的服務(wù)器生成記錄該操作的維護(hù)操作日志。為描述方便, 本實(shí)施方式中將內(nèi)存數(shù)據(jù)庫(kù)所在的服務(wù)器稱為第一服務(wù)器。具體的說(shuō),當(dāng)用 戶請(qǐng)求對(duì)內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作(包括數(shù)據(jù)的增加、刪除或修改)時(shí), 由第一服務(wù)器接收該用戶的對(duì)內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的請(qǐng)求,并根據(jù) 用戶的數(shù)據(jù)維護(hù)操作請(qǐng)求及時(shí)地生成用戶維護(hù)操作日志,以記錄用戶進(jìn)行的 數(shù)據(jù)維護(hù)操作。其中,維護(hù)操作日志中記錄了當(dāng)前用戶操作的表標(biāo)識(shí)、字段 標(biāo)識(shí)、數(shù)據(jù)維護(hù)操作的內(nèi)存地址以及是否帶有事務(wù)操作等信息。
接著,進(jìn)入步驟202,對(duì)維護(hù)操作日志進(jìn)行緩存,即生成內(nèi)存數(shù)據(jù)庫(kù)邏 輯曰志,并將該日志從第一服務(wù)器傳輸?shù)降诙?wù)器。其中,第二服務(wù)器是 指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的服務(wù)器。由于采用 了兩個(gè)獨(dú)立的服務(wù)器,進(jìn)一步保證了當(dāng)前內(nèi)存數(shù)據(jù)庫(kù)所在服務(wù)器的性能。
接著,進(jìn)入步驟203,由第二服務(wù)器中的數(shù)據(jù)持久化服務(wù)進(jìn)程判斷當(dāng)前 讀取的維護(hù)操作日志中記錄的操作是否為帶事務(wù)操作,如果是帶事務(wù)操作, 則進(jìn)入步驟207,如果是不帶事務(wù)操作,則進(jìn)入步驟204。其中,數(shù)據(jù)持久化 服務(wù)進(jìn)程是一個(gè)內(nèi)存數(shù)據(jù)庫(kù)后臺(tái)進(jìn)程。
具體地說(shuō),數(shù)據(jù)持久化服務(wù)進(jìn)程逐條讀取每個(gè)內(nèi)存數(shù)據(jù)庫(kù)邏輯日志文件 中的維護(hù)操作日志記錄,通過(guò)當(dāng)前讀取的維護(hù)操作日志中是否為帶事務(wù)操作 的記錄判斷維護(hù)操作曰志中記錄的操作是否為帶事務(wù)操作,如果是帶事務(wù)操 作,則進(jìn)入步驟207,否則進(jìn)入步驟204。
在步驟204中,數(shù)據(jù)持久化服務(wù)進(jìn)程判斷所操作的表是否需要進(jìn)行同步, 如果不需要進(jìn)行同步,則進(jìn)入步驟206;如果需要進(jìn)行同步,則進(jìn)入步驟205。 其中,同步是指內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù)持久化到基于非易失性物理介質(zhì)的數(shù)據(jù)
庫(kù)。
具體地說(shuō),數(shù)據(jù)持久化服務(wù)進(jìn)程根據(jù)維護(hù)操作日志中記錄用戶操作的表
標(biāo)識(shí),去查詢數(shù)據(jù)庫(kù)表字典表(DBTable—Diet)中定義的表名,判斷該表是 否需要同步,如果需要同步,則進(jìn)入步驟205;否則,進(jìn)入步驟206。其中, 數(shù)據(jù)庫(kù)表字典表定義了用戶表的表名、表標(biāo)識(shí)以及是否需要同步等定義。
在步驟205中,第二服務(wù)器指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù) 據(jù)維護(hù)操作。具體地說(shuō),在判定需要同步后,根據(jù)字段類型信息以及維護(hù)操 作日志中記錄的操作數(shù)據(jù)的內(nèi)存地址拼裝出實(shí)際需要同步的數(shù)據(jù),然后再根 據(jù)拼裝出的數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)表字段字典(DBField—Diet)表中定義的數(shù)據(jù) 類型以及字段名,和數(shù)據(jù)庫(kù)表字典中定義的表名進(jìn)行拼裝,得到標(biāo)準(zhǔn)SQL語(yǔ) 句,再把用的戶更新數(shù)據(jù)持久化到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中。
在步驟206中,數(shù)據(jù)持久化服務(wù)進(jìn)程刪除維護(hù)操作日志,也就是說(shuō),在 數(shù)據(jù)持久化服務(wù)進(jìn)程判定所操作的表不需要進(jìn)行同步后,直接將該維護(hù)操作 日志刪除。
不難發(fā)現(xiàn),由于對(duì)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)維護(hù)操作,通過(guò)維護(hù)操作日志,在 基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中也作了相應(yīng)的維護(hù),即及時(shí)地從內(nèi)存數(shù)據(jù) 庫(kù)中把用戶更新的數(shù)據(jù)持久化到了基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,使得 在不影響內(nèi)存數(shù)據(jù)庫(kù)性能的情況下,能夠保證該內(nèi)存數(shù)據(jù)庫(kù)的可靠性,改善 了目前內(nèi)存數(shù)據(jù)庫(kù)的高效和可靠性不能并存的局面。并且在將數(shù)據(jù)持久化到 基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)前,先進(jìn)行表級(jí)的判斷,從而過(guò)濾掉不用持 久化的數(shù)據(jù),使數(shù)據(jù)持久化的性能得到了提高。
在步驟207中,數(shù)據(jù)持久化服務(wù)進(jìn)程批量讀取與操作屬于同一事務(wù)的所 有操作,并對(duì)事務(wù)的狀態(tài)進(jìn)行判斷。具體地說(shuō),由數(shù)據(jù)持久化服務(wù)進(jìn)程判定 當(dāng)前讀取的操作為帶事務(wù)的操作后,批量讀取與該操作屬于同 一事務(wù)的所有 操作,并對(duì)該事務(wù)的狀態(tài)進(jìn)行判斷,如果該事務(wù)尚未提交,則進(jìn)入步驟208;
如果該事務(wù)已回滾,則進(jìn)入步驟209;如果該事務(wù)已提交,則進(jìn)入步驟210。
在步驟208中,數(shù)據(jù)持久化服務(wù)進(jìn)程忽略對(duì)批量讀取的各操作的維護(hù)操 作日志的處理,也就是說(shuō),如果操作所屬的事務(wù)尚未提交,則不對(duì)批量讀取 的各操作的維護(hù)操作日志進(jìn)行處理。
在步驟209中,數(shù)據(jù)持久化服務(wù)進(jìn)程刪除批量讀取的各操作的維護(hù)操作 曰志,也就是說(shuō),如果操作所屬的事務(wù)已回滾時(shí),不將批量讀取的各操作持 久化到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)。當(dāng)然,也可以通過(guò)忽略對(duì)批量讀取 的各操作的維護(hù)操作日志的處理,不將批量讀取的各操作持久化到基于非易 失性物理介質(zhì)的數(shù)據(jù)庫(kù)。
在步驟210中,數(shù)據(jù)持久化服務(wù)進(jìn)程對(duì)批量讀取的各操作分別執(zhí)行表同 步判斷,并根據(jù)判斷結(jié)果對(duì)該日志進(jìn)行處理,其中,表同步判斷就是判斷對(duì) 所操作的表是否需要同步。具體地說(shuō),如果操作所屬的事務(wù)已經(jīng)提交,則對(duì) 批量讀取的各操作分別執(zhí)行表同步判斷,如果判定所操作的表需要同步時(shí), 則由第二服務(wù)器指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作,如 果判定所操作的表不需要同步時(shí),則由數(shù)據(jù)持久化進(jìn)程刪除維護(hù)操作日志。
由此可見(jiàn),在對(duì)事務(wù)進(jìn)行處理時(shí),需要先對(duì)該事務(wù)的狀態(tài)進(jìn)行判斷,只 有在該事務(wù)已提交的狀態(tài)下,再根據(jù)批量讀取的與該事務(wù)相關(guān)的各操作,分 別進(jìn)行所操作的表是否需要同步的判斷,以減少無(wú)效操作。比如說(shuō),可以避 免對(duì)已回滾的事務(wù)的各操作,在基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中進(jìn)行無(wú)效 的數(shù)據(jù)維護(hù)操作。
需要說(shuō)明的是,本實(shí)施方式中,通過(guò)緩存的維護(hù)操作日志中記錄的操作 的表標(biāo)識(shí)來(lái)判斷所操作的表是否需要同步到基于非易失性物理介質(zhì)的數(shù)據(jù) 庫(kù),但在實(shí)際應(yīng)用中,也可以根據(jù)用戶配置來(lái)判斷第二服務(wù)器的中央處理器 的占用率,進(jìn)而決定是否需要同步到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)。
另外,值得一提的是,由于當(dāng)數(shù)據(jù)持久化服務(wù)進(jìn)程與內(nèi)存數(shù)據(jù)庫(kù)處于兩
個(gè)不同的服務(wù)器時(shí),可以極大地降低對(duì)內(nèi)存數(shù)據(jù)庫(kù)所在服務(wù)器的性能消耗,
在的服務(wù)器為兩個(gè)不同的服務(wù)器為例進(jìn)行說(shuō)明的,但在實(shí)際應(yīng)用中,數(shù)據(jù)持 久化服務(wù)進(jìn)程也可以與內(nèi)存數(shù)據(jù)庫(kù)處于同 一個(gè)服務(wù)器。
本發(fā)明的第二實(shí)施方式同樣涉及一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,本實(shí)施方 式與第一實(shí)施方式大致相同,其區(qū)別在于,在第一實(shí)施方式中,數(shù)據(jù)持久化
服務(wù)進(jìn)程在判定所操作的表需要同步后,直接指示基于非易失性物理介質(zhì)的 數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作;而在本實(shí)施方式中,在判定所操作的表需要同步 后,數(shù)據(jù)持久化服務(wù)進(jìn)程再根據(jù)維護(hù)操作日志中記錄的維護(hù)操作的字段標(biāo)識(shí) 去查詢數(shù)據(jù)表字段字典表中定義的該表對(duì)應(yīng)需要進(jìn)行數(shù)據(jù)同步的字段,進(jìn)一 步判斷所操作的字段是否需要同步到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,如 果需要同步,則指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作;如
果不需要同步,則刪除維護(hù)操作日志。具體流程如圖3所示。
本實(shí)施方式中從步驟301至步驟304與第一實(shí)施方式中的步驟201至步 驟204完全相同,在此不再詳述。
在步驟305中,數(shù)據(jù)持久化服務(wù)進(jìn)程判斷所操作的字段是否需要同步, 如果需要,則進(jìn)入步驟307,否則,進(jìn)入步驟306。具體地說(shuō),數(shù)據(jù)持久化服 務(wù)進(jìn)程在判定所操作的表需要同步后,再根據(jù)維護(hù)操作日志中記錄的維護(hù)操 作的字段標(biāo)識(shí)去查詢數(shù)據(jù)表字段字典表中定義的該表對(duì)應(yīng)需要進(jìn)行數(shù)據(jù)同步 的字段,判斷所操作的字段是否需要同步到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù) 中,如果需要同步,則進(jìn)入步驟307,否則,進(jìn)入步驟306。
在步驟306中,數(shù)據(jù)持久化服務(wù)進(jìn)程刪除維護(hù)操作日志,也就是說(shuō),在 數(shù)據(jù)持久化服務(wù)進(jìn)程判定所操作的字段不需要進(jìn)行同步后,直接將該維護(hù)操 作日志刪除。
在步驟307中,第二服務(wù)器指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)
據(jù)維護(hù)操作。本步驟與步驟205相同,在此不再贅述。
由此可見(jiàn),在本實(shí)施方式中,先判斷所操作的表是否需要同步到該基于 非易失性物理介質(zhì)的數(shù)據(jù)庫(kù),如果需要,再進(jìn)一步判斷所操作的字段是否需 要同步到該基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,如果需要,則再指示基于非 易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。也就是說(shuō),本發(fā)明的實(shí)施方式 可以根據(jù)用戶的需求定制表級(jí)或者字段級(jí)的數(shù)據(jù)持久化,從而過(guò)濾掉不用持 久化的數(shù)據(jù),為數(shù)據(jù)持久化帶來(lái)了^f艮大的靈活性,以及性能的提高。
本實(shí)施方式的步驟308至步驟311分別與第一實(shí)施方式的步驟207至步 驟210相類似,在此不再贅述。
令指示相關(guān)硬件完成。
本發(fā)明的第三實(shí)施方式涉及一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),如圖4所示, 包括接收單元,用于接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;生成單元,用于 根據(jù)該接收單元收到的對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求,生成記錄該操作的維 護(hù)操作日志,生成的維護(hù)操作日志包括對(duì)操作的表標(biāo)識(shí)、字段標(biāo)識(shí)、是否為 帶事務(wù)操作的記錄;指示單元,用于根據(jù)生成單元生成的維護(hù)操作日志,指
示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。
性物理介質(zhì)的數(shù)據(jù)庫(kù)中,使得在不影響內(nèi)存數(shù)據(jù)庫(kù)性能的情況下,能夠保證 該內(nèi)存數(shù)據(jù)庫(kù)的可靠性,改善了目前內(nèi)存數(shù)據(jù)庫(kù)的高效和可靠性不能并存的 局面。
該數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng)中還可以包括緩存單元,用于對(duì)生成的維護(hù) 操作日志進(jìn)行緩存。該生成單元將生成的維護(hù)操作日志輸入到該緩存單元, 由該緩存單元將緩存的維護(hù)操作日志傳輸?shù)皆撝甘締卧?br>
本實(shí)施方式中的接收單元、生成單元和緩存單元可以位于內(nèi)存數(shù)據(jù)庫(kù)所
在的第一服務(wù)器,指示單元可以位于第二服務(wù)器中。通過(guò)采用兩個(gè)獨(dú)立的服 務(wù)器,進(jìn)一步保證了當(dāng)前內(nèi)存數(shù)據(jù)庫(kù)所在服務(wù)器的性能。
在該第二服務(wù)器中還可以包括第一判斷單元,用于根據(jù)緩存的維護(hù)操 作曰志中記錄的操作的表標(biāo)識(shí),判斷所操作的表是否需要同步到基于非易失 性物理介質(zhì)的數(shù)據(jù)庫(kù);指示單元在第一判斷單元判定所操作的表需要同步時(shí),
指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作;刪除控制單元,用 于在第一判斷單元判定所操作的表不需要同步時(shí),刪除維護(hù)操作日志。
在該第二服務(wù)器中還可以包括第二判斷單元,用于在第一判斷單元判 定所操作的表需要同步時(shí),根據(jù)維護(hù)操作日志中記錄的操作的字段標(biāo)識(shí),判 斷所操作的字段是否需要同步到基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù),并在判定 需要同步時(shí),通知指示單元指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維 護(hù)操作;該刪除控制單元還用于在第二判斷單元判定所操作的字段不需要同 步時(shí),刪除維護(hù)操作日志。
由此可見(jiàn),先判斷所操作的表是否需要同步到該基于非易失性物理介質(zhì) 的數(shù)據(jù)庫(kù),如果需要,可以進(jìn)一步判斷所操作的字段是否需要同步到該基于 非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,如果需要,則再指示基于非易失性物理介質(zhì) 的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。也就是說(shuō),可以根據(jù)用戶的需求定制表級(jí)或者 字段級(jí)的數(shù)據(jù)持久化,從而過(guò)濾掉不用持久化的數(shù)據(jù),為數(shù)據(jù)持久化帶來(lái)了 很大的靈活性,以及性能的提高。
在該第二服務(wù)器中還可以包括第三判斷單元,用于判斷緩存的維護(hù)操 作曰志中記錄的操作是否為帶事務(wù)操作,并在判定該操作為不帶事務(wù)操作時(shí), 指示第一判斷單元直接進(jìn)行所操作的表是否需要同步的判斷;批量讀取單元, 用于在第三判斷單元判定緩存的維護(hù)操作日志中記錄的操作為帶事務(wù)操作
時(shí),批量讀取與該操作屬于同一事務(wù)的所有操作;第四判斷單元,用于判斷 操作所屬的事務(wù)的狀態(tài);事務(wù)處理單元,用于在第四判斷單元判定該事務(wù)的
狀態(tài)為已提交時(shí),指示第一判斷單元對(duì)批量讀取單元所讀取的各操作,分別
進(jìn)行所操作的表是否需要同步的判斷;在第四判斷單元判定事務(wù)的狀態(tài)為已
回滾時(shí),刪除批量讀取單元所讀取的各操作的維護(hù)操作日志,或忽略對(duì)批量
讀取的各操作的維護(hù)操作曰志的處理;在第四判斷單元判定事務(wù)的狀態(tài)為尚
未提交時(shí),忽略對(duì)批量讀取單元所讀取的各操作的維護(hù)操作日志的處理。
不難發(fā)現(xiàn),在對(duì)事務(wù)進(jìn)行處理時(shí),需要先對(duì)該事務(wù)的狀態(tài)進(jìn)行判斷,只 有在該事務(wù)已提交的狀態(tài)下,再根據(jù)批量讀取的與該事務(wù)相關(guān)的各操作,分 別進(jìn)行所操作的表是否需要同步的判斷,以減少無(wú)效搡作。比如說(shuō),可以避 免對(duì)已回滾的事務(wù)的各操作,在基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中進(jìn)行無(wú)效 的數(shù)據(jù)維護(hù)操作。
另外,值得一提的是,本實(shí)施方式中的各單元可以是邏輯單元,在實(shí)際 應(yīng)用中,可以有各種不同的物理實(shí)現(xiàn)方式。
需要說(shuō)明的是,本實(shí)施方式中是以接收單元和生成單元,與指示單元位 于不同的服務(wù)器中進(jìn)行說(shuō)明的,但在實(shí)際應(yīng)用中,接收單元、生成單元,和 指示單元也可以均位于同一服務(wù)器中。
綜上所述,在本發(fā)明的實(shí)施方式中,接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求, 根據(jù)對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求,生成記錄該操作的維護(hù)操作日志,并根 據(jù)生成的維護(hù)操作日志,指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù) 操作。由于對(duì)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)維護(hù)操作,通過(guò)維護(hù)操作日志,在基于非易 失性物理介質(zhì)的數(shù)據(jù)庫(kù)中也作了相應(yīng)的維護(hù),即及時(shí)地從內(nèi)存數(shù)據(jù)庫(kù)中把用 戶更新的數(shù)據(jù)持久化到了基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,使得在不影響 內(nèi)存數(shù)據(jù)庫(kù)性能的情況下,能夠保證該內(nèi)存數(shù)據(jù)庫(kù)的可靠性,改善了目前內(nèi)
存數(shù)據(jù)庫(kù)的高效和可靠性不能并存的局面。
內(nèi)存數(shù)據(jù)庫(kù)所在的服務(wù)器,與指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行 數(shù)據(jù)維護(hù)操作的服務(wù)器,是兩個(gè)獨(dú)立的服務(wù)器,進(jìn)一步保證了當(dāng)前內(nèi)存數(shù)據(jù) 庫(kù)所在服務(wù)器的性能。
在指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作之前中,先判 斷所操作的表是否需要同步到該基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù),如果需要, 則再指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作,否則刪除該維 護(hù)操作日志。進(jìn)一步地,可以在判定所操作的表需要同步到該基于非易失性 物理介質(zhì)的數(shù)據(jù)庫(kù)后,進(jìn)一步判斷所操作的字段是否需要同步到該基于非易 失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,如果需要,則再指示基于非易失性物理介質(zhì)的數(shù) 據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作,否則刪除該維護(hù)操作日志。也就是說(shuō),可以根據(jù)用 戶的需求定制表級(jí)或者字段級(jí)的數(shù)據(jù)持久化,從而過(guò)濾掉不用持久化的數(shù)據(jù), 為數(shù)據(jù)持久化帶來(lái)了很大的靈活性,以及性能的提高。
在對(duì)事務(wù)進(jìn)行處理時(shí),需要先對(duì)該事務(wù)的狀態(tài)進(jìn)行判斷,只有在該事務(wù) 已提交的狀態(tài)下,再根據(jù)批量讀取的與該事務(wù)相關(guān)的各操作,分別進(jìn)行所操 作的表是否需要同步的判斷,以減少無(wú)效操作。例如,可以避免對(duì)已回滾的 事務(wù)的各操作,在基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中進(jìn)行無(wú)效的數(shù)據(jù)維護(hù)操 作。
雖然通過(guò)參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對(duì)本發(fā)明進(jìn)行了圖示和 描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對(duì)其作各 種改變,而不偏離本發(fā)明的精神和范圍,不脫離本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于,包括以下步驟接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;根據(jù)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)維護(hù)操作請(qǐng)求,生成記錄該操作的維護(hù)操作日志;根據(jù)所述維護(hù)操作日志,指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于,在所 述指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的步驟之前,還包 括以下步驟對(duì)生成的所述維護(hù)操作日志進(jìn)行緩存;在所述指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的步驟 中,根據(jù)被緩存的所述維護(hù)操作日志,指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù) 進(jìn)行數(shù)據(jù)維護(hù)操作。
3. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于,在所 述對(duì)維護(hù)操作日志進(jìn)行緩存的步驟,和所述指示基于非易失性物理介質(zhì)的數(shù) 據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的步驟之間,還包括以下步驟所述內(nèi)存數(shù)據(jù)庫(kù)所在的第一服務(wù)器,將緩存的所述維護(hù)操作日志傳輸?shù)?第二服務(wù)器中;由所述第二服務(wù)器執(zhí)行所述指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行 數(shù)據(jù)維護(hù)操作的步驟。
4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于,所述 維護(hù)操作日志包括對(duì)所述操作的表標(biāo)識(shí)、字段標(biāo)識(shí)、是否為帶事務(wù)操作的記 錄。
5. 根據(jù)權(quán)利要求4所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于,在所 述指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的步驟之前,還包 括以下步驟根據(jù)所述維護(hù)操作日志中記錄的所述操作的表標(biāo)識(shí),判斷所操作的表是 否需要同步到所述基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù);如果所操作的表需要同步,則執(zhí)行所述指示基于非易失性物理介質(zhì)的數(shù) 據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的步驟。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于,在所 述判定所操作的表需要同步后,執(zhí)行所述指示基于非易失性物理介質(zhì)的數(shù)據(jù) 庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的步驟之前,還包括以下步驟根據(jù)所述維護(hù)操作日志中記錄的所述操作的字段標(biāo)識(shí),進(jìn)一步判斷所操 作的字段是否需要同步到所述基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)中,如果需要 同步,則執(zhí)行所述指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的 步驟。
7. 根據(jù)權(quán)利要求5或6所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于, 該方法還包括以下步驟批量讀取與所述操作屬于同一事務(wù)的所有操作;如果所述操作所屬的事務(wù)已提交,則對(duì)所述批量讀取的各操作,分別執(zhí) 行所述判斷所操作的表是否需要同步的步驟;如果所述操作所屬的事務(wù)已回滾,則刪除所述批量讀取的各操作的維護(hù) 操作日志,或忽略對(duì)所述批量讀取的各操作的維護(hù)操作日志的處理;如果所述操作所屬的事務(wù)尚未提交,則忽略對(duì)所述批量讀取的各操作的 維護(hù)操作日志的處理。
8. 根據(jù)權(quán)利要求5或6所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法,其特征在于, 如果所述維護(hù)操作日志中記錄的操作為不帶事務(wù)操作,則直接執(zhí)行所述判斷 所操作的表是否需要同步的步驟。
9. 一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于,包括接收單元,用于接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;生成單元,用于根據(jù)所述接收單元收到的對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng) 求,生成記錄該操作的維護(hù)操作日志;指示單元,用于根據(jù)所述生成單元生成的維護(hù)操作日志,指示基于非易 失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。
10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于,還包 括緩存單元,用于對(duì)生成的所述維護(hù)操作日志進(jìn)行緩存;所述生成單元將生成的維護(hù)操作日志輸入到所述緩存單元,由該緩存單 元將緩存的維護(hù)操作日志傳輸?shù)剿鲋甘締卧?br>
11. 根據(jù)權(quán)利要求IO所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于,所述接收單元、生成單元和緩存單元位于所述內(nèi)存數(shù)據(jù)庫(kù)所在的第一服 務(wù)器,所述指示單元位于第二服務(wù)器中。
12. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于,所述 維護(hù)操作日志包括對(duì)所述操作的表標(biāo)識(shí)、字段標(biāo)識(shí)、是否為帶事務(wù)操作的記 錄。
13. 根據(jù)權(quán)利要求12所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于,還 包括第一判斷單元,用于根據(jù)所述生成單元生成的維護(hù)操作日志中記錄的所 述操作的表標(biāo)識(shí),判斷所操作的表是否需要同步到所述基于非易失性物理介 質(zhì)的數(shù)據(jù)庫(kù);所述指示單元在所述第一判斷單元判定所操作的表需要同步時(shí),進(jìn)行所述指示;刪除控制單元,用于在所述第一判斷單元判定所操作的表不需要同步 時(shí),刪除所述維護(hù)操作日志。
14. 根據(jù)權(quán)利要求13所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于,第 二判斷單元,用于在所述第一判斷單元判定所操作的表需要同步時(shí),根據(jù)所 述維護(hù)操作日志中記錄的所述操作的字段標(biāo)識(shí),判斷所操作的字段是否需要 同步到所述基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù),并在判定需要同步時(shí),通知所 述指示單元進(jìn)行所述指示;所述刪除控制單元還用于在所述第二判斷單元判定所操作的字段不需 要同步時(shí),刪除所述維護(hù)操作日志。
15. 根據(jù)權(quán)利要求13或14所述的數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)系統(tǒng),其特征在于, 還包括第三判斷單元,用于判斷所述生成單元生成的維護(hù)操作日志中記錄的操 作是否為帶事務(wù)操作,并在判定該操作為不帶事務(wù)操作時(shí),指示所述第一判 斷單元直接進(jìn)行所操作的表是否需要同步的判斷;批量讀取單元,用于在所述第三判斷單元判定維護(hù)操作日志中記錄的操 作為帶事務(wù)操作時(shí),批量讀取與該操作屬于同 一事務(wù)的所有操作; 第四判斷單元,用于判斷所述操作所屬的事務(wù)的狀態(tài);事務(wù)處理單元,用于在所述第四判斷單元判定所述事務(wù)的狀態(tài)為已提交 時(shí),指示所述第一判斷單元對(duì)所述批量讀取單元所讀取的各操作,分別進(jìn)行 所操作的表是否需要同步的判斷;在所述第四判斷單元判定所述事務(wù)的狀態(tài) 為已回滾時(shí),刪除所述批量讀取單元所讀取的各操作的維護(hù)操作日志,或忽 略對(duì)所述批量讀取的各操作的維護(hù)操作日志的處理;在所述第四判斷單元判 定所述事務(wù)的狀態(tài)為尚未提交時(shí),忽略對(duì)所述批量讀取單元所讀取的各操作的維護(hù)操作日志的處理。
16. —種數(shù)據(jù)維護(hù)設(shè)備,其特征在于,包括接收單元,用于接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求;生成單元,用于根據(jù)所述接收單元收到的對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng) 求,生成記錄該操作的維護(hù)操作曰志;指示單元,用于根據(jù)所述生成單元生成的維護(hù)操作日志,指示基于非易 失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。
全文摘要
本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù),公開(kāi)了一種數(shù)據(jù)庫(kù)中數(shù)據(jù)維護(hù)方法、設(shè)備及其系統(tǒng),在創(chuàng)建、修改或刪除數(shù)據(jù)時(shí),在不影響或盡量少影響內(nèi)存數(shù)據(jù)庫(kù)性能的情況下,能夠保證該內(nèi)存數(shù)據(jù)庫(kù)的可靠性。本發(fā)明中,接收對(duì)內(nèi)存數(shù)據(jù)庫(kù)的維護(hù)操作請(qǐng)求,根據(jù)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)維護(hù)操作請(qǐng)求,生成記錄該操作的維護(hù)操作日志,根據(jù)維護(hù)操作日志,指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作。內(nèi)存數(shù)據(jù)庫(kù)所在的服務(wù)器,與指示基于非易失性物理介質(zhì)的數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)維護(hù)操作的服務(wù)器,是兩個(gè)獨(dú)立的服務(wù)器。
文檔編號(hào)G06F11/00GK101364217SQ200710075708
公開(kāi)日2009年2月11日 申請(qǐng)日期2007年8月8日 優(yōu)先權(quán)日2007年8月8日
發(fā)明者宇 張, 徐志賢 申請(qǐng)人:華為技術(shù)有限公司