專利名稱:具有動(dòng)態(tài)加載能力的關(guān)系數(shù)據(jù)庫(kù)架構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)庫(kù)架構(gòu)。
背景技術(shù):
例如信用卡^^司和電話公司的一些大型公司使用大^f莫關(guān)系數(shù)據(jù)庫(kù)系 統(tǒng),用于在每天存儲(chǔ)幾百萬(wàn)條記錄,其中將每個(gè)記錄保留在直接存取存儲(chǔ) 設(shè)備上的數(shù)據(jù)庫(kù)中一定時(shí)間段,之后從數(shù)據(jù)庫(kù)去除記錄。這種大目使用可需要兆兆字節(jié)(terabyte )的直接存M儲(chǔ)器以支持進(jìn)行中的查詢。然而, 大部分查詢僅需要對(duì)整個(gè)數(shù)據(jù)庫(kù)的很小部分進(jìn)行訪問(wèn),而許多記錄在它們 的保留期間根本不會(huì)被訪問(wèn)。發(fā)明內(nèi)容因此,本發(fā)明提供一種具有動(dòng)態(tài)加載能力的關(guān)系數(shù)據(jù)庫(kù)架構(gòu),其中并 不是存儲(chǔ)在數(shù)據(jù)庫(kù)中,而是將記錄存儲(chǔ)在單獨(dú)管理的外部存儲(chǔ)裝置上的文 件中,并且響應(yīng)于訪問(wèn)記錄的請(qǐng)求將記錄動(dòng)態(tài)加載到數(shù)據(jù)庫(kù)中。在本發(fā)明的一方面中,提供一種具有動(dòng)態(tài)加栽能力的關(guān)系數(shù)據(jù)庫(kù)架構(gòu), 包括關(guān)系數(shù)據(jù)庫(kù),用于存儲(chǔ)記錄;存儲(chǔ)單元;記錄分配器,用于在所述 存儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一個(gè)記錄;所述對(duì)象到 所述對(duì)象包含的記錄的映射,其中所述記錄分配器被配置為,接收動(dòng)態(tài)加 載請(qǐng)求,所述動(dòng)態(tài)加載請(qǐng)求包含期望記錄的鍵值,搜索所迷映射,以確定 在所述存儲(chǔ)單元中的所述對(duì)象中的哪個(gè)對(duì)象包含與所述鍵值匹配的記錄, 和將所匹配的記錄中的任一個(gè)加栽到關(guān)系數(shù)據(jù)庫(kù)中。在本發(fā)明的另一方面中,所M象是數(shù)據(jù)文件。在本發(fā)明的另一方面中,所述架構(gòu)還包括查詢處理器,被配置為從 計(jì)算機(jī)接收查詢,確定作為所述查詢的焦點(diǎn)的至少一個(gè)鍵值,將包含所述 鍵值的所述動(dòng)態(tài)加載請(qǐng)求傳送至所述記錄分配器,以及在將所匹配記錄加 載到所述數(shù)據(jù)庫(kù)中之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。在本發(fā)明的另一方面中,所述記錄分配器^:配置為更新所述映射,以表示所述記錄中任一個(gè)的當(dāng)前位置在所述數(shù)據(jù)庫(kù)中或者所述存儲(chǔ)單元中。 在本發(fā)明的另 一方面中,所述記錄分配器被配置為根據(jù)所述記錄能夠駐留在所述數(shù)據(jù)庫(kù)期間的預(yù)定時(shí)間長(zhǎng)度^:置用于所述記錄中任一個(gè)的期滿 時(shí)間戳,以及在到達(dá)所述期滿時(shí)間戳?xí)r從所述數(shù)據(jù)庫(kù)去除所述記錄。在本發(fā)明的另 一方面中,所述記錄分配器被配置為以壓縮格式在所述 存儲(chǔ)單元中存儲(chǔ)所述對(duì)象中的任一個(gè),以及在將所述記錄加載到所述數(shù)據(jù) 庫(kù)之前對(duì)所述記錄中的任一個(gè)解壓縮。在本發(fā)明的另一方面中,基于計(jì)算可能性選擇所述鍵,所述計(jì)算可能 性是所述數(shù)據(jù)庫(kù)的未來(lái)查詢基于所述鍵的鍵值選擇記錄的計(jì)算可能性,其 中如果所述可能性超過(guò)預(yù)定值則選擇所述鍵。在本發(fā)明的另一方面中,在所述數(shù)據(jù)庫(kù)的過(guò)去查詢基于所述鍵的鍵值 選擇記錄的情況下選擇所述鍵。在本發(fā)明的另一方面中,所述映射使用一個(gè)映射記錄,以將所述對(duì)象 中的任一個(gè)映射到在具有相同鍵值的所ii^t象中包含的多個(gè)記錄。在本發(fā)明的另一方面中,所述映射j吏用第一映射記錄,以將所述對(duì)象 中的任一個(gè)映射到在所述對(duì)象中包含的具有第一鍵值的第一多個(gè)記錄,以 及使用第二映射記錄,以將所述對(duì)象映射到在所述對(duì)象中包含的具有第二 鍵值的第二多個(gè)記錄。在本發(fā)明的另 一方面中,所述記錄分配器^L配置為生成所述對(duì)象中的任一個(gè),以僅包括具有相同鍵值的記錄。在本發(fā)明的另 一方面中,所述記錄分配器^L配置為生成所述對(duì)象中的 任一個(gè),以僅包括具有來(lái)自預(yù)定數(shù)目的不同^^值中任一個(gè)的鍵值的記錄。 在本發(fā)明的另 一方面中,所述記錄分配器4皮配置為生成所述對(duì)象中的任一個(gè),以包括多個(gè)分區(qū)對(duì)象,每個(gè)分區(qū)對(duì)象包括在所述對(duì)象中的所述記 錄的子集,由分區(qū)鍵識(shí)別所述子集。在本發(fā)明的另 一方面中,所述記錄分配器被配置為并行地將來(lái)自所述 分區(qū)對(duì)象中任一個(gè)的記錄加栽到所述數(shù)據(jù)庫(kù)的對(duì)應(yīng)分區(qū)。在本發(fā)明的另一方面中,所述記錄分配器^J己置為通過(guò)以下方式生成 所述對(duì)象中的任一個(gè),即首先通過(guò)用所述記錄中的任一個(gè)填充所述數(shù)據(jù)庫(kù), 然后從所述數(shù)據(jù)庫(kù)將所述記錄中的任一個(gè)移到隨后存儲(chǔ)在所述存儲(chǔ)單元中 的新形成的對(duì)象中。在本發(fā)明的另一方面中,所述架構(gòu)還包括計(jì)算機(jī);和查詢處理器, 其中所述計(jì)算機(jī)4皮配置為,在向所述查詢處理器發(fā)出查詢之前將所述動(dòng)態(tài) 加載請(qǐng)求傳遞到所述查詢處理器,和其中所述查詢處理器被配置為,在將 所匹配記錄加栽到所述數(shù)據(jù)庫(kù)中之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。在本發(fā)明的另一方面中,所述架構(gòu)還包括計(jì)算機(jī);和查詢處理器, 其中所述計(jì)算機(jī)被配置為,在向所述查詢處理器發(fā)出查詢之前將所述動(dòng)態(tài) 加載請(qǐng)求傳遞到所述記錄分配器,和其中所述查詢處理器被配置為,在將 所匹配記錄加載到所述數(shù)據(jù)庫(kù)中之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。在本發(fā)明的另 一方面中,所述記錄分配器被配置為在所述對(duì)象中的任 一個(gè)中存儲(chǔ)所述記錄中的任一個(gè),其中所存儲(chǔ)的記錄屬于所述數(shù)據(jù)庫(kù)中的 一個(gè)或多個(gè)表,其中所述數(shù)據(jù)庫(kù)包括具有未在所述對(duì)象中存儲(chǔ)的記錄的其 他表。在本發(fā)明的另 一方面中,提供一種具有動(dòng)態(tài)加栽能力的關(guān)系數(shù)據(jù)庫(kù)方 法,該方法包括在存儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一 個(gè)記錄;將所述對(duì)象映射到所述對(duì)象包含的記錄,接收動(dòng)態(tài)加載請(qǐng)求,所 述動(dòng)態(tài)加栽請(qǐng)求包含期望記錄的鍵值,搜索所述映射,以確定在所述存儲(chǔ) 單元中的所述對(duì)象中的哪個(gè)對(duì)象包含與所述鍵值匹配的記錄,和將所匹配 的記錄中的任一個(gè)加載到關(guān)系數(shù)據(jù)庫(kù)中。在本發(fā)明的另一方面中,對(duì)于以數(shù)據(jù)文件格式的所述對(duì)象執(zhí)行所述步 驟中的任一個(gè)。在本發(fā)明的另一方面中,該方法還包括從計(jì)算機(jī)接收查詢;確定作 為所述查詢的焦點(diǎn)的至少一個(gè)鍵值;和在將所匹配記錄加栽到所述數(shù)據(jù)庫(kù) 中之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。在本發(fā)明的另一方面中,該方法還包括更新所述映射,以表示所述 記錄中任一個(gè)的當(dāng)前位置在所述數(shù)據(jù)庫(kù)中或者所述存儲(chǔ)單元中。在本發(fā)明的另一方面中,該方法還包括根據(jù)所述記錄能夠駐留在所 述數(shù)據(jù)庫(kù)期間的預(yù)定時(shí)間長(zhǎng)度設(shè)置用于所述記錄中任一個(gè)的期滿時(shí)間戳; 和在到達(dá)所述期滿時(shí)間戳?xí)r從所述數(shù)據(jù)庫(kù)去除所述記錄。在本發(fā)明的另一方面中,該方法還包括以壓縮格式在所述存儲(chǔ)單元 中存儲(chǔ)所述對(duì)象中的任一個(gè);和在將所述記錄加載到所述數(shù)據(jù)庫(kù)之前對(duì)所 述記錄中的任一個(gè)解壓縮。在本發(fā)明的另一方面中,該方法還包括基于計(jì)算可能性選擇所述鍵, 所述計(jì)算可能性是所述數(shù)據(jù)庫(kù)的未來(lái)查詢基于所述鍵的鍵值選擇記錄的計(jì) 算可能性,其中如果所述可能性超過(guò)預(yù)定值則選擇所述鍵。在本發(fā)明的另一方面中,該方法還包括在所述數(shù)據(jù)庫(kù)的過(guò)去查詢基 于所述鍵的鍵值選#^己錄的情況下選擇所述鍵。在本發(fā)明的另一方面中,其中所述映射步驟包括使用一個(gè)映射記錄, 以將所述對(duì)象中的任一個(gè)映射到在具有相同鍵值的所述對(duì)象中包含的多個(gè) 記錄。在本發(fā)明的另一方面中,所述映射步驟包括使用第一映射記錄,以 將所述對(duì)象中的任一個(gè)映射到在所述對(duì)象中包含的具有第一鍵值的第一多 個(gè)記錄,以及使用第二映射記錄,以將所述對(duì)象映射到在所述對(duì)象中包含 的具有第二鍵值的第二多個(gè)記錄。在本發(fā)明的另一方面中,該方法還包括生成所述對(duì)象中的任一個(gè), 以僅包括具有相同鍵值的記錄。在本發(fā)明的另一方面中,該方法還包括生成所述對(duì)象中的任一個(gè), 以僅包括具有來(lái)自預(yù)定數(shù)目的不同鍵值中任一個(gè)的鍵值的記錄。在本發(fā)明的另一方面中,該方法還包括生成所述對(duì)象中的任一個(gè),以包括多個(gè)分區(qū)對(duì)象,每個(gè)分區(qū)對(duì)象包括在所述對(duì)象中的所述記錄的子集, 由分區(qū)鍵識(shí)別所述子集。在本發(fā)明的另一方面中,該方法還包括并行地將來(lái)自所述分區(qū)對(duì)象 中任一個(gè)的記錄加載到所述數(shù)據(jù)庫(kù)的對(duì)應(yīng)分區(qū)。在本發(fā)明的另一方面中,該方法還包括通過(guò)以下方式生成所述對(duì)象 中的任一個(gè),即首先通過(guò)用所述記錄中的任一個(gè)填充所述數(shù)據(jù)庫(kù),然后從 所述數(shù)據(jù)庫(kù)將所述記錄中的任一個(gè)移到隨后存儲(chǔ)在所述存儲(chǔ)單元中的新形 成的對(duì)象中。在本發(fā)明的另一方面中,該方法還包括在所i^J"象中的任一個(gè)中存 儲(chǔ)所述記錄中的任一個(gè),其中所存儲(chǔ)的記錄屬于所述數(shù)據(jù)庫(kù)中的一個(gè)或多 個(gè)表,其中所述數(shù)據(jù)庫(kù)包括具有未在所述對(duì)象中存儲(chǔ)的記錄的其他表。在本發(fā)明的另 一方面中,提供一種在計(jì)算機(jī)可讀介質(zhì)上具體化的計(jì)算 機(jī)實(shí)現(xiàn)的程序,所述計(jì)算機(jī)實(shí)現(xiàn)的程序包括第一代碼段,可操作為在存 儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一個(gè)記錄;第二代碼段, 可操作為將所述對(duì)象映射到所述對(duì)象包含的記錄,第三代碼段,可操作為 接收動(dòng)態(tài)加載請(qǐng)求,所述動(dòng)態(tài)加載請(qǐng)求包含期望記錄的鍵值,第四代碼段, 可操作為搜索所述映射,以確定在所述存儲(chǔ)單元中的所述對(duì)象中的哪個(gè)對(duì) 象包含與所述^^值匹配的記錄,和第五代碼段,可操作為將所匹配的記錄 中的任一個(gè)加載到關(guān)系^L據(jù)庫(kù)中。
根據(jù)結(jié)合附圖的以下具體實(shí)施方式
,將完全理解和領(lǐng)會(huì)本發(fā)明,其中圖l是根據(jù)本發(fā)明實(shí)施例構(gòu)成的和操作的,具有動(dòng)態(tài)加載能力的關(guān)系 數(shù)據(jù)庫(kù)架構(gòu)的簡(jiǎn)化概念示圖;圖2是根據(jù)本發(fā)明實(shí)施例操作的,采用圖1架構(gòu)的系統(tǒng)操作的示意性 方法的簡(jiǎn)化流程示圖;圖3是根據(jù)本發(fā)明實(shí)施例操作的,采用具有分區(qū)數(shù)據(jù)庫(kù)的圖1的架構(gòu) 的對(duì)系統(tǒng)操作的示例性方法的簡(jiǎn)化流程圖;和圖4是根據(jù)本發(fā)明實(shí)施例構(gòu)成的和操作的,具有動(dòng)態(tài)加載能力的可選 擇關(guān)系數(shù)據(jù)庫(kù)架構(gòu)的簡(jiǎn)化概念示圖。M實(shí)施方式現(xiàn)在,參照?qǐng)D1,圖1是根據(jù)本發(fā)明實(shí)施例構(gòu)成的和操作的,具有動(dòng) 態(tài)加載能力的關(guān)系數(shù)據(jù)庫(kù)架構(gòu)的簡(jiǎn)化概念示圖,還參照?qǐng)D2,圖2是根據(jù) 本發(fā)明實(shí)施例操作的,采用圖1架構(gòu)的系統(tǒng)操作的示意性方法的簡(jiǎn)化流程 示圖。在圖l和2的架構(gòu)和方法中,關(guān)系數(shù)據(jù)庫(kù)IOO示出為用于存儲(chǔ)記錄, 例如可配置在一個(gè)或多個(gè)數(shù)據(jù)文件102中。與本領(lǐng)域中7>知的不同,即并 非將所有輸入記錄保存在數(shù)據(jù)庫(kù)100中持續(xù)到這些記錄的保存期間,而是 記錄分配器104優(yōu)選地使用傳統(tǒng)的壓縮技術(shù)以壓縮格式在存儲(chǔ)單元106中 存儲(chǔ)文件102。優(yōu)選地,通過(guò)記錄分配器104保持文件到它們包含的記錄 的映射108。例如,如以下表所示,映射108可將存儲(chǔ)單元106中存儲(chǔ)的 每個(gè)文件名映射到鍵值,其還稱作文件關(guān)聯(lián)鍵,選擇其識(shí)別文件包含的每 個(gè)記錄。表A文件名 鍵值recfilel.dat 28.01.2005 10:35:00recfile2.dat 28.01.2005 10:45:00recfile98.dat 30.01.2005 21:00:00 recfile98.dat 30.01.2005 22:10:00因此,在所示的實(shí)例中,recfilel.dat包括具有鍵值"28.01,2005 10:35:00"的一個(gè)或多個(gè)記錄,其中所述鍵值"28.01.2005 10:35:00"表 示時(shí)間戳,而recfile2.dat包括具有鍵值"28.01.2005 10:45:00"的一個(gè)或 多個(gè)記錄。優(yōu)選地,文件102的數(shù)目應(yīng)該少于它們包含的記錄的數(shù)目(例如,1 百萬(wàn)個(gè)記錄不應(yīng)該存儲(chǔ)在1百萬(wàn)個(gè)文件中,但是可以在1千個(gè)文件中)。用來(lái)存儲(chǔ)用于數(shù)據(jù)庫(kù)100的記錄的文件102的數(shù)目可作為用于對(duì)記錄分組 所選擇的鍵的函數(shù)確定,其中可使用任意已知的鍵選擇技術(shù)來(lái)選擇鍵。例 如,可基于這樣的需求來(lái)選擇鍵,即對(duì)數(shù)據(jù)庫(kù)100的所有查詢?nèi)Q于鍵的 指定值。還可以選擇鍵,使得具有所選鍵的任意離散值的記錄集的基數(shù)受 到數(shù)據(jù)庫(kù)計(jì)算^U的實(shí)際能力限制,以在合理的、為應(yīng)用定義的時(shí)間量中加 載這么多記錄。為了概括的目的,這里使用的術(shù)語(yǔ)"鍵"指的是一個(gè)或多 個(gè)鍵的集,而"鍵值"可指的是一個(gè)或多個(gè)鍵的集的值的唯一組合。通過(guò) 以這種方式概括鍵,不同的值的數(shù)目增加,因此對(duì)應(yīng)的記錄集的基數(shù)減少, 從而提供用以協(xié)調(diào)在記錄集的基數(shù)和加載時(shí)間之間的實(shí)際均衡的能力。 可使用以下的機(jī)制進(jìn)一步協(xié)調(diào)鍵的選擇1. 在由于記錄集的基數(shù)超過(guò)數(shù)據(jù)庫(kù)計(jì)算機(jī)用以在合理的、為應(yīng)用定 義的時(shí)間量中加栽這么多記錄的實(shí)際能力而造成記錄集的基數(shù)太大的情況 下,可以使用在記錄中可散列成在記錄之間高度均勻分布的另一個(gè)鍵,并 且根據(jù)所述散列值將記錄集分成一組子集。在數(shù)據(jù)庫(kù)計(jì)算機(jī)100可支持各 個(gè)記錄集的子集的組的平行加載時(shí),可使用這種選擇。2. 在由于記錄集的基數(shù)不足以利用數(shù)據(jù)庫(kù)計(jì)算機(jī)在合理的、為應(yīng)用 定義的時(shí)間量中加載這么多記錄的實(shí)際能力而造成記錄集的基數(shù)很小的情 況下,鍵值集的基數(shù)變得非常接近于原始數(shù)據(jù)庫(kù)的基數(shù)??赏ㄟ^(guò)將原始鍵 值映射到值的更小集中,并且使用結(jié)果值作為定義匹配記錄集的基礎(chǔ)來(lái)減 少鍵值集的基數(shù)。映射函數(shù)的實(shí)例包括在整數(shù)、或串的截尾等上的模函數(shù)。 結(jié)果,可將基數(shù)減少到實(shí)際水平。這將導(dǎo)致每個(gè)鍵的映射值具有增加的記 錄集的基數(shù)。在鍵選擇的另一個(gè)實(shí)例中,在使用該鍵時(shí),或作為在設(shè)計(jì)用于數(shù)據(jù)庫(kù) 100的新數(shù)據(jù)庫(kù)模型時(shí)所進(jìn)行工作的一部分,基于數(shù)據(jù)庫(kù)100的先前查詢 的信息選^^鍵。如果在存儲(chǔ)單元106中存儲(chǔ)的文件包含具有相同鍵值的多 個(gè)記錄,則優(yōu)選地使用在映射108中的一個(gè)記錄,來(lái)表示文件中至少一個(gè) 記錄具有特定鍵值的事實(shí)。在文件包含具有不同鍵值的記錄時(shí),優(yōu)選地使 用映射108中的多個(gè)記錄,如recfile98.dat所示,其包括具有鍵值"30.01.2005 21:00:00"的一個(gè)或多個(gè)記錄,以及具有鍵值"30.01.2005 22:10:00"的一個(gè)或多個(gè)記錄。盡管在當(dāng)前實(shí)例中示出時(shí)間戳鍵,但是也可以選擇任意鍵。例如,在 銷售事務(wù)記錄上執(zhí)行查詢并且查詢按照區(qū)域關(guān)注銷售的情況下,可通過(guò)用"區(qū)域"字段代替時(shí)間戳字段,或附加地通過(guò)"區(qū)域"字段將文件102映 射到它們的記錄。優(yōu)選地,生成文件102的應(yīng)用以這樣的方式進(jìn)行處理,即文件中的所 有記錄具有相同的鍵值,或相對(duì)少量不同的鍵值。或者,記錄分配器104 可從文件102形成新文件,從而創(chuàng)建其記錄共享相同或相對(duì)少量不同的鍵 值的文件。在這種情況下,可通過(guò)以下方式執(zhí)行新文件的形成,即將文件 102用作輸入,和/或通過(guò)來(lái)自文件102的記錄首先填寫數(shù)據(jù)庫(kù)100,然后 從數(shù)據(jù)庫(kù)100將記錄提取和選擇性移到隨后存儲(chǔ)在存儲(chǔ)單元106中的新形 成文件中。在文件包括具有不同鍵值的記錄的情況下,可預(yù)定義在文件中 可具有的記錄的不同鍵值的數(shù)目,例如,文件包含不超過(guò)5個(gè)不同鍵值的 記錄的情況。當(dāng)查詢處理器112 (例如,支持結(jié)構(gòu)化查詢語(yǔ)言(SQL)應(yīng)用程序接 口 (API)的計(jì)算機(jī)服務(wù)器)從計(jì)算機(jī)110接收查詢時(shí),查詢處理器112 確定哪個(gè)鍵:值/哪些鍵:值是查詢的焦點(diǎn)。優(yōu)選地,由查詢處理器112接收的 所有查詢?cè)儐?wèn)用以將記錄分組到文件102中的相同鍵。例如,查詢可用于 其時(shí)間戳在某個(gè)范圍內(nèi)的數(shù)據(jù)庫(kù)100中的所有記錄。查詢處理器112將包 括期望鍵值參數(shù)的"動(dòng)態(tài)加栽請(qǐng)求"傳遞至記錄分配器104,其搜索映射 108以確定在存儲(chǔ)單元106中哪些文件包含匹配于查詢焦點(diǎn)的鍵值的記錄。 必要時(shí),在文件和/或記錄解壓之后,記錄分配器104隨后從存儲(chǔ)單元106 向數(shù)據(jù)庫(kù)100中加載所識(shí)別文件的全部?jī)?nèi)容,或僅匹配所期望鍵值的記錄。 然后,查詢處理器112對(duì)于數(shù)據(jù)庫(kù)100執(zhí)行查詢。記錄分配器104可響應(yīng)于由計(jì)算機(jī)110上的客戶端應(yīng)用發(fā)出的SQL數(shù) 據(jù)操作語(yǔ)言(DML)語(yǔ)句或其他RDBMS應(yīng)用程序接口 ( API)命令將相 應(yīng)記錄加栽到數(shù)據(jù)庫(kù)100中。通過(guò)使用一個(gè)或多個(gè)同步任務(wù)執(zhí)行RDBMS快速加載工具或基于SQL DML接口工具來(lái)加載記錄。在將所需數(shù)據(jù)的子 集加栽到數(shù)據(jù)庫(kù)100中之后,通過(guò)查詢處理器112執(zhí)行查詢,優(yōu)選地將結(jié) 果向回提供給計(jì)算機(jī)110上的客戶端應(yīng)用。在將數(shù)據(jù)加載到數(shù)據(jù)庫(kù)100之后,記錄分配器104可更新映射108, 以反應(yīng)已經(jīng)將記錄加載到數(shù)據(jù)庫(kù)100中并且還根據(jù)記錄駐留在數(shù)據(jù)庫(kù)100 期間的預(yù)定時(shí)間長(zhǎng)度設(shè)置期滿時(shí)間戳。當(dāng)?shù)竭_(dá)期滿時(shí)間戳?xí)r,優(yōu)選地從數(shù) 據(jù)庫(kù)100去除數(shù)據(jù),并且更新映射108,以表示記錄不再在數(shù)據(jù)庫(kù)IOO中。應(yīng)該理解,可以執(zhí)行由記錄分配器104執(zhí)行的操作,而計(jì)算機(jī)110上 的客戶端應(yīng)用不知道它們的執(zhí)行。因此,在接收由計(jì)算機(jī)110上的客戶端 發(fā)出的SQL DML語(yǔ)句或其他RDBMS API命令時(shí),記錄分配器104分析 所述語(yǔ)句或命令,并提取為了不駐留在數(shù)據(jù)庫(kù)100中的那些記錄用以執(zhí)行 上述動(dòng)態(tài)加載的鍵。在將所需的數(shù)據(jù)子集加栽到數(shù)據(jù)庫(kù)100中之后,記錄 分配器104允許原始語(yǔ)句或命令繼續(xù),而不需要計(jì)算機(jī)110上的客戶端發(fā) 出另一個(gè)命令,因此創(chuàng)建向數(shù)據(jù)庫(kù)100中動(dòng)態(tài)加栽數(shù)據(jù)的無(wú)縫整合?;蛘撸?jì)算機(jī)110可知道在發(fā)出查詢之前需要由記錄分配器104的動(dòng) 態(tài)加載,因此指示查詢處理器112向記錄分配器104發(fā)出動(dòng)態(tài)加載請(qǐng)求, 或本身可向記錄分配器104發(fā)出動(dòng)態(tài)加載請(qǐng)求?,F(xiàn)在,參照?qǐng)D3,圖3是根據(jù)本發(fā)明實(shí)施例操作的,采用具有分區(qū)數(shù) 據(jù)庫(kù)的圖1架構(gòu)的對(duì)系統(tǒng)操作的示例性方法的簡(jiǎn)化流程圖。在圖3的方法 中,本發(fā)明的實(shí)施例可適用于各種分區(qū)的數(shù)據(jù)庫(kù)實(shí)施方式。在一個(gè)所述實(shí) 施方式中,基于使用范圍分區(qū)鍵指定的值范圍對(duì)數(shù)據(jù)物理分割,其中所述 范圍分區(qū)鍵獨(dú)立于用于創(chuàng)建文件102的關(guān)聯(lián)鍵。例如,可將包含用于不同 地理區(qū)域的銷售數(shù)據(jù)的表物理分成多個(gè)不同分區(qū),其中銷售區(qū)域和/或銷售 年份用作分區(qū)鍵,以及在每個(gè)記錄中的分區(qū)鍵的值基于與每個(gè)物理分區(qū)明 顯關(guān)聯(lián)的分區(qū)鍵值的預(yù)定義范圍確定記錄所在的物理分區(qū)?;蛘撸苫谠谝粋€(gè)或多個(gè)表列上定義的所計(jì)算散列鍵劃分分區(qū)數(shù)據(jù), 其最終目的是在分區(qū)之間對(duì)值的平均分配。在插入和/或更新操作期間,數(shù) 據(jù)庫(kù)引擎從數(shù)據(jù)記錄生成散列,以確定哪個(gè)分區(qū)將存儲(chǔ)記錄。在檢索期間,數(shù)據(jù)庫(kù)引擎將在查詢執(zhí)行期間并行檢索所有數(shù)據(jù)。因此,本發(fā)明的實(shí)施例 可通過(guò)以下方式適用于分區(qū)數(shù)據(jù)庫(kù),即,通過(guò)保證例如可通過(guò)記錄分配器104接收或通過(guò)其生成的在給定文件102中的所有記錄與相同分區(qū)關(guān)聯(lián)。 因此,將從文件102檢索的所有記錄加載到數(shù)據(jù)庫(kù)100的各個(gè)分區(qū),當(dāng)然, 可響應(yīng)于不同查詢并行地將來(lái)自不同文件102的記錄加載到數(shù)據(jù)庫(kù)100的 不同分區(qū)。優(yōu)選地,由于文件關(guān)聯(lián)鍵典型地對(duì)于文件102中的所有記錄相 同,所以分區(qū)鍵不同于文件關(guān)聯(lián)鍵,因此不能夠用于進(jìn)一步將這些記錄細(xì) 分成更小子集。作為不同鍵并且如上選擇的所計(jì)算散列鍵將這些記錄細(xì)分 成與所存在分區(qū)相同多的許多子集。例如,如果存在N個(gè)分區(qū),則將與某 個(gè)鍵值的集關(guān)聯(lián)的每個(gè)文件102進(jìn)一步分區(qū)成N個(gè)文件,其中每個(gè)具有近 似相同的大小。然后,記錄分配器104識(shí)別將4艮據(jù)在"動(dòng)態(tài)加載命令"中 的鍵加栽文件102中的哪個(gè)。對(duì)于為了加載而識(shí)別的每個(gè)文件102,記錄 分配器104進(jìn)一步識(shí)別其N個(gè)分區(qū)文件,并且根據(jù)需要并行地將它們加載 到它們的各自分區(qū)??梢岳斫?,在使用這種分區(qū)的情況下,文件102是由 一個(gè)或多個(gè)物理分區(qū)文件構(gòu)成的邏輯實(shí)體?,F(xiàn)在,參照?qǐng)D4,圖4是根據(jù)本發(fā)明實(shí)施例構(gòu)成的和操作的,具有動(dòng) 態(tài)加載能力的可選擇關(guān)系數(shù)據(jù)庫(kù)架構(gòu)的筒化概念示圖。圖4的架構(gòu)基本類 似于圖1的架構(gòu),明顯不同的是從數(shù)據(jù)庫(kù)IOO單獨(dú)存儲(chǔ)的記錄包含在對(duì)象 中,圖1的文件的對(duì)象僅是由對(duì)象管理系統(tǒng)400維護(hù)的一個(gè)指定類型,例 如從IBM公司可商業(yè)獲得的IBM DB2 Content Manager ,從3565 Harbor Boulevard, Costa Mesa, CA的FileNet />司可商業(yè)獲得的 Armonk, NY或Enterprise Content Manager 。對(duì)象管理系統(tǒng)400在對(duì) 象存儲(chǔ)裝置406中存儲(chǔ)如上所述由記錄分配器104接收的對(duì)象402,和/或 如上所述由記錄分配器104生成的對(duì)象。通過(guò)圖1的文件,將對(duì)象存儲(chǔ)裝 置406中存儲(chǔ)的對(duì)象映射到它們?cè)谟成?08中包含的記錄。盡管這里公開的方法和裝置已經(jīng)或還沒(méi)有參照特定計(jì)算機(jī)硬件或軟件 描述,但是可以理解,可容易地使用傳統(tǒng)技術(shù)在計(jì)算機(jī)硬件或軟件中實(shí)現(xiàn) 這里公開的方法和裝置。
權(quán)利要求
1.一種具有動(dòng)態(tài)加載能力的關(guān)系數(shù)據(jù)庫(kù)架構(gòu),包括關(guān)系數(shù)據(jù)庫(kù),用于存儲(chǔ)記錄;存儲(chǔ)單元;記錄分配器,用于在所述存儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一個(gè)記錄;所述對(duì)象到所述對(duì)象包含的記錄的映射,其中所述記錄分配器被配置為,接收動(dòng)態(tài)加載請(qǐng)求,所述動(dòng)態(tài)加載請(qǐng)求包含期望記錄的鍵值,搜索所述映射,以確定在所述存儲(chǔ)單元中的所述對(duì)象中的哪個(gè)對(duì)象包含與所述鍵值匹配的記錄,和將所匹配的記錄中的任一個(gè)加載到關(guān)系數(shù)據(jù)庫(kù)中。
2. 根據(jù)權(quán)利要求l所述的架構(gòu),其中所M象是數(shù)據(jù)文件。
3. 根據(jù)權(quán)利要求1所述的架構(gòu),還包括查詢處理器,被配置為從 計(jì)算機(jī)接收查詢,確定作為所述查詢的焦點(diǎn)的至少一個(gè)鍵值,將包含所述 鍵值的所述動(dòng)態(tài)加載請(qǐng)求傳送至所述記錄分配器,以及在將所匹配記錄加 載到所述數(shù)據(jù)庫(kù)中之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。
4. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為更新 所迷映射,以表示所述記錄中任一個(gè)的當(dāng)前位置在所述數(shù)據(jù)庫(kù)中或者所述 存儲(chǔ)單元中。
5. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為根據(jù) 所述記錄能夠駐留在所述數(shù)據(jù)庫(kù)期間的預(yù)定時(shí)間長(zhǎng)度設(shè)置用于所述記錄中 任一個(gè)的期滿時(shí)間戳,以及在到達(dá)所述期滿時(shí)間戳?xí)r從所述數(shù)據(jù)庫(kù)去除所 述記錄。
6. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為以壓 縮格式在所述存儲(chǔ)單元中存儲(chǔ)所述對(duì)象中的任一個(gè),以及在將所述記錄加 載到所述數(shù)據(jù)庫(kù)之前對(duì)所述記錄中的任一個(gè)解壓縮。
7. 根據(jù)權(quán)利要求1所述的架構(gòu),其中基于計(jì)算可能性選擇所述鍵,所述計(jì)算可能性是所述數(shù)據(jù)庫(kù)的未來(lái)查詢基于所述鍵的鍵值選擇記錄的計(jì) 算可能性,其中如果所述可能性超過(guò)預(yù)定值則選擇所述鍵。
8. 根據(jù)權(quán)利要求1所述的架構(gòu),其中在所述數(shù)據(jù)庫(kù)的過(guò)去查詢基于 所述鍵的鍵值選擇記錄的情況下選擇所述鍵。
9. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述映射使用一個(gè)映射記錄, 以將所述對(duì)象中的任一個(gè)映射到在具有相同鍵值的所述對(duì)象中包含的多個(gè) 記錄。
10. 根據(jù)權(quán)利要求l所述的架構(gòu),其中所述映射使用第一映射記錄, 以將所述對(duì)象中的任一個(gè)映射到在所述對(duì)象中包含的具有第 一鍵值的第一 多個(gè)記錄,以及^f吏用第二映射記錄,以將所述對(duì)象映射到在所述對(duì)象中包 含的具有第二鍵值的第二多個(gè)記錄。
11. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為生成 所述對(duì)象中的任一個(gè),以僅包括具有相同鍵值的記錄。
12. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為生成 所述對(duì)象中的任一個(gè),以僅包括具有來(lái)自預(yù)定數(shù)目的不同鍵值中任一個(gè)的 鍵值的記錄。
13. 根據(jù)權(quán)利要求12所述的架構(gòu),其中所述記錄分配器被配置為生 成所述對(duì)象中的任一個(gè),以包括多個(gè)分區(qū)對(duì)象,每個(gè)分區(qū)對(duì)象包括在所述 對(duì)象中的所述記錄的子集,由分區(qū)鍵識(shí)別所述子集。
14. 根據(jù)權(quán)利要求13所述的架構(gòu),其中所述記錄分配器被配置為并 行地將來(lái)自所述分區(qū)對(duì)象中任一個(gè)的記錄加載到所述數(shù)據(jù)庫(kù)的對(duì)應(yīng)分區(qū)。
15. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為通過(guò) 以下方式生成所述對(duì)象中的任一個(gè),即首先通過(guò)用所述記錄中的任一個(gè)填 充所述數(shù)據(jù)庫(kù),然后從所述數(shù)據(jù)庫(kù)將所述記錄中的任一個(gè)移到隨后存儲(chǔ)在 所述存儲(chǔ)單元中的新形成的對(duì)象中。
16. 根據(jù)權(quán)利要求l所述的架構(gòu),還包括 計(jì)算機(jī);和查詢處理器,其中所述計(jì)算機(jī)被配置為,在向所述查詢處理器發(fā)出查詢之前將所迷 動(dòng)態(tài)加栽請(qǐng)求傳遞到所述查詢處理器,和其中所述查詢處理器被配置為,在將所匹配記錄加載到所述數(shù)據(jù)庫(kù)中 之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。
17. 根據(jù)權(quán)利要求l所述的架構(gòu),還包括 計(jì)算機(jī);和查詢處理器,其中所述計(jì)算機(jī)被配置為,在向所述查詢處理器發(fā)出查詢之前將所述 動(dòng)態(tài)加載請(qǐng)求傳遞到所述記錄分配器,和其中所述查詢處理器^J己置為,在將所匹配記錄加載到所述數(shù)據(jù)庫(kù)中 之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。
18. 根據(jù)權(quán)利要求1所述的架構(gòu),其中所述記錄分配器被配置為在所述對(duì)象中的任一個(gè)中存儲(chǔ)所述記錄中的任一個(gè),其中所存儲(chǔ)的記錄屬于所 迷數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)表,其中所述數(shù)據(jù)庫(kù)包括具有未在所述對(duì)象中存 儲(chǔ)的記錄的其他表。
19. 一種具有動(dòng)態(tài)加栽能力的關(guān)系數(shù)據(jù)庫(kù)方法,該方法包括 在存儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一個(gè)記錄; 將所述對(duì)象映射到所述對(duì)象包含的記錄,接收動(dòng)態(tài)加栽請(qǐng)求,所述動(dòng)態(tài)加載請(qǐng)求包含期望記錄的鍵值,搜索所 述映射,以確定在所述存儲(chǔ)單元中的所述對(duì)象中的哪個(gè)對(duì)象包含與所述鍵 值匹配的i己錄,和將所匹配的記錄中的任一個(gè)加載到關(guān)系數(shù)據(jù)庫(kù)中。
20. 根據(jù)權(quán)利要求1所述的方法,其中對(duì)于以數(shù)據(jù)文件格式的所述對(duì) 象執(zhí)行所述步驟中的任一個(gè)。
21. 根據(jù)權(quán)利要求19所迷的方法,還包括 從計(jì)算機(jī)接收查詢;確定作為所述查詢的焦點(diǎn)的至少一個(gè)鍵值;和在將所匹配記錄加栽到所述數(shù)據(jù)庫(kù)中之后對(duì)于所述數(shù)據(jù)庫(kù)執(zhí)行所述查詢。
22. 根據(jù)權(quán)利要求19所述的方法,還包括更新所述映射,以表示 所述記錄中任一個(gè)的當(dāng)前位置在所述數(shù)據(jù)庫(kù)中或者所述存儲(chǔ)單元中。
23. 才艮據(jù)權(quán)利要求19所述的方法,還包括根據(jù)所述記錄能夠駐留在所述數(shù)據(jù)庫(kù)期間的預(yù)定時(shí)間長(zhǎng)度設(shè)置用于所 述記錄中任一個(gè)的期滿時(shí)間戳;和在到達(dá)所述期滿時(shí)間戳?xí)r從所述數(shù)據(jù)庫(kù)去除所述記錄。
24. 根據(jù)權(quán)利要求19所述的方法,還包括 以壓縮格式在所述存儲(chǔ)單元中存儲(chǔ)所述對(duì)象中的任一個(gè);和 在將所述記錄加載到所述數(shù)據(jù)庫(kù)之前對(duì)所述記錄中的任一個(gè)解壓縮。
25. 根據(jù)權(quán)利要求19所述的方法,還包括基于計(jì)算可能性選擇所 述鍵,所述計(jì)算可能性是所述數(shù)據(jù)庫(kù)的未來(lái)查詢基于所述鍵的鍵值選擇記 錄的計(jì)算可能性,其中如果所述可能性超過(guò)預(yù)定值則選擇所述鍵。
26. 才艮據(jù)權(quán)利要求19所述的方法,還包括在所述數(shù)據(jù)庫(kù)的過(guò)去查 詢基于所述鍵的鍵值選擇記錄的情況下選擇所述鍵。
27. 根據(jù)權(quán)利要求19所述的方法,其中所述映射步驟包括使用一 個(gè)映射記錄,以將所述對(duì)象中的任一個(gè)映射到在具有相同鍵值的所述對(duì)象 中包含的多個(gè)記錄。
28. 根據(jù)權(quán)利要求19所述的方法,其中所述映射步驟包括使用第 一映射記錄,以將所述對(duì)象中的任一個(gè)映射到在所述對(duì)象中包含的具有第 一鍵值的第一多個(gè)記錄,以及<吏用第二映射記錄,以將所述對(duì)象映射到在 所述對(duì)象中包含的具有第二鍵值的第二多個(gè)記錄。
29. 根據(jù)權(quán)利要求19所述的方法,還包括生成所述對(duì)象中的任一 個(gè),以僅包括具有相同鍵值的記錄。
30. 根據(jù)權(quán)利要求19所述的方法,還包括生成所述對(duì)象中的任一 個(gè),以僅包括具有來(lái)自預(yù)定數(shù)目的不同鍵值中任一個(gè)的鍵值的記錄。1. 根據(jù)權(quán)利要求
31.根據(jù)所述的方法,還包括生成所對(duì)象中的任一 個(gè),以包括多個(gè)分區(qū)對(duì)象,每個(gè)分區(qū)對(duì)象包括在所述對(duì)象中的所述記錄的子集,由分區(qū)鍵識(shí)別所述子集。
32. 根據(jù)權(quán)利要求31所述的方法,還包括并行地將來(lái)自所述分區(qū) 對(duì)象中任一個(gè)的記錄加載到所述數(shù)據(jù)庫(kù)的對(duì)應(yīng)分區(qū)。
33. 根據(jù)權(quán)利要求19所述的方法,還包括通過(guò)以下方式生成所述 對(duì)象中的任一個(gè),即首先通過(guò)用所述記錄中的任一個(gè)填充所述數(shù)據(jù)庫(kù),然 后從所述數(shù)據(jù)庫(kù)將所述記錄中的任一個(gè)移到隨后存儲(chǔ)在所述存儲(chǔ)單元中的 新形成的對(duì)象中。
34. 根據(jù)權(quán)利要求19所述的方法,還包括在所述對(duì)象中的任一個(gè) 中存儲(chǔ)所述記錄中的任一個(gè),其中所存儲(chǔ)的記錄屬于所述數(shù)據(jù)庫(kù)中的一個(gè) 或多個(gè)表,其中所述數(shù)據(jù)庫(kù)包括具有未在所述對(duì)象中存儲(chǔ)的記錄的其他表。
35. —種在計(jì)算機(jī)可讀介質(zhì)上具體化的計(jì)算機(jī)實(shí)現(xiàn)的程序,所述計(jì)算 機(jī)實(shí)現(xiàn)的程序包括第一代碼段,可操作為在存儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一個(gè)記錄;第二代碼段,可操作為將所述對(duì)象映射到所述對(duì)象包含的記錄, 第三代碼段,可操作為接收動(dòng)態(tài)加載請(qǐng)求,所述動(dòng)態(tài)加載請(qǐng)求包含期望記錄的鍵值,第四代碼段,可操作為搜索所述映射,以確定在所述存儲(chǔ)單元中的所述對(duì)象中的哪個(gè)對(duì)象包含與所述^^值匹配的記錄,和第五代碼段,可操作為將所匹配的記錄中的任一個(gè)加載到關(guān)系數(shù)據(jù)庫(kù)中。
全文摘要
一種具有動(dòng)態(tài)加載能力的關(guān)系數(shù)據(jù)庫(kù)架構(gòu),包括關(guān)系數(shù)據(jù)庫(kù),用于存儲(chǔ)記錄;存儲(chǔ)單元;記錄分配器,用于在所述存儲(chǔ)單元中存儲(chǔ)多個(gè)對(duì)象,其中每個(gè)對(duì)象包含至少一個(gè)記錄;所述對(duì)象到它們包含的記錄的映射,其中所述記錄分配器被配置為,接收動(dòng)態(tài)加載請(qǐng)求,所述動(dòng)態(tài)加載請(qǐng)求包含期望記錄的鍵值,搜索所述映射,以確定在所述存儲(chǔ)單元中的所述對(duì)象中的哪個(gè)對(duì)象包含與所述鍵值匹配的記錄,和將所匹配的記錄中的任一個(gè)加載到關(guān)系數(shù)據(jù)庫(kù)中。
文檔編號(hào)G06F17/30GK101405728SQ200780009901
公開日2009年4月8日 申請(qǐng)日期2007年5月15日 優(yōu)先權(quán)日2006年5月31日
發(fā)明者A·塞拉, A·阿基洛夫, D·H·伯克, I·斯卡波夫斯基, U·沙尼, Y·多爾戈夫 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司