使用鍵值存儲系統(tǒng)的分布式sql查詢處理的制作方法
【專利說明】
【背景技術(shù)】
[0001]大規(guī)模的基于web的應(yīng)用可以使用分布式存儲系統(tǒng)來存儲應(yīng)用數(shù)據(jù),諸如關(guān)于其用戶、顧客、內(nèi)部狀態(tài)等等的數(shù)據(jù)。用于基于web的應(yīng)用的現(xiàn)有的存儲系統(tǒng)既包括一般以使用標(biāo)準(zhǔn)查詢語言(SQ)為特色的傳統(tǒng)的數(shù)據(jù)庫系統(tǒng),也包括不使用SQL的“NoSQL”存儲系統(tǒng)。SQL是已知的并且廣泛使用的查詢接口,通過使用聲明性語言提供強(qiáng)大功能,該聲明性語言比命令式編程語言更簡潔,使得幾行SQL可等同于用于使用NoSQL系統(tǒng)來實(shí)現(xiàn)相同功能的幾百行代碼。
[0002]—般而言,使用SQL的傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)擴(kuò)展起來困難并且昂貴,因為它們使用昂貴的特殊硬件和/或具有高開銷(例如,對數(shù)據(jù)進(jìn)行分區(qū)以及調(diào)節(jié)性能的昂貴的系統(tǒng)管理員)。然而,在過去的十年,開發(fā)和使用大規(guī)模的Web應(yīng)用的許多公司將傳統(tǒng)的SQL數(shù)據(jù)庫系統(tǒng)替換為不帶有SQL的專業(yè)化的定制的存儲系統(tǒng),這類存儲系統(tǒng)具有更好的性能、更好的可縮放性和降低的成本(不論是硬件還是開銷)。然而,這些“NoSQL”存儲系統(tǒng)只提供在傳統(tǒng)的SQL數(shù)據(jù)庫系統(tǒng)中可用的功能的子集。例如,NoSQL存儲系統(tǒng)可能缺乏聯(lián)接、子查詢、輔助鍵、聚集、及由SQL所提供的其他特征。
[0003]因此,使用需要此缺失的功能的NoSQL存儲系統(tǒng)的Web應(yīng)用必須自己提供它,這又會增大開發(fā)這樣的用于與NoSQL存儲系統(tǒng)一起操作的應(yīng)用的工作量和成本。此外,NoSQL存儲系統(tǒng)一般具有自定義界面和專屬于該存儲系統(tǒng)的查詢語言(即,是非標(biāo)準(zhǔn)并且專用的);結(jié)果,被開發(fā)使用一個特定NoSQL系統(tǒng)的web應(yīng)用在不對這樣的web應(yīng)用作出重大的更改以使它們與由其他NoSQL存儲系統(tǒng)所特有的定制界面和查詢語言兼容的情況下可能不與其他NoSQL存儲系統(tǒng)一起工作。
【發(fā)明內(nèi)容】
[0004]此處所公開的各種實(shí)現(xiàn)涉及支持SQL同時還提供可縮放性和高容錯的存儲系統(tǒng)。這些實(shí)現(xiàn)以層疊在事務(wù)性鍵值系統(tǒng)(數(shù)據(jù)存儲組件)上面的SQL庫(SQL執(zhí)行組件)為特色。更具體地,SQL庫包括在客戶機(jī)上運(yùn)行的解析器和執(zhí)行引擎,而存儲組件包括實(shí)現(xiàn)用于存儲數(shù)據(jù)的鍵值系統(tǒng)的一個或多個存儲服務(wù)器。客戶端側(cè)的SQL庫解析從客戶端應(yīng)用接收到的SQL查詢,并將這些SQL查詢映射到鍵值系統(tǒng)上的操作(例如,事務(wù)),該鍵值系統(tǒng)執(zhí)行這些操作,以讀取和寫入通過鍵來標(biāo)識的數(shù)據(jù)項(沒有任何模式)。鍵值系統(tǒng)支持事務(wù),并進(jìn)一步提供處理并行事務(wù)的并行性控制機(jī)制。鍵值系統(tǒng)可以使用提供可縮放性和容錯的數(shù)種技術(shù)中的任何一種來實(shí)現(xiàn)。對于數(shù)種這樣的實(shí)現(xiàn),鍵值系統(tǒng)可以是帶有數(shù)個存儲服務(wù)器的分布式系統(tǒng),每一個存儲服務(wù)器都附接到一個或多個本地存儲設(shè)備。
[0005]一些實(shí)現(xiàn)涉及分布式SQL查詢處理系統(tǒng),包括:用于存儲鍵值對象的鍵值服務(wù)器;通信地耦合到所述鍵值服務(wù)器的至少一個客戶端;用于處理對所述鍵值對象中的一個的操作的鍵值庫;以及用于從應(yīng)用接收SQL查詢并將所述SQL查詢轉(zhuǎn)換為對于要處理的所述鍵值庫的事務(wù)的SQL庫。
[0006]提供本
【發(fā)明內(nèi)容】
是為了以精簡的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本
【發(fā)明內(nèi)容】
并不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)的主題的范圍。
[0007]附圖簡述
[0008]當(dāng)結(jié)合附圖閱讀時,可以更好地了解前面的摘要,以及下面的對說明性實(shí)現(xiàn)的詳細(xì)描述。為了說明各實(shí)現(xiàn),在圖形中示出了各實(shí)現(xiàn)的示例結(jié)構(gòu);然而,各實(shí)現(xiàn)不僅限于所公開的特定方法和所公開的手段。在附圖中:
[0009]圖1是解說表示此處所公開的各種實(shí)現(xiàn)的示例性分布式SQL查詢處理系統(tǒng)的框圖;
[0010]圖2是解說此處所公開的各種實(shí)現(xiàn)所使用的圖1的SQL庫、鍵值庫,以及鍵值服務(wù)器的示例性結(jié)構(gòu)的框圖;
[0011]圖3是用于在可以由此處所公開的各種實(shí)現(xiàn)使用的事務(wù)鍵值數(shù)據(jù)存儲系統(tǒng)上執(zhí)行SQL查詢的示例性方法的流程圖;
[0012]圖4是表示可以由此處所公開的各種實(shí)現(xiàn)用于執(zhí)行SQL查詢的示例性方法的流程圖,SQL查詢使用計算出的并存儲在臨時表中的中間結(jié)果;以及
[0013]圖5是可以與示例實(shí)現(xiàn)和各方面結(jié)合使用的示例計算環(huán)境的框圖。
【具體實(shí)施方式】
[0014]傳統(tǒng)的分布式數(shù)據(jù)庫系統(tǒng)(再強(qiáng)調(diào)一遍,它們擴(kuò)展起來困難并且昂貴)一般分成兩個類別:共享磁盤的系統(tǒng)和無共享系統(tǒng)。在共享磁盤的系統(tǒng)中,數(shù)據(jù)庫服務(wù)器共享一個或多個磁盤(或其他存儲設(shè)備),并且彼此協(xié)調(diào),以通過使用鎖定或同步協(xié)議,來控制對這些共享設(shè)備的并發(fā)訪問。然而,此方法的缺點(diǎn)是由這些協(xié)議施加的開銷,這會限制可縮放性,并會使這些系統(tǒng)的設(shè)計復(fù)雜化。另一方面,無共享系統(tǒng)不共享磁盤,而是替代地跨各種服務(wù)器對數(shù)據(jù)進(jìn)行分割,每一個服務(wù)器存儲數(shù)據(jù)的一部分。為在這些系統(tǒng)中執(zhí)行數(shù)據(jù)庫查詢,查詢被分解成在合適的服務(wù)器上執(zhí)行的子查詢,以產(chǎn)生被組合以回答查詢的結(jié)果。然而,此方法的缺點(diǎn)是,它要求高效地跨服務(wù)器對數(shù)據(jù)進(jìn)行分割,并高效地查詢存儲的數(shù)據(jù),其中,實(shí)現(xiàn)這些效率涉及由管理專家進(jìn)行相當(dāng)大的手動調(diào)節(jié)。
[0015]為克服上文所描述的SQL和NoSQL系統(tǒng)的缺點(diǎn),一些解決方案(此處被稱為“兩層方法”)嘗試將存儲系統(tǒng)劃分為兩個不同的并且分離的層,“事務(wù)層”位于“數(shù)據(jù)層”之上,其中,事務(wù)層協(xié)調(diào)事務(wù)執(zhí)行,并負(fù)責(zé)并發(fā)控制,而數(shù)據(jù)層存儲數(shù)據(jù)。然而,與現(xiàn)有的兩層方法不同,此處所公開的各種實(shí)現(xiàn)的兩個組件(SQL執(zhí)行和數(shù)據(jù)存儲)的不同之處在于,數(shù)據(jù)存儲層中具有事務(wù),并且負(fù)責(zé)并發(fā)控制。換言之,此處所公開的各種實(shí)現(xiàn)的數(shù)據(jù)存儲組件有效地包括事務(wù)層和數(shù)據(jù)層兩者,而SQL執(zhí)行提供額外的事務(wù)功能(由SQL提供),否則該功能是數(shù)據(jù)存儲組件的事務(wù)能力所沒有的。
[0016]其他解決方案(此處被稱為“記錄管理系統(tǒng)”)為每一個自定義數(shù)據(jù)庫系統(tǒng)使用事務(wù)記錄管理器,其中,事務(wù)被寫入到共享的全局日志中,以允許每一個定制數(shù)據(jù)庫系統(tǒng)重播每一個事務(wù)(即,其他定制數(shù)據(jù)庫系統(tǒng)上的事務(wù)),以便構(gòu)建其自己的數(shù)據(jù)庫狀態(tài)的副本。然而,這些記錄管理系統(tǒng)沒有被實(shí)現(xiàn)為用于關(guān)系數(shù)據(jù)庫,而是僅限于事務(wù)性鍵值系統(tǒng)。相比之下,此處所公開的各種實(shí)現(xiàn)是為關(guān)系數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)的,雖然數(shù)個這樣的實(shí)現(xiàn)確實(shí)包括事務(wù)性鍵值系統(tǒng)作為其組件,但是,存儲系統(tǒng)本身是關(guān)系數(shù)據(jù)庫。
[0017]在任何情況下,在傳統(tǒng)的SQL數(shù)據(jù)庫系統(tǒng)中處理查詢是在數(shù)據(jù)庫服務(wù)器中與存儲和管理數(shù)據(jù)一起進(jìn)行。然而,除數(shù)據(jù)庫服務(wù)器昂貴之外,向共享磁盤的數(shù)據(jù)庫系統(tǒng)添加更多數(shù)據(jù)庫服務(wù)器會顯著地增大允許數(shù)量增多的數(shù)據(jù)庫服務(wù)器訪問共享的數(shù)據(jù)所需的協(xié)調(diào)開銷。同樣,在無共享數(shù)據(jù)庫系統(tǒng)中,添加更多服務(wù)器要使用昂貴的并且資源密集的操作來在數(shù)量增多的可用的服務(wù)器之間在較細(xì)粒度對數(shù)據(jù)進(jìn)行重新分割。類似地,對于傳統(tǒng)的SQL數(shù)據(jù)庫系統(tǒng)中的并發(fā)控制機(jī)制,事務(wù)協(xié)調(diào)器還位于服務(wù)器上,但是,由于上文給出的同樣的理由,服務(wù)器難以擴(kuò)展。
[0018]此處所公開的各種實(shí)現(xiàn)的增強(qiáng)的可縮放性(與現(xiàn)有的數(shù)據(jù)庫系統(tǒng)相比)源于允許查詢處理和并發(fā)控制相對于存儲服務(wù)器獨(dú)立地縮放。例如,查詢處理和并發(fā)控制可以在客戶端執(zhí)行。以此方式,處理更多SQL查詢的能力與客戶端的數(shù)量成正比。結(jié)果,增大客戶端的數(shù)量會提供額外的硬件來處理SQL查詢。此增加的硬件還提供用于可縮放的并發(fā)地控制的增大的處理能力。由于在事務(wù)性鍵值系統(tǒng)上運(yùn)行的并發(fā)控制機(jī)制構(gòu)成簡單服務(wù)一一僅僅存儲鍵值對一一當(dāng)客戶端充當(dāng)它們自己的事務(wù)的協(xié)調(diào)器時,如由此處所公開的各種實(shí)現(xiàn)所特有的,它們可以被高效地擴(kuò)展。
[0019]相應(yīng)地,此處所公開的各種實(shí)現(xiàn)涉及數(shù)據(jù)庫系統(tǒng),該數(shù)據(jù)庫系統(tǒng)支持SQL,但是具有相當(dāng)于現(xiàn)有的NoSQL系統(tǒng)的、并且在沒有昂貴的專業(yè)化的硬件和大量的手動系統(tǒng)管理的情況下不能由傳統(tǒng)的SQL數(shù)據(jù)庫實(shí)現(xiàn)的性能和可縮放性。這些各種實(shí)現(xiàn)高效地將SQL查詢映射到存儲在鍵值系統(tǒng)上的鍵值對象上的操作,其中大多數(shù)簡單SQL查詢被映射到相對較小數(shù)量的操作。更具體而言,SQL查詢處理系統(tǒng)包括:用于存儲多個鍵值對象的鍵值服務(wù)器,通信地耦合到所述鍵值服務(wù)器的至少一個客戶端,用于處理對所述鍵值對象的操作的鍵值庫,以及,用于從應(yīng)用接收SQL查詢并將所述SQL查詢轉(zhuǎn)換為對于要處理的所述鍵值庫的操作的SQL庫。
[0020]當(dāng)然,盡管此處所公開的各種實(shí)現(xiàn)可以包括位于客戶端中的鍵值庫和SQL庫,但是也預(yù)料了各種替代的實(shí)現(xiàn)。例如,各種替代的實(shí)現(xiàn)可以包括SQL庫和維護(hù)在與客戶端分開的第二機(jī)器(并可能與鍵值服務(wù)器分開)中的鍵值庫,在這樣的情況下,客戶端生成SQL查詢,并將它發(fā)送到第二機(jī)器上的SQL庫。其他替代實(shí)現(xiàn)可以包括在客戶端機(jī)器處的SQL庫和在第二機(jī)器處的鍵值庫,其中,客戶端可以生成SQL查詢并在本地處理它(因為SQL庫位于同一個機(jī)器上)。然后,客戶端生成鍵值操作,該鍵值操作被發(fā)送到鍵值庫所在的第二機(jī)器,隨后,第二機(jī)器處的鍵值庫將鍵值操作發(fā)送到鍵值服務(wù)器。在又一些其他替代實(shí)現(xiàn)中,SQL庫可以位于第二機(jī)器處,而鍵值庫位于第三機(jī)器處。在此設(shè)置中,客戶端在客戶端(第一機(jī)器)處生成SQL查詢,并將它發(fā)送到第二機(jī)器處的SQL庫,該第二機(jī)器又生成鍵值操作,隨后,該鍵值操作被發(fā)送到第三機(jī)器處的鍵值庫,隨后,該第三機(jī)器將鍵值操作發(fā)送到鍵值服務(wù)器。其他這類替代的實(shí)現(xiàn)也是可以的。相應(yīng)地,對此處的各種實(shí)現(xiàn)的描述可以假設(shè),SQL庫和鍵值庫位于客戶端處,但是,這不是限制性的,因為其他替代方案也是可以預(yù)期的。
當(dāng)前第1頁
1 
2 
3 
4