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

用于數(shù)據(jù)庫事務(wù)的并發(fā)請(qǐng)求處理的制作方法

文檔序號(hào):6504577閱讀:197來源:國知局
用于數(shù)據(jù)庫事務(wù)的并發(fā)請(qǐng)求處理的制作方法
【專利摘要】一種請(qǐng)求處理器,可以接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求,并且可以將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求,并且將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求。鍵值存儲(chǔ)引擎可以使用在收到第一事務(wù)請(qǐng)求的之前確定的、并且基于該數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù),并且如果有的話可以更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值Δ。關(guān)系存儲(chǔ)引擎可以造成所述至少一個(gè)處理器使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù),并且如果有的話可以更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系Δ。同步器可以基于鍵值Δ和關(guān)系Δ來運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
【專利說明】用于數(shù)據(jù)庫事務(wù)的并發(fā)請(qǐng)求處理

【技術(shù)領(lǐng)域】
[0001 ] 此說明書涉及用于數(shù)據(jù)庫的事務(wù)請(qǐng)求處理。

【背景技術(shù)】
[0002]各種類型的數(shù)據(jù)庫通常用于存儲(chǔ)、管理、訪問或者利用數(shù)據(jù)。在關(guān)聯(lián)的數(shù)據(jù)庫操作中,可以讀取、創(chuàng)建、更新、刪除、比較、合并或操縱數(shù)據(jù)。
[0003]在實(shí)踐中,可以由許多不同的用戶以重疊或并行的方式訪問給定數(shù)據(jù)庫。例如,許多用戶可以在給定時(shí)間段之內(nèi)向相同的數(shù)據(jù)庫提交重疊的事務(wù)請(qǐng)求。在這種場(chǎng)景中,重要的是數(shù)據(jù)庫之內(nèi)的數(shù)據(jù)保持當(dāng)前(current)、精確和一致。例如,在使用相同的數(shù)據(jù)滿足來自第二用戶的請(qǐng)求之前必須完成由第一用戶做出的數(shù)據(jù)修改并使之可用,以便保證第二用戶接收及時(shí)和精確的結(jié)果。
[0004]因此,可以延遲來自用戶的事務(wù)請(qǐng)求直到與相同數(shù)據(jù)相關(guān)的先前的事務(wù)請(qǐng)求已經(jīng)完成。在一些情況下,由給定用戶感受到的結(jié)果延遲可以是極小或微小的。然而,在接收到大量并行事務(wù)請(qǐng)求的諸如上面談到的那些情景中,用戶可能感受不滿意或不可接受的累積的延遲。
[0005]例如,具體地,諸如電子商務(wù)(e-co_erce)或社交網(wǎng)絡(luò)應(yīng)用之類的基于網(wǎng)絡(luò)的應(yīng)用可以使上百萬的用戶能同時(shí)地嘗試訪問支持相應(yīng)基于網(wǎng)絡(luò)的應(yīng)用的一個(gè)或多個(gè)數(shù)據(jù)庫。因此在這種場(chǎng)景中以上描述的困難可能是顯著的問題。作為結(jié)果,這種基于網(wǎng)絡(luò)的應(yīng)用的用戶(例如,顧客)可能不滿意,并且提供基于網(wǎng)絡(luò)的應(yīng)用的商戶會(huì)感受在顧客的忠誠度和盈利方面的損失。


【發(fā)明內(nèi)容】

[0006]根據(jù)一個(gè)一般方面,一種系統(tǒng)可以包括記錄在計(jì)算機(jī)可讀介質(zhì)上的、并且可由至少一個(gè)處理器運(yùn)行的指令。所述系統(tǒng)可以包括請(qǐng)求處理器,被配置為造成所述至少一個(gè)處理器接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求,并且還被配置為造成所述至少一個(gè)處理器將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求,并且將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求。所述系統(tǒng)可以包括鍵(key)值存儲(chǔ)引擎,被配置為造成所述至少一個(gè)處理器使用在接收到第一事務(wù)請(qǐng)求之前確定的并且基于所述數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù),并且還被配置為如果有的話則更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值A(chǔ)(Clelta)t5所述系統(tǒng)可以包括關(guān)系存儲(chǔ)引擎,被配置為造成所述至少一個(gè)處理器使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù),并且還被配置為如果有的話則更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系Λ。所述系統(tǒng)可以包括同步器,被配置為造成所述至少一個(gè)處理器基于鍵值Δ和關(guān)系△來運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
[0007]實(shí)施方式可以包括以下特征中的一個(gè)或多個(gè)。例如,可以在包括數(shù)據(jù)庫的數(shù)據(jù)庫層從至少一個(gè)應(yīng)用接收所述事務(wù)請(qǐng)求。
[0008]所述請(qǐng)求處理器可以被配置為使用鍵值存儲(chǔ)的預(yù)先計(jì)算的結(jié)果基于描述其滿意可能性的特征的分類標(biāo)準(zhǔn)來分類第一事務(wù)請(qǐng)求和第二事務(wù)請(qǐng)求。結(jié)果計(jì)算器可以被配置為造成所述至少一個(gè)處理器基于將要由請(qǐng)求處理器接收到的將來事務(wù)請(qǐng)求的預(yù)測(cè)可能性來計(jì)算鍵值存儲(chǔ)的預(yù)先計(jì)算的結(jié)果。所述同步器可以被配置為造成結(jié)果計(jì)算器基于鍵值Λ和關(guān)系△與該同步共同地更新預(yù)先計(jì)算的結(jié)果。
[0009]所述鍵值存儲(chǔ)引擎可以被配置為確定與第一事務(wù)請(qǐng)求關(guān)聯(lián)的鍵,并且在鍵值存儲(chǔ)之內(nèi)執(zhí)行相應(yīng)值的查找。所述鍵值存儲(chǔ)引擎可以包括無效通知器,被配置為基于鍵值Λ的更新來更新關(guān)系Λ。所述同步器可以被配置為基于關(guān)系△和從鍵值存儲(chǔ)引擎的無效通知器接收到的更新來更新關(guān)系存儲(chǔ),以及其后清空關(guān)系△的內(nèi)容。
[0010]所述關(guān)系存儲(chǔ)引擎可以包括無效通知器,被配置為基于關(guān)系Λ的更新來更新鍵值Λ。所述同步器可以被配置為基于鍵值△和從關(guān)系存儲(chǔ)引擎的無效通知器接收到的更新來更新鍵值存儲(chǔ),以及其后清空鍵值△的內(nèi)容。
[0011]所述請(qǐng)求處理器、鍵值存儲(chǔ)引擎、關(guān)系存儲(chǔ)引擎以及同步器可以在系統(tǒng)的主存儲(chǔ)器中實(shí)現(xiàn)。所述關(guān)系存儲(chǔ)引擎可以被配置為造成所述至少一個(gè)處理器更新存儲(chǔ)在非易失性存儲(chǔ)器中的事務(wù)記錄并且利用由第一事務(wù)或第二事務(wù)的運(yùn)行引起的對(duì)數(shù)據(jù)庫的任何改變來更新數(shù)據(jù)庫。
[0012]根據(jù)另一一般方面,用于運(yùn)行存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的指令的計(jì)算機(jī)實(shí)現(xiàn)的方法可以包括:接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求,將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求,以及將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求。所述方法可以包括使用在接收到第一事務(wù)請(qǐng)求之前確定的以及基于數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù),使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù),以及如果有的話則更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值△。所述方法可以包括如果有的話則更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系△,以及基于鍵值△和關(guān)系△運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
[0013]實(shí)施方式可以包括以下特征中的一個(gè)或多個(gè)。例如,更新鍵值Λ可以包括基于鍵值Λ來更新關(guān)系Λ,以及更新關(guān)系Λ可以包括基于關(guān)系Λ來更新鍵值Λ。所述同步可以包括基于鍵值Λ和關(guān)系Λ與該同步共同地更新預(yù)先計(jì)算的結(jié)果。
[0014]根據(jù)另一一般方面,有形地具體實(shí)現(xiàn)在非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品可以包括指令。當(dāng)所述指令被運(yùn)行時(shí)可以被配置為接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求,將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求,以及將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求。當(dāng)所述指令被運(yùn)行時(shí)可以被配置為使用在接收到第一事務(wù)請(qǐng)求之前確定的并且基于該數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù),以及使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù)。當(dāng)所述指令被運(yùn)行時(shí)可以被配置為如果有的話則更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值△,如果有的話則更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系Δ ,以及基于鍵值△和關(guān)系△來運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
[0015]實(shí)施方式可以包括以下特征中的一個(gè)或多個(gè)。例如,在更新鍵值Λ中,當(dāng)所述指令被運(yùn)行時(shí)可以被配置為基于鍵值Λ來更新關(guān)系Λ,在更新關(guān)系Λ中,當(dāng)所述指令被運(yùn)行時(shí)可以被配置為基于關(guān)系Λ來更新鍵值Λ。
[0016]所述同步可以包括基于關(guān)系△和從鍵值存儲(chǔ)接收到的更新來更新關(guān)系存儲(chǔ),以及其后清空關(guān)系△的內(nèi)容。所述同步可以包括基于鍵值△和從關(guān)系存儲(chǔ)接收到的更新來更新鍵值存儲(chǔ),以及其后清空鍵值△的內(nèi)容。
[0017]所述同步可以包括基于鍵值Λ和關(guān)系Λ與該同步共同地更新預(yù)先計(jì)算的結(jié)果??梢栽诎〝?shù)據(jù)庫的數(shù)據(jù)庫層從至少一個(gè)應(yīng)用接收所述事務(wù)請(qǐng)求。
[0018]在附圖和下面的描述中闡述一個(gè)或多個(gè)實(shí)施方式的細(xì)節(jié)。其它特征將由從描述和附圖、以及從權(quán)利要求書中變得清楚。

【專利附圖】

【附圖說明】
[0019]圖1是用于管理并行數(shù)據(jù)庫事務(wù)請(qǐng)求的系統(tǒng)的框圖。
[0020]圖2是示出圖1的系統(tǒng)的示例實(shí)施方式細(xì)節(jié)的框圖。
[0021]圖3是示出圖1、圖2的系統(tǒng)的示例操作的流程圖。
[0022]圖4是示出用于圖1的系統(tǒng)中的示例預(yù)先請(qǐng)求計(jì)算結(jié)果的流程圖。
[0023]圖5是用于圖1的系統(tǒng)的示例實(shí)施方式中的B樹數(shù)據(jù)結(jié)構(gòu)的框圖。
[0024]圖6是示出圖1、圖2的系統(tǒng)的額外的示例操作的流程圖。
[0025]圖7是示出用于更新圖4的預(yù)先計(jì)算的結(jié)果的示例操作的流程圖。
[0026]圖8是使用分布、分級(jí)(scaled)架構(gòu)的圖1、圖2的系統(tǒng)的示例實(shí)施方式的框圖。

