欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

存儲為行存儲和列存儲二者的混合數(shù)據(jù)庫表的制作方法

文檔序號:6379194閱讀:232來源:國知局

專利名稱::存儲為行存儲和列存儲二者的混合數(shù)據(jù)庫表的制作方法
技術領域
:本發(fā)明涉及數(shù)據(jù)庫中數(shù)據(jù)的存儲,而且更具體地,涉及以混合表格式的數(shù)據(jù)庫信息的存儲。
背景技術
:除非另有說明,本節(jié)中所描述的方法不是本申請中的權利要求的現(xiàn)有技術,并且不承認由并入本節(jié)即表示現(xiàn)有技術。數(shù)據(jù)庫是以結構化的方式存儲數(shù)據(jù)的電子編檔系統(tǒng)。數(shù)據(jù)庫中的主存儲結構是表。數(shù)據(jù)庫可以包含多個表,而且每個表可以容納特定類型的信息。數(shù)據(jù)庫表以水平行和垂直列來存儲和組織數(shù)據(jù)。行通常對應于真實世界的實體或關系,其代表表中的單個記錄。列可以指示這些實體或關系的特定屬性,諸如“名稱”、“地址”或“電話號碼”。例如,X公司可以具有包含“客戶”表的數(shù)據(jù)庫,“客戶”表列出了它的客戶的名稱、地址和電話號碼。每一行可以代表單一的客戶,而且列可以代表每個客戶的名稱、地址和電話號碼。數(shù)據(jù)庫通常存儲在一維的計算機存儲器中。因此,二維的數(shù)據(jù)庫表必須被映射為一維的數(shù)據(jù)結構以便存儲在數(shù)據(jù)庫中。一種映射方法涉及按行將表存儲在數(shù)據(jù)庫中(即,面向行的存儲模型)。這種方法可以使關于單一的實體的信息保持在一起。例如,按行存儲可以首先存儲關于第一客戶的所有信息,然后存儲關于第二客戶的所有信息,等等??商鎿Q地,表可以被按行存儲在數(shù)據(jù)庫中(即,面向列的存儲模型)。這種方法可以使不同實體的相同屬性保持在一起。例如,按列存儲可以首先存儲所有客戶的名稱,然后存儲所有客戶的地數(shù)據(jù)通常必須以與它被存儲的方式相同的方式從表中訪問。也就是說,傳統(tǒng)的計算機存儲技術需要專用查詢操作符(operator),其能夠訪問特定類型的存儲模型。例如,行查詢操作符用于處理以行格式的存儲模型(row-formattedstoragemodels)存儲在數(shù)據(jù)庫中的數(shù)據(jù),而且列查詢操作符用于處理以列格式的存儲模型(column-formattedstoragemodels)存儲在數(shù)據(jù)庫中的數(shù)據(jù)。因而,選擇使用哪種存儲模型往往取決于數(shù)據(jù)將被如何使用。面向行的存儲模型通常非常適用于事務查詢。行存儲格式將數(shù)據(jù)庫行強調為可操作的元素,并且通常用于聯(lián)機事務處理(On-LineTransactionProcessing,0LTP),OLTP涉及相對較大數(shù)量的聯(lián)機事務(行),而且每個事務的特征在于相對更多的數(shù)據(jù)類型(列)。相比之下,面向列的存儲模型一般適用于分析查詢。列存儲格式將數(shù)據(jù)庫列強調為可操作的元素,并且通常用于關于可以包括基本數(shù)據(jù)類型的聚合的更少數(shù)量的數(shù)據(jù)類型(列)來對事務(行)總數(shù)的子集進行聯(lián)機分析處理(On-LineAnalyticalProcessing,0LAP)。以列存儲格式的數(shù)據(jù)庫表通常用于為了解決問題而對原始數(shù)據(jù)進行詢問(interrogation)和分析,并用于規(guī)劃形成業(yè)務智能(BusinessIntelligence,BI)效果的一部分??傊?,行存儲可以用于檢索單個記錄,該記錄包括許多具有主鍵條件(primarykeycondition)的列。列存儲可以用于執(zhí)行更復雜的功能,諸如對相對較小數(shù)量的列進行水口/彡口口o因此,傳統(tǒng)的查詢處理方案被綁定到正被查詢的數(shù)據(jù)庫的底層存儲模型。然而,在現(xiàn)實中,具有以列格式的存儲模型存儲的某些數(shù)據(jù)的數(shù)據(jù)庫可以被要求處理與該數(shù)據(jù)有關的事務查詢,或者具有以行格式的存儲模型存儲的某些數(shù)據(jù)的數(shù)據(jù)庫可以被要求處理與該數(shù)據(jù)有關的分析查詢。例如,具有以行格式的存儲模型存儲的數(shù)據(jù)的數(shù)據(jù)庫可以接收請求對該數(shù)據(jù)進行事務處理和分析處理的一組混合的查詢。行存儲數(shù)據(jù)庫表格式和列存儲數(shù)據(jù)庫表格式二者都提供各種好處。例如,行存儲格式為數(shù)據(jù)提供現(xiàn)成的可擴展性,因為它預期越來越多的事務將需要存儲在附加行中。然而,行存儲表格式對于分析查詢(例如,聚合、結合)而言是相對內存密集型(memoryintensive)的,因為它垂直掃描表,這導致在水平存儲數(shù)據(jù)時發(fā)生緩存未命中(cachemiss)。相反,列存儲格式在允許涉及表結合和聚合的復雜的數(shù)據(jù)操作方面提供靈活性,以及通過允許利用字典編碼對跨多個條目的數(shù)據(jù)類型內的壓縮來提供相對較低的內存消耗。然而,列存儲數(shù)據(jù)庫格式通常不允許與行存儲表一樣容易地操作大量數(shù)據(jù)。因此,行存儲表用作逐行記錄訪問(諸如利用主鍵查找的單個記錄選擇)是更有效的。列存儲表用作逐列記錄訪問(諸如單列聚合)是更好的。對于逐行記錄訪問,列存儲表變?yōu)閮却婷芗停驗閿?shù)據(jù)格式是以列存儲的形式垂直組織的,從而在水平訪問記錄值時發(fā)生緩存未命中。對于逐行記錄訪問,行存儲表變?yōu)閮却婷芗停驗閿?shù)據(jù)格式是以行存儲的形式水平組織的,從而當讀取特定列值時發(fā)生緩存未命中。盡管各種數(shù)據(jù)庫表類型具有各種優(yōu)點,但是傳統(tǒng)上表在業(yè)務生命周期的任意時間點通常只能夠以行存儲或列存儲。因此,本公開利用實現(xiàn)存儲為行存儲和列存儲二者的混合數(shù)據(jù)庫表的系統(tǒng)和方法來解決這個和其他問題。
發(fā)明內容混合數(shù)據(jù)庫表被存儲為行存儲和列存儲二者。一個或多個技術可以單獨使用或組合使用,以便通過調節(jié)對處理密集型列存儲數(shù)據(jù)的訪問和/或調節(jié)處理密集型列存儲數(shù)據(jù)的大小來提高混合表的性能。例如,在插入操作過程中,只有在已經(jīng)考慮了某些過濾和/或邊界條件之后才可以針對列存儲數(shù)據(jù)搜索唯一性違背情況。在另一種技術中,混合表管理器可以基于諸如訪問頻率或者潛在的業(yè)務邏輯的考慮來控制將數(shù)據(jù)移動到列存儲。根據(jù)又一種技術,混合表的查詢可以導致僅在行存儲數(shù)據(jù)的初始搜索沒有返回結果之后才搜索列存儲數(shù)據(jù)。計算機實現(xiàn)的方法的實施例包括,在非臨時性計算機可讀存儲介質中提供數(shù)據(jù)庫,該數(shù)據(jù)庫以應用層語言創(chuàng)建并且包括行分區(qū)的存儲和列分區(qū)的存儲。從用戶接收查詢?;诓樵兯阉餍蟹謪^(qū)的存儲?;趯π蟹謪^(qū)的存儲的搜索,執(zhí)行優(yōu)化。只有在優(yōu)化擔保的情況下,才基于查詢搜索列分區(qū)的存儲。向用戶返回基于查詢的搜索結果。計算機系統(tǒng)的實施例包括:一個或多個處理器;以及軟件程序,其能夠在計算機系統(tǒng)上運行。該軟件程序被配置以從用戶接收查詢,并且基于查詢搜索數(shù)據(jù)庫的行分區(qū)的存儲,數(shù)據(jù)庫以應用層語言創(chuàng)建并且在非臨時性計算機可讀存儲介質中提供,數(shù)據(jù)庫還包括列分區(qū)的存儲?;趯π蟹謪^(qū)的存儲的搜索,執(zhí)行優(yōu)化。只有在優(yōu)化擔保的情況下,才基于查詢搜索列分區(qū)的存儲。向用戶返回基于查詢的搜索結果。一種非臨時性計算機可讀存儲介質的實施例具體實施用于執(zhí)行方法的計算機程序,該方法包括從用戶接收查詢并基于查詢搜索數(shù)據(jù)庫的行分區(qū)的存儲,數(shù)據(jù)庫以應用層語言創(chuàng)建并且在非臨時性計算機可讀存儲介質中提供,數(shù)據(jù)庫還包括列分區(qū)的存儲?;趯π蟹謪^(qū)的存儲的搜索,執(zhí)行優(yōu)化。只有在優(yōu)化擔保的情況下,才基于查詢搜索列分區(qū)的存儲。向用戶返回基于查詢的搜索結果。在實施例中,搜索行分區(qū)的存儲包括執(zhí)行唯一鍵搜索。根據(jù)一些實施例,優(yōu)化包括確定行分區(qū)的存儲的唯一鍵搜索是否沒有返回搜索結果。在具體實施例中,搜索結果是通過合并行分區(qū)的存儲的搜索結果和列分區(qū)的存儲的搜索結果形成的。一些實施例還可以包括提供行分區(qū)的存儲的值的范圍。在某些實施例值,優(yōu)化可以包括確定行分區(qū)的存儲的搜索是否滿足過濾條件,過濾條件包括值的范圍。以下詳細描述和附圖提供了對本發(fā)明的性質和優(yōu)點的更好理解。圖1示出了根據(jù)實施例的混合表的結構和操作的簡化示意圖;圖2示出了將新的記錄插入混合表的實施例的簡化示意圖;圖2A示出了用于將新的記錄插入混合表的實施例的處理流程的簡化視圖;圖3A將布隆過濾器的性能標繪為位/元素(bit/element)對散列函數(shù)的數(shù)量;圖3B針對可縮放的布隆過濾器標繪了內存大小對記錄的數(shù)量;圖4是顯示在利用不同數(shù)量線程的插入處理過程中、以每秒事務處理量(transactionspersecond,TPS)為單位的吞吐量的條形圖;圖5示出了根據(jù)實施例的控制混合表中數(shù)據(jù)移動的簡化視圖;圖5A示出了在混合表的實施例中用于在行分區(qū)存儲與列分區(qū)存儲之間移動記錄的處理流程的簡化視圖;圖6示出了根據(jù)頁面級(page-level)訪問統(tǒng)計管理來實施基于訪問的數(shù)據(jù)移動策略的簡化示意圖;圖7示出了根據(jù)實施例的業(yè)務感知的(business-aware)數(shù)據(jù)移動策略的簡化實施例;圖8示出了根據(jù)實施例的對混合數(shù)據(jù)庫進行搜索操作的簡化示意圖;圖8A示出了用于搜索混合表的實施例的處理流程的簡化視圖;圖9示出了在單一混合表上進行簡單搜索的簡化示意圖;圖10是簡化的流程圖,其示出如果有必要則采取列搜索,隨后是行搜索結果和列搜索結果的合并;圖11示出了基于轉換的連接操作的簡化示意圖;圖12示出了原生混合連接操作的簡化示意圖13示出了原生混合連接操作的另一個視圖;圖14示出可以被配置為實施混合數(shù)據(jù)庫表的專用計算機器的硬件;圖15示出了計算機系統(tǒng)的示例;以及圖16針對傳統(tǒng)的行和列存儲表以及相應混合表的搜索性能標繪了吞吐量對連接的數(shù)量。具體實施例方式這里描述的是提供存儲為行存儲和列存儲二者的混合數(shù)據(jù)庫表的技術。單獨使用或組合使用的某些技術通過限制對處理密集型(processing-1ntensive)列存儲數(shù)據(jù)的訪問和/或限制處理密集型列存儲數(shù)據(jù)的大小來提高混合表的性能。在下面的描述中,為了解釋,闡述了實施例和具體細節(jié)以提供對各種實施例的透徹理解。然而,對本領域技術人員將顯而易見的是,由權利要求限定的本發(fā)明可以單獨包括這些實施例中的一些或所有特征,或者與下面描述的其它特征組合使用,并且可以進一步包括這里所描述的特征和構思的修改和等同物。圖1示出了根據(jù)實施例的混合表的簡化示意圖?;旌媳?00包括第一數(shù)據(jù)存儲102,其包括根據(jù)內存行分(in-memoryrowpartition)存儲的數(shù)據(jù)?;旌媳磉€包括第二數(shù)據(jù)存儲106,其包括根據(jù)內存列分區(qū)(in-memorycolumnpartition)存儲的數(shù)據(jù)。如上面提到的,與以行存儲方向訪問數(shù)據(jù)相比,以列存儲方向訪問數(shù)據(jù)是更加處理密集型的。查詢處理器108與混合表通信以分別利用行引擎107和列引擎109來執(zhí)行行搜索和列搜索。行搜索結果110和列搜索結果112被返回到查詢處理器,而且合并的查詢搜索結果114被返回給用戶。圖1中的箭頭122示出將新的記錄插入到混合表的功能。如下面詳細描述的,這個插入功能能夠被優(yōu)化以提高混合表的性能。圖1還示出了,混合表中的數(shù)據(jù)可以從相對更新密集型(update-1ntensive)行分區(qū)方向被移動到相對讀取密集型(read-1ntensive)列分區(qū)方向。數(shù)據(jù)管理器120負責這種數(shù)據(jù)移動,在某些情況下這可以采取到列表(columntable)的異步事務批量數(shù)據(jù)移動的形式。異步數(shù)據(jù)移動被設計成利用行分區(qū)和列分區(qū)二者的有利屬性。從性能的角度來看,可能期望將剛插入的記錄、經(jīng)常更新的記錄、和/或利用主鍵條件搜索的記錄放置在行分區(qū)。期望將不經(jīng)常更新的但有時聚合的記錄放置在列分區(qū)。從內存(memory)消耗的角度來看,可能期望將行分區(qū)維持為盡可能的小,因為行分區(qū)不被壓縮。因此,相同記錄量所消耗的內容通常大于列分區(qū)。因此,混合表的實施例可以尋求避免犧牲OLTP性能(在行存儲中保持相關數(shù)據(jù)),并且提高聚合性能(在列存儲中保持穩(wěn)定的(stable)、舊的(aged)用于聚合的數(shù)據(jù)),同時保持合理的內存消耗(例如,通過行/列邊界管理)。根據(jù)本發(fā)明的實施例的混合表可以提供某些潛在好處。特別是,存儲在行存儲方向中的數(shù)據(jù)的存在提供快速訪問。存儲在行存儲方向中的數(shù)據(jù)適合利用搜索條件(例如,精確匹配(match)/范圍(range))的單個表選擇。因此,快速的“簡單選擇”查詢可以用于訪問行分區(qū)的數(shù)據(jù)存儲。行分區(qū)的數(shù)據(jù)存儲還提供可擴展的更新和搜索性能。此外,行分區(qū)的數(shù)據(jù)存儲的存在允許利用精益棧(leanstack)處理并發(fā)工作負載。以相對低的系統(tǒng)資源的消耗執(zhí)行諸如插入、更新和刪除、以及簡單的搜索(精確匹配/范圍)的功能的執(zhí)行是可能的。而且,行引擎中的運行可以流水線化。關于列存儲數(shù)據(jù),通過對列表進行字典編碼可以減少內存消耗。列表還通過列引擎提供快速的OLAP處理。本發(fā)明的實施例可以尋求通過限制對處理密集型列存儲數(shù)據(jù)的訪問和/或限制處理密集型列存儲數(shù)據(jù)的大小來保持混合表的性能。這方面的一個示例能夠在插入操作過程中發(fā)生,如圖2所示。特別地,圖2示出了將新的記錄插入混合表200的簡化示意圖。首先,新的記錄202被插入與內存行分區(qū)數(shù)據(jù)存儲206相關聯(lián)的唯一(unique)行存儲(RS)索引204。根據(jù)具體實施例,在采取在列分區(qū)的數(shù)據(jù)存儲208(處理密集型方面)中搜索每個值之前,為了檢查唯一丨丨生違背情況(uniquenessviolation),混合表首先基于附加信息執(zhí)行優(yōu)化209。圖2A示出了用于將新的記錄插入混合表的實施例的處理流程250的簡化視圖。第一步驟252包括在非臨時性計算機可讀存儲介質中提供數(shù)據(jù)庫,該數(shù)據(jù)庫以應用層語言創(chuàng)建并且包括行分區(qū)的存儲和列分區(qū)的存儲。第二步驟252包括接收將被插入到數(shù)據(jù)庫中的新的記錄。第三步驟256包括使行引擎根據(jù)行存儲索引將新的記錄插入到行分區(qū)的存儲。第四步驟258包括基于附加信息執(zhí)行優(yōu)化以檢查唯一性違背情況。第五步驟260包括,只有在優(yōu)化擔保(warrant)的情況下,才在列分區(qū)的存儲中檢查唯一丨丨生違背情況。第六步驟262包括顯示對包括新的記錄的數(shù)據(jù)庫的查詢進行處理的結果。第一優(yōu)化方法是利用円鎖釋放結構(latch-freestructure)保持列分區(qū)的唯一列(uniquecolumn)的最小/最大(min/max)值,以最小化爭用。這種方法可能導致對于多列的唯一鍵的許多誤命中(falsehit)。第二優(yōu)化方法是保持用于唯一列的過濾器(諸如布隆(Bloom)過濾器)。這種過濾方法210是有益的,因為只有在數(shù)據(jù)從行存儲方向移動到數(shù)據(jù)存儲方向的時候,過濾器才需要更新或刷新。特別是,布隆過濾器是有效地過濾掉不屬于一組的任何元素的一種數(shù)據(jù)結構。布隆過濾器包括位向量和一組散列函數(shù)。如果布隆過濾器返回假(FALSE),則該元素絕對不是集合的成員。如果布隆過濾器返回真(TRUE),則該元素有可能在集合中。圖3A將布隆過濾器的性能標繪為位/元素對散列函數(shù)的數(shù)量,具有0.1的誤報率(FalsePositiveRate,F(xiàn)PR)。FPR取決于散列函數(shù)的數(shù)量和元素的數(shù)量/(位向量的大小)。在某些實施例中,通過使用布隆過濾器可以提高在插入處理過程中的混合表的性能。特別是,只有布隆過濾器返回TRUE時,才需要搜索列分區(qū)的數(shù)據(jù)存儲中的值。為了這個任務使用標準布隆過濾器可以消耗大量的內存。例如,標準布隆過濾器需要大約60MB以便為100萬條記錄保持FPR彡0.1。因此,某些實施例可以采用可擴展的布隆過濾器(SBF),以便對混合表的插入處理執(zhí)行優(yōu)化。SBF是布隆過濾器的變體,其使用與已存儲的元素的數(shù)量成比例的空間。SBF的查詢時間遵從下列關系式:查詢時間=0(klogn),其中,k=散列函數(shù)的數(shù)量;以及n=記錄的數(shù)量。圖3B針對FPR=0.1和k=3的SBF,標繪了內存大小對記錄的數(shù)量。利用SBF的優(yōu)化插入處理能夠導致混合表增強的性能。這將結合下面的示例進行討論。示例80萬條記錄的數(shù)據(jù)總量被配置在六(6)個不同的表類型中:面向行(行,A);面向列(列,B);未過濾且80萬條記錄以行存儲的混合(C);未過濾且80萬條記錄以列存儲的混合(D);利用SBF且80萬條記錄以行存儲的混合(E)以及利用SBF且80萬條記錄以列存儲的混合(F)。圖4是顯示在利用不同數(shù)量線程的插入處理過程中、以每秒事務處理量(TPS)為單位的吞吐量的條形圖?;旌媳淼男阅苣軌蛲ㄟ^與具有以行方向(最低處理密集型格式)存儲的數(shù)據(jù)的表的比較來衡量。圖4表明,沒有過濾(C,D)的情況下,混合表的插入處理性能只有行表(A)的插入處理性能的約1/3。相比之下,在使用SBF的(E,F(xiàn))情況下,混合表顯示了與行表(A)類似的插入處理性能,盡管事實上混合表的全部數(shù)據(jù)位于列分區(qū)的數(shù)據(jù)存儲中。這代表顯著的增強,使混合數(shù)據(jù)庫表的性能類似于傳統(tǒng)的行存儲方式的性能。雖然上述討論集中在使用可擴展的布隆過濾器來優(yōu)化混合表的性能,但是本發(fā)明并不限于這個特定的過濾器類型??梢圆捎糜糜诳熘荡嬖跈z查(fastvalueexistencechecking)的不同類型的索引變體。實施例包括但不限于散列索引、B+樹索引、csb+樹索弓丨、以及其他??梢圆捎靡蕴岣呋旌媳淼男阅艿牧硪环N技術是選擇性地向/從列分區(qū)的數(shù)據(jù)存儲移動記錄,以控制它的大小。圖5示出了根據(jù)實施例的控制混合表中數(shù)據(jù)移動的簡化視圖。特別是,混合表管理器500負責根據(jù)數(shù)據(jù)移動策略來控制數(shù)據(jù)從內存行分區(qū)存儲502到內存列分區(qū)存儲504的移動。通過對數(shù)據(jù)的智能分區(qū),選擇性的數(shù)據(jù)移動可以允許快速OLTP處理,避免列分區(qū)訪問。圖5A示出了在混合表的實施例中用于在行分區(qū)存儲與列分區(qū)存儲之間移動記錄的處理流程550的簡化視圖。第一步驟552包括在非臨時性計算機可讀存儲介質中提供數(shù)據(jù)庫,該數(shù)據(jù)庫以應用層語言創(chuàng)建并且包括行分區(qū)的存儲和列分區(qū)的存儲。第二步驟554包括提供數(shù)據(jù)移動管理器,其被配置為根據(jù)數(shù)據(jù)移動策略來執(zhí)行數(shù)據(jù)從行分區(qū)的存儲到列分區(qū)的存儲的移動。第三步驟556包括當滿足數(shù)據(jù)移動策略的條件時,使數(shù)據(jù)移動管理器自動地將記錄從行分區(qū)的存儲移動到列分區(qū)的存儲。在可選的第四步驟558中,行分區(qū)的存儲的搜索結果被返回給用戶。數(shù)據(jù)移動策略的一個示例是基于訪問的。因為這樣的數(shù)據(jù)移動策略不依賴于對業(yè)務規(guī)則(見下文)的知識,所以其可以用作默認的。根據(jù)基于訪問的數(shù)據(jù)移動策略,當行分區(qū)上的記錄的數(shù)量超過定義的閾值時,混合表管理器將行分區(qū)上的一些部分的記錄移動到列分區(qū)。這種基于訪問的數(shù)據(jù)移動可以基于對已訪問的記錄保持的統(tǒng)計,從而當移動被觸發(fā)時,具有較低的訪問頻率的記錄被移動。每當數(shù)據(jù)移動完成時,訪問統(tǒng)計可以被重置。圖6示出了根據(jù)頁面級(page-level)訪問統(tǒng)計管理來實施基于訪問的數(shù)據(jù)移動策略600的簡化示意圖。行分區(qū)存儲604中的多個頁面602中的每一個都包括持續(xù)訪問計數(shù)606。根據(jù)這種訪問計數(shù)的相對較低數(shù)量,具有最少訪問頻率的頁面可以被移到列分區(qū)數(shù)據(jù)存儲。在一些實施例中,由于粗粒度的訪問統(tǒng)計管理,頻繁訪問的記錄有可能被移出到列分區(qū)的存儲。例如,一些特定的實施例可以執(zhí)行頁面級移動,而不是記錄級管理,其中頁面包括多個記錄,多個記錄中的一些被頻繁訪問而另一些未被頻繁訪問。這種方法是有可能的,雖然針對經(jīng)常訪問的記錄可能發(fā)生不期望的數(shù)據(jù)移動??商鎿Q的數(shù)據(jù)移動策略可以基于業(yè)務概念,而不是訪問頻率。當業(yè)務語義(businesssemantic)已知時,這樣的數(shù)據(jù)移動策略可以提供最佳的結果。根據(jù)某些實施例,業(yè)務感知的數(shù)據(jù)移動可以采取基于條件的移動形式。在這種方法中,滿足一定業(yè)務條件的記錄可以被移出到列分區(qū)的存儲。在其它實施例中,業(yè)務感知的數(shù)據(jù)移動可以采取基于參考的移動形式。在這種方法中,當(參考表中的)相關記錄被移出時,記錄被移出到列分區(qū)的存儲。圖7示出了業(yè)務感知的數(shù)據(jù)移動策略700的簡化實施例。在這個示例中,關閉的銷售文檔被移動到列分區(qū)的數(shù)據(jù)存儲。在圖7的示例中,對于銷售文檔表VBAK,如果GBSTK列的值是“C”,則它意味著閉合的文檔。因此,移出條件可以被指定為GBSTK#C”,以便只移出關閉的文檔。通過將表之間的關系指定為移出條件,SD項目(VBAP)表和文檔首標(VBUK)表中的關閉文檔相關記錄(Closed-document-relatedrecords)可以被相應地移出。在這里,MANDT和VBELN列被用于指定這種關系。通過優(yōu)化搜索功能也可以增強混合表的性能。圖9示出了在單一混合表上進行簡單搜索的簡化示意圖。具體而言,作為項目的一部分,對混合表902提出查詢900。行存儲(RS)906和列存儲(CS)908的搜索結果的聯(lián)合(union)904被返回給用戶。根據(jù)本發(fā)明的特定實施例,諸如邊界條件的信息可以被引用以控制對列存儲的數(shù)據(jù)的訪問,從而最小化簡單查詢的列存儲訪問。圖8示出了根據(jù)實施例的對混合數(shù)據(jù)庫800進行搜索操作的簡化示意圖。如在下面進一步詳細描述的,搜索802最初可以在內存行分區(qū)的數(shù)據(jù)存儲804上執(zhí)行。只有在已經(jīng)返回最初搜索802的結果時才做出是否執(zhí)行對存儲在內存列分區(qū)808中的值進行進一步搜索806的決定。圖8A示出了用于搜索混合表的實施例的處理流程850的簡化視圖。第一步驟852包括在非臨時性計算機可讀存儲介質中提供數(shù)據(jù)庫,該數(shù)據(jù)庫以應用層語言創(chuàng)建并且包括行分區(qū)的存儲和列分區(qū)的存儲。第二步驟854包括接收來自用戶的查詢。第三步驟856包括基于所述查詢來搜索行分區(qū)的存儲。第四步驟858包括基于對行分區(qū)的存儲的搜索來執(zhí)行優(yōu)化。第五步驟860包括只有在優(yōu)化擔保的情況下,才基于所述查詢搜索列分區(qū)的存儲。在第六步驟862中,基于所述查詢的搜索結果被返回給用戶。如果優(yōu)化擔保,則對列存儲數(shù)據(jù)的搜索可以出現(xiàn)在背景中,對用戶是透明的。例如,涉及主鍵(PK)或唯一鍵(unique-key)的搜索可以最初只在較少的處理密集型行存儲數(shù)據(jù)上運行。如果從這個最初搜索返回結果,那么就不需要采取還搜索列存儲數(shù)據(jù)的處理密集型任務。圖10的簡化的流程圖示出了混合數(shù)據(jù)庫表搜索1000的實施例,其示出如果有必要則采取列搜索1002,隨后是行搜索結果1006和列搜索結果的合并1004。根據(jù)邊界條件的過濾還可以用作混合表搜索中的優(yōu)化技術。例如,為了控制對列存儲數(shù)據(jù)的訪問,列字典可以保持每個列分區(qū)的最小和最大值。然后,實際列存儲數(shù)據(jù)的搜索可以被限制于僅滿足過濾條件(例如,搜索條件)的分區(qū)。如果給定的過濾條件不需要列分區(qū)訪問,則列分區(qū)的邊界可以被保持以允許搜索優(yōu)化(限制列分區(qū)訪問)。圖16標繪了吞吐量(線程每秒,TPS)對連接的數(shù)量,以評估在傳統(tǒng)的行和列存儲表上執(zhí)行的以及在根據(jù)實施例的相應混合表上執(zhí)行的PK精確匹配搜索的性能。圖16示出,利用PK剪枝優(yōu)化(pruningoptimization)搜索混合表導致混合表的吞吐量高于常規(guī)列存儲表的吞吐量。更復雜的搜索可以適于多個混合數(shù)據(jù)庫表。特別是,這種復雜的搜索可以涉及表的連接(join)操作??梢杂糜诙鄠€混合表的復雜搜索的一種技術是基于轉換的連接。這種基于轉換的連接在2010年12月30日提交的、題為“ProcessingDatabaseQueriesUsingFormatConversion(使用格式轉換處理數(shù)據(jù)庫查詢)”的第12/982,673號美國專利申請中詳細公開,并且出于所有目的,其整體通過引用合并于此。圖11示出了基于轉換的連接操作1100的簡化示意圖。特別是,這種方法對于分割表(splittable)借用(leverage)列連接1102。行表作為分區(qū)。這種方法使用即時(on-the-fly)字典生成和字典緩存。可以用于多個混合表的復雜搜索的可替換的技術是混合的連接操作,其訪問以其原生(native)行存儲方向或列存儲方向存儲的數(shù)據(jù)。這種原生混合連接方法在2011年12月12日提交的、題為“MixedJoinofRowandColumnDatabaseTablesinNativeOrientation(原生方向的行和列數(shù)據(jù)庫表的混合連接)”的第13/323,530號美國專利申請中詳細公開,并且出于所有目的,其整體通過引用合并于此。圖12示出了原生混合連接操作1200的簡化示意圖。這種方法利用列字典作為索弓I。連接操作的修剪基于使用列字典索引作為數(shù)據(jù)邊界進行過濾來實現(xiàn)。圖13示出了原生混合連接操作1300的另一個視圖,其使用列字典作為索引。首先,記錄在行表中被迭代。下一步涉及針對每個連接條件的列字典查找。在第三步中,匹配的記錄被返回。根據(jù)原生混合連接方法,通過在迭代行表時使用列字典查找,實現(xiàn)了沒有結果具體化(resultmaterialization)。這還允許使用行標識符的流水線運行。對于多列連接處理,如果存在連接屬性(concatenatedattribute)或外部鍵,貝丨J可以實現(xiàn)完全鍵匹配。逐列匹配是可能的。圖14示出可以被配置為執(zhí)行根據(jù)某些實施例的混合數(shù)據(jù)庫表的專用計算機器的硬件。特別是,計算機系統(tǒng)1401包括處理器1402,其與非臨時性計算機可讀存儲介質1403電通信。這種計算機可讀存儲介質具有存儲在其上的代碼1405,代碼1405對應于內存行分區(qū)。代碼1404對應于內存列分區(qū),內存行分區(qū)和內存列分區(qū)兩者都可以作為根據(jù)上面已經(jīng)描述的實施例的混合表的一部分進行訪問。系統(tǒng)還可以包括對應于如上已經(jīng)示出和描述的數(shù)據(jù)移動管理器的代碼。這里描述的裝置、方法和技術可以被實現(xiàn)為在一個或多個計算機上運行的計算機程序(軟件)。計算機程序還可以被存儲在非臨時性計算機可讀介質上。非臨時性計算機可讀介質可以包括用于執(zhí)行所述處理的指令。計算機系統(tǒng)可以包括軟件服務器。許多軟件服務器一起可以形成利用軟件程序編程的計算機系統(tǒng)的集群或邏輯網(wǎng)絡,所述軟件程序相互通信并且一起工作以處理請求。示例性計算機系統(tǒng)1510在圖15中示出。計算機系統(tǒng)1510包括總線1505或其他用于對信息進行通信的通信機制,以及與總線1505耦接的用于處理信息的處理器1501。計算機系統(tǒng)1510還包括與總線1505耦接的存儲器1502,用于存儲將被處理器1501執(zhí)行的信息和指令,例如,包括用于執(zhí)行如上所述的技術的信息和指令。這個存儲器還可以用于在將被處理器1501運行的指令的運行過程中,存儲變量或其它中間信息。這個存儲器的可能的實現(xiàn)可以是,但不限于,隨機存取存儲器(RAM)、只讀存儲器(ROM)、或兩者。存儲設備1503還被提供以用于存儲信息和指令。存儲設備的常見形式包括,例如,硬盤驅動器、磁盤、光盤、⑶-ROM、DVD、閃存、USB存儲卡、或者計算機可以讀取的任何其它介質。例如,存儲設備1503可以包括用于執(zhí)行上述技術的源代碼、二進制代碼或軟件文件。存儲設備和存儲器是計算機可讀介質的兩個示例。計算機系統(tǒng)1510可以經(jīng)由總線1505耦接到諸如陰極射線管(CRT)或液晶顯示器(IXD)的顯示器1512,以用于向計算機用戶顯示信息。諸如鍵盤和/或鼠標的輸入設備1511耦接到總線1505,以用于將信息和命令選擇從用戶通信給處理器1501。這些組件的組合允許用戶與系統(tǒng)通信。在一些系統(tǒng)中,總線1505可以被劃分為多個專用總線。計算機系統(tǒng)1510還包括與總線1505耦接的網(wǎng)絡接口1504。網(wǎng)絡接口1504可以在計算機系統(tǒng)1510和本地網(wǎng)絡1520之間提供雙向數(shù)據(jù)通信。例如,網(wǎng)絡接口1504可以是數(shù)字用戶線(DSL)或調制解調器,以便通過電話線提供數(shù)據(jù)通信連接。網(wǎng)絡接口的另一個示例是局域網(wǎng)(LAN)卡,以便提供到可兼容LAN的數(shù)據(jù)通信連接。無線鏈接是另一個示例。在任何這樣的實現(xiàn)中,網(wǎng)絡接口1404發(fā)送和接收攜帶代表各種類型信息的數(shù)字數(shù)據(jù)流的電、電磁或光信號。計算機系統(tǒng)1510可以通過網(wǎng)絡接口1504在本地網(wǎng)絡1520、內聯(lián)網(wǎng)或互聯(lián)網(wǎng)1530上發(fā)送和接收信息,包括消息或其他接口動作。對于本地網(wǎng)絡,計算機系統(tǒng)1510可以與諸如服務器1515的多個其他計算機機器通信。因此,計算機系統(tǒng)1510以及由服務器1515代表的服務器計算機系統(tǒng)可以形成云計算網(wǎng)絡,其可以利用這里所描述的過程進行編程。在涉及互聯(lián)網(wǎng)的示例中,軟件組件或服務可以跨網(wǎng)絡駐留在多個不同的計算機系統(tǒng)1510或服務器1531至1535上。例如,上面描述的過程可以在一個或多個服務器上實現(xiàn)。服務器1531可以通過互聯(lián)網(wǎng)1530、本地網(wǎng)絡1520和網(wǎng)絡接口1504將來自一個組件的動作或消息傳輸給計算機系統(tǒng)1510上的組件。例如,上述軟件組件和過程可以在任何計算機系統(tǒng)上實現(xiàn),并且可以跨網(wǎng)絡發(fā)送和/或接收信息。以上描述示出了本發(fā)明的各種實施例以及如何可以實現(xiàn)本發(fā)明的各個方面的示例。以上示例和實施例不應被視為唯一的實施例,而且被呈現(xiàn)以用于說明由以下權利要求所限定的本發(fā)明的靈活性和優(yōu)點?;谝陨瞎_和以下權利要求,其他安排、實施例、實現(xiàn)和等同物將對本領域技術人員是顯而易見的,而且可以使用而不脫離由權利要求限定的本發(fā)明的精神和范圍。權利要求1.一種計算機實現(xiàn)的方法,包括:在非臨時性計算機可讀存儲介質中提供數(shù)據(jù)庫,該數(shù)據(jù)庫以應用層語言創(chuàng)建并且包括行分區(qū)的存儲和列分區(qū)的存儲;從用戶接收查詢;基于所述查詢搜索行分區(qū)的存儲;基于對行分區(qū)的存儲的搜索,執(zhí)行優(yōu)化;只有在優(yōu)化擔保的情況下,才基于所述查詢搜索列分區(qū)的存儲;以及向用戶返回基于所述查詢的搜索結果。2.如權利要求1所述的計算機實現(xiàn)的方法,其中,搜索行分區(qū)的存儲包括執(zhí)行唯一鍵搜索。3.如權利要求2所述的計算機實現(xiàn)的方法,其中,所述優(yōu)化包括確定行分區(qū)的存儲的唯一鍵搜索是否沒有返回搜索結果。4.如權利要求1所述的計算機實現(xiàn)的方法,其中,所述搜索結果是通過合并行分區(qū)的存儲的搜索結果和列分區(qū)的存儲的搜索結果形成的。5.如權利要求1所述的計算機實現(xiàn)的方法,還包括,提供行分區(qū)的存儲的值的范圍。6.如權利要求5所述的計算機實現(xiàn)的方法,其中,所述優(yōu)化包括確定行分區(qū)的存儲的搜索是否滿足過濾條件,所述過濾條件包括所述值的范圍。7.一種具體實施計算機程序的非臨時性計算機可讀存儲介質,該計算機程序用于執(zhí)行方法,該方法包括:從用戶接收查詢;基于所述查詢搜索數(shù)據(jù)庫的行分區(qū)的存儲,所述數(shù)據(jù)庫以應用層語言創(chuàng)建并且在非臨時性計算機可讀存儲介質中提供,所述數(shù)據(jù)庫還包括列分區(qū)的存儲;基于對行分區(qū)的存儲的搜索,執(zhí)行優(yōu)化;只有在優(yōu)化擔保的情況下,才基于所述查詢搜索列分區(qū)的存儲;以及向用戶返回基于所述查詢的搜索結果。8.如權利要求7所述的非臨時性計算機可讀存儲介質,其中,搜索行分區(qū)的存儲包括執(zhí)行唯一鍵搜索。9.如權利要求8所述的非臨時性計算機可讀存儲介質,其中,所述優(yōu)化包括確定行分區(qū)的存儲的唯一鍵搜索是否沒有返回搜索結果。10.如權利要求7所述的非臨時性計算機可讀存儲介質,其中,所述搜索結果是通過合并行分區(qū)的存儲的搜索結果和列分區(qū)的存儲的搜索結果形成的。11.如權利要求7所述的非臨時性計算機可讀存儲介質,還包括,提供行分區(qū)的存儲的值的范圍。12.如權利要求11所述的非臨時性計算機可讀存儲介質,其中,所述優(yōu)化包括確定行分區(qū)的存儲的搜索是否滿足過濾條件,所述過濾條件包括所述值的范圍。13.一種計算機系統(tǒng),包括:一個或多個處理器;軟件程序,其能夠在所述計算機系統(tǒng)上運行,該軟件程序被配置以:從用戶接收查詢;基于所述查詢搜索數(shù)據(jù)庫的行分區(qū)的存儲,所述數(shù)據(jù)庫以應用層語言創(chuàng)建并且在非臨時性計算機可讀存儲介質中提供,所述數(shù)據(jù)庫還包括列分區(qū)的存儲;基于對行分區(qū)的存儲的搜索,執(zhí)行優(yōu)化;只有在優(yōu)化擔保的情況下,才基于所述查詢搜索列分區(qū)的存儲;以及向用戶返回基于所述查詢的搜索結果。14.如權利要求13所述的計算機系統(tǒng),其中,搜索行分區(qū)的存儲包括唯一鍵搜索。15.如權利要求14所述的計算機系統(tǒng),其中,所述優(yōu)化包括確定行分區(qū)的存儲的唯一鍵搜索是否沒有返回搜索結果。16.如權利要求12所述的計算機系統(tǒng),其中,所述搜索結果是通過合并行分區(qū)的存儲的搜索結果和列分區(qū)的存儲的搜索結果形成的。17.如權利要求12所述的計算機系統(tǒng),其中,提供行分區(qū)的存儲的值的范圍。18.如權利要求17所述的計算機系統(tǒng),其中,所述優(yōu)化包括確定行分區(qū)的存儲的搜索是否滿足過濾條件,所述過濾條件包括所述值的范圍。全文摘要混合數(shù)據(jù)庫表被存儲為行存儲和列存儲二者。一個或多個技術可以單獨使用或組合使用,以便通過調節(jié)對處理密集型列存儲數(shù)據(jù)的訪問和/或調節(jié)處理密集型列存儲數(shù)據(jù)的大小來提高混合表的性能。例如,在插入操作過程中,只有在已經(jīng)考慮了某些過濾和/或邊界條件之后才可以針對列存儲數(shù)據(jù)搜索唯一性違背情況。在另一種技術中,混合表管理器可以基于諸如訪問頻率或者潛在的業(yè)務邏輯來控制將數(shù)據(jù)移動到列存儲。在又一種技術中,混合表的查詢可以僅在行存儲數(shù)據(jù)的初始搜索沒有返回結果之后才導致搜索列存儲數(shù)據(jù)。文檔編號G06F17/30GK103177056SQ201210401219公開日2013年6月26日申請日期2012年10月19日優(yōu)先權日2011年12月22日發(fā)明者Y.永,C.程,J.李,C.B.宋,Y.S.孔,S.Y.且申請人:Sap股份公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
邵阳市| 绥江县| 潼南县| 肇庆市| 沽源县| 桂阳县| 大港区| 黄石市| 昌宁县| 永安市| 湘潭市| 日照市| 黄山市| 遵义市| 安宁市| 四川省| 武强县| 汶川县| 江门市| 南京市| 南汇区| 桐庐县| 云阳县| 江油市| 宁海县| 铜山县| 庆元县| 上饶市| 扬州市| 渝北区| 灵山县| 广东省| 进贤县| 开化县| 禄丰县| 满城县| 灵石县| 贞丰县| 小金县| 亳州市| 宁明县|