涉及多個數(shù)據(jù)庫和執(zhí)行引擎的查詢的制作方法
【專利說明】涉及多個數(shù)據(jù)庫和執(zhí)行引擎的查詢
【背景技術(shù)】
[0001] 數(shù)據(jù)庫管理系統(tǒng)(DBMS)可用于存儲、管理和查詢數(shù)據(jù)。聯(lián)機(jī)事務(wù)處理(OLTP)系 統(tǒng)和聯(lián)機(jī)分析處理(OLAP)是DBMS被企業(yè)用于管理在操作過程中產(chǎn)生的加載數(shù)據(jù)以及從該 加載數(shù)據(jù)中提取數(shù)值的示例。每個系統(tǒng)可包括數(shù)據(jù)庫和訪問該數(shù)據(jù)庫的執(zhí)行引擎。然而, 系統(tǒng)就其對某些操作適用性而言是不同的。
[0002] 通常,OLTP系統(tǒng)用于為企業(yè)維護(hù)詳細(xì)的數(shù)據(jù)和當(dāng)前數(shù)據(jù)。OLTP系統(tǒng)通常處理大量 同時進(jìn)行但簡短的讀/寫操作的查詢。OLTP系統(tǒng)的主要重點是多訪問環(huán)境中的快速查詢處 理和維護(hù)數(shù)據(jù)完整性。通常用每秒的事務(wù)處理量來測量系統(tǒng)的效率。電信企業(yè)或銀行每天 使用OLTP系統(tǒng)來維護(hù)客戶賬號和處理成千上萬的事務(wù)(例如,呼叫、計費)。
[0003] 另一方面,OLAP系統(tǒng)通常用于為企業(yè)存儲歷史和匯總數(shù)據(jù)。OLAP系統(tǒng)通常適合于 大型的、長期運行的只讀操作的分析查詢。運行在OLAP系統(tǒng)上查詢的可能會非常復(fù)雜。通 常用響應(yīng)時間(例如,執(zhí)行查詢需要多長時間)來測量系統(tǒng)的效率。電信企業(yè)或銀行可以 使用OLAP系統(tǒng)分析OLTP系統(tǒng)生成的數(shù)據(jù)。這樣的分析的示例包括:商業(yè)情報、客戶行為描 述和欺詐檢測。
【附圖說明】
[0004] 如下詳細(xì)描述參照附圖,其中,
[0005] 圖1示出根據(jù)本發(fā)明示例的處理涉及多個數(shù)據(jù)源的查詢的方法。
[0006] 圖2示出根據(jù)本發(fā)明示例的處理涉及多個數(shù)據(jù)源的查詢的方法。
[0007] 圖3示出根據(jù)本發(fā)明示例的處理涉及多個數(shù)據(jù)源的查詢的計算系統(tǒng)。
[0008] 圖4示出根據(jù)本發(fā)明示例的處理涉及多個數(shù)據(jù)源的查詢的計算機(jī)可讀介質(zhì)。
【具體實施方式】
[0009] 如此處所描述的,提供使OLTP系統(tǒng)和OLAP系統(tǒng)整合的數(shù)據(jù)處理平臺。OLTP系統(tǒng) 和OLAP系統(tǒng)的差別通常是結(jié)構(gòu)的,因為OLTP系統(tǒng)通常強(qiáng)調(diào)更新中數(shù)據(jù)一致性,而OLAP系 統(tǒng)是讀優(yōu)化的。作為示例,Vertica DBMS作為OLAP系統(tǒng)是基于用于讀優(yōu)化的面向列的數(shù) 據(jù)模型,而PostgreSQL DBMS作為OLTP系統(tǒng)是基于用于寫優(yōu)化的面向行的數(shù)據(jù)模型。結(jié)構(gòu) 對工作負(fù)荷特性的影響從而導(dǎo)致OLTP系統(tǒng)和OLAP系統(tǒng)的不同設(shè)計。由于不同的結(jié)構(gòu),配 置OLTP系統(tǒng)用于處理OLAP工作負(fù)荷或反之亦然,通常會產(chǎn)生不符合要求的性能。因此,配 置單個執(zhí)行引擎用于處理多種類型的工作負(fù)荷和訪問多種類型的數(shù)據(jù)庫是不符合要求的。 [0010] 如果反而在數(shù)據(jù)庫層上嘗試整合,由于OLTP系統(tǒng)和OLAP系統(tǒng)管理其數(shù)據(jù)的方式 不同,會產(chǎn)生問題。例如,OLTP數(shù)據(jù)庫通常將最近的數(shù)據(jù)存儲在緩沖池用于高吞吐量更新, 這樣如果緩沖池內(nèi)容沒有與磁盤同步(例如,通過使用fsync操作),該磁盤上的數(shù)據(jù)可能 是"廢舊的"(即,不是最新的)。結(jié)果,數(shù)據(jù)完整性可能會受到損害。最終,因為需要決定 中間件引擎的優(yōu)化決策,通過中間件在OLTP系統(tǒng)和OLAP系統(tǒng)的上方增加引擎會降低處理 速度以及會產(chǎn)生OLTP和OLAP系統(tǒng)的結(jié)構(gòu)問題。然而,許多企業(yè)在他們的操作中處理OLTP 以及在他們的數(shù)據(jù)倉庫應(yīng)用中處理OLAP,因此整合這兩個系統(tǒng)將是有益的。
[0011] 為避免引擎級、數(shù)據(jù)庫級以及中間件級整合的一些缺點,此處公開的技術(shù)實現(xiàn)查 詢級的整合。例如,此處公開的技術(shù)可允許OLTP引擎將OLAP查詢結(jié)果視為數(shù)據(jù)源,允許 OLAP引擎將OLTP查詢結(jié)果視為數(shù)據(jù)源,并允許將這兩個引擎產(chǎn)生的查詢結(jié)果合并。相應(yīng) 地,使用此方法可以使用發(fā)給OLTP引擎的查詢或發(fā)給OLAP引擎的查詢來查詢存儲在OLTP 數(shù)據(jù)庫和OLAP數(shù)據(jù)中的數(shù)據(jù)。對于發(fā)給OLTP引擎的查詢,可以將OLAP引擎生成的查詢結(jié) 果視為OLTP引擎的數(shù)據(jù)源,反之亦然。
[0012] 此外,為了避免將數(shù)據(jù)從一個數(shù)據(jù)庫拷貝或?qū)嶓w化到另外一個數(shù)據(jù)庫的開銷(在 處理大量數(shù)據(jù)時該拷貝或?qū)嶓w化會特別有用),在查詢中使用功能掃描而非表掃描用于以 流上下文的方式直接從其他數(shù)據(jù)庫中提取數(shù)據(jù)。該機(jī)制可以降低生成臨時表的內(nèi)存要求, 減少磁盤訪問的成本,自然而然地利用了查詢引擎流處理能力。
[0013] 如上所述,根據(jù)本發(fā)明一實施例,執(zhí)行此處所述原理的技術(shù)可以包括:發(fā)起使用存 儲在第一數(shù)據(jù)庫中的第一數(shù)據(jù)和存儲在第二數(shù)據(jù)庫中的第二數(shù)據(jù)的查詢,第一執(zhí)行引擎與 第一數(shù)據(jù)庫相關(guān)聯(lián),第二執(zhí)行引擎與第二數(shù)據(jù)庫相關(guān)聯(lián)。該第一數(shù)據(jù)庫和第一執(zhí)行引擎可 以是OLTP系統(tǒng)的一部分,該第二數(shù)據(jù)庫和第二執(zhí)行引擎可以是OLAP系統(tǒng)的一部分。該技 術(shù)進(jìn)一步包括:將該查詢的子查詢發(fā)送給第二執(zhí)行引擎用于在該第二數(shù)據(jù)庫上執(zhí)行以提取 第二數(shù)據(jù)。該技術(shù)進(jìn)一步包括:在該第一執(zhí)行引擎以流逐元組的格式從第二執(zhí)行引擎接收 第二數(shù)據(jù),并執(zhí)行剩余的查詢??梢酝ㄟ^在第一執(zhí)行引擎直接從第二執(zhí)行引擎接收該第二 數(shù)據(jù)而非在該第二數(shù)據(jù)被該第一執(zhí)行引擎接收之前將該第二數(shù)據(jù)實體化在表中,來實現(xiàn)在 該第一執(zhí)行引擎以流逐元組的格式從該第二執(zhí)行引擎接收該第二數(shù)據(jù)。該技術(shù)可以避免與 整合OLTP系統(tǒng)和OLAP系統(tǒng)的其他技術(shù)相關(guān)的許多缺點。下面結(jié)合附圖對其他示例、優(yōu)點、 特征、改進(jìn)等進(jìn)行描述。
[0014] 圖1示出根據(jù)本發(fā)明實施例的處理涉及多個數(shù)據(jù)源的查詢的方法??梢杂捎嬎阍O(shè) 備、系統(tǒng)、或計算機(jī),例如處理系統(tǒng)300或計算系統(tǒng)400來執(zhí)行方法100??梢栽谟嬎銠C(jī)可讀 存儲介質(zhì)中存儲用于執(zhí)行方法100的計算機(jī)可讀指令。此處,這些存儲在介質(zhì)中的指令被 稱為"模塊",并且可以被計算機(jī)執(zhí)行。
[0015] 此處描述與圖3示例處理系統(tǒng)300示例相關(guān)的方法100。系統(tǒng)300可以包括一個 或多個計算機(jī)和/或被一個或多個計算機(jī)實現(xiàn)。例如,計算機(jī)可以為:服務(wù)器計算機(jī)、工作 站計算機(jī)、桌面計算機(jī)、筆記本電腦、移動設(shè)備等,并且可以為分布式系統(tǒng)的一部分。計算機(jī) 可以包括:一個或多個控制器以及一個或多個機(jī)器可讀存儲介質(zhì)。
[0016] 控制器可以包括:用于執(zhí)行機(jī)器可讀指令的處理器和存儲器。處理器可以包括: 適合于提取和執(zhí)行存儲在內(nèi)存中的指令的至少一個中央處理單元(CPU)、至少一個以半導(dǎo) 體為基礎(chǔ)的微處理器、至少一個數(shù)字信號處理器(DSP),例如數(shù)字圖形處理單元、其他硬件 設(shè)備或處理元件,或者其組合。處理器可以包括:位于芯片上單個或多個核、跨多個芯片的 多個核、跨多個設(shè)備的多個核,或者其組合。處理器可以提取、解碼和執(zhí)行來自于內(nèi)存的指 令以執(zhí)行多種功能。作為一種替代或者除了提取和執(zhí)行指令,處理器可以包括:包括一定數(shù) 量的用于執(zhí)行各種任務(wù)或功能的電子元件的至少一個集成電路(IC),其他控制邏輯、其他 電子電路,或者其組合。
[0017] 控制器可以包括:內(nèi)存,例如機(jī)器可讀存儲介質(zhì)。該機(jī)器可讀存儲介質(zhì)可以為: 任何包括或存儲可執(zhí)行指令的電子存儲設(shè)備、磁性存儲設(shè)備、光學(xué)存儲設(shè)備或其他物理存 儲設(shè)備。因此,該機(jī)器可讀存儲介質(zhì)可以包括,例如各種隨機(jī)存取存儲器(RAM)、只讀存儲 器(ROM)、閃存,以及其組合。例如,該機(jī)器可讀介質(zhì)可以包括:非易失性隨機(jī)存取存儲器 (NVRAM)、電子可擦寫可編程只讀存儲器(EEPROM)、存儲驅(qū)動器、NAND閃存等。此外,該機(jī)器 可讀存儲介質(zhì)可以是計算機(jī)可讀并且是非易失性的。此外,系統(tǒng)200可以包括:一個或多個 與一個或多個控制器分離的機(jī)器可讀存儲介質(zhì)。
[0018] 方法100可開始于110,其中,可以發(fā)起查詢。該查詢可需要用到存儲在多個數(shù)據(jù) 庫中的數(shù)據(jù)。例如,為了充分執(zhí)行,該查詢可需要用到存儲在第一數(shù)據(jù)庫320中的第一數(shù)據(jù) 和存儲在第二數(shù)據(jù)庫340中的第二數(shù)據(jù)。可以利用第一執(zhí)行引擎310訪問第一數(shù)據(jù)庫320, 利用第二執(zhí)行引擎330訪問第二數(shù)據(jù)庫340。第一執(zhí)行引擎310可以包括:根據(jù)上述公開 的技術(shù)執(zhí)行查詢的查詢執(zhí)行器312。
[0019] 在一些實施例中,可以通過第一執(zhí)行引擎310訪問第二數(shù)據(jù)庫340,通過第二執(zhí)行 引擎330訪問第一數(shù)據(jù)庫320。在其他實施例中,可以通過任一種執(zhí)行引擎訪問這些數(shù)據(jù) 庫,但是這種訪問會有缺點,例如處理或內(nèi)存開銷、折衷的數(shù)據(jù)完整性等。
[0020] 第一數(shù)據(jù)庫320和第二數(shù)據(jù)庫340和各自的引擎310和330可以是基于不同結(jié)構(gòu) 和存儲不同數(shù)據(jù)的。例如,該第一執(zhí)行引擎310和第一數(shù)據(jù)庫320可以是OLTP系統(tǒng)的一部 分,而第二執(zhí)行引擎330和第二數(shù)據(jù)庫340可以是OLAP系統(tǒng)的一部分,反之亦然。這些系 統(tǒng)一起可以構(gòu)成企業(yè),例如電信企業(yè)的大型DBMS的一部分。例如,OLTP數(shù)據(jù)庫(例如