專利名稱:共享可定制多租戶數(shù)據(jù)的存儲器中高速緩存的制作方法
共享可定制多租戶數(shù)據(jù)的存儲器中髙速緩存
北旦冃豕
顧客關(guān)系管理解決(CRM)解決方案提供了從通過購買和售后的首次接觸中創(chuàng)建并維護顧客的清晰景像所需的工具和能力。對于復(fù)雜的組織,CRM系統(tǒng)可以提供用于幫助改進銷售和巿場營銷組織定標(biāo)新顧客、管理市場營銷活動以及激勵銷售活動的方式的特征和能力。CRM系統(tǒng)可以包括由組織內(nèi)部或外部的用戶單獨地或以共享的方式使用的許多組件、硬件和軟件。
由此,典型的CRM系統(tǒng)主存多個組織("租戶")??梢栽试S每一個租戶通過添加/刪除/修改實體、屬性、關(guān)系、表單、視圖、代碼級可擴展性插件等來定制其CRM系統(tǒng)。為了分隔由不同租戶實現(xiàn)的定制,定制可以被分成存在于一個數(shù)據(jù)庫或多個數(shù)據(jù)庫中的單獨的表格。不管數(shù)據(jù)劃分,可能期望在運行時共享盡可能多的非定制、但可定制的信息以最小化存儲器需求并提高性能。
概述
提供本概述是為了以簡化的形式介紹將在以下詳細(xì)描述中進一步描述的一些概念。本概述并不旨在標(biāo)識要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。
各實施例涉及高速緩存共享可定制數(shù)據(jù)以便優(yōu)化多租戶數(shù)據(jù)共享環(huán)境中的存儲器和性能。將指示租戶數(shù)據(jù)的定制狀態(tài)的屬性存儲在高速緩存中以使得系統(tǒng)能夠在高速緩存所請求的數(shù)據(jù)的同時將數(shù)據(jù)從單獨的租戶數(shù)據(jù)存儲提供給租戶,并且在所請求的數(shù)據(jù)已經(jīng)被高速緩存的情況下不必訪問單獨的數(shù)據(jù)存儲。可以為多個租戶存儲"系統(tǒng)級"或非定制數(shù)據(jù)的單個副本以便節(jié)省每一次取出操作中的存儲器和系統(tǒng)資源。
通過閱讀以下詳細(xì)描述并査閱相關(guān)聯(lián)的附圖,這些和其他特征和優(yōu)點將是顯而易見的??梢岳斫?,前述一般描述和以下詳細(xì)描述均僅是說明性的,且不限制所要求保護的各方面。
附圖簡述
圖1示出了示例CRM系統(tǒng)體系結(jié)構(gòu);
圖2示出了用于共享可定制多租戶數(shù)據(jù)高速緩存模型的示例屬性表;
圖3示出了在實現(xiàn)共享可定制多租戶數(shù)據(jù)高速緩存的系統(tǒng)中的租戶請求處理
的各示例情形;
圖4是其中可以實現(xiàn)各實施例的示例聯(lián)網(wǎng)環(huán)境; 圖5是其中可以實現(xiàn)各實施例的示例計算操作環(huán)境的框圖; 圖6示出了用于共享可定制多租戶數(shù)據(jù)高速緩存的過程的邏輯流程圖;以及 圖7示出了圖6的共享可定制多租戶數(shù)據(jù)高速緩存的過程的一部分的邏輯流程圖。
詳細(xì)描述
如以上所簡要描述的,允許存儲器中的被存儲在多個表且甚至是多個數(shù)據(jù)庫 中的共享非定制但可定制數(shù)據(jù)具有跟蹤單個表格中的什么數(shù)據(jù)已經(jīng)被定制的能力。 在以下詳細(xì)描述中,參考了構(gòu)成其一部分并作為說明示出了各具體實施例或示例的 附圖??山M合這些方面,可利用其他方面并且可以做出結(jié)構(gòu)上的改變而不背離本發(fā) 明的范圍。由此,以下詳細(xì)描述并不旨在限制,本發(fā)明的范圍由所附權(quán)利要求及其 等效方案所定義。
雖然在結(jié)合在個人計算機上的操作系統(tǒng)上運行的應(yīng)用程序執(zhí)行的程序模塊的 一般上下文環(huán)境中描述了各實施例,但是本領(lǐng)域的技術(shù)人員會認(rèn)識到各方面也可以 結(jié)合其他程序模塊實現(xiàn)。
一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、 程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。而且,如本領(lǐng)域的技術(shù)人員理解的,各 實施例可以用其他計算機系統(tǒng)配置來實踐,包括手持式設(shè)備、多處理器系統(tǒng)、基于 微處理器或可編程消費者電子設(shè)備、小型機、大型機等等。各實施例還能在分布式 計算環(huán)境中實現(xiàn),其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備完成。在分布式計 算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。
各實施例可實現(xiàn)為計算機過程(方法)、計算系統(tǒng)、或者制造品,如計算機 程序產(chǎn)品或計算機可讀介質(zhì)。計算機程序產(chǎn)品可以是計算機系統(tǒng)可讀并編碼用于執(zhí) 行計算機進程的指令的計算機程序的計算機存儲介質(zhì)。計算機程序產(chǎn)品也可以是計 算系統(tǒng)可讀并編碼用于執(zhí)行計算機進程的指令的計算機程序的載波上的傳播信號。
參考圖l,使出了 CRM系統(tǒng)100的示例體系結(jié)構(gòu)。CRM系統(tǒng)100可以用CRM體系結(jié)構(gòu)"棧"內(nèi)的四個物理層來實現(xiàn)。這些層包括用于向用戶呈現(xiàn)數(shù)據(jù)和用戶界
面的表示層(例如,基于web的表示)以及用于與諸如電子郵件應(yīng)用程序、時間 安排應(yīng)用程序、日歷制定應(yīng)用程序等應(yīng)用程序交互的應(yīng)用層104。這些層還包括操 作業(yè)務(wù)或域邏輯的CRM平臺116以及用于管理與數(shù)據(jù)庫服務(wù)器114的交互的數(shù)據(jù) 訪問層108。
可組合這些層中的一個和多個或者每一層都可包括諸如數(shù)據(jù)管理層和數(shù)據(jù)存 儲層等存在于用于數(shù)據(jù)訪問的單獨的進程空間中的單獨的子層。目錄服務(wù)器112 可以提供用于標(biāo)識產(chǎn)品內(nèi)的安全主體、角色和組的目錄服務(wù)。應(yīng)用服務(wù)器116可以 提供諸如上述輔助服務(wù)。
圖2示出了用于共享可定制多租戶數(shù)據(jù)高速緩存模型的示例性屬性表200。 CRM系統(tǒng)中的每一種類型的可定制數(shù)據(jù)(例如,實體、屬性或關(guān)系)都具有其自 已的特性,并且因此被存儲在其自已的表(例如,實體表、屬性表或關(guān)系表)中。 在多租戶CRM系統(tǒng)中,每一個租戶可具有其自已的對應(yīng)于每一種類型的可定制數(shù) 據(jù)的表格。例如,每一個租戶都可具有實體表、屬性表和關(guān)系表。
根據(jù)各實施例,CRM系統(tǒng)還可以提供可定制數(shù)據(jù)("系統(tǒng)"或"非定制"數(shù) 據(jù))的初始集合,該初始集合是CRM系統(tǒng)中每一個租戶在安裝和配置后可從其開 始的集合。因為頻繁訪問定制數(shù)據(jù),所以可以按高效的方式來為每一個組織將該定 制數(shù)據(jù)高速緩存在存儲器中。這些數(shù)據(jù)中的大多數(shù)都可跨許多租戶而保持不變。因 此,各實施例提供了用于共享數(shù)據(jù)同時維護由特定租戶定制的數(shù)據(jù)的專用副本的方 法。
在CRM系統(tǒng)中,存儲器中高速緩存可應(yīng)用于 *元數(shù)據(jù)定制(實體、屬性、關(guān)系等); *用戶界面定制(表單、視圖等);
*軟件開發(fā)工具包(SDK)定制(SDK請求/響應(yīng)等);以及 *代碼級定制(可擴展性插件等)
根據(jù)某些實施例,共享且可定制的多租戶數(shù)據(jù)可以通過跟蹤數(shù)據(jù)行的"定制 級別"來處理。該信息確定行是共享行、來自于顧客的新的行、已經(jīng)被定制的共享 行、還是已經(jīng)被刪除的共享行。然后然后使用該信息來確定哪些信息可以共享哪些 信息不可共享。圖2中的表200示出了該"定制級別"概念。
表200包括第一列中的屬性標(biāo)識符221、第二列中的屬性名稱222、第三列中 的數(shù)據(jù)長度223。實體標(biāo)識符224和兩個屬性,即可為空字段225和自定義字段226在后面各列中。最后一列包括定制級別屬性227的列表。"定制級別"O意味著"系 統(tǒng)"(系統(tǒng)級數(shù)據(jù)),l意味著"自定義"(數(shù)據(jù)對于特定租戶是新的或者是對系 統(tǒng)數(shù)據(jù)的修改),而2意味著"已刪除"。
在示例表200中,名稱為"收入"的屬性已經(jīng)被刪除(原始版本由行231指 示,已更新版本由行232列出),名稱為"名稱"的屬性己經(jīng)被定制(原始版本由 行233指示,已更新版本由行234列出),而名稱為"新字段"的屬性已經(jīng)由租戶 創(chuàng)建(如行235中所列出的)。"定制級別"為0的數(shù)據(jù)是還未被定制的數(shù)據(jù)并且 由此可跨租戶"共享"。
當(dāng)CRM系統(tǒng)需要從高存緩存中取出可定制數(shù)據(jù)的一部分時,該高速緩存首先 確定該數(shù)據(jù)部分是否已經(jīng)從對應(yīng)于特定租戶的數(shù)據(jù)庫中取出。如果該數(shù)據(jù)先前沒有 被取出過,則高速緩存取出該數(shù)據(jù)部分。高速緩存然后査看所取出的數(shù)據(jù)部分的"定 制級別"。如果"定制級別"為0,則高速緩存檢查以確定該系統(tǒng)數(shù)據(jù)是否已經(jīng)在 該高速緩存中并且如果否,則將該系統(tǒng)數(shù)據(jù)添加到高速緩存。該高速緩存然后插入 "系統(tǒng)標(biāo)記",其向高速緩存指示如果該租戶再次請求該數(shù)據(jù),則該高速緩存應(yīng)改 為從高速緩存存儲中取出該系統(tǒng)數(shù)據(jù)。如果該數(shù)據(jù)片段的"定制級別"為1,則高 速緩存將該數(shù)據(jù)插入對應(yīng)于特定租戶的高速緩存存儲中。如果該數(shù)據(jù)部分的"定制 級別"為2,則不將該數(shù)據(jù)添加到高速緩存。相反,添加"刪除標(biāo)記",其向高速 緩存指示如果該租戶再次請求該數(shù)據(jù)片段,則高速緩存應(yīng)該返回該數(shù)據(jù)不存在的通 知。
圖3示出了在實現(xiàn)共享可定制多租戶數(shù)據(jù)高速緩存的系統(tǒng)中客戶機請求處理 的各示例性情形。表370的示例性情形結(jié)合示例共享數(shù)據(jù)高速緩存系統(tǒng)300來示出。
根據(jù)各實施例的操作開始于在CRM系統(tǒng)中從與租戶相關(guān)聯(lián)的客戶機342接收 對數(shù)據(jù)的請求(354)??蛻魴C可以是通過客戶機設(shè)備或應(yīng)用程序來訪問系統(tǒng)的CRM 系統(tǒng)的任何用戶(內(nèi)部或外部)。如先前所提到的,每一個租戶都可以與可定制共 享數(shù)據(jù)相關(guān)聯(lián),該數(shù)據(jù)的一部分可以是非定制的(系統(tǒng)級)而另一部分由該特定租 戶定制。另外,可以在該系統(tǒng)中刪除對應(yīng)于租戶的數(shù)據(jù)部分。該CRM系統(tǒng)可以包 括對應(yīng)于每一個租戶的單獨的數(shù)據(jù)庫,諸如對應(yīng)于租戶A的數(shù)據(jù)庫(A) 346、對 應(yīng)于租戶B的數(shù)據(jù)庫(B) 348以及對應(yīng)于租戶C的數(shù)據(jù)庫(C) 350。該CRM系 統(tǒng)還可包括單個數(shù)據(jù)庫,其各部分被分配給各個租戶。
當(dāng)在CRM系統(tǒng)高速緩存344處接收到請求時,高速緩存344確定所請求的數(shù) 據(jù)是否先前已經(jīng)從對應(yīng)于作出請求的租戶的數(shù)據(jù)庫中取出,并且如果是,則所請求的數(shù)據(jù)的定制級別屬性是什么。高速緩存344通過檢査高速緩存存儲362來確定該 數(shù)據(jù)是否已被取出(如附圖標(biāo)記360所示)。
如果該數(shù)據(jù)先前還沒有被取出過,則高速緩存344訪問相關(guān)數(shù)據(jù)庫并取出該 數(shù)據(jù)或確定該數(shù)據(jù)不再存在于該數(shù)據(jù)庫中(例如,通信356、 358)。如果該數(shù)據(jù) 先前已被取出,并且作為對應(yīng)于該租戶的"系統(tǒng)標(biāo)記"屬性來被存儲在高速緩存中, 則該租戶需要系統(tǒng)級數(shù)據(jù)(非定制),于是高速緩存將從高速緩存存儲中取出系統(tǒng) 級(非定制)數(shù)據(jù)并且將其提供給作出請求的租戶。如果數(shù)據(jù)是首次被取出并且該 數(shù)據(jù)的定制級別指示對于該租戶數(shù)據(jù)是系統(tǒng)級(非定制)數(shù)據(jù),則高速緩存344 將向高速緩存存儲362添加該系統(tǒng)級數(shù)據(jù),只要該數(shù)據(jù)尚未被存儲在那里。另外, 在高速緩存存儲362中插入對應(yīng)于該租戶的"系統(tǒng)標(biāo)記"屬性。"系統(tǒng)標(biāo)記"屬性 使得高速緩存能夠向請求該特定數(shù)據(jù)的任何客戶機提供系統(tǒng)級(非定制)的數(shù)據(jù), 而不必為每一個租戶存儲該數(shù)據(jù)的多個副本。如果數(shù)據(jù)已被定制,則高速緩存直接 為該租戶存儲該自定義數(shù)據(jù),由此使得高速緩存能夠識別定制的數(shù)據(jù)并且將其提供 給作出請求的租戶。此外,如果所請求的數(shù)據(jù)不再存在于租戶數(shù)據(jù)庫中,則可將"刪 除標(biāo)記"插入高速緩存存儲中以便向?qū)碜鞒稣埱蟮目蛻魴C指示對于該租戶該數(shù)據(jù) 不存在,而不必首先檢查租戶數(shù)據(jù)庫。
此外,可以使得系統(tǒng)能夠識別和分配特定類型的定制的屬性(在多個租戶使 用相同類型的定制的情況下)。然后,高速緩存可以將每一個定制的數(shù)據(jù)的一個副 本存儲在其本地存儲中,并且基于定制類型屬性來將其提供給作出請求的租戶。
現(xiàn)在參考表370的個示例情形,根據(jù)第一行中的第一種情形,租戶A請求鍵 為1的數(shù)據(jù)。高速緩存344訪問高速緩存存儲(362)并發(fā)現(xiàn)對于該租戶在該高速 緩存中不存在對應(yīng)于該鍵為1的項的條目。由此,高速緩存344訪問(356)數(shù)據(jù) 庫(A) 346、取出該數(shù)據(jù)、通知該數(shù)據(jù)的定制級別為1 (已定制),并且將該數(shù)據(jù) 直接存儲在對應(yīng)于作出請求的租戶的高速緩存存儲362中,并且然后將所取出的數(shù) 據(jù)提供給作出請求的租戶A。
根據(jù)第二行中的第二種情形,租戶A請求鍵為2的另一數(shù)據(jù)部分。該數(shù)據(jù)先 前已經(jīng)被取出并且在高速緩存存儲362中發(fā)現(xiàn),然而,該高速緩存中的數(shù)據(jù)對于該 租戶是"系統(tǒng)標(biāo)記"。由此,高速緩存從高速緩存存儲中取出該系統(tǒng)(非定制)數(shù) 據(jù)并將其返回給租戶A,而不必從數(shù)據(jù)庫(A) 346中取出該數(shù)據(jù)。
根據(jù)第三行中的第三種情形,租戶A請求鍵為3的另一數(shù)據(jù)部分。該數(shù)據(jù)先 前已經(jīng)從數(shù)據(jù)庫(A) 346中刪除,并且該刪除指示使用"刪除標(biāo)記"屬性來存儲在高速緩存存儲362中。由此,高速緩存344向租戶A提供所請求的數(shù)據(jù)不再存 在的通知,而不必檢查數(shù)據(jù)庫(A) 346。
根據(jù)第四行中的第四種情形,租戶B請求鍵為3的數(shù)據(jù)。該數(shù)據(jù)還未被租戶 B取出過,因此高速緩存344訪問(358)數(shù)據(jù)庫(B) 348,取出該數(shù)據(jù)并將其存 儲在高速緩存存儲362中,因為它看到在數(shù)據(jù)庫(B) 348中該數(shù)據(jù)的定制級別為 1,并且因此租戶B已定制該數(shù)據(jù),并且然后將其提供給作出請求的租戶B。
根據(jù)第五行中的第五種情形,租戶C請求鍵為2的數(shù)據(jù)。租戶C以前請求過 該數(shù)據(jù)并且高速緩存已從數(shù)據(jù)庫(C) 350中取出該數(shù)據(jù)、通知定制級別為0 (對 于系統(tǒng)數(shù)據(jù))并且插入對應(yīng)于該項目的系統(tǒng)標(biāo)記。非定制數(shù)據(jù)先前已經(jīng)為租戶A 取出過并且在高速緩存存儲362中發(fā)現(xiàn)。因為該數(shù)據(jù)是系統(tǒng)級數(shù)據(jù),所以該數(shù)據(jù)由 所有租戶共享,并且因為高速緩存存儲具有對于租戶C的對應(yīng)于鍵為2的數(shù)據(jù)的 "系統(tǒng)標(biāo)記",所以可以將由租戶A取出的系統(tǒng)數(shù)據(jù)提供給租戶C,而不必從數(shù) 據(jù)庫(C) 350中取出該數(shù)據(jù)。
圖3中的共享定制數(shù)據(jù)高速緩存系統(tǒng)和各情形出于說明目的而是示例性的。 用于高速緩存共享定制數(shù)據(jù)的系統(tǒng)可使用運用此處所描述的原理的更多或更少的 組件來實現(xiàn)。高速緩存可定制數(shù)據(jù)并將其提供給租戶的其他情形在如此處所描述的 系統(tǒng)中也是可能的。
圖4是其中可實現(xiàn)各實施例的示例聯(lián)連網(wǎng)環(huán)境。CRM系統(tǒng)/應(yīng)用程序和對共享 可定制數(shù)據(jù)的高速緩存可以在單個計算設(shè)備上本地地實現(xiàn)或者可以在多個物理和 虛擬客戶機和服務(wù)器上以分布式方式實現(xiàn)。它們也可以在非集群系統(tǒng)或采用通過一 個或多個網(wǎng)絡(luò)(例如,網(wǎng)絡(luò)490)來進行通信的多個節(jié)點的集群系統(tǒng)中實現(xiàn)。
這一系統(tǒng)可以包括服務(wù)器、客戶機、因特網(wǎng)服務(wù)供應(yīng)商和通信介質(zhì)的任何拓 撲結(jié)構(gòu)。同樣,該系統(tǒng)可以具有靜態(tài)的或動態(tài)拓?fù)浣Y(jié)構(gòu)。術(shù)語"客戶機"可以指客 戶機應(yīng)用程序或客戶機設(shè)備。雖然實現(xiàn)對共享可定制數(shù)據(jù)的高速緩存的聯(lián)網(wǎng)系統(tǒng)可 涉及多得多的組件,但是結(jié)合該附圖討論相關(guān)組件。
與CRM系統(tǒng)相關(guān)聯(lián)的應(yīng)用程序可以在各單獨客戶機設(shè)備481-483中實現(xiàn)或者 可以在服務(wù)器492中執(zhí)行并且可以從客戶機設(shè)備(或應(yīng)用程序)中的任何一個訪問。 類似地,與CRM系統(tǒng)相關(guān)聯(lián)的共享可定制數(shù)據(jù)高速緩存服務(wù)可以在客戶機設(shè)備中 的一個,更典型地在一個或多個服務(wù)器(例如,服務(wù)器492)中本地地執(zhí)行并且由 客戶機設(shè)備(或應(yīng)用程序)訪問。
與在CRM系統(tǒng)中高速緩存共享可定制數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)存儲可被包含在諸如數(shù)據(jù)存儲496等單個數(shù)據(jù)存儲中或者分布在與各單獨客戶機設(shè)備、服務(wù)器等相關(guān) 聯(lián)的多個數(shù)據(jù)存儲上。可使用專用數(shù)據(jù)庫服務(wù)器(例如,數(shù)據(jù)庫服務(wù)器494)來協(xié) 調(diào)這些數(shù)據(jù)存儲中的一個或多個中的數(shù)據(jù)取出和存儲。
網(wǎng)絡(luò)490可包括諸如企業(yè)網(wǎng)絡(luò)等安全網(wǎng)絡(luò)以及諸如無線開放式網(wǎng)絡(luò)或因特網(wǎng) 等非安全網(wǎng)絡(luò)。網(wǎng)絡(luò)490提供此處所描述的節(jié)點之間的通信。作為示例而非限制, 網(wǎng)絡(luò)490可以包括包括諸如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及諸如聲學(xué)、 RF、紅外線和其它無線介質(zhì)等無線介質(zhì)。
可以采用計算設(shè)備、應(yīng)用程序、數(shù)據(jù)源、數(shù)據(jù)分發(fā)系統(tǒng)的許多其他配置來實 現(xiàn)高速緩存共享可定制多租戶數(shù)據(jù)。此外,圖4中所討論的聯(lián)網(wǎng)環(huán)境僅僅出于說明 目的。各實施例不限于這些示例應(yīng)用程序、模塊或過程。
圖5及相關(guān)聯(lián)的討論旨在提供對其中可實現(xiàn)各實施例的合適的計算環(huán)境的簡 要概括描述。參考圖5,示出了諸如計算設(shè)備500的示例計算操作環(huán)境的框圖。在 基本配置中,計算設(shè)備500可以是結(jié)合CRM服務(wù)來提供共享可定制數(shù)據(jù)高速緩存 的服務(wù)器或客戶機設(shè)備,并且通常包括至少一個處理單元502和系統(tǒng)存儲器504。 計算設(shè)備500還可包括在執(zhí)行程序中合作的多個處理單元。取決于計算設(shè)備的確切 配置和類型,系統(tǒng)存儲器504可以是易失性的(諸如RAM)、非易失性的(諸如 ROM、閃存等)或是兩者的某種組合。系統(tǒng)存儲器504通常包括適于控制聯(lián)網(wǎng)的 個人計算機的運作的操作系統(tǒng)505,諸如來自華盛頓州雷德蒙市的微軟公司的 WINDOWS⑧操作系統(tǒng)。系統(tǒng)存儲器504還可包括諸如程序模塊506、 CRM應(yīng)用程 序522和高速緩存模塊524等一個或多個軟件應(yīng)用程序。
CRM應(yīng)用程序522可以是向與計算設(shè)備500相關(guān)聯(lián)的客戶機應(yīng)用程序提供顧 客關(guān)系管理服務(wù)的CRM服務(wù)的單獨的應(yīng)用程序或集成模塊。高速緩存模塊524可 以提供與如上所述的確定所請求的數(shù)據(jù)的定制級別屬性、高速緩存所取出的數(shù)據(jù)以 及將所請求的數(shù)據(jù)或關(guān)于數(shù)據(jù)的通知提供給CRM應(yīng)用程序相關(guān)聯(lián)的服務(wù)。該基本 配置在圖5中由虛線508內(nèi)的那些組件示出。
計算設(shè)備500可具有附加特征或功能。例如,計算設(shè)備500還可包括附加數(shù) 據(jù)存儲設(shè)備(可移動和/或不可移動),諸如例如,磁盤、光盤或帶等。這些附加 存儲在圖5中由可移動存儲509和不可移動存儲510示出。計算機存儲介質(zhì)可包括 以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方 法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器504、可 移動存儲509和不可移動存儲510都是計算機存儲介質(zhì)的示例。計算機存儲介質(zhì)包括,但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù) 字多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲 設(shè)備、或能用于存儲所需信息且可以由計算設(shè)備500訪問的任何其它介質(zhì)。任何這 樣的計算機存儲介質(zhì)都可以是設(shè)備500的一部分。計算設(shè)備500還可具有諸如鍵盤、 鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等輸入設(shè)備512。還可包括諸如顯示器、 揚聲器、打印機等輸出設(shè)備514。這些設(shè)備在本領(lǐng)域中公知且無需在此處詳細(xì)討論。
計算設(shè)備500還可包含可允許該這杯諸如通過例如內(nèi)聯(lián)網(wǎng)或因特網(wǎng)等分布式 計算環(huán)境中的無線網(wǎng)絡(luò)來與其他計算設(shè)備518進行通信的通信連接516。其他計算 設(shè)備518可以包括執(zhí)行與數(shù)據(jù)訪問和目錄服務(wù)相關(guān)聯(lián)的應(yīng)用程序的服務(wù)器。通信連 接516是通信介質(zhì)的一個示例。通信介質(zhì)通常由諸如載波或其它傳輸機制等已調(diào)制 數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)來體現(xiàn),并包括任 何信息傳遞介質(zhì)。術(shù)語"已調(diào)制數(shù)據(jù)信號"指的是其一個或多個特征以在信號中 編碼信息的方式被設(shè)定或更改的信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì), 諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外線和其它無線 介質(zhì)。如此處所使用的術(shù)語計算機可讀介質(zhì)包括存儲介質(zhì)和通信介質(zhì)兩者。
所要求保護的主題還包括各種方法。這些方法可以按包括本說明書中所描述 的結(jié)構(gòu)在內(nèi)的多種方式來實現(xiàn)。一種這樣的方式是通過本說明書中所描述的類型的 設(shè)備的機器操作。
另一種可任選的方式是使得這些方法的各單獨操作中的一個和多個能夠結(jié)合 執(zhí)行某些操作的一個或多個人類操作員來執(zhí)行。這些人類操作員無需彼此位于同
處,但是每一個人類操作員都可能只具有執(zhí)行一部分程序的機器。
圖6示出了共享可定制多租戶數(shù)據(jù)高速緩存的過程的邏輯流程圖。過程600 可以被實現(xiàn)為CRM服務(wù)的一部分。
過程600開始于操作602,在那里由CRM系統(tǒng)的高速緩存來接收指示來自租 戶的對數(shù)據(jù)的請求的數(shù)據(jù)鍵和租戶ID,。處理從操作602前進到判定操作604。
在判定操作604,確定與所請求的數(shù)據(jù)相關(guān)聯(lián)的項目是否在高速緩存中。該項 可以包括定義所請求的數(shù)據(jù)的該數(shù)據(jù)的屬性列表,或者該項目可以是"系統(tǒng)標(biāo)記" 或"刪除標(biāo)記",其指示對于該租戶該項目已被取出但是或者等價于已經(jīng)在該高速 緩存中的共享系統(tǒng)版本或者對于該租戶該數(shù)據(jù)已被刪除。如果高速緩存中不存在該 項目,則處理前進到圖7中過程700的操作720。
如果在判定操作604處在高速緩存中發(fā)現(xiàn)該項目,則處理前進到操作606,在那里從高速緩存存儲中取出該項目。處理從操作606移至判定操作608。
在判定操作608,確定所高速緩存的項目是否是"系統(tǒng)標(biāo)記"。如果是,則處
理前進到操作610,在那里從高速緩存存儲中取出項目所指示的系統(tǒng)數(shù)據(jù)。處理從
操作610移至操作612,在那里將系統(tǒng)數(shù)據(jù)提供給作出請求的租戶。在操作612之
后,處理移至調(diào)用過程以便采取進一步的動作。
如果判定操作608處的判定是否定的,則處理前進到判定操作614,在那里確
定項目是否是"刪除標(biāo)記"。如果是,則處理前進到操作616,在那里向作出請求
的租戶提供指示不存在的數(shù)據(jù)的通知。在操作616之后,處理移至調(diào)用過程以便采
取進一步的動作。
如果在判定操作614處的判定是否定的,則該判定指示從高速緩存存儲中取 出的數(shù)據(jù)表示具有給定ID的租戶專用的定制。處理前進到操作618,在那里將所 取出的數(shù)據(jù)提供給作出請求的租戶。在操作618之后,處理移至調(diào)用過程以便采取 進一步的動作。
圖7示出了作為圖6的共享可定制多租戶數(shù)據(jù)高速緩存的過程的一部分的過 程700的邏輯流程圖。
過程700開始于過程600的判定操作604處的否定判定之后的操作720。在操 作720,從與作出請求的租戶相關(guān)聯(lián)的數(shù)據(jù)庫中取出所請求的數(shù)據(jù)。處理從操作720 前進到判定操作722。
在判定操作722,確定所請求的數(shù)據(jù)的定制級別是否為指示系統(tǒng)級非定制數(shù)據(jù) 的0。如果定制級別為0,則處理前進判定點724。
在判定點724,高速緩存確定該高速緩存存儲是否已包含對于具有給定鍵的項 目的系統(tǒng)(非定制)數(shù)據(jù)的副本。如果該系統(tǒng)數(shù)據(jù)尚未存在于該高速緩存存儲中, 則處理前進到操作725。
在操作725,將對于該租戶所取出的數(shù)據(jù)作為系統(tǒng)(非定制)數(shù)據(jù)插入高速緩 存存儲中,其中對于將來需要該系統(tǒng)(非定制)數(shù)據(jù)的這個或其他租戶可以取出該 數(shù)據(jù)。處理從操作725前進到726。
如果在判定操作724處的確定是肯定的,則該判定意味著對應(yīng)于給定鍵的系 統(tǒng)(非定制)數(shù)據(jù)已經(jīng)存在于高速緩存存儲中。處理前進到操作726。在操作726, 將對應(yīng)于所取出的數(shù)據(jù)或作出請求的租戶的"系統(tǒng)標(biāo)記"插入高速緩存存儲中。處 理從操作726移至操作728。
在操作728,將系統(tǒng)數(shù)據(jù)提供給作出請求的租戶。在操作728之后,處理移至調(diào)用過程以便采取進一步的動作。
如果在判定操作722處的判定是否定的,則處理前進到判定操作730,在那里 確定所請求的數(shù)據(jù)的定制級別是否為指示不存在的數(shù)據(jù)的2。如果定制級別為2, 則處理前進到操作736。
在操作736,將對應(yīng)于所取出的數(shù)據(jù)和作出請求的租戶的"系統(tǒng)標(biāo)記"插入高 速緩存存儲中,該"系統(tǒng)標(biāo)記"指示該數(shù)據(jù)已經(jīng)從租戶數(shù)據(jù)庫中刪除。處理從操作 736移至操作738。
在操作738,向作出請求的租戶提供數(shù)據(jù)不再存在的通知。在操作738之后, 處理移至調(diào)用過程以變采取進一步的動作。
如果在判定操作730處的判定是否定的,則處理前進到操作732,在那里將具 有給定鍵和租戶ID的數(shù)據(jù)插入高速緩存存儲中,因為知道該數(shù)據(jù)是對于作出請求 的租戶是自定義的數(shù)據(jù)。處理從操作732前進到操作734。
在操作734,將所取出的定制數(shù)據(jù)提供給作出請求的租戶。在操作734之后, 處理移至調(diào)用過程以便采取進一步的動作。
過程600和700中所包括的操作是出于說明目的的。高速緩存共享可定制多 租戶數(shù)據(jù)可以由具有更少或更多的步驟以及按使用此處所描述的原理的不同操作 順序的類似過程來實現(xiàn)。
以上說明、示例和數(shù)據(jù)提供了對各實施例成分的制造和使用的全面描述。盡 管用對結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利 要求書中定義的主題不必限于上述具體特征或動作。相反,上述具體功能部件和動 作是作為實現(xiàn)權(quán)利要求和各實施例的示例形式而公開的。
1權(quán)利要求
1.一種至少部分地在計算設(shè)備中執(zhí)行的用于處理多租戶環(huán)境中的可定制數(shù)據(jù)的方法,所述方法包括從租戶接收對數(shù)據(jù)的請求(602);確定與所請求的數(shù)據(jù)相關(guān)聯(lián)的條目是否被存儲在高速緩存存儲中(604);如果所述條目已被存儲并且是刪除標(biāo)記,則將不存在的數(shù)據(jù)的通知提供給作出請求的租戶(616);如果所述條目已被存儲并且是系統(tǒng)標(biāo)記,則從所述高速緩存存儲中取出所請求的數(shù)據(jù)并且將所述數(shù)據(jù)提供給所述作出請求的租戶(610,612);以及如果所述條目已被存儲并且是為所述租戶定制的所請求的數(shù)據(jù),則將定制的所請求的數(shù)據(jù)提供給所述作出請求的租戶(618)。
2. 如權(quán)利要求1所述的方法,其特征在于,還包括如果沒有與所請求的數(shù)據(jù)相關(guān)聯(lián)的條目被存儲在所述高速緩存存儲中,貝U: 確定所述數(shù)據(jù)是否存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中;如果所述數(shù)據(jù)不存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中,則將"刪除標(biāo) 記"條目存儲在所述高速緩存存儲中并且將所述不存在的數(shù)據(jù)的通知提供給所述作出請求的租戶(736、 738);如果所述數(shù)據(jù)存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中并且是對應(yīng)于所述 租戶的定制的數(shù)據(jù),則將所述定制的數(shù)據(jù)存儲在所述高速緩存存儲中并且將 所述定制的數(shù)據(jù)提供給所述作出請求的租戶(732, 734);以及如果所述數(shù)據(jù)存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲存中并且是系統(tǒng)級數(shù) 據(jù),則將系統(tǒng)標(biāo)記和所述系統(tǒng)級數(shù)據(jù)存儲在所述高速緩存存儲中并且將所述 定制的數(shù)據(jù)提供給任何作出請求的租戶(726、 728)。
3. 如權(quán)利要求2所述的方法,其特征在于,所取出的系統(tǒng)級數(shù)據(jù)的僅一個副 本被存儲在所述高速緩存存儲(344)中以便提供給任何作出請求的租戶。
4. 如權(quán)利要求l所述的方法,其特征在于,所述定制的數(shù)據(jù)基于與所述請求 相關(guān)聯(lián)數(shù)據(jù)鍵和租戶標(biāo)識符來提供給所述作出請求的租戶(370)。
5. 如權(quán)利要求l所述的方法,其特征在于,由租戶定制的數(shù)據(jù)僅可以由該租 戶訪問(370)。
6. 如權(quán)利要求l所述的方法,其特征在于,還包括允許租戶訪問由另 一租戶定制的數(shù)據(jù)。
7. 如權(quán)利要求1所述的方法,其特征在于,所述可定制數(shù)據(jù)(200)包括以下的組中的至少一個元數(shù)據(jù)、用戶界面表單、用戶界面視圖、可擴展性插件以及 通信參數(shù)。
8. 如權(quán)利要求l所述的方法,其特征在于,所述數(shù)據(jù)的定制狀態(tài)被存儲為定 制級別屬性(227)。
9. 一種用于處理多租戶商業(yè)應(yīng)用程序環(huán)境中的可定制數(shù)據(jù)的系統(tǒng),包括高速緩存存儲器(344);耦合到所述存儲器的處理器(502),其中所述處理器被配置成執(zhí)行程序模塊,包括-高速緩存存儲(524),其被配置成確定與所請求的記錄相關(guān)聯(lián)的條目是否被存儲在所述高速緩存存儲器中;響應(yīng)于確定所述條目已被存儲并且是刪除標(biāo)記來將不存在的記錄的 通知提供給作出請求的租戶。響應(yīng)于確定所述條目已被存儲并且是系統(tǒng)標(biāo)記來從所述高速緩存存 儲器中取出所請求的記錄并且提供給所述作出請求的租戶,其中對任何作出 請求的租戶,所述記錄的單個副本被存儲在所述高速緩存存儲器中;以及響應(yīng)于確定所述條目己被存儲并且是為所述租戶定制的所請求的記 錄來將定制的所請求的記錄提供給所述作出請求的租戶。
10. 如權(quán)利要求9所述的方法,其特征在于,所述高速緩存模塊(524)還被 配置成-響應(yīng)于確定所述高速緩存存儲器中不存在與所述記錄相關(guān)聯(lián)的條目,確定所 述記錄是否存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中;響應(yīng)于確定與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中不存在所述記錄,將"刪除標(biāo)記" 條目存儲在所述高速緩存存儲器中,并且將不存在的記錄的通知提供給所述作出請 求的租戶。響應(yīng)于確定所述記錄存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中并且是對應(yīng)于所 述租戶的定制的記錄,將所述定制的記錄存儲在所述高速緩存存儲器中并且將所述 定制的記錄提供給所述作出請求的租戶;以及響應(yīng)于確定所述記錄存在于與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中并且是系統(tǒng)級記錄,將系統(tǒng)標(biāo)記和所述系統(tǒng)級記錄存儲在所述高速緩存存儲中并且將所述定制的記 錄提供給任何作出請求的租戶。
11. 如權(quán)利要求10所述的系統(tǒng),其特征在于,所述高速緩存模塊(524)還被配置成將指示所取出的記錄的定制狀態(tài)的定制級別屬性存儲在所述高速緩存存儲器 中作為與所述記錄相關(guān)聯(lián)的條目的一部分。
12. 如權(quán)利要求10所述的系統(tǒng),其特征在于,所述定制級別屬性(227)被 存儲在與所請求的記錄相關(guān)聯(lián)的屬性表中。
13. 如權(quán)利要求9所述的系統(tǒng),其特征在于,所述處理器(502)還被配置成 執(zhí)行與顧客關(guān)系管理(CRM)系統(tǒng)相關(guān)聯(lián)的商業(yè)應(yīng)用程序模塊(522)以便與所述 作出請求的租戶進行通信。
14. 如權(quán)利要求9所述的系統(tǒng),其特征在于,與所述作出請求的租戶相關(guān)聯(lián) 的數(shù)據(jù)存儲(346, 348, 350)是分配給單個租戶的單獨數(shù)據(jù)庫和分配給多個租戶 的數(shù)據(jù)庫的一部分中的--個。
15. 如權(quán)利要求9所述的系統(tǒng),其特征在于,所述高速緩存模塊(524)還被 配置成基于記錄標(biāo)識符和每一個租戶的租戶標(biāo)識符來使得租戶能夠準(zhǔn)許與其它租 戶共享定制的記錄。
16. 如權(quán)利要求9所述的系統(tǒng),其特征在于,所述高速緩存模塊(524)還被 配置成基于以下各項中的至少一個來更新所述高速緩存存儲器中的與所請求的數(shù) 據(jù)相關(guān)聯(lián)的條目時間段的期滿、租戶請求、以及來自與所述租戶相關(guān)聯(lián)的數(shù)據(jù)庫 的改變的通知。
17. —種其上存儲有指令的計算機可讀存儲介質(zhì),所述指令用于處理多租戶 商業(yè)應(yīng)用環(huán)境中的可定制數(shù)據(jù),所述指令包括響應(yīng)于接收到來自租戶的對數(shù)據(jù)的請求來確定與所請求的數(shù)據(jù)相關(guān)聯(lián)的條目 是否被存儲在高速緩存存儲中(602);如果所述條目已被存儲并且是刪除標(biāo)記,則將不存在的數(shù)據(jù)的通知提供給作 出請求的租戶(616);如果所述條目已被存儲并且是系統(tǒng)標(biāo)記,則使得所請求的數(shù)據(jù)對多個作出請 求的租戶可用而無需對于每一個請求都從租戶數(shù)據(jù)存儲中取出所述數(shù)據(jù)(610, 612);以及如果所述條目己被存儲并且是為所述租戶定制的所請求的數(shù)據(jù),則使得定制的數(shù)據(jù)僅對所述作出請求的租戶可用(618)。
18. 如權(quán)利要求17所述的計算機可讀存儲介質(zhì),其特征在于,所述指令還包括如果沒有與所請求的數(shù)據(jù)相關(guān)聯(lián)的條目被存儲在所述高速緩存存儲中并且所請求的數(shù)據(jù)可從與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中獲取,貝'h從與所述租戶相關(guān)聯(lián)的數(shù)據(jù)存儲中取出所述數(shù)據(jù)(720); 確定所取出的數(shù)據(jù)的定制級別(722, 730);如果所述數(shù)據(jù)是定制的,則僅向所述作出請求的租戶提供所述定制的數(shù) 據(jù)(732、 734);以及如果所述數(shù)據(jù)是非定制的,則使得非定制數(shù)據(jù)對任何作出請求的租戶可 用,其中所述非定制數(shù)據(jù)的僅一個副本被存儲在所述高速緩存存儲中(726, 728)。
19. 如權(quán)利要求18所述的計算機可讀存儲介質(zhì),其特征在于,所述指令還包 括將指示所取出的數(shù)據(jù)的非定制狀態(tài)的系統(tǒng)標(biāo)記存儲在所述高速緩存存儲中(725)。
20. 如權(quán)利要求17所述的計算機可讀存儲介質(zhì),其特征在于,所述租戶(342) 包括參與CRM系統(tǒng)的組織和組織的成員中的一個。
全文摘要
在具有共享可定制數(shù)據(jù)的多租戶數(shù)據(jù)共享環(huán)境中,屬性被分配給所請求的數(shù)據(jù)并且連同該所請求的數(shù)據(jù)一起存儲在高速緩存存儲中。對于被指定為系統(tǒng)數(shù)據(jù)的非定制數(shù)據(jù),一個副本被存儲在高速緩存存儲中以供多個租戶使用,從而允許為每一個數(shù)據(jù)請求/取出操作優(yōu)化存儲器和性能??蓪ⅰ皠h除標(biāo)記”屬性分配給高速緩存存儲中的不存在的數(shù)據(jù)以便允許通知作出請求的租戶,而無需在每一次接收到對該不存在的數(shù)據(jù)的請求時訪問租戶數(shù)據(jù)存儲。
文檔編號G06Q10/06GK101652787SQ200880010778
公開日2010年2月17日 申請日期2008年3月15日 優(yōu)先權(quán)日2007年3月30日
發(fā)明者A·薩姆廷, E·劉易斯, J·格雷瓦爾, M·J·奧特, M·維加雅拉加萬 申請人:微軟公司