專利名稱:范圍化數(shù)據(jù)庫連接的制作方法
技術(shù)領(lǐng)域:
本申請涉及范圍化數(shù)據(jù)庫連接。
背景技術(shù):
1.背景和相關(guān)技術(shù)計算機(jī)系統(tǒng)和相關(guān)技術(shù)影響社會的許多方面。的確,計算機(jī)系統(tǒng)處理信息的能力已轉(zhuǎn)變了人們生活和工作的方式。計算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計算機(jī)系統(tǒng)出現(xiàn)以前手動執(zhí)行的許多任務(wù)(例如,文字處理、日程安排和會計等)。最近,計算機(jī)系統(tǒng)彼此耦合并耦合到其他電子設(shè)備以形成計算機(jī)系統(tǒng)和其他電子設(shè)備可以在其上傳輸電子數(shù)據(jù)的有線和無線計算機(jī)網(wǎng)絡(luò)。因此,許多計算任務(wù)的執(zhí)行跨多個不同的計算機(jī)系統(tǒng)和/或多個不同的計算環(huán)境分布。在一些計算環(huán)境中,使用數(shù)據(jù)庫來管理一個或多個數(shù)據(jù)庫承租人(例如用戶、組織等)的數(shù)據(jù)集。當(dāng)管理多個承租人的數(shù)據(jù)時,可以使用隔離邊界來將不同數(shù)據(jù)庫承租人的數(shù)據(jù)分隔開來并提升安全性。隔離邊界通常是通過對每個承租人使用單獨數(shù)據(jù)庫來形成的。例如,通過將來自一個用戶的數(shù)據(jù)存儲在單獨的數(shù)據(jù)庫中,可以將該用戶的數(shù)據(jù)與來自所有其他用戶的數(shù)據(jù)分隔開來。然而,一些應(yīng)用管理非常大量的承租人。例如,社交網(wǎng)絡(luò)站點可以具有數(shù)億用戶。 為每個承租人(用戶)維護(hù)單獨的數(shù)據(jù)會變得很麻煩并且資源密集的。在一些環(huán)境中,通過碎片化(sharding)來形成隔離邊界。碎片化是一種通過將不同的行分離到不同的表格中來拆分(分區(qū))一個或多個表格的水平分區(qū)形式。水平分區(qū)減少了每個表格中的行的總數(shù),減少了跨單個方案的實例(或同一邏輯服務(wù)器)的索引大小。 通過跨多個服務(wù)器(邏輯的或物理的)拆分(分區(qū))一個或多個表格來進(jìn)一步碎片化。這樣,碎片化能夠?qū)⑤^大的數(shù)據(jù)庫在多個機(jī)器上分布,改進(jìn)了性能。然而,碎片化難以實現(xiàn),并且通常需要手動編碼和在應(yīng)用層和數(shù)據(jù)庫之間的復(fù)雜的協(xié)調(diào)。無論使用了什么隔離方案,在數(shù)據(jù)庫是在線或離線時,數(shù)據(jù)隔離可以改變在數(shù)據(jù)庫或數(shù)據(jù)庫分區(qū)中數(shù)據(jù)的排列。這樣,即使底層數(shù)據(jù)保持相同,但數(shù)據(jù)集在數(shù)據(jù)庫環(huán)境中的位置會改變。因此,即使數(shù)據(jù)沒有被改變,但給定的數(shù)據(jù)庫查詢在不同的時間基于當(dāng)前的數(shù)據(jù)排列會返回不同的結(jié)果。
發(fā)明內(nèi)容
本發(fā)明擴(kuò)展到用于范圍化在聯(lián)合的數(shù)據(jù)庫中的數(shù)據(jù)庫連接的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品。在一些實施例中,計算機(jī)系統(tǒng)接收在分布數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問操作時使用的上下文。所述上下文標(biāo)識了分布數(shù)據(jù)庫系統(tǒng)中的指定相關(guān)的聯(lián)合部分。計算機(jī)系統(tǒng)還接收與所述上下文相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作。計算機(jī)系統(tǒng)根據(jù)所關(guān)聯(lián)的上下文對數(shù)據(jù)庫訪問操作的語義進(jìn)行修改以將該數(shù)據(jù)庫訪問操作的應(yīng)用指引到指定相關(guān)的聯(lián)合部分。提供本概述以便以簡化的形式介紹將在以下的詳細(xì)描述中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。本發(fā)明的附加特征和優(yōu)點將在以下描述中敘述,且其一部分根據(jù)本說明書將是顯而易見的,或可通過對本發(fā)明的實踐來獲知。本發(fā)明的特征和優(yōu)點可通過在所附權(quán)利要求書中特別指出的工具和組合來實現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附權(quán)利要求書變得更加顯而易見,或可通過對下文中所述的本發(fā)明的實踐來領(lǐng)會。
為了描述可獲得本發(fā)明的上述和其它優(yōu)點和特征的方式,將通過參考附圖中示出的本發(fā)明的具體實施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述??梢岳斫?,這些附圖僅描述本發(fā)明的典型實施例,從而不被認(rèn)為是對其范圍的限制,本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和說明,在附圖中圖IA示出了便于范圍化數(shù)據(jù)庫連接的示例計算機(jī)體系結(jié)構(gòu)。圖IB示出了便于范圍化數(shù)據(jù)庫連接的示例計算機(jī)體系結(jié)構(gòu)。圖2示出了用于范圍化被用于訪問數(shù)據(jù)庫分區(qū)的上下文的示例方法的流程圖。
具體實施例方式本發(fā)明擴(kuò)展到用于范圍化在聯(lián)合的數(shù)據(jù)庫中的數(shù)據(jù)庫連接的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品。在一些實施例中,計算機(jī)系統(tǒng)接收在分布數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問操作時使用的上下文。所述上下文標(biāo)識了分布數(shù)據(jù)庫系統(tǒng)中的指定相關(guān)的聯(lián)合部分。計算機(jī)系統(tǒng)還接收與所述上下文相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作。計算機(jī)系統(tǒng)根據(jù)所關(guān)聯(lián)的上下文對數(shù)據(jù)庫訪問操作的語義進(jìn)行修改以將該數(shù)據(jù)庫訪問操作的應(yīng)用指引到指定相關(guān)的聯(lián)合部分。本發(fā)明的各實施例可包括或利用專用或通用計算機(jī),該專用或通用計算機(jī)包括諸如例如一個或多個處理器和系統(tǒng)存儲器等計算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實施例還包括用于攜帶或存儲計算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理介質(zhì)和其他計算機(jī)可讀介質(zhì)。這些計算機(jī)可讀介質(zhì)可以是通用或?qū)S糜嬎銠C(jī)系統(tǒng)能夠訪問的任何可用介質(zhì)。存儲計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)是計算機(jī)存儲介質(zhì)(設(shè)備)。攜帶計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實施例可包括至少兩種完全不同類型的計算機(jī)可讀介質(zhì)計算機(jī)存儲介質(zhì)(設(shè)備)和傳輸介質(zhì)。計算機(jī)存儲介質(zhì)(設(shè)備)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或可用于存儲計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置的且可由通用或?qū)S糜嬎銠C(jī)訪問的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個或多個數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機(jī)時,該計算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜嬎銠C(jī)訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計算機(jī)系統(tǒng)組件之后,計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動傳輸?shù)接嬎銠C(jī)存儲介質(zhì)(設(shè)備)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈接接收到的計算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如, “NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接嬎銠C(jī)系統(tǒng)RAM和/或計算機(jī)系統(tǒng)處的較不易失性的計算機(jī)存儲介質(zhì)(設(shè)備)。因而,應(yīng)當(dāng)理解,計算機(jī)存儲介質(zhì)(設(shè)備)可被包括在還利用 (甚至主要利用)傳輸介質(zhì)的計算機(jī)系統(tǒng)組件中。計算機(jī)可執(zhí)行指令例如包括,當(dāng)在處理器處執(zhí)行時使通用計算機(jī)、專用計算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動作。相反,上述特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中實踐,這些計算機(jī)系統(tǒng)配置包括個人計算機(jī)、臺式計算機(jī)、膝上型計算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機(jī)、大型計算機(jī)、移動電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實施。在分布式系統(tǒng)環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。通常,范圍化的連接被用于將它們查詢上的操作自動向下過濾到指定的數(shù)據(jù)庫承租人,而不需要應(yīng)用必須完成過濾所述操作的額外工作。這種類型的連接使得在單個聯(lián)合成員(物理數(shù)據(jù)庫)中安置多個承租人變得容易,同時確保了當(dāng)聯(lián)合成員內(nèi)的數(shù)據(jù)排列改變時的操作的一致性。本發(fā)明的實施例包括數(shù)據(jù)庫聯(lián)合的使用,該聯(lián)合尤其可用于數(shù)據(jù)隔離。數(shù)據(jù)庫聯(lián)合是一種一個或多個聯(lián)合成員的集合,每個聯(lián)合成員表示可以被分開存儲的數(shù)據(jù)庫分區(qū)。 根據(jù)聯(lián)合方案定義聯(lián)合成員,并且聯(lián)合成員包括一個或多個聯(lián)合的(或分布的)數(shù)據(jù)表格, 這些數(shù)據(jù)表格在公共聯(lián)合鍵(例如諸如federatiorukey (聯(lián)合_鍵)、tenant_id(承租人 id)等的列)上被聯(lián)合。這樣,每個聯(lián)合成員可以包括一個或多個具有在所定義的分布中的聯(lián)合鍵的值的聯(lián)合數(shù)據(jù)表格的一組行。數(shù)據(jù)庫聯(lián)合因此可以包括一個或多個聯(lián)合成員,每個聯(lián)合成員基于聯(lián)合鍵的值的對應(yīng)范圍而包括一個或多個聯(lián)合的表格的一部分。所述聯(lián)合方案定義下述一個或多個項每個聯(lián)合成員的聯(lián)合鍵、它們的數(shù)據(jù)類型以及分布數(shù)據(jù)(例如范圍、散列、循環(huán))。每個聯(lián)合可以具有其自身的聯(lián)合方案。聯(lián)合成員在應(yīng)用模型中可以是可見的,并且通過它們的聯(lián)合鍵分布以及在一些實施例中通過成員名字來標(biāo)識。每個聯(lián)合成員可以包括一個或多個聯(lián)合單元。聯(lián)合單元是具有公共的聯(lián)合鍵的值的一個或多個聯(lián)合數(shù)據(jù)表格的行的集合。在一些實施例中,聯(lián)合單元可以對應(yīng)于單獨數(shù)據(jù)庫承租人,并且聯(lián)合鍵可以用于使用承租人標(biāo)識符(例如tenanted = 55(承租人id = 55))來標(biāo)識承租人。這樣,聯(lián)合單元可以是依靠具有在聯(lián)合成員的聯(lián)合鍵范圍或分布中的聯(lián)合鍵的值的聯(lián)合成員的一部分。聯(lián)合單元通常是原子的,因此,它是不可分的??梢栽谌我鈹?shù)據(jù)庫中創(chuàng)建聯(lián)合。在一個數(shù)據(jù)庫中可以存在許多聯(lián)合,每個聯(lián)合表示一個分開的表格集合,例如“所有的消費者數(shù)據(jù)”或“所有訂單數(shù)據(jù)”,并且,每個聯(lián)合成員
6可以含有完整的數(shù)據(jù)集的子集。然而,對于單個聯(lián)合成員來說,也可能含有整個表格集合。除了包含來自分區(qū)的或聯(lián)合的表格的行之外,聯(lián)合成員還可以包含其行是完整包含在所述成員內(nèi)的常規(guī)(非聯(lián)合的)表格。非聯(lián)合的表格可以包含結(jié)合分區(qū)數(shù)據(jù)來檢索的參考數(shù)據(jù)(例如產(chǎn)品信息(參考數(shù)據(jù))和產(chǎn)品銷售(由銷售日期聯(lián)合的))。聯(lián)合成員可以是彼此物理分開的(例如在不同的機(jī)器上運行、保存在分開的存儲中)。這樣,在一個聯(lián)合成員處的數(shù)據(jù)也可以是與在其他聯(lián)合成員處的數(shù)據(jù)物理分開的。用于在一個聯(lián)合成員中的聯(lián)合的和非聯(lián)合的表格的方案可以與其他聯(lián)合成員中的表格的方案不相同。方案的分歧可以是臨時的,例如將新的方案版本跨聯(lián)合中的成員子集安置鋪開 (roll-out),并直到聯(lián)合成員最終聚合在同一方案上。聯(lián)合可以包括根數(shù)據(jù)庫,它表示了聯(lián)合的應(yīng)用邊界。根數(shù)據(jù)庫對于連接到聯(lián)合的應(yīng)用是“著陸墊(landing pad) ”或是邏輯端點。根數(shù)據(jù)庫可以包含一個或多個命名的聯(lián)合,每個聯(lián)合具有其自身的定義聯(lián)合鍵的聯(lián)合方案。根數(shù)據(jù)庫還可以包含全局?jǐn)?shù)據(jù),包括 應(yīng)用定義(配置)數(shù)據(jù)、用戶和密碼以及角色。根數(shù)據(jù)庫還可以包含聯(lián)合成員的版本信息或提供分布查詢處理能力。聯(lián)合還可以定義用于數(shù)據(jù)分布的分布策略以及數(shù)據(jù)類型。通過聯(lián)合概念以及用于在物理數(shù)據(jù)庫之間在線復(fù)制數(shù)據(jù)的第一類服務(wù)器側(cè)的聲明的引入,可以更加容易地開發(fā)新類型的云、web和多承租人的解決方案。通過范圍化連接,應(yīng)用可以使用單個連接而連接到聯(lián)合成員,并只能看到包含該值的聯(lián)合表格的部分。根據(jù)上述內(nèi)容,圖IA和IB示出了便于范圍化數(shù)據(jù)庫連接的示例計算機(jī)體系100。 參考圖1A,計算機(jī)體系100包括數(shù)據(jù)訪問模塊101和數(shù)據(jù)庫聯(lián)合102。所描繪的組件中的每一個都通過諸如例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)或甚至因特網(wǎng)之類的網(wǎng)絡(luò)彼此連接(或者是網(wǎng)絡(luò)的一部分)。因此,所描繪的組件中的每一個以及任何其他連接的計算機(jī)系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)交換與消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議 (“IP”)數(shù)據(jù)報和利用IP數(shù)據(jù)報的其他更高層協(xié)議,諸如傳輸控制協(xié)議(“TCP”)、超文本傳輸協(xié)議(“HTTP”)、簡單郵件傳輸協(xié)議(“SMTP”)等)。如所述,數(shù)據(jù)庫聯(lián)合102包括基于對應(yīng)于原始數(shù)據(jù)表格的一列的聯(lián)合鍵105而在聯(lián)合表格104A、104B和104C上分布原始數(shù)據(jù)表格(未示出)的行的分區(qū)(即聯(lián)合成員)103A、10;3B和103C。原始數(shù)據(jù)表格的行基于所述列的值以及分配給每個分區(qū)的鍵值 (106A、106B和106C)的部分在聯(lián)合表格(104A、104B禾口 104C)上分布。例如,分區(qū)103A包括聯(lián)合表格104A,它存儲了具有在鍵值106A的部分中的聯(lián)合鍵105的值的原始數(shù)據(jù)表格的行。類似地,分區(qū)10 和103C包括聯(lián)合表格104B和104C,聯(lián)合表格104B和104C各自存儲了分別具有在鍵值106B和106C的部分中的聯(lián)合鍵105的值的原始數(shù)據(jù)表格的行。鍵值106A、106B和106C的每個部分可以定義使用合適的數(shù)據(jù)分布技術(shù)的聯(lián)合鍵值的子集。例如,鍵值的每個部分可以定義聯(lián)合鍵值的連續(xù)范圍(例如具有聯(lián)合鍵105的值 1-10的行屬于分區(qū)103A、具有聯(lián)合鍵105的值11-20的行屬于分區(qū)10!3Β等)。然而,用于分配鍵值子集的職責(zé)和鍵值子集中的鍵值的其他機(jī)制不需要是連續(xù)的(例如散列、循環(huán))。分區(qū)可以可選地包括被完全包含在對應(yīng)分區(qū)之內(nèi)的一個或多個非聯(lián)合數(shù)據(jù)表格 (例如非聯(lián)合表格107Α、107Β和107C)。非聯(lián)合表格可以存儲參考數(shù)據(jù)或其他類型的非聯(lián)合數(shù)據(jù),它們可以結(jié)合聯(lián)合數(shù)據(jù)來訪問。
雖然圖IA僅說明了一個數(shù)據(jù)庫聯(lián)合102,但數(shù)據(jù)庫可以包括任意數(shù)目的數(shù)據(jù)庫聯(lián)合。而且,雖然數(shù)據(jù)庫聯(lián)合102被示出為僅具有一個聯(lián)合鍵105,但數(shù)據(jù)庫聯(lián)合可以包括任意數(shù)目的聯(lián)合鍵和對應(yīng)分區(qū)。而且,雖然結(jié)合聯(lián)合鍵105示出了三個分區(qū),但人們可以理解借助于在此的揭示,所述數(shù)據(jù)庫聯(lián)合可以包括任意數(shù)目的分區(qū),包括單個分區(qū)。最后,雖然每個分區(qū)被示為僅存儲單個聯(lián)合表格,每個表示單個原始數(shù)據(jù)表格的一部分,但每個分區(qū)可以存儲對應(yīng)于多個原始數(shù)據(jù)表格的多個聯(lián)合表格。在這種情況下,所述多個數(shù)據(jù)表格的每個通過包括對應(yīng)于聯(lián)合鍵105的公共列被相關(guān)聯(lián)。分區(qū)103A、10;3B和103C的每個可以被存儲在分開的存儲位置上(例如分開的物理機(jī)器、分開的數(shù)據(jù)存儲等)。這樣,使用數(shù)據(jù)庫聯(lián)合102,數(shù)據(jù)庫操作者可以將原始數(shù)據(jù)表格分布并分區(qū)到多個分開的位置,因此,便利了數(shù)據(jù)隔離。雖然分區(qū)可以是分開存儲的,但通過數(shù)據(jù)聯(lián)合102,分區(qū)被作為單個單元呈現(xiàn)給客戶端應(yīng)用。數(shù)據(jù)庫聯(lián)合102可以通過一系列命令來形成。例如,分區(qū)模塊(未示出)可以發(fā)出創(chuàng)建命令以創(chuàng)建具有聯(lián)合名字109的數(shù)據(jù)庫聯(lián)合102。在創(chuàng)建數(shù)據(jù)庫聯(lián)合102后,可以創(chuàng)建覆蓋給定聯(lián)合鍵的所有值的單個分區(qū)。這樣,單個分區(qū)將包括原始數(shù)據(jù)表格的所有行。 接著,通過其他數(shù)據(jù)庫聯(lián)合操作(例如拆分操作和/或合并操作),單個分區(qū)被分成分區(qū) 103AU03B和103C,并且原始數(shù)據(jù)表格可以被“聯(lián)合”到聯(lián)合數(shù)據(jù)表格104A、104B和104C。 隨后,可以從數(shù)據(jù)庫聯(lián)合102中移除原始分區(qū)。數(shù)據(jù)訪問模塊101被配置為提供對存儲在分區(qū)中的數(shù)據(jù)的訪問。特別地,數(shù)據(jù)訪問模塊101被配置為提供到包含所請求的數(shù)據(jù)的特定分區(qū)的范圍化連接。范圍化連接確保了后續(xù)的拆分和合并操作將不會影響數(shù)據(jù)庫命令的結(jié)果,因為在范圍化連接上執(zhí)行的命令在數(shù)據(jù)的相同行上操作,而不考慮它們在數(shù)據(jù)庫聯(lián)合102中的排列。數(shù)據(jù)庫訪問模塊101被配置為最初接收包括所請求的數(shù)據(jù)庫聯(lián)合102的聯(lián)合名字 109、范圍110和過濾選項111的范圍化連接請求108。范圍110可以是在聯(lián)合表格104A、 104B和104C之一的范圍中的聯(lián)合鍵值。在標(biāo)識合適的聯(lián)合表格后,數(shù)據(jù)訪問模型101可以被配置為建立到對應(yīng)的分區(qū)的范圍化的連接。例如,范圍110可以是聯(lián)合表格104A的聯(lián)合鍵值106A的所述部分中的值。這樣,可以在數(shù)據(jù)訪問模塊101和分區(qū)103A之間建立范圍化連接112。數(shù)據(jù)訪問模塊101還可以被配置為對通過范圍化連接112連接到分區(qū)103A的數(shù)據(jù)庫命令進(jìn)行修改,并與范圍110中的數(shù)據(jù)(例如包含在聯(lián)合表格104A中的指定的聯(lián)合鍵值的數(shù)據(jù))進(jìn)行交互。例如,數(shù)據(jù)訪問模塊101可以被配置為將數(shù)據(jù)庫命令113轉(zhuǎn)換成數(shù)據(jù)庫命令114,以便經(jīng)修改的數(shù)據(jù)庫命令114通過連接112被引向分區(qū)103A。隨后,依據(jù)過濾選項111的值,經(jīng)修改的數(shù)據(jù)庫命令114通常與聯(lián)合表格104A中的行進(jìn)行交互,或僅與匹配范圍114的行中的行交互。在一些實施例中,數(shù)據(jù)庫命令113、114可以包括結(jié)構(gòu)化查詢語言(SQL)命令。 可以以許多方式來建立到聯(lián)合成員的連接。在一些實施例中,范圍化連接請求可以為下述格式USE FEDERATION federation_name(federation_key_value)WITH FILTERING = {ON | OFF},RESET[;]
wherein federation_name是所述連接的目標(biāo)聯(lián)合的名字。federation_key_value定義了所述連接的范圍,并且包括連接到分區(qū)的聯(lián)合鍵值。服務(wù)該聯(lián)合鍵值的分區(qū)變成所述連接要建立到的分區(qū)。所述值通常與由federatioru name所指定的數(shù)據(jù)庫聯(lián)合所使用的聯(lián)合鍵值的類型相符合,并且不應(yīng)該為空(NULL)。WITH FILTERING = {0N|0FF}定義了所定義的范圍的行為。當(dāng)定義時,WITH RESET使得連接重置清楚。具有FILTERING = ON 的 “USE FEDERATION federation_name (federation_key_ value) ”的聲明便利于與對應(yīng)分區(qū)建立范圍化連接112,所述范圍化連接112將數(shù)據(jù)庫命令限制到分區(qū)中的特定的聯(lián)合單元(即具有與聯(lián)合鍵相同的值),而不是存儲在分區(qū)中的行的全部范圍。就是說,在范圍化連接112期間,諸如SQL之類的數(shù)據(jù)操作語言(DML)僅范圍化到包含指定的聯(lián)合鍵值的對應(yīng)的聯(lián)合表格中的行。這可以通過數(shù)據(jù)訪問模型101將聯(lián)合鍵列上的預(yù)測值(例如“PartitionKey = @value”(分區(qū)鍵=@值))加入到指向聯(lián)合表格的每個查詢中來實現(xiàn)。在“UPDATE”(更新)和“INSERT”(插入)命令的情況下,在范圍之外的操作可以生成異常。對于“SELECT”(選擇)以及“刪除”命令,具有聯(lián)合鍵值之外的范圍的操作不返回值或沒有效果。具有FILTERING = OFF 的 “USE FEDERATION federation_name (federation_key_ value),,的聲明便利了連接到由包含指定聯(lián)合鍵值的分區(qū)所存儲的行的所有范圍。為定義數(shù)據(jù)結(jié)構(gòu)和要求最大可能的范圍(例如選擇聯(lián)合中的所有數(shù)據(jù)的扇出(fan-out)查詢)的查詢的數(shù)據(jù)定義語言(DDL)命令典型地保留這種連接類型。對分區(qū)的過濾可以通過數(shù)據(jù)訪問模型 101 將預(yù)測值(例如“range_low[< | <= JPartitionKey[ < | < = range_high”) 加入到指向聯(lián)合表格的每個查詢中來實現(xiàn)。可選地,可以建立到直接使用分區(qū)名字來取代聯(lián)合鍵值的分區(qū)的連接。現(xiàn)在,返回到圖1B,示例性的聯(lián)合表格104A可以包括行115A-115E。如所示,聯(lián)合表格104A可以包括對應(yīng)于聯(lián)合鍵105 (例如federation_key,tenant_id等)的列。每個行115A可以包括在分區(qū)的鍵值106A的部分中的對應(yīng)的聯(lián)合鍵值116A-116D。在一些實施例中,聯(lián)合鍵值116A-116D在鍵值106A的部分中每個可以為唯一的值,而在其他實施例中, 至少一部分鍵值可以是相同的。例如,行115D和115E被示為共享同一聯(lián)合鍵值116D。在一些實施例中,例如,這可以指示行115D和115E中的數(shù)據(jù)對應(yīng)于公共數(shù)據(jù)庫承租人。當(dāng)使用FILTERING = ON連接到分區(qū)103A時,連接的范圍可以被限制到僅為對應(yīng)于指定的鍵值的那些行。例如,范圍117A示出使用鍵值116D和FILTERING = ON所建立的連接112的范圍僅包括行115D和115E。這樣,經(jīng)修改的數(shù)據(jù)庫命令114可以僅作用在行 115D和115E上。當(dāng)指定鍵值對于一個行是唯一的時,連接的范圍可以包括少至一行,或者當(dāng)指定的鍵值由多個行共享時可以包括多個行(多至包括聯(lián)合表格中的所有行)。相對地,當(dāng)連接到使用FILTERING = OFF的分區(qū)103A時,連接的范圍可以是在分區(qū)中的所有行的范圍,如由范圍117B所指示的。這樣,不用考慮在連接請求108的范圍110 中所指定的聯(lián)合鍵值116A-116D,連接112被范圍化到整個聯(lián)合數(shù)據(jù)表格104A,并且,經(jīng)修改的數(shù)據(jù)庫命令114可以在表格的所有行(例如行115A-115E)上起作用。圖2示出了用于范圍化被用于訪問數(shù)據(jù)庫分區(qū)的上下文的示例方法200的流程圖。方法200將參考計算機(jī)體系結(jié)構(gòu)100的組件和數(shù)據(jù)來描述。方法200包括接收當(dāng)在分布式數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問時要使用的上下文的動作,所述上下文標(biāo)識了指定相關(guān)的聯(lián)合部分(動作201)。例如,數(shù)據(jù)訪問模塊101可以接收范圍化的連接請求108。范圍化連接請求108可以包括標(biāo)識要連接到的分區(qū)(例如分區(qū)103A、10;3B或103C之一)的范圍110。范圍化連接請求108還可以包括所請求的數(shù)據(jù)庫聯(lián)合(例如數(shù)據(jù)庫聯(lián)合10 和/或過濾選項111的聯(lián)合名字109。范圍110可以包括在對應(yīng)于聯(lián)合鍵105的聯(lián)合表格(例如聯(lián)合表格104A、104B或104C之一)中的聯(lián)合鍵列的值?;谂c每個分區(qū)相關(guān)聯(lián)的所述值和鍵值的一部分(例如鍵值106A、106B、和106C的一部分),數(shù)據(jù)訪問模型101可以確定要連接到哪個分區(qū)。例如,數(shù)據(jù)訪問模型101可以確定范圍110標(biāo)識了對應(yīng)于分區(qū)103A的鍵值106A的部分中的一個鍵值,并且建立與分區(qū)103A 的范圍化連接112。方法200進(jìn)一步包括接收與上下文相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作的動作(動作202)。 例如,在接收范圍化連接請求108并建立了范圍化連接112之后,數(shù)據(jù)訪問模塊101可以接收與連接請求108相關(guān)聯(lián)的數(shù)據(jù)庫命令113。數(shù)據(jù)庫命令113可以包括任何合適的數(shù)據(jù)訪問操作,包括例如UPDATE (更新)、INSERT (插入)、SELECT (選擇)、DELETE (刪除)的DML 命令和/或DDL命令。方法200還包括根據(jù)所關(guān)聯(lián)的上下文對數(shù)據(jù)庫訪問操作的語義進(jìn)行修改以將該數(shù)據(jù)庫訪問操作的應(yīng)用指引到指定相關(guān)的聯(lián)合部分的動作(動作203)。例如,數(shù)據(jù)訪問模型101可以修改數(shù)據(jù)庫命令113以創(chuàng)建在范圍化的連接112中執(zhí)行的數(shù)據(jù)庫命令114。修改的性質(zhì)可以至少部分地依賴于在范圍化連接請求中所包括的過濾選項111。當(dāng)過濾選項111為On (例如FILTERING = ON)時,經(jīng)修改的數(shù)據(jù)庫命令114可以僅在由范圍110所標(biāo)識的連接的分區(qū)的數(shù)據(jù)表格中的行上執(zhí)行。在說明的情況中,例如,如果范圍110定義鍵值116D,經(jīng)修改的數(shù)據(jù)庫命令114可以僅在(如由范圍117A所指示的)分區(qū)103中的聯(lián)合表格104A的行115D和115E上執(zhí)行或訪問這些行。類似地,如果范圍110 定義了不同的鍵值(例如116A),那么,經(jīng)修改的數(shù)據(jù)庫命令114將僅在聯(lián)合表格104A的對應(yīng)的不同的行(例如115A)上執(zhí)行或訪問該行。可以通過加入預(yù)測值,例如“fecLcolumn =value,,、“PartitionKey = Ovalue,,等來完成范圍化。當(dāng)過濾選項111為Off (例如FILTERING = OFF)時,經(jīng)修改的數(shù)據(jù)庫命令114可以在由范圍Iio所標(biāo)識的連接的分區(qū)的聯(lián)合表格中的任意行上執(zhí)行。例如,如由范圍117B 所示,只要范圍110標(biāo)識了鍵116A-116D之一,經(jīng)修改的數(shù)據(jù)庫命令114將在聯(lián)合表格104A 的任意行上執(zhí)行,而不用考慮范圍110的特定值。如先前所示,聯(lián)合可以包括根數(shù)據(jù)庫,該根數(shù)據(jù)庫表示了聯(lián)合的應(yīng)用邊界并且尤其包含一個或多個命名的聯(lián)合。在一些實施例中,USE FEDERATION(使用聯(lián)合)的聲明可以被用于使用下述格式連接到根數(shù)據(jù)庫USE FEDERATION ROOTWITH RESET這指明了在聯(lián)合根處的現(xiàn)有連接。當(dāng)在分區(qū)中運行時,連接被重置回聯(lián)合根數(shù)據(jù)庫。當(dāng)在任意其他數(shù)據(jù)庫中運行時,這將導(dǎo)致“空操作(noop)”。通過允許到包含了聯(lián)合對象的該數(shù)據(jù)庫的第一連接的應(yīng)用,所述USE FEDERATION聲明還可以為連接性庫提供有效連接池行為,并且通過USE FEDERATION聲明,切換到特定分區(qū)。這有助于確保客戶端連接池保持與如果它必須定址個別分區(qū)(聯(lián)合成員)或聯(lián)合單元值時所要保持的池相比更小的池。USE FEDERATION可以典型地在連接的生命周期中的任意點處的連接上執(zhí)行。USE FEDERATION可以將連接從當(dāng)前分區(qū)或根數(shù)據(jù)庫再接到聯(lián)合根或包含在分區(qū)中的指定鍵值。 當(dāng)通過USE FEDERATION再次接通連接時,可以重新建立連接。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實施例在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.在包括一個或多個處理器和系統(tǒng)存儲器的分布式數(shù)據(jù)庫系統(tǒng)處,所述分布式數(shù)據(jù)庫還包括在聯(lián)合(102)中的多個數(shù)據(jù)庫分區(qū)(103A、103B、103C),所述聯(lián)合(10 配置為存儲多個數(shù)據(jù)行(115A-115E),每個數(shù)據(jù)行由聯(lián)合鍵值(116A-116E)標(biāo)識,使得所述聯(lián)合存儲了聯(lián)合鍵值集的數(shù)據(jù),所述多個數(shù)據(jù)庫分區(qū)(103A、10;3B、103C)中的每一個被配置為物理地存儲具有在集中的聯(lián)合鍵值的指定部分中的一個聯(lián)合鍵值的數(shù)據(jù)的任意行,一種用于對用于訪問數(shù)據(jù)庫分區(qū)的上下文進(jìn)行范圍化的方法,所述方法包括接收當(dāng)在所述分布式數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問操作時要使用的上下文(108)的動作,所述上下文標(biāo)識了所指定的相關(guān)的聯(lián)合部分;接收與所述上下文(108)相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作(11 的動作;以及根據(jù)所關(guān)聯(lián)的上下文(108)對所述數(shù)據(jù)庫訪問操作(11 的語義進(jìn)行修改以將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到所述所指定的相關(guān)的聯(lián)合部分的動作。
2.如權(quán)利要求1所述的方法,其特征在于,所述接收當(dāng)執(zhí)行數(shù)據(jù)庫訪問操作時要使用的上下文的動作包括接收標(biāo)識所述聯(lián)合中的相關(guān)數(shù)據(jù)庫分區(qū)的上下文的動作。
3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)上下文對所述數(shù)據(jù)庫訪問操作的語義進(jìn)行修改的動作包括修改所述數(shù)據(jù)庫訪問操作的語義以將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到所述相關(guān)的數(shù)據(jù)庫分區(qū)的動作。
4.如權(quán)利要求2所述的方法,其特征在于,所述接收當(dāng)執(zhí)行數(shù)據(jù)庫訪問操作時要使用的上下文的動作包括接收一上下文的動作,所述上下文包括包含在所述相關(guān)的數(shù)據(jù)庫分區(qū)中的指定值。
5.如權(quán)利要求4所述的方法,其特征在于,所述根據(jù)上下文對所述數(shù)據(jù)庫訪問操作的語義進(jìn)行修改的動作包括修改所述數(shù)據(jù)庫訪問操作的語義以將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到具有所述指定值的行的動作。
6.如權(quán)利要求1所述的方法,其特征在于,所述接收數(shù)據(jù)庫訪問操作的動作包括接收 SQL命令的動作。
7.如權(quán)利要求1所述的方法,其特征在于,所述接收數(shù)據(jù)庫訪問操作的動作包括接收對所述聯(lián)合中所存儲的數(shù)據(jù)的一個或多個行的查詢的動作。
8.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括接收過濾選項的動作。
9.如權(quán)利要求8所述的方法,其特征在于,所述過濾選項包括開啟過濾,所述修改數(shù)據(jù)庫訪問操作的語義的動作包括修改數(shù)據(jù)庫訪問操作的語義以僅允許訪問所述所指定的相關(guān)的聯(lián)合部分中對應(yīng)于特定聯(lián)合鍵值的行的動作。
10.如權(quán)利要求8所述的方法,其特征在于,所述過濾選項包括關(guān)閉過濾,所述修改數(shù)據(jù)庫訪問操作的語義的動作包括修改數(shù)據(jù)庫訪問操作的語義以允許訪問整個所述所指定的相關(guān)的聯(lián)合部分的動作,所述整個所指定的相關(guān)的聯(lián)合部分包括所述所指定的相關(guān)的聯(lián)合部分中對應(yīng)于特定聯(lián)合鍵值的行以及所述所指定的相關(guān)的聯(lián)合部分中的其他行。
11.一種在包括聯(lián)合(10 中的多個數(shù)據(jù)庫分區(qū)(103A、10;3B、103C)的計算機(jī)系統(tǒng)處使用的計算機(jī)程序產(chǎn)品,所述聯(lián)合(10 配置為存儲多個數(shù)據(jù)行(115A-115E),每個數(shù)據(jù)行由聯(lián)合鍵值(116A-116E)標(biāo)識,使得所述聯(lián)合存儲了聯(lián)合鍵值集的數(shù)據(jù),所述多個數(shù)據(jù)庫分區(qū)(103A、10;3B、103C)中的每一個被配置為物理地存儲具有在集中的聯(lián)合鍵值的指定部分中的一個聯(lián)合鍵值的數(shù)據(jù)的任意行,一種用于對用于訪問數(shù)據(jù)庫分區(qū)的上下文進(jìn)行范圍化的方法,所述計算機(jī)程序產(chǎn)品包括在其上存儲有計算機(jī)可執(zhí)行指令的一個或多個計算機(jī)存儲介質(zhì),當(dāng)在處理器處執(zhí)行所述計算機(jī)可執(zhí)行指令時,使得所述計算機(jī)系統(tǒng)執(zhí)行所述方法, 包括下述步驟接收當(dāng)在所述分布式數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問操作時要使用的上下文(108),所述上下文標(biāo)識了所指定的相關(guān)的聯(lián)合部分;接收與所述上下文(108)相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作(11 ;以及根據(jù)所關(guān)聯(lián)的上下文(108)對所述數(shù)據(jù)庫訪問操作(11 的語義進(jìn)行修改以將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到所述所指定的相關(guān)的聯(lián)合部分。
12.如權(quán)利要求11所述的計算機(jī)程序產(chǎn)品,其特征在于,所述接收當(dāng)執(zhí)行數(shù)據(jù)庫訪問操作時要使用的上下文包括接收標(biāo)識所述聯(lián)合中的相關(guān)數(shù)據(jù)庫分區(qū)的上下文。
13.如權(quán)利要求12所述的計算機(jī)程序產(chǎn)品,其特征在于,所述根據(jù)上下文對所述數(shù)據(jù)庫訪問操作的語義進(jìn)行修改包括修改所述數(shù)據(jù)庫訪問操作的語義以將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到所述相關(guān)的數(shù)據(jù)庫分區(qū)。
14.如權(quán)利要求12所述的計算機(jī)程序產(chǎn)品,其特征在于,所述接收當(dāng)執(zhí)行數(shù)據(jù)庫訪問操作時要使用的上下文包括接收一上下文,所述上下文包括在所述相關(guān)的數(shù)據(jù)庫分區(qū)中所包含的指定值。
15.一種計算機(jī)系統(tǒng),所述計算機(jī)系統(tǒng)包括 一個或多個處理器;系統(tǒng)存儲器;以及在其上存儲有計算機(jī)可執(zhí)行指令的一個或多個計算機(jī)存儲介質(zhì),當(dāng)由所述一個或多個處理器執(zhí)行所述計算機(jī)可執(zhí)行指令時,使得所述計算機(jī)系統(tǒng)執(zhí)行對用于訪問數(shù)據(jù)庫分區(qū)的上下文進(jìn)行范圍化的方法,包括下述步驟接收連接到分布式數(shù)據(jù)庫系統(tǒng)的范圍化連接請求(108),所述范圍化連接請求包括 當(dāng)在所述分布式數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問操作時使用的范圍(110),所述范圍使用聯(lián)合鍵值標(biāo)識所述分布式數(shù)據(jù)庫系統(tǒng)中的聯(lián)合分區(qū);以及過濾選項(111),所述過濾選項指示當(dāng)所述過濾選項是開啟時,是否將連接范圍限制到僅為對應(yīng)于所述聯(lián)合鍵值的所述聯(lián)合分區(qū)中的特定行,或者當(dāng)所述過濾選項是關(guān)閉時, 是否將連接范圍限制到通常為所述聯(lián)合分區(qū)中的所有行;接收與所述范圍連接請求相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作(11 ;以及根據(jù)所關(guān)聯(lián)的范圍(110)和過濾選項(111),將所述數(shù)據(jù)庫訪問操作(11 的語義修改為經(jīng)修改的數(shù)據(jù)庫操作(114),以在所述過濾選項是開啟時將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到所述聯(lián)合分區(qū)中的特定行,或在所述過濾選項(111)是關(guān)閉時將所述數(shù)據(jù)庫訪問操作的應(yīng)用指引到通常為所述聯(lián)合分區(qū)中的所有行。
全文摘要
本發(fā)明涉及范圍化數(shù)據(jù)庫連接。本發(fā)明擴(kuò)展到用于范圍化用于訪問數(shù)據(jù)庫分區(qū)的上下文的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品。本發(fā)明的實施例在多承租人數(shù)據(jù)庫中使用分區(qū)來允許數(shù)據(jù)隔離,同時減輕客戶端應(yīng)用處理分區(qū)的負(fù)擔(dān)。例如,包括分布式數(shù)據(jù)庫系統(tǒng)的計算機(jī)系統(tǒng)接收當(dāng)在該分布式數(shù)據(jù)庫系統(tǒng)中執(zhí)行數(shù)據(jù)庫訪問操作時使用的上下文,所述分布式數(shù)據(jù)庫系統(tǒng)包括在聯(lián)合中的多個數(shù)據(jù)庫分區(qū)。上下文表示了指定修改的聯(lián)合部分。計算機(jī)系統(tǒng)還接收與所述上下文相關(guān)聯(lián)的數(shù)據(jù)庫訪問操作。計算機(jī)系統(tǒng)根據(jù)所關(guān)聯(lián)的上下文對數(shù)據(jù)庫訪問操作的語義進(jìn)行修改以指引將該數(shù)據(jù)庫訪問操作應(yīng)用到指定相關(guān)的聯(lián)合部分。
文檔編號G06F17/30GK102426602SQ20111035593
公開日2012年4月25日 申請日期2011年10月27日 優(yōu)先權(quán)日2010年10月28日
發(fā)明者A·卡爾漢, A·金博爾, C·比伊扣格魯, J·D·克拉克, J·哈默, L·諾維克, M·T·弗里德曼, T·J·B·特恩斯特倫 申請人:微軟公司