專利名稱:內(nèi)存數(shù)據(jù)庫的管理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域中的內(nèi)存數(shù)據(jù)庫,具體而言,涉及一種內(nèi)存數(shù)據(jù)庫的管理 方法和裝置。
背景技術(shù):
內(nèi)存數(shù)據(jù)庫是將數(shù)據(jù)放在內(nèi)存中操作的數(shù)據(jù)庫。相對于磁盤,內(nèi)存的數(shù)據(jù)讀寫速 度要高出幾個(gè)數(shù)量級,將數(shù)據(jù)保存在內(nèi)存中相比從磁盤上訪問能夠極大地提高應(yīng)用的性 能。內(nèi)存數(shù)據(jù)庫拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計(jì)了體 系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),所以數(shù)據(jù)處理速 度比傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)處理速度要快很多,一般都在10倍以上。同時(shí),因內(nèi)存數(shù)據(jù)庫所有 活動(dòng)數(shù)據(jù)全部存儲(chǔ)在內(nèi)存,存在數(shù)據(jù)丟失的風(fēng)險(xiǎn)。如何提高內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)安全性就成 為內(nèi)存數(shù)據(jù)庫需要解決的問題。目前已有的解決方案,主要是通過維護(hù)主備兩個(gè)或多個(gè)內(nèi)存數(shù)據(jù)庫,并通過消息 接口或日志文件來構(gòu)造一個(gè)內(nèi)存庫的備份數(shù)據(jù),以提高內(nèi)存數(shù)據(jù)庫的可靠性和安全性。但是,發(fā)明人發(fā)現(xiàn)根據(jù)上述現(xiàn)有技術(shù)的解決方案,在對內(nèi)存數(shù)據(jù)庫中的存儲(chǔ)單元 進(jìn)行管理時(shí),需要對存儲(chǔ)單元進(jìn)行操作、且存儲(chǔ)單元彼此可能是不連續(xù)存放的。由于影響磁盤I/O性能的因素主要有兩個(gè)單位時(shí)間內(nèi)寫入磁盤的數(shù)據(jù)量,量越 大I/O的壓力越大;寫入磁盤數(shù)據(jù)的離散程度,數(shù)據(jù)越離散磁頭的尋址時(shí)間越長,I/O的效 率越差,磁頭尋址效率最高的情況是順序讀寫數(shù)據(jù),因此,現(xiàn)有技術(shù)中的內(nèi)存數(shù)據(jù)庫的管理 方法需要大量的尋址和更新時(shí)間,從而降低了磁盤I/O的傳輸速度。此外,根據(jù)上述現(xiàn)有技術(shù)的解決方案,需要額外的一個(gè)或多個(gè)備用設(shè)備來承載備 份內(nèi)存數(shù)據(jù)庫,這樣就提高了系統(tǒng)的成本。同時(shí)還需要增加同步接口,來保證兩個(gè)或多個(gè)內(nèi) 存數(shù)據(jù)庫數(shù)據(jù)一致,不但增加了內(nèi)存數(shù)據(jù)庫的邏輯復(fù)雜度,同時(shí)也降低了其性能。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種內(nèi)存數(shù)據(jù)庫的管理方法和裝置,以至少解決現(xiàn)有 技術(shù)中磁盤I/O的傳輸速度較低的問題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種內(nèi)存數(shù)據(jù)庫的管理方法方法,其包括在內(nèi)存 數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,上述位圖區(qū)中的比特位指示上述記錄存儲(chǔ)區(qū)中 的存儲(chǔ)單元是否空閑;根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作。進(jìn)一步地,根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作包括 當(dāng)接收到的操作信息指示對上述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行刪除操作時(shí),將上述位 圖區(qū)中與上述第一存儲(chǔ)單元對應(yīng)的比特位的值設(shè)置成指示上述第一存儲(chǔ)單元空閑,其中, 上述第一存儲(chǔ)單元包括一個(gè)或多個(gè)存儲(chǔ)單元。進(jìn)一步地,根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作還包 括當(dāng)接收到的操作信息指示對上述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行修改操作時(shí),對上述第一存儲(chǔ)單元執(zhí)行上述刪除操作,再對上述第一存儲(chǔ)單元執(zhí)行插入操作。進(jìn)一步地,對上述第一存儲(chǔ)單元執(zhí)行插入操作包括按照地址順序查找地址最小 的空閑存儲(chǔ)單元;將修改后的第一存儲(chǔ)單元插入到上述查找到的地址最小的空閑存儲(chǔ)單元 中。進(jìn)一步地,上述在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū)包括按照操作系統(tǒng)頁 劃分上述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū),其中,一個(gè)上述操作系統(tǒng)頁對應(yīng)上述記錄存儲(chǔ)區(qū)中 的一個(gè)或多個(gè)存儲(chǔ)單元。進(jìn)一步地,在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū)之后,還包括在磁盤上創(chuàng)建 與上述記錄存儲(chǔ)區(qū)和位圖區(qū)相同的記錄存儲(chǔ)區(qū)和位圖區(qū)。進(jìn)一步地,在根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作之 后,還包括若執(zhí)行管理操作的存儲(chǔ)單元的數(shù)量達(dá)到預(yù)定的閾值,或者,距離上一次執(zhí)行管 理操作超過預(yù)定的時(shí)間,則將上述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū)和位圖區(qū)同步到上述磁盤上 的記錄存儲(chǔ)區(qū)和位圖區(qū)。根據(jù)本發(fā)明的另一方面,提供了一種內(nèi)存數(shù)據(jù)庫的管理裝置,其包括設(shè)置單元, 用于在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,上述位圖區(qū)中的比特位指示上述記 錄存儲(chǔ)區(qū)中的存儲(chǔ)單元是否空閑;管理單元,用于根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的 存儲(chǔ)單元執(zhí)行管理操作。進(jìn)一步地,上述管理單元包括設(shè)置模塊,用于當(dāng)接收到的操作信息指示對上述記 錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行刪除操作時(shí),將上述位圖區(qū)中與上述第一存儲(chǔ)單元對應(yīng)的 比特位的值設(shè)置成指示上述第一存儲(chǔ)單元空閑,其中,上述第一存儲(chǔ)單元包括一個(gè)或多個(gè) 存儲(chǔ)單元。進(jìn)一步地,上述設(shè)置模塊還用于在接收到的操作信息指示對上述記錄存儲(chǔ)區(qū)中的 第一存儲(chǔ)單元執(zhí)行修改操作時(shí),對上述第一存儲(chǔ)單元執(zhí)行上述刪除操作;上述管理單元還 包括查找模塊,用于在接收到的操作信息指示對上述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行 修改操作時(shí),按照地址順序查找地址最小的空閑存儲(chǔ)單元;插入模塊,用于將修改后的第一 存儲(chǔ)單元插入到上述查找到的地址最小的空閑存儲(chǔ)單元中。通過本發(fā)明,采用了位圖區(qū)來指示內(nèi)存數(shù)據(jù)庫中的存儲(chǔ)單元是否被占用,從而在 對存儲(chǔ)單元進(jìn)行管理操作時(shí),可以只對位圖區(qū)進(jìn)行操作,而不對存儲(chǔ)單元進(jìn)行操作,從而減 少了尋址和更新的時(shí)間,解決現(xiàn)有技術(shù)中磁盤I/O的傳輸速度較低的問題。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的內(nèi)存數(shù)據(jù)庫的管理方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的內(nèi)存數(shù)據(jù)庫的管理裝置的一種優(yōu)選的結(jié)構(gòu)示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的內(nèi)存數(shù)據(jù)庫的管理裝置的另一種優(yōu)選的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。實(shí)施例1圖1是根據(jù)本發(fā)明實(shí)施例的內(nèi)存數(shù)據(jù)庫的管理方法的流程圖,其包括如下步驟S102,在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,上述位圖區(qū)中的比特位指 示上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元是否空閑;S104,根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作。通過本發(fā)明,采用了位圖區(qū)來指示內(nèi)存數(shù)據(jù)庫中的存儲(chǔ)單元是否被占用,從而在 對存儲(chǔ)單元進(jìn)行管理操作時(shí),可以只對位圖區(qū)進(jìn)行操作,而不對存儲(chǔ)單元進(jìn)行操作,從而減 少了尋址和更新的時(shí)間,解決現(xiàn)有技術(shù)中磁盤I/O的傳輸速度較低的問題。優(yōu)選的,根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作包括當(dāng) 接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行刪除操作時(shí),將所述位圖 區(qū)中與所述第一存儲(chǔ)單元對應(yīng)的比特位的值設(shè)置成指示所述第一存儲(chǔ)單元空閑,其中,所 述第一存儲(chǔ)單元包括一個(gè)或多個(gè)存儲(chǔ)單元。也就是說,在執(zhí)行存儲(chǔ)單元的刪除操作時(shí),并沒 有實(shí)際刪除該存儲(chǔ)單元中的數(shù)據(jù),而是將所述位圖區(qū)中與該存儲(chǔ)單元對應(yīng)的比特位的值設(shè) 置成指示所述第一存儲(chǔ)單元空閑。通過本實(shí)施例中的方法,將刪除操作需要同步的數(shù)據(jù)量 縮小到一個(gè)或多個(gè)比特位,從而減少了 I/O的數(shù)據(jù)量,提高了磁盤I/O的傳輸速度。例如,比特位的值為0時(shí),表示其所對應(yīng)的存儲(chǔ)單元空閑;比特位的值為1時(shí),表示 其所對應(yīng)的存儲(chǔ)單元被占用。當(dāng)執(zhí)行第一存儲(chǔ)單元的刪除操作時(shí),將與第一存儲(chǔ)單元對應(yīng) 的比特位置0,而不刪除第一存儲(chǔ)單元中的數(shù)據(jù)。優(yōu)選的,根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作還包括 當(dāng)接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行修改操作時(shí),對所述第 一存儲(chǔ)單元執(zhí)行所述刪除操作,再對所述第一存儲(chǔ)單元執(zhí)行插入操作。通過本實(shí)施例中的 方法,減少了執(zhí)行修改操作時(shí)的I/O的數(shù)據(jù)量,進(jìn)一步提高了磁盤I/O的傳輸速度。優(yōu)選的,對所述第一存儲(chǔ)單元執(zhí)行插入操作包括按照地址順序查找地址最小的 空閑存儲(chǔ)單元;將修改后的第一存儲(chǔ)單元插入到所述查找到的地址最小的空閑存儲(chǔ)單元 中。通過本實(shí)施例中,按照地址順序遞增優(yōu)先尋找空閑存儲(chǔ)單元,這樣,就保證了記錄存儲(chǔ) 區(qū)內(nèi)的數(shù)據(jù)更新趨于集中到連續(xù)的地址范圍內(nèi),縮短了尋址的時(shí)間,繼而提高同步磁盤的 效率。優(yōu)選的,所述在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū)包括按照操作系統(tǒng)頁劃 分所述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū),其中,一個(gè)所述操作系統(tǒng)頁對應(yīng)所述記錄存儲(chǔ)區(qū)中的 一個(gè)或多個(gè)存儲(chǔ)單元。通過本實(shí)施例,以操作系統(tǒng)頁為單元?jiǎng)澐执鎯?chǔ)單元,有利于提高操作 系統(tǒng)的管理效率。優(yōu)選的,在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū)之后,還包括在磁盤上創(chuàng)建與 所述記錄存儲(chǔ)區(qū)和位圖區(qū)相同的記錄存儲(chǔ)區(qū)和位圖區(qū)。通過本實(shí)施例,將內(nèi)存數(shù)據(jù)庫中的 記錄存儲(chǔ)區(qū)和位圖區(qū)同步映射到磁盤中,進(jìn)一步保證了內(nèi)存中數(shù)據(jù)的安全性。優(yōu)選的,在根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作之后, 還包括若執(zhí)行管理操作的存儲(chǔ)單元的數(shù)量達(dá)到預(yù)定的閾值,或者,距離上一次執(zhí)行管理操 作超過預(yù)定的時(shí)間,則將所述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū)和位圖區(qū)同步到所述磁盤上的記 錄存儲(chǔ)區(qū)和位圖區(qū)。通過本實(shí)施例,可以靈活地控制同步的時(shí)間。
實(shí)施例2在本實(shí)施例中,內(nèi)存數(shù)據(jù)的管理方法包括以下步驟Si,在內(nèi)存數(shù)據(jù)庫創(chuàng)建多個(gè)內(nèi)存表,每個(gè)內(nèi)存表包含記錄存儲(chǔ)區(qū)與位圖區(qū),其中, 記錄存儲(chǔ)區(qū)使用存儲(chǔ)單元保存內(nèi)存表中的數(shù)據(jù)記錄,位圖區(qū)用于保存記錄存儲(chǔ)區(qū)中存儲(chǔ)單 元的使用情況,位圖區(qū)用一個(gè)BIT位表示一條存儲(chǔ)單元的使用情況。S2,在磁盤上創(chuàng)建內(nèi)存數(shù)據(jù)庫的內(nèi)存表的對應(yīng)存儲(chǔ)文件。優(yōu)選的,磁盤上的存儲(chǔ)文 件包括內(nèi)存表的記錄存儲(chǔ)區(qū)中的數(shù)據(jù)、位圖區(qū)中的數(shù)據(jù)、控制信息,其中,控制信息包括以 下信息之一內(nèi)存表記錄長度、版本信息、記錄存儲(chǔ)區(qū)的偏移、位圖區(qū)的偏移。S3,創(chuàng)建磁盤上的存儲(chǔ)文件與內(nèi)存數(shù)據(jù)庫的內(nèi)存表之間的映射,內(nèi)存數(shù)據(jù)庫通過 內(nèi)存指針對磁盤上的存儲(chǔ)文件進(jìn)行訪問。優(yōu)選的,每個(gè)內(nèi)存表可以對應(yīng)一個(gè)內(nèi)存文件映射 區(qū),或者,多個(gè)內(nèi)存表對應(yīng)一個(gè)內(nèi)存文件映射區(qū)。S4,當(dāng)修改映射內(nèi)存文件映射區(qū)時(shí),即完成一次同步磁盤的操作。在本發(fā)明中,內(nèi) 存文件映射區(qū)就相當(dāng)于磁盤文件,對該映射區(qū)的修改即是對磁盤文件的修改。S5,當(dāng)對內(nèi)存中的存儲(chǔ)單元進(jìn)行修改時(shí),在內(nèi)存中創(chuàng)建臟數(shù)據(jù)緩沖區(qū),其中,臟數(shù) 據(jù)緩沖區(qū)用于記錄對應(yīng)內(nèi)存表的臟數(shù)據(jù)(即,被修改的存儲(chǔ)單元中的數(shù)據(jù))。優(yōu)選的,臟數(shù) 據(jù)包括以下至少之一內(nèi)粗表ID、內(nèi)存表插入的新數(shù)據(jù)、內(nèi)存表修改的數(shù)據(jù)、臟數(shù)據(jù)在內(nèi)存 表數(shù)據(jù)區(qū)的偏移、臟數(shù)的長度、內(nèi)存表的位圖區(qū)。優(yōu)選的,每個(gè)內(nèi)存表可以對應(yīng)一個(gè)臟數(shù)據(jù) 緩沖區(qū),或者,多個(gè)內(nèi)存表對應(yīng)一個(gè)臟數(shù)據(jù)緩沖區(qū)。S6,當(dāng)對內(nèi)存表執(zhí)行增加、刪除、修改操作時(shí),將變動(dòng)的數(shù)據(jù)寫入臟數(shù)據(jù)緩沖區(qū)。S7,當(dāng)臟數(shù)據(jù)區(qū)存儲(chǔ)的臟數(shù)據(jù)達(dá)到閾值,或者距離上一次修改內(nèi)存文件映射區(qū)的 時(shí)間間隔超過閾值時(shí),則執(zhí)行一次臟數(shù)據(jù)區(qū)到磁盤上的文件映射區(qū)的數(shù)據(jù)同步。優(yōu)選的,臟數(shù)據(jù)區(qū)到文件映射區(qū)的數(shù)據(jù)同步,逐一讀取臟數(shù)據(jù)記錄,根據(jù)內(nèi)存表 ID、臟數(shù)據(jù)偏移、臟數(shù)據(jù)長度將臟數(shù)據(jù)記錄拷貝到文件映射區(qū)對應(yīng)的偏移位置;臟數(shù)據(jù)區(qū)內(nèi) 的位圖數(shù)據(jù)直接整體拷貝到文件映射區(qū)的位圖數(shù)據(jù)區(qū)。S8,臟數(shù)據(jù)區(qū)的所有記錄都同步到文件映射區(qū)后,將臟數(shù)據(jù)區(qū)清空。在本實(shí)施例中,為了降低同步磁盤的數(shù)據(jù)總量。內(nèi)存表管理增加了位圖區(qū),該區(qū)通 過BIT位標(biāo)識(shí)一個(gè)內(nèi)存表存儲(chǔ)單元的占用與否。當(dāng)執(zhí)行內(nèi)存表存儲(chǔ)記錄刪除時(shí),只需要更 新一個(gè)或多個(gè)BIT位,這樣避免了對實(shí)際存儲(chǔ)單元的清除處理。從而將刪除操作需要同步 的數(shù)據(jù)量縮小到一個(gè)BIT位,減少了系I/O傳輸?shù)臄?shù)據(jù)量,提高了 I/O的傳輸速度。為了提高磁盤的尋址效率,將內(nèi)存表的數(shù)據(jù)修改請求,變更為刪除操作與插入操 作。即,先執(zhí)行上述的刪除操作,然后,在對修改后的數(shù)據(jù)進(jìn)行插入操作。在執(zhí)行插入操作過 程中,按照地址順序遞增優(yōu)先尋找空閑存儲(chǔ)單元(例如,尋找地址最小的空閑存儲(chǔ)單元), 然后,將修改后的數(shù)據(jù)插入到所尋找到的空閑存儲(chǔ)單元中。這樣就保證了記錄存儲(chǔ)區(qū)內(nèi)的 更新后的存儲(chǔ)單元集中到連續(xù)的地址范圍內(nèi),繼而提高同步磁盤的效率。當(dāng)內(nèi)存數(shù)據(jù)庫重新啟動(dòng)時(shí),首先檢查磁盤同步的完整性與正確性,包括檢查文件 的版本、內(nèi)存記錄長度、校驗(yàn)信息等。當(dāng)檢查通過后,根據(jù)文件內(nèi)的控制信息加載文件內(nèi)的 位圖區(qū)數(shù)據(jù)、記錄數(shù)據(jù)區(qū)數(shù)據(jù)在內(nèi)存表的位圖區(qū)和記錄數(shù)據(jù)區(qū)。最后根據(jù)位圖區(qū)占用標(biāo)識(shí), 逐一掃描記錄數(shù)據(jù)區(qū),重新創(chuàng)建內(nèi)存表的索引。實(shí)施例3
7
本發(fā)明還提供了一種內(nèi)存數(shù)據(jù)庫的管理裝置的實(shí)施例,其可以使用上述實(shí)施1-2 中的管理方法來對內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行管理。圖2是根據(jù)本發(fā)明實(shí)施例的內(nèi)存數(shù)據(jù)庫的管理裝置的一種優(yōu)選的結(jié)構(gòu)示意圖,其 包括設(shè)置單元202,用于在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,所述位圖區(qū)中 的比特位指示所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元是否空閑;管理單元204,用于根據(jù)所述位圖 區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作。通過本發(fā)明,采用了位圖區(qū)來指示內(nèi)存數(shù)據(jù)庫中的存儲(chǔ)單元是否被占用,從而在 對存儲(chǔ)單元進(jìn)行管理操作時(shí),可以只對位圖區(qū)進(jìn)行操作,而不對存儲(chǔ)單元進(jìn)行操作,從而減 少了尋址和更新的時(shí)間,解決現(xiàn)有技術(shù)中磁盤I/O的傳輸速度較低的問題。優(yōu)選的,所述管理單元包括204 設(shè)置模塊2041,用于當(dāng)接收到的操作信息指示對 所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行刪除操作時(shí),將所述位圖區(qū)中與所述第一存儲(chǔ)單元 對應(yīng)的比特位的值設(shè)置成指示所述第一存儲(chǔ)單元空閑,其中,所述第一存儲(chǔ)單元包括一個(gè) 或多個(gè)存儲(chǔ)單元。也就是說,在執(zhí)行存儲(chǔ)單元的刪除操作時(shí),并沒有實(shí)際刪除該存儲(chǔ)單元中 的數(shù)據(jù),而是將所述位圖區(qū)中與該存儲(chǔ)單元對應(yīng)的比特位的值設(shè)置成指示所述第一存儲(chǔ)單 元空閑。通過本實(shí)施例中的方法,將刪除操作需要同步的數(shù)據(jù)量縮小到一個(gè)或多個(gè)比特位, 從而減少了 I/O的數(shù)據(jù)量,提高了磁盤I/O的傳輸速度。優(yōu)選的,所述設(shè)置模塊2041還用于在接收到的操作信息指示對所述記錄存儲(chǔ)區(qū) 中的第一存儲(chǔ)單元執(zhí)行修改操作時(shí),對所述第一存儲(chǔ)單元執(zhí)行所述刪除操作;所述管理單 元204還包括查找模塊2042,用于在接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一 存儲(chǔ)單元執(zhí)行修改操作時(shí),按照地址順序查找地址最小的空閑存儲(chǔ)單元;插入模塊2043, 用于在設(shè)置模塊2041對所述第一存儲(chǔ)單元執(zhí)行所述刪除操作之后,將修改后的第一存儲(chǔ) 單元插入到所述查找到的地址最小的空閑存儲(chǔ)單元中。通過本實(shí)施例中,按照地址順序遞 增優(yōu)先尋找空閑存儲(chǔ)單元,這樣,就保證了記錄存儲(chǔ)區(qū)內(nèi)的數(shù)據(jù)更新趨于集中到連續(xù)的地 址范圍內(nèi),繼而提高同步磁盤的效率。優(yōu)選的,所述在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū)包括按照操作系統(tǒng)頁劃 分所述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū),其中,一個(gè)所述操作系統(tǒng)頁對應(yīng)所述記錄存儲(chǔ)區(qū)中的 一個(gè)或多個(gè)存儲(chǔ)單元。通過本實(shí)施例,以操作系統(tǒng)頁為單元?jiǎng)澐执鎯?chǔ)單元,有利于提高操作 系統(tǒng)的管理效率。優(yōu)選的,在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū)之后,上述內(nèi)存數(shù)據(jù)庫的管理 裝置在磁盤上創(chuàng)建與所述記錄存儲(chǔ)區(qū)和位圖區(qū)相同的記錄存儲(chǔ)區(qū)和位圖區(qū)。通過本實(shí)施 例,將內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū)和位圖區(qū)同步映射到磁盤中,進(jìn)一步保證了內(nèi)存中數(shù)據(jù) 的安全性。優(yōu)選的,在根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作之后, 若執(zhí)行管理操作的存儲(chǔ)單元的數(shù)量達(dá)到預(yù)定的閾值,或者,距離上一次執(zhí)行管理操作超過 預(yù)定的時(shí)間,上述內(nèi)存數(shù)據(jù)庫的管理裝置將所述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū)和位圖區(qū)同步 到所述磁盤上的記錄存儲(chǔ)區(qū)和位圖區(qū)。通過本實(shí)施例,可以靈活地控制同步的時(shí)間。實(shí)施例4圖3是根據(jù)本發(fā)明實(shí)施例的內(nèi)存數(shù)據(jù)庫的管理裝置的另一種優(yōu)選的結(jié)構(gòu)示意圖, 其包括配置管理單元302、初始化管理單元304、內(nèi)存表管理單元306、文件映射管理單元
8308、內(nèi)存數(shù)據(jù)區(qū)310、內(nèi)存文件映射區(qū)312以及映射文件314。上述元件的連接關(guān)系如圖3 所示。配置管理單元302實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫信息配置管理,包括內(nèi)存表大小、磁盤映射文 件的存儲(chǔ)路徑等;初始化管理單元304實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫進(jìn)程創(chuàng)建、內(nèi)存空間申請以及通知內(nèi)存表管 理單元與文件映射管理單元?jiǎng)?chuàng)建內(nèi)存表與創(chuàng)建映射區(qū)等;內(nèi)存表管理單元306實(shí)現(xiàn)內(nèi)存表的創(chuàng)建以及對外提供內(nèi)存表訪問接口,如內(nèi)存表 查詢、修改、刪除等;文件映射管理單元308實(shí)現(xiàn)內(nèi)存文件映射區(qū)的創(chuàng)建以及臟數(shù)據(jù)同步到磁盤文件 的管理;內(nèi)存數(shù)據(jù)區(qū)310保存內(nèi)存表以及臟數(shù)據(jù)區(qū);內(nèi)存文件映射區(qū)312為磁盤文件在數(shù)據(jù)庫進(jìn)程內(nèi)存的內(nèi)存文件映射;映射文件314為內(nèi)存數(shù)據(jù)庫各個(gè)內(nèi)存表在磁盤的同步文件。上述幾個(gè)管理單元具體實(shí)現(xiàn)既可以合一設(shè)置,也能夠以獨(dú)立的進(jìn)程方式實(shí)現(xiàn),具 體實(shí)施時(shí)可以根據(jù)設(shè)計(jì)需要靈活選擇組織方式。本實(shí)施例中的內(nèi)存數(shù)據(jù)庫的管理裝置采用內(nèi)存文件映射實(shí)現(xiàn)內(nèi)存表數(shù)據(jù)到磁盤 的快速同步,提高了內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)安全性;并且無需進(jìn)行主備內(nèi)存數(shù)據(jù)庫數(shù)據(jù)同步,降 低了設(shè)備成本和設(shè)備維護(hù)復(fù)雜度。此外,還提供內(nèi)存表位圖管理、數(shù)據(jù)修改操作轉(zhuǎn)換處理、 空閑存儲(chǔ)單元按照地址順序?qū)ぶ饭芾恚M(jìn)一步提高了數(shù)據(jù)庫磁盤同步性能。綜上所述,采用本發(fā)明所述方案,可以有效提高全內(nèi)存數(shù)據(jù)庫的容災(zāi)能力和磁盤 同步能力,具有很強(qiáng)的通用性。本發(fā)明已在短消息中心系統(tǒng)中應(yīng)用,起到明顯的優(yōu)化作用。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ) 在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示 出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或 步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
9
權(quán)利要求
一種內(nèi)存數(shù)據(jù)庫的管理方法,其特征在于,包括在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,所述位圖區(qū)中的比特位指示所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元是否空閑;根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的 存儲(chǔ)單元執(zhí)行管理操作包括當(dāng)接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行刪除操作時(shí),將所 述位圖區(qū)中與所述第一存儲(chǔ)單元對應(yīng)的比特位的值設(shè)置成指示所述第一存儲(chǔ)單元空閑,其 中,所述第一存儲(chǔ)單元包括一個(gè)或多個(gè)存儲(chǔ)單元。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的 存儲(chǔ)單元執(zhí)行管理操作還包括當(dāng)接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行修改操作時(shí),對所 述第一存儲(chǔ)單元執(zhí)行所述刪除操作,再對所述第一存儲(chǔ)單元執(zhí)行插入操作。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述對所述第一存儲(chǔ)單元執(zhí)行插入操作 包括按照地址順序查找地址最小的空閑存儲(chǔ)單元;將修改后的第一存儲(chǔ)單元插入到所述查找到的地址最小的空閑存儲(chǔ)單元中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和 位圖區(qū)包括按照操作系統(tǒng)頁劃分所述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū),其中,一個(gè)所述操作系統(tǒng)頁對 應(yīng)所述記錄存儲(chǔ)區(qū)中的一個(gè)或多個(gè)存儲(chǔ)單元。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖 區(qū)之后,還包括在磁盤上創(chuàng)建與所述記錄存儲(chǔ)區(qū)和位圖區(qū)相同的記錄存儲(chǔ)區(qū)和位圖區(qū)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中 的存儲(chǔ)單元執(zhí)行管理操作之后,還包括若執(zhí)行管理操作的存儲(chǔ)單元的數(shù)量達(dá)到預(yù)定的閾值,或者,距離上一次執(zhí)行管理操作 超過預(yù)定的時(shí)間,則將所述內(nèi)存數(shù)據(jù)庫中的記錄存儲(chǔ)區(qū)和位圖區(qū)同步到所述磁盤上的記錄 存儲(chǔ)區(qū)和位圖區(qū)。
8.—種內(nèi)存數(shù)據(jù)庫的管理裝置,其特征在于,包括設(shè)置單元,用于在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,所述位圖區(qū)中的比特 位指示所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元是否空閑;管理單元,用于根據(jù)所述位圖區(qū)對所述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述管理單元包括設(shè)置模塊,用于當(dāng)接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行刪 除操作時(shí),將所述位圖區(qū)中與所述第一存儲(chǔ)單元對應(yīng)的比特位的值設(shè)置成指示所述第一存 儲(chǔ)單元空閑,其中,所述第一存儲(chǔ)單元包括一個(gè)或多個(gè)存儲(chǔ)單元。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述設(shè)置模塊還用于在接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行修改操作時(shí),對所述第一存儲(chǔ)單元執(zhí)行所 述刪除操作;所述管理單元還包括查找模塊,用于在接收到的操作信息指示對所述記錄存儲(chǔ)區(qū)中的第一存儲(chǔ)單元執(zhí)行修 改操作時(shí),按照地址順序查找地址最小的空閑存儲(chǔ)單元;插入模塊,用于將修改后的第一存儲(chǔ)單元插入到所述查找到的地址最小的空閑存儲(chǔ)單 元中。
全文摘要
本發(fā)明公開了一種內(nèi)存數(shù)據(jù)庫的管理方法和裝置,其中,該內(nèi)存數(shù)據(jù)庫的管理方法包括在內(nèi)存數(shù)據(jù)庫中設(shè)置記錄存儲(chǔ)區(qū)和位圖區(qū),其中,上述位圖區(qū)中的比特位指示上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元是否空閑;根據(jù)上述位圖區(qū)對上述記錄存儲(chǔ)區(qū)中的存儲(chǔ)單元執(zhí)行管理操作。本發(fā)明減少了尋址和更新的時(shí)間,解決現(xiàn)有技術(shù)中磁盤I/O的傳輸速度較低的問題。
文檔編號(hào)G06F17/30GK101916290SQ20101026272
公開日2010年12月15日 申請日期2010年8月18日 優(yōu)先權(quán)日2010年8月18日
發(fā)明者李學(xué)領(lǐng) 申請人:中興通訊股份有限公司