【具體實(shí)施方式】
[0027]圖1是用于管理并行數(shù)據(jù)庫事務(wù)請(qǐng)求的系統(tǒng)100的框圖。在圖1的示例中,數(shù)據(jù)庫102示出為支持從應(yīng)用104接收到的事務(wù)請(qǐng)求。如上所述,應(yīng)用104可以接收大量并行事務(wù)請(qǐng)求。在圖1的示例中,如下面詳細(xì)描述的,在系統(tǒng)100的數(shù)據(jù)庫層分離這種并行事務(wù)請(qǐng)求,以使得在數(shù)據(jù)庫層之內(nèi)不同地管理不同類型的事務(wù)請(qǐng)求。作為這些和有關(guān)特征的結(jié)果,作為一個(gè)整體來看,可以通過系統(tǒng)100立即和有效地滿足事務(wù)請(qǐng)求,即使當(dāng)在很短時(shí)間段之內(nèi)接收到大量的事務(wù)請(qǐng)求的時(shí)候。
[0028]在圖1的示例中,數(shù)據(jù)庫102和應(yīng)用104將理解為實(shí)際上表示架構(gòu)的任何類型的已知或?qū)淼膶?shí)施方式,在該架構(gòu)中前端應(yīng)用與用戶(或事務(wù)請(qǐng)求的其他源)(直接或間接地)交互,包括接收需要一個(gè)或多個(gè)后端數(shù)據(jù)庫的支持的事務(wù)請(qǐng)求。為了示例和說明起見,在隨后的示例實(shí)施方式中,數(shù)據(jù)庫102通常描述為關(guān)系數(shù)據(jù)庫,諸如可以使用一個(gè)或多個(gè)關(guān)系表來存儲(chǔ)數(shù)據(jù),在關(guān)系表中單個(gè)表格行表示相應(yīng)的數(shù)據(jù)記錄,而單個(gè)表格列表示相應(yīng)的數(shù)據(jù)類型。
[0029]當(dāng)然,如談到的,數(shù)據(jù)庫102可以表示與此處描述的特征和技術(shù)不矛盾的任何類型的數(shù)據(jù)庫,諸如,例如,面向?qū)ο髷?shù)據(jù)庫。這種數(shù)據(jù)庫通常與(多個(gè))數(shù)據(jù)庫管理技術(shù)或數(shù)據(jù)庫管理系統(tǒng)(DBMS)以及關(guān)聯(lián)的語言(諸如,在關(guān)系數(shù)據(jù)庫情況下,結(jié)構(gòu)化查詢語言(SQL))相關(guān)。
[0030]類似地,應(yīng)用104可以表示可以訪問數(shù)據(jù)庫102的任何應(yīng)用。同樣為了說明和示例起見,此處可以就互聯(lián)網(wǎng)應(yīng)用(例如,電子商務(wù)或社交網(wǎng)絡(luò)應(yīng)用)而言來描述應(yīng)用104。例如,應(yīng)用104可以表示商業(yè)應(yīng)用(例如,用于提供鏈管理、客戶關(guān)系管理、或企業(yè)資源計(jì)劃),商店的雇員利用該商業(yè)應(yīng)用可以訪問庫存、客戶或財(cái)務(wù)數(shù)據(jù)記錄。
[0031]此外在圖1中,結(jié)果計(jì)算器106可以被配置為訪問數(shù)據(jù)庫102并且生成鍵值存儲(chǔ)108的內(nèi)容。在圖1的示例中,鍵值存儲(chǔ)108的內(nèi)容可以存儲(chǔ)為鍵值對(duì),以使得鍵值存儲(chǔ)引擎110可以使用特定鍵容易地執(zhí)行查找以迅速地并精確地定位關(guān)聯(lián)值。此外,可以使用諸如下面參照?qǐng)D5描述的一個(gè)或多個(gè)合適的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)鍵值存儲(chǔ)108的內(nèi)容。
[0032]在下面參照?qǐng)D4詳細(xì)地描述在填充鍵值存儲(chǔ)108中的結(jié)果計(jì)算器106的操作。此夕卜,在下面參照?qǐng)D7提供在系統(tǒng)100的操作期間隨時(shí)間更新鍵值存儲(chǔ)108的背景下的結(jié)果計(jì)算器106的操作。
[0033]然而,通常,為了每次在接收到需要這種結(jié)果的事務(wù)請(qǐng)求之前準(zhǔn)備鍵值存儲(chǔ)108,結(jié)果計(jì)算器106可以被理解為識(shí)別將要利用數(shù)據(jù)庫102執(zhí)行的特定操作和計(jì)算。這樣做時(shí),結(jié)果計(jì)算器106可以預(yù)測(cè)將經(jīng)由應(yīng)用104接收到的事務(wù)請(qǐng)求、或事務(wù)請(qǐng)求的類型,并且可以預(yù)先計(jì)算和存儲(chǔ)用于這種預(yù)測(cè)的事務(wù)請(qǐng)求的結(jié)果作為鍵值存儲(chǔ)108。例如,結(jié)果計(jì)算器106可以基于在前接收到的這種事務(wù)請(qǐng)求的頻率或相對(duì)頻率來預(yù)測(cè)特定事務(wù)請(qǐng)求,或事務(wù)請(qǐng)求的類型的將來接收。
[0034]另外,或替代地,結(jié)果計(jì)算器106可以基于數(shù)據(jù)庫102和/或應(yīng)用104的特征或方面來預(yù)測(cè)將來的事務(wù)請(qǐng)求。例如,與已經(jīng)包括在數(shù)據(jù)庫102之內(nèi)達(dá)預(yù)定義最小時(shí)間的數(shù)據(jù)相比,新近存儲(chǔ)到數(shù)據(jù)庫102的數(shù)據(jù)可能更可能包括在由結(jié)果計(jì)算器106執(zhí)行的計(jì)算中。在其中應(yīng)用104表示電子商務(wù)相關(guān)的應(yīng)用的另一示例中,可能發(fā)生的是某些類別的待售的商品被預(yù)測(cè)為短期中的事務(wù)請(qǐng)求的主體,以使得結(jié)果計(jì)算器106可以使用來自與這種待售商品有關(guān)的數(shù)據(jù)庫102的數(shù)據(jù)執(zhí)行關(guān)聯(lián)的計(jì)算。
[0035]作為具體、簡(jiǎn)化的示例,可能發(fā)生的是數(shù)據(jù)庫102是庫存數(shù)據(jù)庫,并且應(yīng)用104表示庫存管理應(yīng)用。在這種設(shè)置中,可能發(fā)生的是頻繁地接收請(qǐng)求關(guān)于待售的商品或待售的商品的類別的特定信息的事務(wù)請(qǐng)求。例如,這種事務(wù)請(qǐng)求可以指定對(duì)在特定時(shí)間段之內(nèi)(例如,在特定年限之內(nèi))出售的這種商品的數(shù)量的請(qǐng)求。在這種場(chǎng)景中,結(jié)果計(jì)算器106可以預(yù)先計(jì)算用于鍵值存儲(chǔ)108之內(nèi)的存儲(chǔ)的相應(yīng)結(jié)果,例如,其中可以使用合適的散列算法生成特定鍵,并且該特定鍵是利用的這種事務(wù)請(qǐng)求的特定的這種示例的事務(wù)結(jié)果來唯一地識(shí)別的。因此,當(dāng)由鍵值存儲(chǔ)引擎110收到匹配事務(wù)請(qǐng)求時(shí),鍵值存儲(chǔ)引擎110可以再次使用合適的散列算法來迅速地識(shí)別用于請(qǐng)求的事務(wù)結(jié)果的相應(yīng)鍵,并且可以其后執(zhí)行在鍵值存儲(chǔ)108之內(nèi)的期望的事務(wù)結(jié)果的查找。
[0036]如下面更詳細(xì)的描述的,因此可以通過使用鍵值存儲(chǔ)引擎110和鍵值存儲(chǔ)108滿足由應(yīng)用104接收到的許多類型的公共事務(wù)請(qǐng)求。例如,僅僅作為描述的,可以非常迅速地滿足請(qǐng)求預(yù)先計(jì)算值的簡(jiǎn)單讀取的事務(wù)請(qǐng)求。類似地,也可以迅速地滿足使用兩個(gè)或多個(gè)預(yù)存儲(chǔ)的值或結(jié)果的簡(jiǎn)單組合的讀操作。此外,可以使用鍵值存儲(chǔ)引擎110運(yùn)行簡(jiǎn)單的寫操作(例如,創(chuàng)建或插入操作),如下面也更詳細(xì)地描述的。
[0037]因此,如剛剛描述的,可以利用鍵值存儲(chǔ)引擎110和鍵值存儲(chǔ)108迅速和精確地滿足由應(yīng)用104接收到的大量事務(wù)請(qǐng)求。盡管如此,應(yīng)用104還可能接收到許多類型的事務(wù)請(qǐng)求,其可能很難、不切實(shí)際,或不可能使用鍵值存儲(chǔ)引擎110來滿足。
[0038]因此,在圖1的示例中,關(guān)系存儲(chǔ)引擎112包括在圖1的系統(tǒng)100中,其可以被配置為利用關(guān)系數(shù)據(jù)存儲(chǔ)114以滿足這種事務(wù)請(qǐng)求,使用鍵值存儲(chǔ)引擎110和鍵值存儲(chǔ)108可能不能滿足這種事務(wù)請(qǐng)求。具體地,一些事務(wù)請(qǐng)求可能需要使用數(shù)據(jù)庫102的數(shù)據(jù)執(zhí)行邏輯上復(fù)雜和/或詳細(xì)和過長(zhǎng)的計(jì)算。在其他示例中,可能發(fā)生的是很難或不可能在收到一些事務(wù)請(qǐng)求之前預(yù)測(cè)它們,以使得可能不實(shí)際或不可能的是結(jié)果計(jì)算器106生成用于包括在鍵值存儲(chǔ)108之內(nèi)的相關(guān)的結(jié)果。此外,可能發(fā)生的是可以以特定大小優(yōu)化使用鍵值存儲(chǔ)108存儲(chǔ)的大塊數(shù)據(jù),超過該特定大小通過結(jié)果計(jì)算器106的預(yù)先計(jì)算的結(jié)果會(huì)提供減弱的或可忽略的實(shí)際正返回(net positive return)。
[0039]因此,關(guān)系數(shù)據(jù)存儲(chǔ)114可以表示數(shù)據(jù)庫102的復(fù)制版本或子集,并且可以使用相同或修改的格式存儲(chǔ)為底層數(shù)據(jù)庫102。例如,在上面談到的數(shù)據(jù)庫102表示一個(gè)或多個(gè)關(guān)系表的關(guān)系數(shù)據(jù)庫的場(chǎng)景中,可以使用相應(yīng)于底層數(shù)據(jù)庫102的行和列將關(guān)系數(shù)據(jù)存儲(chǔ)114類似地存儲(chǔ)為一個(gè)或多個(gè)關(guān)系表。作為結(jié)果,關(guān)系存儲(chǔ)引擎112可以相對(duì)于關(guān)系數(shù)據(jù)存儲(chǔ)114虛擬地應(yīng)用從應(yīng)用104接收到的任何事務(wù)請(qǐng)求,可以相對(duì)于數(shù)據(jù)庫102應(yīng)用該應(yīng)用104。
[0040]在操作中,請(qǐng)求處理器116可以被配置為接收可以通過應(yīng)用104接收到的多個(gè)事務(wù)請(qǐng)求。請(qǐng)求處理器116可以咨詢分類標(biāo)準(zhǔn)117以決定將特定事務(wù)請(qǐng)求路由到鍵值存儲(chǔ)引擎110還是關(guān)系存儲(chǔ)引擎112。
[0041]一般說來,例如,如下面參照?qǐng)D6更詳細(xì)描述的,分類標(biāo)準(zhǔn)117可以將任一輸入的事務(wù)請(qǐng)求分類為簡(jiǎn)單或復(fù)雜,然而簡(jiǎn)單事務(wù)請(qǐng)求可以發(fā)送給鍵值存儲(chǔ)引擎110,而更復(fù)雜的事務(wù)請(qǐng)求可以發(fā)送給關(guān)系存儲(chǔ)引擎112。例如,在最直接的場(chǎng)景中,簡(jiǎn)單事務(wù)請(qǐng)求或許被識(shí)別為僅請(qǐng)求查詢/讀取操作的那些,和/或也許是基本寫操作(例如,創(chuàng)建或插入操作)。同時(shí),復(fù)雜事務(wù)請(qǐng)求可以定義為需要相對(duì)于包含在底層數(shù)據(jù)庫102之內(nèi)的數(shù)據(jù)的更廣度的計(jì)算和/或操作的那些事務(wù)請(qǐng)求,因?yàn)樵陉P(guān)系數(shù)據(jù)存儲(chǔ)114之內(nèi)表示這種數(shù)據(jù)。
[0042]另一方面,如可以從鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114的以上討論中了解的,通過分類標(biāo)準(zhǔn)識(shí)別的簡(jiǎn)單事務(wù)請(qǐng)求可以理解為可以極可能包括在鍵值存儲(chǔ)108之內(nèi)的那些事務(wù)請(qǐng)求,而復(fù)雜事務(wù)請(qǐng)求可以被識(shí)別為可能需要訪問關(guān)系數(shù)據(jù)存儲(chǔ)114以成功完成的那些事務(wù)請(qǐng)求。因而,分類標(biāo)準(zhǔn)117的配置可以取決于在計(jì)算鍵值存儲(chǔ)108的內(nèi)容中的結(jié)果計(jì)算器106的操作的底層設(shè)置。例如,如果結(jié)果計(jì)算器106被配置為包括鍵值存儲(chǔ)108之內(nèi)的特定類型的數(shù)據(jù),則可能與這種數(shù)據(jù)有關(guān)的事務(wù)請(qǐng)求可能更可能通過分類標(biāo)準(zhǔn)117分類為將要發(fā)送給鍵值存儲(chǔ)引擎110的簡(jiǎn)單事務(wù)請(qǐng)求。因此,在用于路由到鍵值存儲(chǔ)引擎110或關(guān)系存儲(chǔ)引擎112的、分類輸入事務(wù)請(qǐng)求中的請(qǐng)求處理器116的某些操作可以理解為至少部分地是有關(guān)就圖1的系統(tǒng)100的用戶方的設(shè)計(jì)配置的事情。
[0043]因此,如下面更詳細(xì)地描述的,例如,參照?qǐng)D3、圖6、圖7,請(qǐng)求處理器116可以接收給定事務(wù)請(qǐng)求,并且基于分類標(biāo)準(zhǔn)117,可以將接收到的事務(wù)請(qǐng)求路由到鍵值存儲(chǔ)引擎110以用于使用鍵值存儲(chǔ)108滿足該事務(wù)請(qǐng)求。僅僅作為參考,分類標(biāo)準(zhǔn)117可以訪問結(jié)果計(jì)算器106和/或鍵值存儲(chǔ)108的操作,以使得請(qǐng)求處理器116可以具有通過鍵值存儲(chǔ)引擎110滿足事務(wù)請(qǐng)求的高期望或確定性。然而,因?yàn)榇颂幱懻摰睦碛?,還可能發(fā)生的是請(qǐng)求處理器116將可能不能通過使用鍵值存儲(chǔ)108滿足的事務(wù)請(qǐng)求路由到鍵值存儲(chǔ)引擎110。在此情況下,鍵值存儲(chǔ)引擎110和/或請(qǐng)求處理器116可以被配置為將這種事務(wù)請(qǐng)求進(jìn)一步路由到關(guān)系存儲(chǔ)引擎112。
[0044]另外,如上面參考的,請(qǐng)求處理器116還可以基于分類標(biāo)準(zhǔn)117接收可以路由到關(guān)系存儲(chǔ)引擎112的第二事務(wù)請(qǐng)求。其后,關(guān)系存儲(chǔ)引擎112可以使用關(guān)系數(shù)據(jù)存儲(chǔ)114滿足路由的事務(wù)請(qǐng)求。
[0045]如下面參照?qǐng)D2更詳細(xì)地描述的,可以使用主存儲(chǔ)器運(yùn)行鍵值存儲(chǔ)引擎110和關(guān)系存儲(chǔ)引擎112的操作,以便提高系統(tǒng)100的總體效率。然而,一般說來,使用易失存儲(chǔ)介質(zhì)實(shí)現(xiàn)主存儲(chǔ)器,以致用于實(shí)現(xiàn)系統(tǒng)100的硬件或軟件的崩潰(crash)或其他中斷可能導(dǎo)致不希望的數(shù)據(jù)丟失。因此,如下面還參照?qǐng)D2描述的,可以使用底層非易失性存儲(chǔ)介質(zhì)存儲(chǔ)數(shù)據(jù)庫102自身。然后,在主存儲(chǔ)器的易失存儲(chǔ)介質(zhì)的背景下,可以保持反映運(yùn)行的全部數(shù)據(jù)事務(wù)的事務(wù)記錄118。因此,可以使用事務(wù)記錄118按需要/要求更新數(shù)據(jù)庫102。然后,在硬件/軟件崩潰或其他系統(tǒng)中斷情況下,數(shù)據(jù)庫102的數(shù)據(jù)將不被丟失,并且可以使用事務(wù)記錄118被更新直到失敗或其他中斷的時(shí)間點(diǎn)處。作為結(jié)果,通常可以再創(chuàng)建和產(chǎn)生直到崩潰或其他中斷的時(shí)間點(diǎn)的當(dāng)前的系統(tǒng)100,該系統(tǒng)100包括關(guān)系數(shù)據(jù)存儲(chǔ)114和鍵值存儲(chǔ)108。
[0046]如可以從以上的說明書了解的,以及如下面更詳細(xì)描述的,由鍵值存儲(chǔ)引擎110運(yùn)行的事務(wù)請(qǐng)求可以造成在鍵值存儲(chǔ)108的內(nèi)容方面的變化。類似地,由關(guān)系存儲(chǔ)引擎112運(yùn)行的事務(wù)請(qǐng)求可以導(dǎo)致在關(guān)系數(shù)據(jù)存儲(chǔ)114的內(nèi)容方面的改變。例如,由請(qǐng)求處理器116接收到并被路由到鍵值存儲(chǔ)引擎110的事務(wù)請(qǐng)求可以造成對(duì)鍵值存儲(chǔ)108的給定數(shù)據(jù)記錄的改變。接著,與相同數(shù)據(jù)記錄有關(guān)、并且由請(qǐng)求處理器116接收到并路由到鍵值存儲(chǔ)引擎110的隨后的事務(wù)請(qǐng)求必須反映所討論的數(shù)據(jù)記錄的更新值,以便向應(yīng)用104提供當(dāng)前的和精確的響應(yīng)。
[0047]類似地,由關(guān)系存儲(chǔ)引擎112處理的稍后接收到的事務(wù)請(qǐng)求必須反映由關(guān)系存儲(chǔ)引擎112處理的早先接收到的事務(wù)請(qǐng)求引起的、對(duì)關(guān)系數(shù)據(jù)存儲(chǔ)114的早先更新。此外,但是類似地,在鍵值存儲(chǔ)108的背景下,由關(guān)系存儲(chǔ)引擎112收到的事務(wù)請(qǐng)求必須也以考慮對(duì)由鍵值存儲(chǔ)引擎110引起的數(shù)據(jù)記錄的更新的方式處理。類似地,但是相反地,由鍵值存儲(chǔ)引擎110處理的事務(wù)請(qǐng)求必須反映作為由關(guān)系存儲(chǔ)引擎112處理早先事務(wù)請(qǐng)求的結(jié)果的、對(duì)關(guān)系數(shù)據(jù)存儲(chǔ)114做出的早先改變。
[0048]因此,如圖1的示例中示出的,同步器119可以被配置為與鍵值存儲(chǔ)引擎110和關(guān)系存儲(chǔ)引擎112交互,以便由此保證鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114之間的同時(shí)性的期望定時(shí)和水平。例如,同步器119可以被配置為以定義的時(shí)間間隔運(yùn)行鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114之間的完全同步,以便由此反映和包括任一和全部數(shù)據(jù)修改,該數(shù)據(jù)修改對(duì)反映因?yàn)閯傇谥暗耐交僮鞯耐瓿啥\(yùn)行的全部事務(wù)請(qǐng)求是必須的。另外,或替代地,同步器119可以被配置為響應(yīng)于請(qǐng)求或鍵值存儲(chǔ)引擎110和/或關(guān)系存儲(chǔ)引擎112的其他操作來運(yùn)行這種同步。例如,同步器119可以在已經(jīng)管理特定數(shù)目的事務(wù)請(qǐng)求之后,和/或與處理可能暗示或需要這種同步的特定事務(wù)請(qǐng)求或某類事務(wù)請(qǐng)求關(guān)聯(lián)地處理同步。
[0049]為了便利利用同步器119的操作,并且通常保證向從應(yīng)用104接收到的事務(wù)請(qǐng)求提供當(dāng)前的、精確的結(jié)果,鍵值存儲(chǔ)引擎110可以包括鍵值△ 120,其被配置為跟蹤可能由通過鍵值存儲(chǔ)引擎110處理事務(wù)請(qǐng)求造成的、鍵值存儲(chǔ)108的任何改變。例如,由鍵值存儲(chǔ)引擎110處理的事務(wù)請(qǐng)求可以造成在鍵值存儲(chǔ)108之內(nèi)插入新的數(shù)據(jù)記錄。鍵值存儲(chǔ)引擎110可以使用鍵值△ 120簡(jiǎn)單地存儲(chǔ)創(chuàng)建的數(shù)據(jù)記錄,而不在那時(shí)修改鍵值存儲(chǔ)108的內(nèi)容(或關(guān)系數(shù)據(jù)存儲(chǔ)114或數(shù)據(jù)庫102的內(nèi)容)。
[0050]類似地,刪除鍵值存儲(chǔ)108之內(nèi)的結(jié)果的事務(wù)請(qǐng)求可以反映在鍵值Λ120之內(nèi)。具體地,在后一示例中,不必須實(shí)際上從鍵值存儲(chǔ)108中刪除特定數(shù)據(jù)記錄。而是,刪除的數(shù)據(jù)記錄可以使用鍵值Λ 120簡(jiǎn)單地標(biāo)記為無效的。然后,如上面參考的,有必要保證此后關(guān)系存儲(chǔ)引擎112不利用或嘗試訪問如此刪除的數(shù)據(jù)記錄。因此,鍵值存儲(chǔ)引擎110的無效通知器122可以被配置為向關(guān)系存儲(chǔ)引擎112通知所討論的數(shù)據(jù)記錄的刪除/無效。更具體地,例如,如下面參照?qǐng)D6詳細(xì)描述的,無效通知器122可以被配置為向關(guān)系存儲(chǔ)引擎112通知對(duì)鍵值Λ 120的任何更新,在利用關(guān)系數(shù)據(jù)存儲(chǔ)114向通過請(qǐng)求處理器116從應(yīng)用104接收到的事務(wù)請(qǐng)求提供當(dāng)前的、精確的響應(yīng)方面,所述更新有可能影響關(guān)系存儲(chǔ)引擎112的操作。
[0051]類似地,關(guān)系存儲(chǔ)引擎112可以保持關(guān)系Λ 124,其反映由通過關(guān)系存儲(chǔ)引擎112處理事務(wù)請(qǐng)求引起的對(duì)關(guān)系存儲(chǔ)114的任何更新,并且該更新還沒有通過同步器119的操作反映在關(guān)系數(shù)據(jù)存儲(chǔ)114之內(nèi)。對(duì)無效通知器122的操作也類似,關(guān)系存儲(chǔ)引擎112可以包括無效通知器126,其也可以被配置為向鍵值存儲(chǔ)引擎110發(fā)出特定數(shù)據(jù)的無效的通知,以便由此保證鍵值存儲(chǔ)引擎110不向通過請(qǐng)求處理器116從應(yīng)用接收到的事務(wù)請(qǐng)求提供不準(zhǔn)確的或過時(shí)的響應(yīng)。
[0052]因此,在操作中,鍵值存儲(chǔ)引擎110可以使用鍵值存儲(chǔ)108滿足來自請(qǐng)求處理器116的事務(wù)請(qǐng)求,并且此后更新鍵值△ 120以反映對(duì)鍵值存儲(chǔ)108的任何所導(dǎo)致的改變。如果需要,則無效通知器122可以向關(guān)系存儲(chǔ)引擎112通知此后將要反映在關(guān)系數(shù)據(jù)124之內(nèi)的這種改變。關(guān)系存儲(chǔ)引擎112可以因此利用關(guān)系Λ 124,并且使用關(guān)系數(shù)據(jù)存儲(chǔ)114以滿足從請(qǐng)求處理器116接收到的后續(xù)的請(qǐng)求。類似說明可以適用于關(guān)系存儲(chǔ)引擎112,BP,可以使用關(guān)系數(shù)據(jù)存儲(chǔ)114處理事務(wù)請(qǐng)求,并且可以通過無效通知器126向鍵值存儲(chǔ)引擎110通知完全地、整個(gè)地、或部分地反映在關(guān)系Λ 124中的對(duì)關(guān)系數(shù)據(jù)存儲(chǔ)114的任何所導(dǎo)致的改變。
[0053]例如,還如下面參照?qǐng)D6描述的,作為設(shè)計(jì)選擇的問題,無效通知器122、126的操作可以稍微變化。例如,在一些實(shí)施方式中,當(dāng)更新鍵值Λ 120時(shí),無效通知器122可以向關(guān)系△ 124通知所討論的更新,并且可以由此造成對(duì)關(guān)系△ 124之內(nèi)的相應(yīng)數(shù)據(jù)記錄的實(shí)際更新,由此反映對(duì)鍵值Λ 120的底層更新。
[0054]然而,在其他示例實(shí)施方式中,無效通知器122可以簡(jiǎn)單地識(shí)別鍵值Λ 120和/或鍵值存儲(chǔ)108的有關(guān)的、修改的數(shù)據(jù),以使得關(guān)系△ 124可以簡(jiǎn)單地跟蹤識(shí)別的數(shù)據(jù)已經(jīng)改變的事實(shí),而不實(shí)際上在那時(shí)知道它的更新值。在后一種示例中,當(dāng)通過關(guān)系存儲(chǔ)引擎112收到與關(guān)系Λ 124之內(nèi)的、由無效通知器122識(shí)別的無效/修改的數(shù)據(jù)關(guān)聯(lián)的事務(wù)請(qǐng)求時(shí),關(guān)系存儲(chǔ)引擎112可以觸發(fā)同步器119以使用各自的鍵值Λ 120和關(guān)系Λ 124來部分地或完全同步鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114。在這種示例中,然后,可以了解的是同步器119的操作可能潛在地由無效通知器122、126之一或兩者發(fā)送的通知的特定類型或數(shù)量而觸發(fā)。
[0055]因此,鍵值存儲(chǔ)引擎110和關(guān)系存儲(chǔ)引擎112能夠以使能管理由應(yīng)用104接收到的大量并行事務(wù)請(qǐng)求的、專門有效的方式提供快速和精確的響應(yīng)。當(dāng)這樣做時(shí),鍵值存儲(chǔ)引擎110和關(guān)系存儲(chǔ)引擎112可以分別地使用鍵值Λ 120和關(guān)系Λ 124也分別地跟蹤對(duì)鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114的改變。在某一時(shí)間段之后,和/或響應(yīng)于一些其它的刺激,同步器119可以更新關(guān)系數(shù)據(jù)存儲(chǔ)114和鍵值存儲(chǔ)108,在該時(shí)間可能期望或需要擦除鍵值Λ120和/或關(guān)系Λ124的一些或全部。如可以了解的,以及如下面也詳細(xì)描述的,關(guān)于這一點(diǎn)可以通過在識(shí)別將要包括在同步器119的同步化操作中的特定數(shù)據(jù)中的無效通知器122、126的早先操作而便利同步器119的操作。此外,因?yàn)榭梢栽谥鞔鎯?chǔ)器中實(shí)現(xiàn)全部部件108-119,所以在滿足應(yīng)用104接收到的事務(wù)請(qǐng)求方面,所述部件的操作可以非常迅速和有效,即使在存在大量并行事務(wù)請(qǐng)求的情況下。
[0056]如圖1中示出的,系統(tǒng)100可以使用至少一個(gè)計(jì)算設(shè)備128實(shí)現(xiàn),該至少一個(gè)計(jì)算設(shè)備128可以自身包括至少一個(gè)處理器128A和至少一個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)128B。S卩,例如,可以使用在操作中部分或完全地彼此通信以及并行的兩個(gè)或多個(gè)計(jì)算設(shè)備128實(shí)現(xiàn)系統(tǒng)100。類似地,可以利用并行運(yùn)行的兩個(gè)或多個(gè)處理器,以便提高系統(tǒng)100的操作的速度和效率。
[0057]如上面參考的,并且如下面參照?qǐng)D2更詳細(xì)地描述和示出的,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)128B可以表示至少兩種不同類型的計(jì)算機(jī)存儲(chǔ)器。例如,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)128B可以表示用于在事務(wù)記錄118中存儲(chǔ)數(shù)據(jù)庫102的第一、非易失性存儲(chǔ)器。同時(shí),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)128B也可以通常表示作為至少一個(gè)計(jì)算設(shè)備128的主存儲(chǔ)器提供的第二、易失性存儲(chǔ)器。還如參照?qǐng)D2描述和示出的,可以利用這種主存儲(chǔ)器以實(shí)現(xiàn)并運(yùn)行圖1的系統(tǒng)100的部件108-119中的任何一個(gè)。
[0058]雖然使用多個(gè)離散的、單個(gè)模塊示出圖1的系統(tǒng)100,但是可以了解,這種說明僅是為了示例和描述系統(tǒng)100的操作起見。因此,還可以了解的是可以組合系統(tǒng)100的任何兩個(gè)或多個(gè)部件用于作為單個(gè)部件運(yùn)行。類似地,但是相反地,圖1的系統(tǒng)100中示出的任何單個(gè)部件可以在多種示例實(shí)施方式中分為兩個(gè)或多個(gè)子部件。例如,同步器119的一些或全部可以分割并包括在鍵值存儲(chǔ)引擎I1和關(guān)系存儲(chǔ)引擎112的相應(yīng)部分之內(nèi)。通過另一示例,請(qǐng)求處理器116的一些功能可以包括在鍵值存儲(chǔ)引擎110的操作之內(nèi),因?yàn)?,例如,如上面參考的,路由通過鍵值存儲(chǔ)引擎110的事務(wù)請(qǐng)求可能不能使用鍵值存儲(chǔ)108被滿足,而是必須此后通過關(guān)系存儲(chǔ)引擎112使用關(guān)系數(shù)據(jù)存儲(chǔ)114來滿足它。
[0059]圖2是示出在圖1的系統(tǒng)100的實(shí)施期間的不同類型的存儲(chǔ)器的示例使用的框圖。在圖2的示例中,將用戶202 (表示一個(gè)或多個(gè)用戶)示出為向數(shù)據(jù)庫系統(tǒng)204提供事務(wù)請(qǐng)求。如所示,存儲(chǔ)器206表示用于實(shí)現(xiàn)鍵值存儲(chǔ)引擎110、關(guān)系存儲(chǔ)引擎112以及同步器119的易失性的、主存儲(chǔ)器的示例。當(dāng)然,雖然為了簡(jiǎn)化起見未具體地在圖2的示例中示出,可以了解的是還可以使用存儲(chǔ)器206實(shí)現(xiàn)鍵值存儲(chǔ)引擎110、關(guān)系存儲(chǔ)引擎112以及同步器119 (包括鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114)的各種內(nèi)部和有關(guān)的部件。
[0060]同時(shí),第二存儲(chǔ)器208示出為用于實(shí)現(xiàn)事務(wù)記錄118和底層數(shù)據(jù)庫102。如所示,例如,存儲(chǔ)器208可以包括諸如硬盤或固態(tài)驅(qū)動(dòng)器(SSD)的非易失性存儲(chǔ)器。
[0061]因此,如描述的,可以使用存儲(chǔ)器206以快速、有效的方式運(yùn)行鍵值存儲(chǔ)引擎110、關(guān)系存儲(chǔ)引擎112以及同步器119的操作。為了防止存儲(chǔ)器206的固有不穩(wěn)定性,如所示和描述的,關(guān)系存儲(chǔ)引擎112可以不斷地更新事務(wù)記錄118,以便反映使用存儲(chǔ)器206運(yùn)行的全部事務(wù)。因此,在發(fā)生系統(tǒng)崩潰或其他故障時(shí),可以僅使用事務(wù)記錄118和數(shù)據(jù)庫102的內(nèi)容再現(xiàn)在中斷的時(shí)候的系統(tǒng)的當(dāng)前狀態(tài)。
[0062]此外,在實(shí)踐中,可以不斷地更新事務(wù)記錄118,僅僅作為參考,但是它可以不是同步地反映數(shù)據(jù)庫102之內(nèi)的這種改變所必須的或期望的。而是,事務(wù)記錄118可以在一時(shí)間段內(nèi)、和/或直到事務(wù)的某一閾值數(shù)目才收集事務(wù),隨之會(huì)發(fā)生事務(wù)記錄118和數(shù)據(jù)庫102的同步,并且事務(wù)記錄118的內(nèi)容可以被清除。
[0063]圖3是示出圖1的系統(tǒng)100的示例操作的流程圖300。在圖3的示例中,操作302-316示出為分離的、連續(xù)的操作。然而,可以了解的是操作302-316中的任何兩個(gè)或多個(gè)可以以部分地或完全重疊或并行的方式、和/或以嵌套、迭代、分支或循環(huán)方式實(shí)現(xiàn)。此夕卜,在這種變化之內(nèi),可以了解的是,可以包括圖3的示例中未具體地示出的額外的或可替換操作,而同時(shí)可以省略操作302-316中的一個(gè)或多個(gè)。
[0064]在圖3的示例中,如上面參考的,可以接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求(302)。例如,請(qǐng)求處理器116可以通過應(yīng)用104接收事務(wù)請(qǐng)求,例如,作為圖2的應(yīng)用104與用戶202的交互的結(jié)果。
[0065]事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求可以分類為簡(jiǎn)單事務(wù)請(qǐng)求(304)。例如,如描述的,請(qǐng)求處理器116可以咨詢分類標(biāo)準(zhǔn)117以確定使用鍵值存儲(chǔ)108的內(nèi)容可能或必然滿足該第一事務(wù)請(qǐng)求。如描述的,這種分類可以基于對(duì)鍵值存儲(chǔ)108的實(shí)際認(rèn)識(shí),和/或可以基于第一事務(wù)請(qǐng)求的特性和類型。例如,如描述的,當(dāng)具體對(duì)數(shù)據(jù)可能包括在鍵值存儲(chǔ)108之內(nèi)時(shí)作為數(shù)據(jù)的直接的創(chuàng)建/讀取/更新/刪除的任何事務(wù)請(qǐng)求可以分類為簡(jiǎn)單事務(wù)請(qǐng)求。
[0066]同時(shí),事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求可以分類為復(fù)雜事務(wù)請(qǐng)求(306)。例如,請(qǐng)求處理器116可以基于分類標(biāo)準(zhǔn)117確定第二事務(wù)請(qǐng)求需要兩個(gè)或多個(gè)數(shù)據(jù)記錄或數(shù)據(jù)表的邏輯組合,或否則可能需要使用鍵值存儲(chǔ)108不太可能的或不能滿足的計(jì)算密集的計(jì)算。具體地,例如,可能要求一個(gè)或多個(gè)數(shù)據(jù)行(或全部數(shù)據(jù)表格)鎖定直到完成第二事務(wù)請(qǐng)求的任何這種事務(wù)請(qǐng)求將可能分類為復(fù)雜事務(wù)請(qǐng)求。
[0067]此外在圖3中,可以使用在接收到第一事務(wù)請(qǐng)求之前確定的、并且基于數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù)(308)。例如,鍵值存儲(chǔ)引擎110可以使用鍵值存儲(chǔ)108滿足第一事務(wù)請(qǐng)求,其中,如描述的,鍵值存儲(chǔ)108的鍵內(nèi)容可以已經(jīng)由結(jié)果計(jì)算器106使用存儲(chǔ)在數(shù)據(jù)庫102(和/或存儲(chǔ)在關(guān)系數(shù)據(jù)存儲(chǔ)114)中的數(shù)據(jù)在前地計(jì)算出。
[0068]可以使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù)(310)。例如,關(guān)系存儲(chǔ)引擎112可以使用關(guān)系數(shù)據(jù)存儲(chǔ)114滿足第二事務(wù)請(qǐng)求。
[0069]如果有的話,則可以更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值Λ (312)。例如,鍵值存儲(chǔ)引擎110可以基于由第一事務(wù)請(qǐng)求的運(yùn)行產(chǎn)生的鍵值存儲(chǔ)108的任何改變來更新鍵值Λ 120。
[0070]類似地,如果有的話,則可以更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系Δ (314)。例如,關(guān)系存儲(chǔ)引擎112可以使用關(guān)系數(shù)據(jù)存儲(chǔ)114基于第二事務(wù)的運(yùn)行來更新關(guān)系Δ 124。
[0071]最終在圖3的不例中,可以基于鍵值Δ和關(guān)系Δ運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步(316)。例如,同步器119可以使用鍵值Λ 120和關(guān)系Λ 124更新關(guān)系數(shù)據(jù)存儲(chǔ)114。類似地,同步器119可以使用鍵值Λ 120、關(guān)系Λ 124、以及結(jié)果計(jì)算器106 (如下面參照?qǐng)D7更詳細(xì)地描述的,到必須重新計(jì)算將要存儲(chǔ)在鍵值存儲(chǔ)108之內(nèi)的結(jié)果的程度)來更新鍵值存儲(chǔ)108。
[0072]圖4是示出圖1的結(jié)果計(jì)算器106的示例操作的流程圖400。S卩,例如,流程圖400示出可以運(yùn)行以填充鍵值存儲(chǔ)108的結(jié)果計(jì)算器106的操作,預(yù)期接收到的將來的事務(wù)請(qǐng)求可以由該鍵值存儲(chǔ)108滿足。
[0073]在圖4的示例中,可以通過結(jié)果計(jì)算器106加載全部必須的交易數(shù)據(jù)(402)。例如,結(jié)果計(jì)算器106可以訪問數(shù)據(jù)庫102,以便利用預(yù)期將是大量或部分將來的事務(wù)請(qǐng)求的主體的數(shù)據(jù)。例如,結(jié)果計(jì)算器106可以分析事務(wù)記錄118以確定事務(wù)請(qǐng)求的相對(duì)頻率或事務(wù)請(qǐng)求的類型,并且可以從其中推斷以確定從數(shù)據(jù)庫102提取哪個(gè)數(shù)據(jù)或哪個(gè)類型的數(shù)據(jù)。
[0074]類似地,結(jié)果計(jì)算器106可以確定將要在提取的數(shù)據(jù)上執(zhí)行的計(jì)算的類型,并且可以此后基于該數(shù)據(jù)運(yùn)行計(jì)算(404)。此外,隨時(shí)間,結(jié)果計(jì)算器106可以在系統(tǒng)100的操作期間監(jiān)督鍵值存儲(chǔ)108的使用,以便由此判斷數(shù)據(jù)和在鍵值存儲(chǔ)108的填充期間執(zhí)行的關(guān)聯(lián)的計(jì)算的選擇的相對(duì)成功。因此,例如,在鍵值存儲(chǔ)108的將來的更新期間,結(jié)果計(jì)算器106會(huì)更可能選擇在基于鍵值存儲(chǔ)108運(yùn)行事務(wù)請(qǐng)求的期間已經(jīng)由鍵值存儲(chǔ)引擎110頻繁地利用的數(shù)據(jù)和關(guān)聯(lián)的計(jì)算。
[0075]最終在圖4中,可以使用鍵值存儲(chǔ)108存儲(chǔ)計(jì)算結(jié)果(406)。在示例實(shí)施方式中,計(jì)算結(jié)果可以以使得能夠通過鍵值存儲(chǔ)引擎110在鍵值存儲(chǔ)108之內(nèi)快速、精確地查找期望的結(jié)果的方式存儲(chǔ)。具體地,例如,圖5示出可以利用來填充鍵值存儲(chǔ)108的內(nèi)容的B樹數(shù)據(jù)結(jié)構(gòu)。如所示,圖5的B樹數(shù)據(jù)結(jié)構(gòu)包括以分級(jí)(hierarchical)形式安排的許多節(jié)點(diǎn)502-520。因此,從圖5的數(shù)據(jù)結(jié)構(gòu)內(nèi)部查找任何特定數(shù)據(jù)項(xiàng)可以迅速地發(fā)生,因?yàn)閿?shù)據(jù)結(jié)構(gòu)的分布特性暗示訪問任何特定數(shù)據(jù)項(xiàng)將需要最多遍歷相對(duì)較小數(shù)目的分級(jí)數(shù)據(jù)結(jié)構(gòu)的層。
[0076]更具體地,如所示,每個(gè)節(jié)點(diǎn)可以包括多個(gè)鍵和關(guān)聯(lián)數(shù)據(jù)項(xiàng),每個(gè)項(xiàng)還可以與數(shù)據(jù)結(jié)構(gòu)的下一底層的節(jié)點(diǎn)和關(guān)聯(lián)的鍵/數(shù)據(jù)項(xiàng)關(guān)聯(lián)。因此,即使圖5的數(shù)據(jù)結(jié)構(gòu)的整體數(shù)據(jù)量顯著地增加,數(shù)據(jù)結(jié)構(gòu)層的深度也將不按比例增長(zhǎng),以使得實(shí)現(xiàn)為定位特定值的任何特定關(guān)鍵字的檢索僅需要訪問相對(duì)較小數(shù)目的層級(jí)來定位期望值。
[0077]在示例實(shí)施方式中,結(jié)果計(jì)算器106可以利用合適的散列算法來填充鍵值存儲(chǔ)108,以使得鍵值存儲(chǔ)引擎110可以利用相同的散列算法從鍵值存儲(chǔ)108訪問期望值。在這種場(chǎng)景中,如下面參照?qǐng)D8更詳細(xì)描述的,結(jié)果計(jì)算器106可以使用多個(gè)不同的計(jì)算設(shè)備利用散列算法來實(shí)現(xiàn)圖5的數(shù)據(jù)結(jié)構(gòu)。因此,這種計(jì)算設(shè)備中的任何給定的一個(gè)中的數(shù)據(jù)量可以限于可接受的或期望的水平。此外,可以同時(shí)地運(yùn)行許多分離的事務(wù)請(qǐng)求,以使得計(jì)算的負(fù)擔(dān)可以在不同的并行的計(jì)算設(shè)備中間分配。
[0078]例如,在通過鍵值存儲(chǔ)引擎110訪問鍵值存儲(chǔ)108期間,將簡(jiǎn)單地需要鍵值存儲(chǔ)引擎110使用合適的散列算法找到與特定事務(wù)請(qǐng)求有關(guān)的相關(guān)節(jié)點(diǎn)。然后,取決于所討論的事務(wù)請(qǐng)求的基礎(chǔ)特性,將簡(jiǎn)單地需要鍵值存儲(chǔ)引擎110重疊、添加、或去除相應(yīng)的節(jié)點(diǎn)。當(dāng)使用主存儲(chǔ)器實(shí)現(xiàn)鍵值存儲(chǔ)108時(shí),如圖2的示例中示出的,則例如,可以使用存儲(chǔ)器池預(yù)先分配可用存儲(chǔ)器空間用于實(shí)現(xiàn)鍵值存儲(chǔ)108。此外,在這種示例實(shí)施方式中訪問鍵值存儲(chǔ)108可以運(yùn)行為直接的存儲(chǔ)器訪問,而不需要在基礎(chǔ)操作系統(tǒng)級(jí)別的資源。
[0079]此外,在鍵值存儲(chǔ)108的背景下,可以在使用圖5的數(shù)據(jù)結(jié)構(gòu)時(shí)實(shí)現(xiàn)許多不同的變化和優(yōu)化。例如,如上面參考的,結(jié)果計(jì)算器106可以被配置為使用被考慮可能由輸入的事務(wù)請(qǐng)求頻繁地訪問的預(yù)先計(jì)算的結(jié)果來填充鍵值存儲(chǔ)108。然而,盡管如此,可能發(fā)生的是,鍵值存儲(chǔ)108的至少一些數(shù)據(jù)不被很頻繁地訪問。因此,為了節(jié)省鍵值存儲(chǔ)108的數(shù)據(jù)要求,圖5的數(shù)據(jù)結(jié)構(gòu)的不被共同地或頻繁地訪問的這種B樹節(jié)點(diǎn)可以重定位用于使用關(guān)系數(shù)據(jù)存儲(chǔ)114和/或底層數(shù)據(jù)庫102的存儲(chǔ)。在更特定示例中,鍵值存儲(chǔ)引擎110可以監(jiān)督圖5的B樹的每個(gè)節(jié)點(diǎn)的命中率,并且,隨時(shí)間,可以確定哪個(gè)這種節(jié)點(diǎn)被相對(duì)地和頻繁地利用。然后,這種節(jié)點(diǎn)可以運(yùn)動(dòng)到關(guān)系數(shù)據(jù)存儲(chǔ)114,也許連同同步器119的同步化操作一起。然后,如描述的,可以使用事務(wù)記錄118記錄對(duì)關(guān)系數(shù)據(jù)存儲(chǔ)114的這種更新,并且最終反映在數(shù)據(jù)庫102之內(nèi)。
[0080]圖6是示出圖1和圖2的系統(tǒng)的更詳細(xì)示例操作的流程圖600。在圖6的示例中,事務(wù)請(qǐng)求可以被接受¢02)。例如,如描述的,請(qǐng)求處理器116可以從應(yīng)用104接收事務(wù)請(qǐng)求,用于基于分類標(biāo)準(zhǔn)117將其分類為簡(jiǎn)單或復(fù)雜事務(wù)請(qǐng)求¢04)。然而,在額外的或可替換示例實(shí)施方式中,請(qǐng)求處理器116,或它的功能可以實(shí)現(xiàn)在鍵值存儲(chǔ)引擎110之內(nèi)或通過鍵值存儲(chǔ)引擎110實(shí)現(xiàn)。例如,可能發(fā)生的是,全部事務(wù)請(qǐng)求初始地路由到鍵值存儲(chǔ)引擎110,其然后可以確定這種事務(wù)請(qǐng)求是否可以使用鍵值存儲(chǔ)108被滿足。如果否,則事務(wù)請(qǐng)求可以被路由到關(guān)系存儲(chǔ)引擎114。
[0081]然而,在圖6的示例中一旦發(fā)生接受的事務(wù)請(qǐng)求的分類(604),則被確定分類為簡(jiǎn)單事務(wù)請(qǐng)求的事務(wù)請(qǐng)求還可以被分類為查詢或?qū)懭胧聞?wù)¢06)。如果事務(wù)請(qǐng)求是查詢操作,則可以通過鍵值存儲(chǔ)引擎110使用鍵值存儲(chǔ)108來運(yùn)行底層事務(wù)(608)。
[0082]通過特定示例,這種事務(wù)請(qǐng)求可以請(qǐng)求表示某一類型的項(xiàng)的全部實(shí)例的輸出的讀操作。然后,事務(wù)運(yùn)行可以涉及簡(jiǎn)單地訪問鍵值存儲(chǔ)108以從中檢索實(shí)例。另外,如上面參考的,鍵值存儲(chǔ)引擎110可以檢查鍵值Λ 120,以便確定對(duì)該鍵值Λ 120的任何先前的更新是否需要反映在為當(dāng)前事務(wù)請(qǐng)求計(jì)算的結(jié)果之內(nèi)。
[0083]例如,可能發(fā)生的是,在通過鍵值存儲(chǔ)引擎110使用鍵值存儲(chǔ)108運(yùn)行先前的事務(wù)期間,特定項(xiàng)類型的額外的實(shí)例被創(chuàng)建或插入。因此,鍵值存儲(chǔ)引擎110將更新事務(wù)請(qǐng)求結(jié)果以包括來自鍵值Λ 120的額外的實(shí)例。更一般地,然后,可以了解的是,鍵值存儲(chǔ)引擎110可以初始地運(yùn)行使用鍵值存儲(chǔ)108可以滿足的任何這種查詢操作,并且可以此后基于鍵值Δ 120的內(nèi)容來更新這種結(jié)果。
[0084]在一些情況下,可能發(fā)生的是可以不使用鍵值存儲(chǔ)108運(yùn)行請(qǐng)求的事務(wù)。例如,可能發(fā)生的是不存在包含在圖5的數(shù)據(jù)結(jié)構(gòu)之內(nèi)的相應(yīng)的鍵和相關(guān)值。例如,如描述的,可能發(fā)生的是,所需的數(shù)據(jù)值先前移動(dòng)到了關(guān)系存儲(chǔ)114,或從未通過結(jié)果計(jì)算器106包括在鍵值存儲(chǔ)108之內(nèi)。在此情況下,如此處描述的,失敗事務(wù)請(qǐng)求可以轉(zhuǎn)送到關(guān)系存儲(chǔ)引擎112從而用于運(yùn)行(例如,如下面參照操作618描述的)。然而,如果事務(wù)已經(jīng)成功地運(yùn)行(608),則例如,可以向應(yīng)用104和/或用戶202返回相應(yīng)的結(jié)果(610)。
[0085]同時(shí),如果確定原始的事務(wù)請(qǐng)求是寫操作(606),則可以通過鍵值存儲(chǔ)引擎110使用鍵值存儲(chǔ)108嘗試再次運(yùn)行底層事務(wù)(612)。如上參照操作608描述的,這種事務(wù)運(yùn)行可以包括連同鍵值Λ 120的考慮一起的鍵值存儲(chǔ)108的商詢,以便由此獲得當(dāng)前、精確的結(jié)果。此外,如還參照操作608描述的,不能通過鍵值存儲(chǔ)引擎110運(yùn)行事務(wù)可能導(dǎo)致向關(guān)系存儲(chǔ)引擎112轉(zhuǎn)送事務(wù)請(qǐng)求,由此用于運(yùn)行(例如,在操作618的背景下,如下面描述的)。
[0086]在鍵值存儲(chǔ)引擎110相對(duì)于鍵值存儲(chǔ)108的內(nèi)容來運(yùn)行寫操作的這種示例中,可以了解的是,這種事務(wù)將導(dǎo)致鍵值存儲(chǔ)108的內(nèi)容的改變,和/或?qū)钠浯_定鍵值存儲(chǔ)108的內(nèi)容的底層數(shù)據(jù)的改變。因此,如上面參照?qǐng)D1談到的,鍵值存儲(chǔ)引擎110的無效通知器122可以向關(guān)系存儲(chǔ)引擎112提供有關(guān)數(shù)據(jù)的在前版本不再有效或不是當(dāng)前的通知(箭頭615),以便保證關(guān)系存儲(chǔ)引擎112不嘗試使用這種使過時(shí)或無效數(shù)據(jù)來處理事務(wù)請(qǐng)求。
[0087]如談到的,在某些示例實(shí)施方式中,無效通知器122可以向關(guān)系存儲(chǔ)引擎112簡(jiǎn)單地通知數(shù)據(jù)無效,而不需要對(duì)關(guān)系Λ 124的內(nèi)容的相應(yīng)的立即更新。例如,在已經(jīng)更新了特定數(shù)據(jù)記錄的內(nèi)容的情況中,無效通知器122可以向關(guān)系△ 124簡(jiǎn)單地通知不應(yīng)該使用相應(yīng)的數(shù)據(jù)記錄直到將來的同步過程已經(jīng)被運(yùn)行。只要關(guān)系存儲(chǔ)引擎112不需要所討論的該數(shù)據(jù)記錄來滿足事務(wù)請(qǐng)求,就可以累積這種無效通知。然后,在一定量時(shí)間之后,或在特定數(shù)目的無效通知和/或事務(wù)請(qǐng)求之后,可以通過使用同步器119更新關(guān)系Λ 124以反映由無效通知器122指示的實(shí)際內(nèi)容改變。
[0088]在額外的或可替換實(shí)施方式中,關(guān)系存儲(chǔ)引擎112可以僅使用從無效通知器122接收到的無效通知的相關(guān)子集來執(zhí)行關(guān)系Λ124的更新。例如,關(guān)系存儲(chǔ)引擎112可以接收需要由無效通知器122指定為無效的數(shù)據(jù)的事務(wù)請(qǐng)求,并且可以此后要求對(duì)于需要對(duì)所討論的該事務(wù)請(qǐng)求提供當(dāng)前的、精確的結(jié)果的至少那些數(shù)據(jù)項(xiàng)立即更新關(guān)系△ 124。
[0089]此外,在基于從無效通知器122接收到的通知來更新關(guān)系數(shù)據(jù)124中,關(guān)系存儲(chǔ)引擎112的操作可以基于其他因素變化。例如,這種更新過程可以基于接收到的無效通知的類型而變化。例如,在無效通知指示從鍵值存儲(chǔ)108刪除特定數(shù)據(jù)記錄的情況中,關(guān)系存儲(chǔ)引擎112可以簡(jiǎn)單地需要將相關(guān)數(shù)據(jù)記錄關(guān)聯(lián)為在關(guān)系Λ 124之內(nèi)不可用,并且可以根本不需要從關(guān)系△ 124實(shí)際上刪除有關(guān)的數(shù)據(jù)記錄,直到諸如由同步器119執(zhí)行了鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114的完全同步的時(shí)候。另一方面,在新的數(shù)據(jù)被創(chuàng)建、插入、或添加到鍵值Λ 120的示例中,可能因此必須使用描述的一個(gè)或多個(gè)技術(shù)來更新關(guān)系Λ 124,以便向關(guān)聯(lián)的事務(wù)請(qǐng)求提供快速、精確的結(jié)果。
[0090]連同向關(guān)系存儲(chǔ)引擎通知由當(dāng)前寫入請(qǐng)求的事務(wù)運(yùn)行引起的數(shù)據(jù)無效¢14),鍵值存儲(chǔ)引擎110還可以更新鍵值Λ120自身。例如,如可以了解的,在從鍵值存儲(chǔ)108刪除數(shù)據(jù)的情況中,可以運(yùn)行對(duì)鍵值Λ 120的相應(yīng)更新¢16)。例如,被影響的數(shù)據(jù)記錄的鏡像可以包括在鍵值△ 120之內(nèi),并且或者標(biāo)記為已刪除/無效,或被改變以反映包括在運(yùn)行的事務(wù)之內(nèi)的底層寫操作。
[0091]因此,連同鍵值Λ 120 (616)的更新,可以返回事務(wù)結(jié)果(610)。如所示,此后可以繼續(xù)接受請(qǐng)求¢02),以使得分類為簡(jiǎn)單¢04)的后續(xù)的事務(wù)請(qǐng)求可以繼續(xù)以剛才描述的方式被處理,包括利用對(duì)于已經(jīng)在先前運(yùn)行的事務(wù)的上下文中做出的鍵值Λ 120的任何更新。
[0092]同時(shí),由請(qǐng)求處理器116分類為復(fù)雜(604)的事務(wù)請(qǐng)求可以轉(zhuǎn)送到關(guān)系存儲(chǔ)引擎112,因此事務(wù)可以被運(yùn)行¢18)。在運(yùn)行事務(wù)中,可以了解的是,關(guān)系存儲(chǔ)引擎112被配置為將關(guān)系Λ 124連同關(guān)系數(shù)據(jù)存儲(chǔ)114 一起利用,以便保證運(yùn)行的事務(wù)的結(jié)果是當(dāng)前的和精確的(具體地,如上所述,關(guān)系△ 124將至少反映處理當(dāng)前事務(wù)請(qǐng)求所需的相關(guān)數(shù)據(jù)的無效的指示,如上面參照箭頭615談到和示出的)。在任何情況下,如描述的,通過保證至少處理事務(wù)請(qǐng)求所需的關(guān)系△ 124的需要的部分是當(dāng)前的,并且連同從關(guān)系數(shù)據(jù)存儲(chǔ)114中獲得的相關(guān)數(shù)據(jù)一起考慮,關(guān)系存儲(chǔ)引擎112可以保證連同運(yùn)行事務(wù)一起提供快速和精確的結(jié)果。
[0093]通過在關(guān)系存儲(chǔ)引擎112中接收到的事務(wù)請(qǐng)求的分類的特性,非常可能的是關(guān)聯(lián)的事務(wù)的運(yùn)行(618)將導(dǎo)致對(duì)關(guān)系數(shù)據(jù)存儲(chǔ)114的更新或其他改變是否是不必須的。因此,類似于無效通知器122的無效通知器126可以進(jìn)行到向鍵值存儲(chǔ)引擎110通知受運(yùn)行的事務(wù)的影響的數(shù)據(jù)的無效¢20)。具體地,如通過箭頭621示出的,無效通知器126可以向鍵值Λ 120發(fā)出無效通知。如上參照無效通知器122描述的,這種通知可以僅提供足夠信息以防止鍵值存儲(chǔ)引擎110錯(cuò)誤地使用過時(shí)數(shù)據(jù)。此后,可以運(yùn)行鍵值Λ120和鍵值存儲(chǔ)108的局部或完全的同步,以便還保證通過鍵值存儲(chǔ)引擎返回的任何后續(xù)的結(jié)果(例如,在操作中610)是當(dāng)前和精確的。
[0094]如通過鍵值存儲(chǔ)108的特性可以了解的,對(duì)鍵值Λ 120的這種更新(616)可以最終依賴于結(jié)果計(jì)算器106的操作以向鍵值存儲(chǔ)引擎110提供將要用于處理事務(wù)請(qǐng)求的當(dāng)前、精確的數(shù)據(jù)。例如,如描述的,結(jié)果計(jì)算器106可以填充鍵值存儲(chǔ)108,包括基于數(shù)據(jù)庫102和/或關(guān)系數(shù)據(jù)存儲(chǔ)114的底層數(shù)據(jù)運(yùn)行某些計(jì)算。當(dāng)這種底層數(shù)據(jù)改變時(shí),例如,作為在處理事務(wù)請(qǐng)求中的關(guān)系存儲(chǔ)引擎112的操作的結(jié)果,則基于這種變更的數(shù)據(jù)的計(jì)算必須也被更新以便提供當(dāng)前的、精確的結(jié)果。這種更新可以作為一個(gè)或多個(gè)同步過程的一部分運(yùn)行,如此處描述的,具體地,下面參照?qǐng)D7詳細(xì)描述在更新鍵值Λ120中的結(jié)果計(jì)算器106的操作。
[0095]然后,連同向鍵值存儲(chǔ)引擎110通知有關(guān)數(shù)據(jù)無效(620),關(guān)系存儲(chǔ)引擎112可以進(jìn)行到更新關(guān)系Λ 124(622)。然后,事務(wù)結(jié)果可以返回到應(yīng)用104/用戶102(624),并且此后請(qǐng)求可以繼續(xù)被接受¢02)。
[0096]因此,流程圖600的操作602-624示出圖1的系統(tǒng)100可以以非??焖俸陀行У姆绞浇邮詹⑻幚泶罅康牟⑿械亟邮盏降氖聞?wù)請(qǐng)求,同時(shí)保證完成的高水平和精確度。隨時(shí)間,在這種操作期間,可以理解的是,鍵值120和關(guān)系Λ 124的內(nèi)容可以增長(zhǎng)并累積到不期望的數(shù)據(jù)量水平。例如,數(shù)據(jù)無效的通知可以在鍵值Λ 120和/或關(guān)系Λ 124之一或兩者之內(nèi)累積。更一般地,鍵值Λ 120和/或關(guān)系Λ 124的總大小可以增長(zhǎng)到不期望的大。在此情況下,以上描述的保持并使用鍵值△ 120和關(guān)系△ 124的益處可能部分地或完全抵消,因?yàn)樾枰3趾褪褂面I值△ 120和關(guān)系△ 124的計(jì)算資源可能最終勝過以上描述的益處。
[0097]因此,必須或期望的可能是執(zhí)行一個(gè)或多個(gè)同步過程(626)。關(guān)于這一點(diǎn),可以了解的是,存在上面談到的至少三個(gè)不同類型的同步過程,其可以以不同的時(shí)間比例和/或響應(yīng)于不同的觸發(fā)事件而實(shí)現(xiàn)。
[0098]例如,可以執(zhí)行的一類同步包括更新鍵值Λ 120和關(guān)系Λ 124之一或兩者,以便更新作為來自無效通知器122、126的早前接收的無效通知的結(jié)果、已經(jīng)被指定為無效的包含在鍵值Λ120和關(guān)系Λ124中的數(shù)據(jù)。如描述的,這種同步可能相對(duì)頻繁地發(fā)生,并且可以隨著當(dāng)前或預(yù)測(cè)的事務(wù)請(qǐng)求所需的標(biāo)記為無效的僅那些部分?jǐn)?shù)據(jù)的同步而發(fā)生。
[0099]第二類型同步是指鍵值Λ 120和關(guān)系Λ 124與鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114的同步。在這種同步期間,對(duì)數(shù)據(jù)做出并且反映在鍵值Λ 120和關(guān)系Λ 124之一或兩者之內(nèi)的全部改變可以通過鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114的相應(yīng)修改反映。因此,在完成這種同步過程時(shí),鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114的內(nèi)容將至少臨時(shí)彼此一致,并且鍵值Λ 120和關(guān)系Λ 124可以至少自身被臨時(shí)清空。
[0100]對(duì)于第三類型同步,還如上面談到的,通過關(guān)系存儲(chǔ)引擎112運(yùn)行的全部事務(wù)可以反映在事務(wù)記錄118中。因此,在第三類型同步過程期間,數(shù)據(jù)庫102可以更新以反映全部這種跟蹤的事務(wù)和關(guān)聯(lián)數(shù)據(jù)。因此,事務(wù)記錄118也可以被臨時(shí)清空,直到接收到新事務(wù)。在一些實(shí)施例中,在確定是否和如何計(jì)算某些結(jié)果以用于包括在鍵值存儲(chǔ)108之內(nèi)中,事務(wù)記錄118的內(nèi)容可以為了通過結(jié)果計(jì)算器106的長(zhǎng)期使用而保持。
[0101]如可以了解的,同步器119可以被配置為便利連同鍵值存儲(chǔ)引擎110和/或關(guān)系存儲(chǔ)引擎112的這種同步。通常,同步器119的操作可以分類為前向同步或反向同步。例如,前向同步可以指的是由通過鍵值存儲(chǔ)引擎110處理的事務(wù)引起的同步,其將反映在鍵值Λ 124中,并且此后傳播到關(guān)系Λ 124,并且因此傳播到關(guān)系數(shù)據(jù)存儲(chǔ)114以及此后,傳播到事務(wù)記錄118。
[0102]相反,反向同步可以理解為指的是作為由關(guān)系存儲(chǔ)引擎112運(yùn)行的事務(wù)的結(jié)果的、通過同步器119運(yùn)行的同步。即,如上面談到并且下面參照?qǐng)D7詳細(xì)描述的,在關(guān)系存儲(chǔ)引擎112中接收到由此用于運(yùn)行的事務(wù)請(qǐng)求將通常需要對(duì)鍵值Λ 120的更新,其可能需要完全或部分地由結(jié)果計(jì)算器106處理以便以當(dāng)前的、最新的方式來更新鍵值△ 120,以及最終鍵值存儲(chǔ)108。
[0103]通常,可以了解的是,第一類型同步(即,基于在Λ 120,124中接收到的無效通知的同步)可能最頻繁地和最容易地發(fā)生。同時(shí),第二類型同步(即,與關(guān)聯(lián)的清空Λ120、124的內(nèi)容一起,使用相應(yīng)的鍵值△ 120和關(guān)系△ 124更新鍵值存儲(chǔ)108和關(guān)系數(shù)據(jù)存儲(chǔ)114)可能相對(duì)更少頻繁地發(fā)生。最終,在示例實(shí)施方式中,第三同步過程(即,使用事務(wù)記錄118更新數(shù)據(jù)庫102)需要更不頻繁地發(fā)生。
[0104]圖7是示出反向同步過程的示例操作的流程圖700,與圖6的箭頭621大體地關(guān)聯(lián)。在圖7的示例中,假定已經(jīng)由關(guān)系存儲(chǔ)引擎112運(yùn)行復(fù)雜事務(wù),并且已經(jīng)與其結(jié)合地更新關(guān)系Λ124。同時(shí),如上面參照?qǐng)D6(例如,參照操作620)談到的,無效通知器126可以向鍵值存儲(chǔ)引擎110通知這種數(shù)據(jù)無效(702)。
[0105]還如上面參照?qǐng)D6描述的,可以因此利用相應(yīng)的新數(shù)據(jù)值更新鍵值Λ 120(704),例如或者立即連同接收到的數(shù)據(jù)無效的通知、或在關(guān)聯(lián)的同步過程期間。于是,結(jié)果計(jì)算器106可以被配置為重新運(yùn)行先前執(zhí)行的操作和關(guān)聯(lián)的計(jì)算以向鍵值存儲(chǔ)108提供預(yù)先計(jì)算的結(jié)果,但是使用鍵值Λ 120的當(dāng)前的、更新的值(706)。
[0106]因此,結(jié)果計(jì)算器106的相應(yīng)輸出也可以存儲(chǔ)在鍵值Λ120之內(nèi)(708)。然后,在由鍵值存儲(chǔ)引擎110運(yùn)行的后續(xù)的事務(wù)期間,鍵值△ 120將提供完整的和當(dāng)前的數(shù)據(jù),需要保證利用鍵值存儲(chǔ)108的事務(wù)提供當(dāng)前的、精確的事務(wù)結(jié)果。
[0107]圖8是示出圖1和圖2的系統(tǒng)的詳細(xì)示例實(shí)施方式的框圖。在圖8的示例中,多個(gè)計(jì)算設(shè)備802-810單獨(dú)地用于不同的角色,以便實(shí)現(xiàn)和優(yōu)化上面參照?qǐng)D1-圖7描述的各種特征和功能。
[0108]具體地,如示出的,可以利用負(fù)載平衡器802以實(shí)現(xiàn)請(qǐng)求處理器116、同步器119和/或結(jié)果計(jì)算器106。同時(shí),計(jì)算設(shè)備804、806、808提供鍵值存儲(chǔ)部件108、110的單個(gè)、并行實(shí)現(xiàn)。最終在圖8中,分離的計(jì)算設(shè)備810示出為實(shí)現(xiàn)相關(guān)存儲(chǔ)器部件112、114。在圖8的構(gòu)造的示例實(shí)施方式中,例如,可以使用SAP HANA數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)關(guān)系存儲(chǔ)引擎810,同時(shí)可以使用基于Java的應(yīng)用服務(wù)器實(shí)現(xiàn)各種鍵值存儲(chǔ)引擎804、806、808。
[0109]在示例實(shí)施方式中,可以平衡描述的系統(tǒng)和技術(shù)以保證事務(wù)隔離,其中需要一起完成許多數(shù)據(jù)改變,或者,如果這種完成不可能,則將一起失敗。然而,在此處描述的實(shí)施方式中,可能發(fā)生在一些場(chǎng)景中的是,這種一組數(shù)據(jù)改變的子集可以成功地完成并在完成剩余的數(shù)據(jù)改變之前返回相應(yīng)的結(jié)果。例如,可能發(fā)生的是返回部分結(jié)果然后同步過程不能成功地完成,以使得系統(tǒng)不能精確地提供全部請(qǐng)求的結(jié)果。
[0110]為了降低或消除相關(guān)的不期望的結(jié)果,可以在單個(gè)存儲(chǔ)位置(例如,圖8的804或810)之內(nèi)保持事務(wù)隔離。然后,相關(guān)的存儲(chǔ)引擎可以在提供結(jié)果的全部事務(wù)組之前等待(或,在一個(gè)或多個(gè)改變請(qǐng)求失敗的情況下,在提供相應(yīng)的錯(cuò)誤消息之前)。
[0111]另外,或替代地,響應(yīng)于上面談到的同步錯(cuò)誤的類型,可以重新嘗試同步過程(以便保持?jǐn)?shù)據(jù)一致性)。在最終同步失敗的不期望的事件中,則可以通知請(qǐng)求的應(yīng)用以使得它可以實(shí)現(xiàn)任何應(yīng)用專用的校正措施。
[0112]因此,諸如圖8的示例的實(shí)施方式,以及圖1和圖2的系統(tǒng)的各種其他實(shí)施例可以提供高速事務(wù)處理,即使對(duì)于很大數(shù)據(jù)量,和/或在存在大量的并行事務(wù)請(qǐng)求的情況下。通過實(shí)現(xiàn)鍵值存儲(chǔ)引擎110和鍵值存儲(chǔ)108以及數(shù)據(jù)庫層,而不是應(yīng)用層,如圖1的示例中示出的,可以避免數(shù)據(jù)庫層中的潛在的瓶頸。
[0113]此外,如通過圖8的示例示出的,圖1和圖2的系統(tǒng)可以容易地縮放,由此利用并行運(yùn)行的大量的計(jì)算設(shè)備,以使得再次,可以立即處理很大量的數(shù)據(jù)。此外,例如,如與嘗試依賴于大量計(jì)算資源以求獲得類似結(jié)果的解決方案比較,與獲得這種高水平性能關(guān)聯(lián)的費(fèi)用可以顯著地降低。
[0114]可以在數(shù)字的電子線路中實(shí)現(xiàn)此處描述的各種技術(shù)的實(shí)施方式,或在計(jì)算機(jī)硬件、固件、軟件或它們的組合中實(shí)現(xiàn)。實(shí)施方式可以被實(shí)現(xiàn)為計(jì)算機(jī)程序產(chǎn)品,即,有形地包括在信息載體(例如,在機(jī)器可讀存儲(chǔ)設(shè)備或傳播信號(hào))中的計(jì)算機(jī)程序,用于通過數(shù)據(jù)處理裝置運(yùn)行,或控制,例如,可編程處理器、計(jì)算機(jī)、或多個(gè)計(jì)算機(jī)的數(shù)據(jù)處理裝置的操作。諸如上面描述的計(jì)算機(jī)程序的計(jì)算機(jī)程序可以以任何形式的編程語言編寫,包括編譯或解釋語言,并且它可以以任何形式布置,包括作為獨(dú)立程序或作為模塊、組件、子例程、或適合用在計(jì)算環(huán)境中的其它單元??梢圆贾糜?jì)算機(jī)程序以在位于一個(gè)地點(diǎn)或分布于多個(gè)地點(diǎn)并由通信網(wǎng)絡(luò)互連的一個(gè)計(jì)算機(jī)或多個(gè)計(jì)算機(jī)上執(zhí)行。
[0115]可以通過運(yùn)行計(jì)算機(jī)程序的一個(gè)或多個(gè)可編程處理器執(zhí)行方法步驟以通過在輸入數(shù)據(jù)上操作并生成輸出來執(zhí)行功能。方法步驟也可以由專用邏輯電路,例如FPGA (現(xiàn)場(chǎng)可編程門陣列)或ASIC (專用集成電路)來執(zhí)行,并且裝置也可以實(shí)現(xiàn)為專用邏輯電路。
[0116]適合于計(jì)算機(jī)程序的執(zhí)行的處理器包括例如通用和專用微處理器二者以及任何種類的數(shù)字計(jì)算機(jī)的任何一個(gè)或多個(gè)處理器。一般地,處理器將從只讀存儲(chǔ)器或隨機(jī)存取存儲(chǔ)器或這二者接收指令和數(shù)據(jù)。計(jì)算機(jī)的元件可以包括用于執(zhí)行指令的至少一個(gè)處理器和用于存儲(chǔ)指令和數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)器件。一般地,計(jì)算機(jī)還可以包括一個(gè)或多個(gè)用于存儲(chǔ)數(shù)據(jù)的大容量存儲(chǔ)設(shè)備,例如磁盤、磁光盤或光盤,或可操作地耦接到該一個(gè)或多個(gè)大容量存儲(chǔ)設(shè)備以從其接收數(shù)據(jù)或向其傳送數(shù)據(jù)或二者皆有。適合于具體實(shí)現(xiàn)計(jì)算機(jī)程序指令和數(shù)據(jù)的信息載體包括所有形式的非易失性存儲(chǔ)器,例如包括:半導(dǎo)體存儲(chǔ)器件,例如EPROM、EEPROM和閃速存儲(chǔ)器件;磁盤,例如內(nèi)部硬盤或活動(dòng)磁盤;磁光盤;和⑶ROM和DVD-ROM盤。處理器和存儲(chǔ)器可以由專用邏輯電路補(bǔ)充或并入專用邏輯電路中。
[0117]為了提供與用戶的交互,實(shí)施方式可以被實(shí)現(xiàn)在具有例如CRT(陰極射線管)或LCD(液晶顯示器)監(jiān)視器之類的用于向用戶顯示信息的顯示設(shè)備以及鍵盤和例如鼠標(biāo)或跟蹤球之類的指示設(shè)備的計(jì)算機(jī)上,通過這些,用戶可以提供向計(jì)算機(jī)的輸入。另一種設(shè)備也可以用于提供與用戶的交互;例如,向用戶提供的反饋可以是任何傳感反饋的形式,例如,視覺反饋、聽覺反饋、或觸覺反饋;并且來自用戶的輸入可以以任何形式被接收,包括聲波、語音或觸覺的輸入。
[0118]實(shí)施方式可以被實(shí)現(xiàn)在如下的計(jì)算系統(tǒng)中:包括后端部件,例如作為數(shù)據(jù)服務(wù)器;或包括中間件部件,例如應(yīng)用服務(wù)器;或包括前端部件,例如具有圖形用戶界面或網(wǎng)絡(luò)瀏覽器的客戶端計(jì)算機(jī),通過圖形用戶界面或網(wǎng)絡(luò)瀏覽器,用戶可以與此說明書描述的主題的實(shí)施方式交互;或一個(gè)或多個(gè)這樣的后端、中間件或前端部件的任何組合。部件可以由任何形式或介質(zhì)的數(shù)字?jǐn)?shù)據(jù)通信(例如,通信網(wǎng)絡(luò))互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(“LAN”)和例如互聯(lián)網(wǎng)的廣域網(wǎng)(“WAN”)。
[0119]雖然已經(jīng)如此處描述的示出描述的實(shí)施方式的特定特征,但是本領(lǐng)域技術(shù)人員現(xiàn)在將想到許多修改、替換、改變和等效物。因此,將理解所附的權(quán)利要求意圖覆蓋落入實(shí)施例范圍的所有這種修改和改變。
【權(quán)利要求】
1.一種包括記錄在計(jì)算機(jī)可讀媒介上的、并且可由至少一個(gè)處理器運(yùn)行的指令的系統(tǒng),所述系統(tǒng)包括: 請(qǐng)求處理器,被配置為造成所述至少一個(gè)處理器接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求,并且還被配置為致使所述至少一個(gè)處理器將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求,并且將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求。 鍵值存儲(chǔ)引擎,被配置為造成所述至少一個(gè)處理器使用在接收到第一事務(wù)請(qǐng)求之前確定的、并且基于數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù),并且還被配置為如果有的話則更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值λ ; 關(guān)系存儲(chǔ)引擎,被配置為造成所述至少一個(gè)處理器使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù),并且還被配置為如果有的話則更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系△;以及 同步器,被配置為造成所述至少一個(gè)處理器基于鍵值△和關(guān)系△運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
2.如權(quán)利要求1所述的系統(tǒng),其中在包括數(shù)據(jù)庫的數(shù)據(jù)庫層中從至少一個(gè)應(yīng)用接收所述事務(wù)請(qǐng)求。
3.如權(quán)利要求1所述的系統(tǒng),其中所述請(qǐng)求處理器被配置為使用鍵值存儲(chǔ)的預(yù)先計(jì)算的結(jié)果、基于描述其滿意可能性的特征的分類標(biāo)準(zhǔn)來分類第一事務(wù)請(qǐng)求和第二事務(wù)請(qǐng)求。
4.如權(quán)利要求3所述的系統(tǒng),包括結(jié)果計(jì)算器,被配置為造成所述至少一個(gè)處理器基于將要由請(qǐng)求處理器接收到的將來的事務(wù)請(qǐng)求的預(yù)測(cè)的可能性來計(jì)算鍵值存儲(chǔ)的預(yù)先計(jì)算的結(jié)果。
5.如權(quán)利要求4所述的系統(tǒng),其中所述同步器被配置為造成所述結(jié)果計(jì)算器基于鍵值Δ和關(guān)系△與該同步共同地更新預(yù)先計(jì)算的結(jié)果。
6.如權(quán)利要求1所述的系統(tǒng),其中所述鍵值存儲(chǔ)引擎被配置為確定與第一事務(wù)請(qǐng)求關(guān)聯(lián)的鍵,并且在鍵值存儲(chǔ)之內(nèi)執(zhí)行相應(yīng)值的查找。
7.如權(quán)利要求1所述的系統(tǒng),其中所述鍵值存儲(chǔ)引擎包括無效通知器,被配置為基于更新鍵值△來更新關(guān)系Λ。
8.如權(quán)利要求7所述的系統(tǒng),其中同步器被配置為基于關(guān)系△并且基于從鍵值存儲(chǔ)引擎的無效通知器接收到的更新來更新關(guān)系存儲(chǔ),以及此后清空關(guān)系Λ的內(nèi)容。
9.如權(quán)利要求1所述的系統(tǒng),其中所述關(guān)系存儲(chǔ)引擎包括無效通知器,被配置為基于關(guān)系Λ的更新來更新鍵值Λ。
10.如權(quán)利要求9所述的系統(tǒng),其中所述同步器被配置為基于鍵值△并基于從關(guān)系存儲(chǔ)引擎的無效通知器接收到的更新來更新鍵值存儲(chǔ),以及此后清空鍵值Λ的內(nèi)容。
11.如權(quán)利要求1所述的系統(tǒng),其中所述請(qǐng)求處理器、鍵值存儲(chǔ)引擎、關(guān)系存儲(chǔ)引擎、以及同步器實(shí)現(xiàn)在系統(tǒng)的主存儲(chǔ)器中。
12.如權(quán)利要求11所述的系統(tǒng),其中所述關(guān)系存儲(chǔ)引擎被配置為造成所述至少一個(gè)處理器更新存儲(chǔ)在非易失性存儲(chǔ)器中的事務(wù)記錄并且利用由第一事務(wù)或第二事務(wù)的運(yùn)行引起的對(duì)其的任何改變來更新數(shù)據(jù)庫。
13.一種用于運(yùn)行存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的指令的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括: 接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求; 將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求; 將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求; 使用在接收到第一事務(wù)請(qǐng)求之前確定的、并且基于數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù); 使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù); 如果有的話則更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值Λ ; 如果有的話則更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系△;以及 基于鍵值△和關(guān)系△運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
14.如權(quán)利要求13所述的方法,其中更新鍵值△包括基于該鍵值△來更新關(guān)系Λ,并且進(jìn)一步其中更新關(guān)系△包括基于該關(guān)系△來更新鍵值Λ。
15.如權(quán)利要求13所述的方法,其中所述同步包括基于鍵值△和關(guān)系△與該同步共同地更新預(yù)先計(jì)算的結(jié)果。
16.一種有形地具體實(shí)現(xiàn)在非臨時(shí)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上并包括指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)所述指令被運(yùn)行時(shí),所述計(jì)算機(jī)程序產(chǎn)品被配置為: 接收對(duì)將要使用數(shù)據(jù)庫的數(shù)據(jù)運(yùn)行的事務(wù)的事務(wù)請(qǐng)求; 將該事務(wù)請(qǐng)求的第一事務(wù)請(qǐng)求分類為簡(jiǎn)單事務(wù)請(qǐng)求; 將該事務(wù)請(qǐng)求的第二事務(wù)請(qǐng)求分類為復(fù)雜事務(wù)請(qǐng)求; 使用在接收到第一事務(wù)請(qǐng)求之前確定的、并且基于數(shù)據(jù)的預(yù)先計(jì)算的結(jié)果的鍵值存儲(chǔ)來運(yùn)行滿足第一事務(wù)請(qǐng)求的第一事務(wù); 使用包括數(shù)據(jù)的子集的關(guān)系存儲(chǔ)來運(yùn)行滿足第二事務(wù)請(qǐng)求的第二事務(wù); 如果有的話則更新反映由第一事務(wù)引起的鍵值存儲(chǔ)的改變的鍵值Λ ; 如果有的話則更新反映由第二事務(wù)引起的關(guān)系存儲(chǔ)的改變的關(guān)系△;以及 基于鍵值△和關(guān)系△運(yùn)行鍵值存儲(chǔ)和關(guān)系存儲(chǔ)的同步。
17.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中在更新鍵值△中,當(dāng)所述指令被運(yùn)行時(shí)被配置為基于該鍵值△來更新關(guān)系△,以及,在更新關(guān)系△中,當(dāng)所述指令被運(yùn)行時(shí)被配置為基于該關(guān)系Λ來更新鍵值Λ。
18.如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述同步包括基于關(guān)系△并基于從鍵值存儲(chǔ)接收到的更新來更新關(guān)系存儲(chǔ),以及此后清空關(guān)系△的內(nèi)容,以及進(jìn)一步其中所述同步包括基于鍵值Λ并基于從關(guān)系存儲(chǔ)接收到的更新來更新鍵值存儲(chǔ),以及此后清空鍵值Λ的內(nèi)容。
19.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中所述同步包括基于鍵值△和關(guān)系Λ與該同步共同地更新預(yù)先計(jì)算的結(jié)果。
20.如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中在包括數(shù)據(jù)庫的數(shù)據(jù)庫層中從至少一個(gè)應(yīng)用接收所述事務(wù)請(qǐng)求。
【文檔編號(hào)】G06F17/30GK104239357SQ201310250265
【公開日】2014年12月24日 申請(qǐng)日期:2013年6月21日 優(yōu)先權(quán)日:2013年6月21日
【發(fā)明者】董玢, 魏正隆, 申永源 申請(qǐng)人:Sap歐洲公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
长武县| 青海省| 灵璧县| 明水县| 镇坪县| 崇仁县| 三原县| 申扎县| 泸西县| 日喀则市| 桃源县| 阳新县| 临海市| 隆化县| 株洲县| 浮山县| 平安县| 克什克腾旗| 平武县| 皋兰县| 宁德市| 桃园市| 南昌市| 长乐市| 金堂县| 滦平县| 江门市| 德庆县| 左云县| 柳江县| 邹平县| 金湖县| 新龙县| 广水市| 武威市| 如皋市| 嘉义市| 湘潭县| 宁夏| 章丘市| 进贤县|