两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

云存儲的制作方法

文檔序號:6495458閱讀:253來源:國知局
云存儲的制作方法
【專利摘要】本發(fā)明的方法、系統(tǒng)和裝置,以及編碼在計算機存儲介質(zhì)上的計算機程序,用于數(shù)據(jù)存儲。在一個方面中,方法包括以下動作:識別來自應用的運行中查詢;根據(jù)一個或多個應用特定訪問策略確定多個數(shù)據(jù)項中該應用擁有查看許可的一個或多個數(shù)據(jù)項;以及將該一個或多個數(shù)據(jù)項呈現(xiàn)給該應用,而不呈現(xiàn)該多個數(shù)據(jù)項中的其他數(shù)據(jù)項。
【專利說明】云存儲
[0001]相關申請信息
[0002]本申請要求2011年6月3日遞交的關于云存儲的第61/493,390號美國專利申請的優(yōu)先權,這里通過引用并入該美國專利申請。
【技術領域】
[0003]本說明書涉及數(shù)據(jù)存儲。
【背景技術】
[0004]用戶可將數(shù)據(jù)存儲在遠程位置,例如網(wǎng)絡存儲位置。用戶還可在設備之間傳送數(shù)據(jù)。通常,用戶通過文件傳送或共享來與他人共享數(shù)據(jù)。例如,用戶可識別特定的文件來例如通過電子郵件或使用文件傳送協(xié)議發(fā)送給他人。文件共享允許例如網(wǎng)絡上的其他用戶訪問文件,然而文件通常保持在其原始位置。或者,他人可從其原始存儲位置查看文件,但通常能夠修改文件的用戶只有查看文件的那個。

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

[0005]本說明書描述了與數(shù)據(jù)存儲和同步有關的技術。
[0006]一般地,本說明書中描述的主題的一個方面可實現(xiàn)在包括如下動作的方法中:識別來自應用的運行中查詢;根據(jù)一個或多個應用特定訪問策略確定多個數(shù)據(jù)項中該應用擁有查看許可的一個或多個數(shù)據(jù)項;以及將該一個或多個數(shù)據(jù)項呈現(xiàn)給該應用,而不呈現(xiàn)該多個數(shù)據(jù)項中的其他數(shù)據(jù)項。
[0007]此方面的其他實施例包括相應的系統(tǒng)、裝置和記錄在計算機存儲設備上的計算機程序,它們各自被配置為執(zhí)行所述方法的操作。
[0008]這些和其他實施例可各自可選地包括以下特征中的一個或多個。確定一個或多個數(shù)據(jù)項包括:確定與該多個數(shù)據(jù)項中的每一個相關聯(lián)的標識符是否匹配與該應用相關聯(lián)的標識符。與該應用相關聯(lián)的標識符唯一地標識該應用。與該應用相關聯(lián)的標識符標識了對關聯(lián)數(shù)據(jù)項擁有共享訪問權的應用家族。確定數(shù)據(jù)項的操作是響應于從其他設備接收到關于數(shù)據(jù)項的通知而進行的。
[0009]一般地,本說明書中描述的主題的一個方面可實現(xiàn)在包括一個或多個計算設備的裝置中,該一個或多個計算設備被配置為提供:多個應用;同步管理器,該同步管理器被配置為將數(shù)據(jù)項上傳到遠程存儲并且接收由其他設備上傳到數(shù)據(jù)存儲的數(shù)據(jù)項;以及訪問管理器,訪問管理器被配置為根據(jù)一個或多個應用特定訪問策略來確定對查看該多個應用中的每一個可用的數(shù)據(jù)項的許可。
[0010]一般地,本說明書描述主題的一個方面可實現(xiàn)在包括如下動作的方法中:從設備接收數(shù)據(jù)項;確定用于存儲該數(shù)據(jù)項的容器,該容器是專用于該用戶賬號、并且是專用于與該數(shù)據(jù)項相關聯(lián)的應用;將該數(shù)據(jù)項存儲在該容器中;以及向與該用戶賬號相關聯(lián)的一個或多個其他設備發(fā)送關于該數(shù)據(jù)項的通知。此方面的其他實施例包括相應的系統(tǒng)、裝置和記錄在計算機存儲設備上的計算機程序,它們各自被配置為執(zhí)行所述方法的操作。
[0011]一般地,本說明書描述主題的一個方面可實現(xiàn)在包括如下動作的方法中:從一個或多個設備接收一個或多個數(shù)據(jù)庫事務日志文件,數(shù)據(jù)庫事務日志文件各自標識了對數(shù)據(jù)庫的離散改變,數(shù)據(jù)庫事務日志文件被接收以取代數(shù)據(jù)庫;以及將事務日志文件通知給多個相關設備中的每一個。此方面的其他實施例包括相應的系統(tǒng)、裝置和記錄在計算機存儲設備上的計算機程序,它們各自被配置為執(zhí)行所述方法的操作。
[0012]這些和其他實施例可各自可選地包括以下特征中的一個或多個。該方法還包括存儲所述事務日志文件。該方法還包括響應于來自該多個設備中的一設備的請求而提供一個或多個所述事務日志文件。
[0013]一般地,本說明書描述主題的一個方面可實現(xiàn)在包括如下動作的方法中:接收多個事務日志,每個事務日志標識了對數(shù)據(jù)庫的離散改變;確定在該多個事務日志中的兩個或更多事務日志文件之間存在沖突;確定沖突的事務日志的兩個或更多事務是否能夠被合并;如果兩個或更多事務能夠被合并,將合并的事務應用到該數(shù)據(jù)庫;以及如果兩個或更多事務不能被合并,確定獲勝的事務并將該事務應用到該數(shù)據(jù)庫。此方面的其他實施例包括相應的系統(tǒng)、裝置和記錄在計算機存儲設備上的計算機程序,它們各自被配置為執(zhí)行所述方法的操作。
[0014]這些和其他實施例可各自可選地包括以下特征中的一個或多個。合并事務包括確定共同祖先數(shù)據(jù)庫并執(zhí)行三方合并。在沒有用戶交互的情況下解決沖突。
[0015]本說明書中描述的主題的特定實施例可被實現(xiàn)來實現(xiàn)以下優(yōu)點中的一個或多個??筛鶕?jù)基于應用的策略來安全地存儲數(shù)據(jù)。應用只能從云存儲中查看和讀取被授予許可的數(shù)據(jù)項。在每個客戶端設備可以利用基于應用的策略來執(zhí)行訪問控制。
[0016]可利用事務日志來同步數(shù)據(jù)庫,無需在設備之間在原子級同步整個數(shù)據(jù)。個體數(shù)據(jù)庫事務之間的沖突可在每個相應客戶端設備處利用沖突的事務和共同祖先數(shù)據(jù)庫來解決。系統(tǒng)或應用發(fā)表的策略可自動地解決文件內(nèi)的記錄之間的沖突,無需用戶交互??蛻舳嗽O備可利用同步后的材料從零開始重建數(shù)據(jù)庫,使新的同伴設備上線,或解決與本地文件之間的問題。
[0017]本說明書描述主題的一個或多個實施例的細節(jié)在附圖和以下描述中記載。主題的其他特征、方面和優(yōu)點將從描述、附圖和權利要求中變得清楚。
【專利附圖】

【附圖說明】
[0018]圖1是示出用于安全地存儲數(shù)據(jù)項的示例系統(tǒng)的圖。
[0019]圖2是示出用于同步數(shù)據(jù)項的示例系統(tǒng)的圖。
[0020]圖3是用于安全地存儲和同步數(shù)據(jù)項的示例方法的流程圖。
[0021]圖4是用于上傳和取回應用數(shù)據(jù)項的示例方法的流程圖。
[0022]圖5是示出用于存儲數(shù)據(jù)庫事務的示例系統(tǒng)的圖。
[0023]圖6是用于同步數(shù)據(jù)庫的示例方法的流程圖。
[0024]圖7是用于同步數(shù)據(jù)庫的示例方法的流程圖。
[0025]圖8是用于管理沖突的示例方法的流程圖。
[0026]圖9是示例系統(tǒng)體系結(jié)構。[0027]在各幅圖中相似的標號和命名指示相似的元素。
【具體實施方式】
[0028]描述了用于以應用為中心的安全存儲技術。與特定應用相關聯(lián)的數(shù)據(jù)項(例如文件)可被存儲在一個或多個遠程位置(例如云存儲)中,并與其他設備同步。每個應用只能查看存儲在遠程位置的其擁有許可的數(shù)據(jù)項。每個客戶端設備上的訪問管理器實施應用特定訪問策略。可例如利用隔離的容器來為與用戶或用戶賬號相關聯(lián)的每個應用保護遠程位置處的存儲。
[0029]當應用保存數(shù)據(jù)項時,數(shù)據(jù)項可被同步到遠程存儲位置。遠程存儲位置將該數(shù)據(jù)項通知給與用戶相關聯(lián)的其他設備。個體設備上的訪問管理器基于用于特定應用的訪問策略和從這些應用接收到的任何特定查詢來確定是否要將數(shù)據(jù)項通知給這些應用。如果應用被通知并且請求讀取數(shù)據(jù)項,該數(shù)據(jù)項從遠程存儲中取回。
[0030]還描述了用于數(shù)據(jù)庫同步的技術。可在客戶端設備之間同步數(shù)據(jù)庫,而無需在原子級將整個數(shù)據(jù)庫移動到遠程存儲位置、或在同伴設備之間移動整個數(shù)據(jù)庫。事務日志文件標識了相對于特定基線狀態(tài)而言對數(shù)據(jù)庫的改變。事務日志文件被同步,使得當事務日志文件中標識的事務被應用到本地數(shù)據(jù)庫時,該數(shù)據(jù)庫變得同步。當在事務日志文件之間檢測到?jīng)_突時,確定事務是否能夠被合并、然后被應用到數(shù)據(jù)庫。如果事務不能被合并,根據(jù)特定的沖突解決策略來確定沖突獲勝者。
[0031]圖1是示出安全地存儲數(shù)據(jù)項的示例系統(tǒng)100的圖。系統(tǒng)100包括第一設備102、第二設備104、第三設備106和遠程存儲位置108。
[0032]第一設備102、第二設備104、第三設備106和遠程存儲位置108利用一個或多個網(wǎng)絡110通信地耦合在一起。一個或多個網(wǎng)絡110可包括有線網(wǎng)絡和無線網(wǎng)絡兩者。網(wǎng)絡110例如可以是局域網(wǎng)、廣域網(wǎng)或因特網(wǎng)的一部分。
[0033]第一設備102、第二設備104和第三設備106例如可包括桌面型或膝上型計算設備、移動設備、平板設備、個人數(shù)字助理或其他計算設備。具體地,如圖1所示,設備102和104各自與第一用戶或用戶賬號112相關聯(lián)。類似地,第三設備106以及未示出的一個或多個其他設備與第二用戶或用戶賬號114相關聯(lián)。遠程存儲位置108還可耦合到與一個或多個不同的用戶或不同的用戶賬號相關聯(lián)的許多其他設備(未示出)。
[0034]遠程存儲位置108可以是單個存儲位置或多個存儲位置。例如,服務器、網(wǎng)絡尋址存儲位置、計算設備的集合或者作為呈現(xiàn)虛擬化網(wǎng)絡存儲的云存儲系統(tǒng)的一部分。
[0035]遠程存儲位置108包括分開的邏輯容器,用于存儲來自不同用戶/用戶賬號和應用組合的數(shù)據(jù)。一些示例中,邏輯容器可以是文件系統(tǒng)中的目錄,或者數(shù)據(jù)結(jié)構,或者另一種數(shù)據(jù)組織單元。例如,第一用戶/用戶賬號112可在遠程存儲位置108上具有容器116,與該用戶或用戶賬號相關聯(lián)的每個單個應用都有一個容器116。類似地,第二用戶/用戶賬號114可具有用于相應應用的容器118。從個體設備(例如,第一設備102)接收的應用數(shù)據(jù)項被存儲在該應用的相應容器中。遠程存儲位置108可包括存儲管理器,該存儲管理器創(chuàng)建并管理容器,并且為與用戶相關聯(lián)的設備生成通知。
[0036]第一設備102包括一個或多個應用120、同步管理器122和訪問管理器124。一個或多個應用120可包括各種類型的應用,例如生產(chǎn)力應用、系統(tǒng)應用、游戲,等等。每個應用可與唯一的鍵值或其他標識符相關聯(lián),用于標識該應用并且標識該應用的特定訪問許可。在一些實現(xiàn)方式中,一個或多個應用120被封裝(sandboxed),使得其與每個其他應用相隔離。
[0037]同步管理器122管理將數(shù)據(jù)項發(fā)送到遠程存儲位置108以及從遠程存儲位置108接收信息(例如,數(shù)據(jù)項或通知),這將在下文中更詳細描述。訪問管理器124響應于來自應用120中的特定應用的查詢而將可用數(shù)據(jù)項呈現(xiàn)給相應的應用。訪問管理器124應用一個或多個訪問策略來確定什么數(shù)據(jù)項將對應用120中的特定應用可見。
[0038]第二設備104類似地包括一個或多個應用126、同步管理器128和訪問管理器130。應用120和應用126可包括一個或多個相同應用。第三設備106類似地包括一個或多個應用132、同步管理器134和訪問管理器136。然而,第三設備106與第二用戶或用戶賬號114相關聯(lián)。
[0039]圖2是不出在設備之間同步數(shù)據(jù)項的不例系統(tǒng)200的圖。系統(tǒng)200包括第一設備202、第二設備204和云存儲206。
[0040]第一設備202包括應用208、同步管理器210和訪問管理器212。類似地,第二設備204包括應用214、同步管理器216和訪問管理器218。各個同步管理器、訪問管理器和應用可與對圖1描述的那些類似。
[0041]當數(shù)據(jù)項被應用208中的應用存儲時(例如,通過生成新文件或更新現(xiàn)有文件),同步管理器210檢測該數(shù)據(jù)項(例如,通過由設備內(nèi)核提供的事件通知)并將該數(shù)據(jù)項發(fā)送到云存儲206。云存儲206將該數(shù)據(jù)項存儲在云存儲206內(nèi)的相應應用容器中。云存儲206還將該數(shù)據(jù)項通知給第二設備204。第二設備上的同步管理器216接收該通知。同步管理器216通知訪問管理器218所接收的通知,訪問管理器218控制哪些應用將能夠看到該數(shù)據(jù)項。
[0042]訪問管理器218根據(jù)一個或多個訪問策略確定擁有讀取數(shù)據(jù)項的許可的應用。數(shù)據(jù)項的通知可包括標識符,該標識符例如指示與該數(shù)據(jù)項相關聯(lián)的一個或多個應用(例如,通知可包括生成所述數(shù)據(jù)項的應用的相應應用鍵值)。
[0043]訪問管理器218還確定是否存在來自應用的查詢,該應用請求知曉新數(shù)據(jù)項。例如,相應的應用可發(fā)起(例如,一旦被安裝在第二設備204上)對與該應用相關聯(lián)的新數(shù)據(jù)項的運行中查詢。如果存在對數(shù)據(jù)項的查詢,訪問管理器218將該數(shù)據(jù)項通知給相應的應用214。特定應用214查看可用的一個或多個數(shù)據(jù)項并且可在需要時請求數(shù)據(jù)項。具體地,數(shù)據(jù)項不需要被從云存儲206取回以呈現(xiàn)給應用。一旦該應用請求讀取訪問,數(shù)據(jù)項就可被遠程地取回或讀取。數(shù)據(jù)項的位置對于應用可以是透明的(例如,數(shù)據(jù)項在其位于云存儲中時可以看起來是位于本地的)。
[0044]圖3是安全地存儲和同步數(shù)據(jù)項的示例方法300的流程圖。方法300可由一個或多個計算設備執(zhí)行,例如由圖1的設備和遠程存儲位置執(zhí)行。
[0045]接收應用數(shù)據(jù)項以用于存儲和/或同步(步驟302)。響應于應用數(shù)據(jù)項被存儲在特定設備本地,接收該數(shù)據(jù)項。例如,給定的應用可將文件保存到設備上的存儲設備??身憫谟脩魟幼?例如,用戶對應用數(shù)據(jù)的修改),存儲數(shù)據(jù)項。數(shù)據(jù)項可被保存為新文件或先前存儲的數(shù)據(jù)項的修改版本。例如,字處理應用的用戶可創(chuàng)建新文件或修改現(xiàn)有文件。在一些實現(xiàn)方式中,同步管理器(例如,同步管理器122)識別已被存儲的新的或經(jīng)改變的數(shù)據(jù)項。例如,同步管理器可監(jiān)視文件系統(tǒng)事件以識別數(shù)據(jù)項。在一些其他實現(xiàn)方式中,個體應用通知同步管理器。同步管理器可將數(shù)據(jù)項發(fā)送到遠程存儲位置(例如,遠程存儲位置108)。
[0046]接收數(shù)據(jù)項可包括:接收數(shù)據(jù)項的數(shù)據(jù)以及關于數(shù)據(jù)項的附加信息或元數(shù)據(jù)。附加信息可包括標識與數(shù)據(jù)項相關聯(lián)的應用(例如,生成了數(shù)據(jù)項的應用)的信息。在一些其他實現(xiàn)方式中,附加信息標識了擁有訪問數(shù)據(jù)項的許可的應用。標識可包括標識特定應用或一組相關應用的唯一鍵值。例如,特定應用開發(fā)者可生成多個相關應用(例如,該開發(fā)者或公司開發(fā)的一套應用),該多個相關應用可共享數(shù)據(jù)項。
[0047]數(shù)據(jù)項被存儲在安全的應用容器中(步驟304)。例如,遠程存儲位置(例如云存儲)對于與給定的用戶或用戶賬號相關聯(lián)的每個應用可包括單獨的容器。這樣,每個應用和每個用戶的數(shù)據(jù)項可被分開存儲在遠程存儲位置。此外,在一些實現(xiàn)方式中,每個容器受保護和/或被加密。
[0048]通知同伴設備(步驟306)。為了在同伴設備(例如與用戶或用戶賬號相關聯(lián)的多個設備)間同步數(shù)據(jù)項,將新數(shù)據(jù)項通知給關聯(lián)的設備。例如通過用戶將設備鏈接到同伴的注冊過程把設備關聯(lián)起來。發(fā)送通知,以使得實際數(shù)據(jù)項不需要被發(fā)送到個體同伴設備,除非被請求。然而,在一些替換實現(xiàn)方式中,數(shù)據(jù)項本身可代替通知被發(fā)送到同伴設備。
[0049]一旦被通知,特定的同伴設備就可處理通知。處理包括確定先前是否標識了所述數(shù)據(jù)項(例如,作為存儲在遠程位置的在先數(shù)據(jù)項的早先通知的一部分)。處理還可包括例如利用通知中包括的關于數(shù)據(jù)項的信息或元數(shù)據(jù)(例如,包括標識應用的鍵值)來確定與數(shù)據(jù)項相關聯(lián)的一個或多個應用。各個同伴設備可將數(shù)據(jù)項通知給關聯(lián)的應用。
[0050]響應于請求,將數(shù)據(jù)項提供給設備(步驟308)。例如,設備的特定應用可立即請求讀取訪問?;蛘撸趯?shù)據(jù)項留在遠程存儲位置上的同時,應用存儲數(shù)據(jù)項的可用性。數(shù)據(jù)項可在需要時被取回,例如響應于打開數(shù)據(jù)項的請求被取回。例如,用戶可請求在應用內(nèi)打開特定數(shù)據(jù)項。應用隨后向訪問管理器請求該數(shù)據(jù)項,而訪問管理器向遠程存儲位置請求該數(shù)據(jù)項。
[0051]圖4是上傳和取回應用數(shù)據(jù)項的示例方法400的流程圖。方法400可由一個或多個計算設備執(zhí)行,例如由圖1的第一設備102執(zhí)行。
[0052]從某個應用接收查詢(步驟402)。例如可在安裝或首次設置所述應用時接收所述查詢?;蛘?,可在配置所述應用與其他設備同步時接收查詢。查詢可以是保持未決(pending)的運行中查詢(running query),并且可在應用在設備上的壽命期間被響應(例如,直到應用被禁用或刪除為止)。
[0053]驗證對與應用相關聯(lián)的數(shù)據(jù)項的訪問(步驟404)。唯一標識符(例如,特定的應用鍵值)可被識別并用于確定所述應用有權訪問什么數(shù)據(jù)項或什么類型的數(shù)據(jù)項。例如,所述應用可提供可被匹配到特定應用訪問策略的鍵值。
[0054]接收包括與所述應用相關聯(lián)的數(shù)據(jù)項的關于新數(shù)據(jù)項的通知(步驟406)。特定的同伴設備將該數(shù)據(jù)項通知給所述應用(步驟310)。具體地,訪問管理器(例如,訪問管理器124)可確定哪個或哪些應用擁有訪問數(shù)據(jù)項的許可。可根據(jù)一個或多個訪問策略來確定訪問數(shù)據(jù)項的許可。訪問策略可基于應用的鍵值或其他唯一標識符來為特定應用識別許可??稍诎惭b所述應用之前驗證標識符??蓪⑴c數(shù)據(jù)項相關聯(lián)的信息與由訪問策略定義的許可相比較,以確定有權訪問數(shù)據(jù)項的應用。在一些實現(xiàn)方式中,只有單個應用擁有訪問該應用的數(shù)據(jù)項的許可。在一些其他實現(xiàn)方式中,在特定的指定應用之間共享一些數(shù)據(jù)項。
[0055]在一些實現(xiàn)方式中,即使某個應用擁有訪問數(shù)據(jù)項的許可,也不發(fā)送通知,除非存在應用查詢。例如,應用查詢可請求任何新數(shù)據(jù)項。在一些實現(xiàn)方式中,查詢是在所述應用被首次安裝在設備上或首次與其他設備同步時發(fā)起的運行中查詢。
[0056]所述應用只被通知與該應用相關聯(lián)的數(shù)據(jù)項(步驟408)。應用的通知只允許用戶查看該應用有權訪問的數(shù)據(jù)項。從而,例如,如果接收到與其他應用相關聯(lián)的其他數(shù)據(jù)項,該應用不能查看這些數(shù)據(jù)項,除非其擁有必要的許可。
[0057]接收讀取請求并呈現(xiàn)相應的數(shù)據(jù)(步驟410)。所述應用能夠立即請求讀取訪問?;蛘?,在將數(shù)據(jù)項留在遠程存儲位置的同時,所述應用存儲數(shù)據(jù)項的可用性。數(shù)據(jù)項可在需要時被取回,例如響應于打開數(shù)據(jù)項的請求被取回。例如,用戶可請求在應用內(nèi)打開特定數(shù)據(jù)項。該應用隨后向訪問管理器請求該數(shù)據(jù)項,訪問管理器向遠程存儲位置請求該數(shù)據(jù)項。
[0058]圖5是示出存儲數(shù)據(jù)庫事務的示例系統(tǒng)500的圖。
[0059]系統(tǒng)500包括第一設備502和第二設備504。第一設備502和第二設備504與第一用戶506相關聯(lián)。第一設備502和第二設備504通過網(wǎng)絡510耦合到遠程存儲位置508。
[0060]第一設備502和第二設備504例如可包括桌面型或膝上型計算設備、移動設備、平板設備、個人數(shù)字助理或其他計算設備。
[0061]網(wǎng)絡510例如可以是局域網(wǎng)、廣域網(wǎng)或因特網(wǎng)的一部分。
[0062]第一設備502包括數(shù)據(jù)庫512、事件監(jiān)視器514和事務緩存516。第二設備504類似地包括數(shù)據(jù)庫518、事件監(jiān)視器520和事務緩存522。
[0063]當用戶對數(shù)據(jù)庫512作出改變時,這些改變可被事件監(jiān)視器514檢測到。例如,用戶可修改數(shù)據(jù)庫的與特定行和列相對應的單元。這些改變隨后可作為個體事務日志被寫入到事務緩存516中。事務日志可在被接收到時被發(fā)送到遠程存儲位置508,或者作為根據(jù)特定標準周期性發(fā)送的一批一個或多個事務文件的一部分周期性地發(fā)送到遠程存儲位置508。類似地,對數(shù)據(jù)庫518的改變可被事件監(jiān)視器520檢測到并被寫入到存儲在事務緩存522中的事務日志。事務日志可被發(fā)送到遠程存儲位置508。
[0064]遠程存儲位置508對于包括第一用戶506在內(nèi)的多個用戶中的各個用戶提供用于數(shù)據(jù)庫信息的單獨存儲。具體地,圖5示出了第一用戶的事務日志524和第二用戶的事務日志526。遠程存儲位置508可為每個用戶安全地存儲事務日志。
[0065]此外,在一些實現(xiàn)方式中,雖然數(shù)據(jù)庫512和數(shù)據(jù)庫518分別被本地存儲在第一設備102和第二設備104,相應的數(shù)據(jù)庫不被存儲在遠程存儲位置508中。相反,提供到遠程存儲位置508的事務日志可被同步到第一設備502和第二設備504中的每一個。從而,例如,對大數(shù)據(jù)庫中的單元的改變可被高效地同步,無需在設備與遠程存儲位置之間發(fā)送整個大數(shù)據(jù)庫。
[0066]在特定設備內(nèi),事務日志可被應用到本地存儲的數(shù)據(jù)庫以便在用戶間同步數(shù)據(jù)庫。例如,來自第一設備502的事務日志可與第二設備504同步。第二設備504接收的事務日志可被應用到數(shù)據(jù)庫518以便將數(shù)據(jù)庫518與數(shù)據(jù)庫512同步,無需整體傳送各數(shù)據(jù)庫。
[0067]圖6是同步數(shù)據(jù)庫的示例方法600的流程圖。方法600可由一個或多個計算設備執(zhí)行,例如由圖5的第一設備502執(zhí)行。
[0068]每個數(shù)據(jù)庫事務被存儲在事務日志文件中(步驟602)。事務日志文件針對特定的事務封裝數(shù)據(jù)庫的狀態(tài),以便該事務可被撤消或重復。事務日志文件對于特定的數(shù)據(jù)庫事務提供單個離散容器。事務可包括編輯、添加或刪除整個行或列以及個體數(shù)據(jù)庫單元。事務可孤立地影響單個單元,或者與其他單元相聯(lián)系,所述其他單元與被編輯的單元的內(nèi)容相關。
[0069]事務日志文件還提供對數(shù)據(jù)庫發(fā)生的事務的時間排序的歷史。在一些實現(xiàn)方式中,每個事務日志可包括指示事務何時發(fā)生的時間戳。在一些其他實現(xiàn)方式中,事務日志文件包括改變向量。改變向量允許設備讀取事務日志文件,以確定生成該事務日志的設備先前在生成日志時看到了(例如,無論是在設備處最初或通過先前的同步來應用)哪些其他事務。利用時間線和事務日志數(shù)據(jù)本身,可在具有與發(fā)生事務的數(shù)據(jù)庫共同狀態(tài)的另一數(shù)據(jù)庫上重新創(chuàng)建這些事務。
[0070]一個或多個事務日志文件被推送到遠程存儲位置(步驟604)。事務日志文件可在其被數(shù)據(jù)庫存儲時被個體發(fā)送,或者根據(jù)特定的標準被周期性地成批發(fā)送。例如,個體事務日志文件可被存儲在事務緩存(例如,事務緩存516)中。標準可包括個體事務日志文件的數(shù)目或持續(xù)時間。例如,標準可設定緩存中的事務日志文件的閾值數(shù)目來觸發(fā)到遠程存儲位置的上傳。類似地,標準可指定上傳事務日志文件的周期時間量或時間范圍(例如,每小時或在夜間)。當滿足標準時,緩存中的事務日志文件可被發(fā)送到遠程存儲位置。標準可被組合,例如,即使在緩存中尚未存儲指定數(shù)目的事務日志文件,時間限也可觸發(fā)事務日志文件的發(fā)送。
[0071]接收由另一設備提供到遠程存儲位置的事務日志文件的通知(步驟606)。具體地,通知某個設備(例如,第一設備502)其他設備(例如,第二設備504)上傳到遠程存儲位置的事務日志文件。例如,設備可接收事務日志文件的列表。此列表可標識接收到的所有事務日志文件或者從指定時間點起的所有事務日志文件,例如從上次通知或共同數(shù)據(jù)庫狀態(tài)起的所有事務日志文件。該列表可包括設備上傳的事務日志文件。在一些實現(xiàn)方式中,對于特定事務日志文件的通知不是按時間順序接收的。這樣,設備可等待,直到所有事務日志文件被識別為止。
[0072]改變向量可用于確定是否有缺失的事務。改變向量對于設備已知的每個事務可包括一個標識符。具體地,每個事務可具有標識創(chuàng)建了該事務的設備以及該特定事務的標識符。改變向量封裝了作為作者的同伴設備從其他設備(其導入了其他設備的日志)看到的事務。例如,對于同伴設備A、B和C,每個同伴設備可維護其自己的計數(shù)器(例如,事務#1、事務#2,等等)。建立全局排序是困難的,因此,改為按任何同伴在其創(chuàng)建新日志時看到了哪些事務來確定排序。例如,同伴設備C可使用的改變向量為(同伴設備C事務#42、同伴設備A事務#12、同伴設備B事務#101)。如果需要附加處理,例如來打破平局或者確認改變向量條目一致,還可包括時間戳。
[0073]由事務日志文件標識的事務被應用到數(shù)據(jù)庫(步驟608)。事務日志文件提供在給定先前事務之后的狀態(tài)的情況下重新創(chuàng)建事務所必需的所有狀態(tài)信息??纱_定數(shù)據(jù)庫的當前狀態(tài)。當前狀態(tài)指示開始應用哪個事務日志文件到數(shù)據(jù)庫。例如,上次通過應用接收到的事務日志文件來修改數(shù)據(jù)庫可建立數(shù)據(jù)庫的狀態(tài),從該狀態(tài)可應用新的事務日志文件。在一些實現(xiàn)方式中,在所有相關設備間周期性地建立基線數(shù)據(jù)庫狀態(tài)(baseline databasestate),以便從共同的基線狀態(tài)來應用事務。
[0074]在識別要應用到數(shù)據(jù)庫的事務之后,可向遠程存儲位置請求相應的事務日志文件。一旦被取回,事務日志文件就可被用于在數(shù)據(jù)庫上按順序重放每個事務。 [0075]圖7是同步數(shù)據(jù)庫的示例方法700的流程圖。方法700可由一個或多個計算設備執(zhí)行,例如由圖5的遠程存儲位置508執(zhí)行。
[0076]從一個或多個設備接收一個或多個數(shù)據(jù)庫事務日志(步驟702)??蓮母鞣N設備周期性地上傳事務日志文件。設備的群組可與特定用戶或用戶賬號相關聯(lián)。在一些實現(xiàn)方式中,從各個不同的用戶或用戶賬號相關聯(lián)的許多設備群組接收數(shù)據(jù)庫事務日志。
[0077]事務日志被存儲(步驟704)。對于與特定用戶或用戶賬號相關聯(lián)的每個設備,遠程存儲位置可包括單獨的存儲位置。上傳的事務日志文件可被存儲到遠程存儲位置的相應位置。在一些實現(xiàn)方式中,這是子目錄或容器。從所有相關聯(lián)的設備上傳的所有事務日志文件的組合構成數(shù)據(jù)庫的遠程存儲版本,因為可應用所有這些事務來重新創(chuàng)建數(shù)據(jù)庫。
[0078]事務日志的通知被發(fā)送到相應的一個或多個設備(步驟706)。在一些實現(xiàn)方式中,對于給定的用戶/用戶賬號,周期性通知被廣播到與一個或多個接收到的事務日志相關聯(lián)的每個設備。通知可在從同伴設備接收到每個個體事務日志文件時被發(fā)送或根據(jù)指定的計劃被發(fā)送。在一些實現(xiàn)方式中,通知提供了數(shù)據(jù)庫接收的所有事務日志文件的運行列表。在一些其他實現(xiàn)方式中,通知提供了在特定時間點之后接收的事務日志文件的列表。該時間點可基于發(fā)送到該設備的最后一次通知,或最后建立的基線數(shù)據(jù)庫。
[0079]響應于請求而將一個或多個事務日志文件提供給設備(步驟708)。個體設備可響應于接收到的通知而請求一個或多個事務日志文件。
[0080]可選地,周期性地存儲基線數(shù)據(jù)庫(步驟710)。具體地,在一些實現(xiàn)方式中,周期性地建立基線數(shù)據(jù)庫狀態(tài)。數(shù)據(jù)庫可被存儲在例如遠程存儲位置上。隨后可維護事務日志文件,并且相對于此基線數(shù)據(jù)庫發(fā)送通知?;蛘?,在一些其他實現(xiàn)方式中,只維護接收到的事務日志文件的運行集合。
[0081]圖8是管理沖突的示例方法800的流程圖。方法800可由一個或多個計算設備執(zhí)行,例如由圖5的第一設備502或第二設備504執(zhí)行。
[0082]接收事務日志(步驟802)。具體地,可從兩個或更多個不同設備接收事務日志文件。確定是否存在沖突(步驟804)。對沖突的確定可基于對事務日志文件的比較。比較可用于確定由每個事務應用到數(shù)據(jù)庫的改變的性質(zhì)。例如,如果在第一設備的第一事務中有對列名稱的改變,并且在來自不同設備的第二事務中有對同一列名稱的另一改變,則發(fā)生沖突。在一些實現(xiàn)方式中,改變數(shù)據(jù)庫的同一行的兩個事務被認為是沖突。
[0083]在一些替換實現(xiàn)方式中,可緩存關于事務日志文件的內(nèi)容的元數(shù)據(jù)。這可提高沖突檢測的速度。例如,元數(shù)據(jù)可標識被事務改變的行,以便能夠迅速地識別沖突的事務日
O
[0084]如果沒有沖突,事務被應用到數(shù)據(jù)庫(步驟806 )。一旦應用了事務,數(shù)據(jù)庫就可具有與應用到基線數(shù)據(jù)庫的事務總和相對應的狀態(tài)。
[0085]如果存在沖突,確定沖突的事務是否能被合并(步驟808)。例如,兩個或更多事務可對數(shù)據(jù)庫的同一行作出改變。然而,如果個體單元不是彼此依賴、并且對行的改變發(fā)生不同列,則每個事務可被單獨應用。相反,對數(shù)據(jù)庫的同一單元的兩個事務可能因為這些改變彼此矛盾而不可被合并到一起。
[0086]在一些實現(xiàn)方式中,同一單元被改變了兩次的沖突事務可被解決為優(yōu)先使用更晚的改變(例如,利用改變向量和時間戳),同時,最小化被更晚的改變所決定(trumpedoutright)的數(shù)據(jù)量。這樣,在沒有用戶干預或應用開發(fā)者工作的情況下,可執(zhí)行精細的合并。
[0087]這種沖突最小化可對每列執(zhí)行,以及針對聯(lián)接表條目(針對多關系的內(nèi)容)執(zhí)行。作為示例,數(shù)據(jù)庫可包括Group中的Person成員資格的身份。多個同伴設備可編輯Group成員資格,例如通過添加和去除成員。不同設備添加或去除不同的Person成員不產(chǎn)生沖突。沖突只在同一 Person在不同設備之間被不同地添加或刪除的情況下出現(xiàn)。確定哪些成員資格改變是添加或刪除是相對設備的共同祖先進行的。這是“三方合并”,例如,設備#1、設備#2以及共同祖先(如設備先前一致同意的最后數(shù)據(jù)庫狀態(tài)),這在下文中將更詳細描述。
[0088]在一些實現(xiàn)方式中,為了確定合并是否可發(fā)生,在沖突的事務和共同的祖先數(shù)據(jù)庫狀態(tài)之間進行比較。比較被用于確定是否能夠執(zhí)行兩個事務的應用,而不在數(shù)據(jù)庫內(nèi)產(chǎn)生不能合并的其他沖突。
[0089]可利用一個或多個因素來識別共同祖先數(shù)據(jù)庫。這些因素可包括要連接到遠程存儲位置的第一同伴設備的標識、最慢同伴設備(例如,為了識別所有同伴設備達到的共同數(shù)據(jù)庫狀態(tài))以及宣布一同伴由于不活躍而死亡。利用改變向量和日志的時間戳來確定共同祖先狀態(tài)以在事務中回朔到足夠遠,以便沖突的同伴設備達到先前一致同意的數(shù)據(jù)庫狀態(tài)?;€數(shù)據(jù)庫對于所有同伴而言可能是返回到最遠,但任何兩個同伴設備可能只相差幾個事務日志。它們可按反向順序檢查日志以去到它們之間的第一個未解決沖突之前的狀態(tài)。另外,在一些實現(xiàn)方式中,沖突解決不限于兩個同伴。有可能三個或更多個同伴發(fā)現(xiàn)它們自己處于沖突中。
[0090]如果沖突的事務能被合并,合并的事務被應用到數(shù)據(jù)庫(步驟810)。一旦應用了事務,數(shù)據(jù)庫就可具有與應用到基線數(shù)據(jù)庫的事務總和相對應的狀態(tài)。
[0091]如果沖突的事務不能被合并,在沖突的事務之間確定沖突獲勝者(步驟812)。在一些實現(xiàn)方式中,基于與每個事務相關聯(lián)的時間戳來確定沖突獲勝者。例如,每個事務日志文件可包括時間戳,指示事務在相應設備上發(fā)生的時間。沖突獲勝者可被選擇為沖突事務的最晚改變??梢允褂闷渌麥蕜t來確定沖突獲勝者。規(guī)則中可對特定類型的事務建立優(yōu)先順序。例如,“刪除”可勝過另一不同種類的改變。沖突獲勝者的事務可被應用到數(shù)據(jù)庫,沖突失敗者的事務可被丟棄。
[0092]在一些實現(xiàn)方式中,對于特定數(shù)據(jù)庫結(jié)構的合并策略可由數(shù)據(jù)庫開發(fā)者或由用戶定義。可呈現(xiàn)用戶界面來用于輸入或修改合并策略。
[0093]在一些實現(xiàn)方式中,可利用在遠程存儲位置存儲的事務日志文件從被損壞的狀態(tài)恢復同伴數(shù)據(jù)庫。類似地,在遠程存儲位置存儲的事務日志文件可用于使添加到遠程存儲位置的新用戶設備的數(shù)據(jù)庫處于最新狀態(tài)。
[0094]在一些實現(xiàn)方式中,所識別的沖突起因于“ΑΒΑ”問題。ABA問題是發(fā)生如下情況時的問題:即使一列的值看起來相對于共同祖先(例如Α)沒有改變,但實際上其已被改變了兩次(從A到B再返回到A)。對此進行檢測允許能夠解決沖突以優(yōu)先使用最晚的改變。因此,在此情況下,A看起來與共同祖先相同,但仍可比來自另一設備的新值更新近。
[0095]圖9是計算機系統(tǒng)的示例系統(tǒng)體系結(jié)構900。系統(tǒng)體系結(jié)構900能夠執(zhí)行這里描述的操作。體系結(jié)構900包括一個或多個處理器902(例如,IBM PowerPC、Intel Pentium4,等等)、一個或多個顯示設備904 (例如,CRT、LCD)、圖形處理單元906 (例如,NVIDIA GeForce,等等)、網(wǎng)絡接口 908 (例如,以太網(wǎng)、FireWire、USB,等等)、輸入設備910 (例如,鍵盤、鼠標,等等)以及一個或多個計算機可讀介質(zhì)912。這些組件利用一條或多條總線914 (例如,EISA、PC1、快速PCI,等等)交換通信和數(shù)據(jù)。
[0096]術語“計算機可讀介質(zhì)”指的是參與向處理器902提供指令以便執(zhí)行的任何有形介質(zhì)。計算機可讀介質(zhì)912還包括操作系統(tǒng)916 (例如,Mac OS?、Windows?、Linux,等等)、網(wǎng)絡通信模塊918、訪問控制管理器920、同步管理器922和其他應用924。
[0097]操作系統(tǒng)916可以是多用戶的、多處理的、多任務的、多線程的、實時的,等等。操作系統(tǒng)916執(zhí)行基本任務,包括但不限于:識別來自輸入設備910的輸入;向顯示設備904發(fā)送輸出;保持跟蹤計算機可讀介質(zhì)912 (例如,存儲器或存儲設備)上的文件和目錄;控制外圍設備(例如,盤驅(qū)動器、打印機,等等);以及管理一條或多條總線914上的流量。網(wǎng)絡通信模塊918包括用于建立和維護網(wǎng)絡連接的各種組件(例如,用于實現(xiàn)通信協(xié)議的軟件,例如TCP/IP、HTTP、以太網(wǎng),等等)。
[0098]訪問控制管理器920和同步管理器922提供執(zhí)行各種功能的各種軟件組件,所述各種功能執(zhí)行應用特定訪問控制和數(shù)據(jù)項的同步,包括設備之間的數(shù)據(jù)庫事務,如針對圖1-8所描述。
[0099]本說明書描述的主題和操作的實施例可以用數(shù)字電子電路實現(xiàn),或者用計算機軟件、固件或硬件一包括本說明書中公開的結(jié)構及其結(jié)構等同物一實現(xiàn),或者用它們中的一個或多個的組合來實現(xiàn)。本說明書中描述的主題的實施例可實現(xiàn)為一個或多個計算機程序,即計算機程序指令的一個或多個模塊,其被編碼在計算機存儲介質(zhì)上,以供數(shù)據(jù)處理裝置執(zhí)行或者控制數(shù)據(jù)處理裝置的操作。作為替換或附加,程序指令可被編碼在人工生成的傳播信號上,例如機器生成的電、光或電磁信號上,該信號被生成來編碼信息以便發(fā)送到適當?shù)慕邮昭b置,以供數(shù)據(jù)處理裝置執(zhí)行。計算機存儲介質(zhì)可以是計算機可讀存儲設備、計算機可讀存儲基板、隨機或串行訪問存儲器陣列或設備或者它們之中的一個或多個的組合,或者可被包括在計算機可讀存儲設備、計算機可讀存儲基板、隨機或串行訪問存儲器陣列或設備或者它們之中的一個或多個的組合中。另外,雖然計算機存儲介質(zhì)不是傳播的信號,但計算機存儲介質(zhì)可以是編碼在人工生成的傳播信號中的計算機程序指令的源或目的地。計算機存儲介質(zhì)也可以是一個或多個單獨的物理組件或介質(zhì)(例如,多個CD、盤或其他存儲設備),或者可被包括在一個或多個單獨的物理組件或介質(zhì)中。
[0100]本說明書中描述的操作可實現(xiàn)為由數(shù)據(jù)處理裝置對存儲在一個或多個計算機可讀存儲設備上的或從其他源接收的數(shù)據(jù)執(zhí)行的操作。
[0101]術語“數(shù)據(jù)處理裝置”涵蓋了所有種類的用于處理數(shù)據(jù)的裝置、設備和機器,例如包括可編程處理器、計算機、片上系統(tǒng)或前述這些項中的多個或組合。裝置可包括專用邏輯電路,例如FPGA (現(xiàn)場可編程門陣列)或ASIC (專用集成電路)。除了硬件外,裝置還可包括為所關注的計算機程序創(chuàng)建執(zhí)行環(huán)境的代碼,例如,構成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)、跨平臺運行時環(huán)境、虛擬機或它們中的一個或多個的組合的代碼。裝置和執(zhí)行環(huán)境可實現(xiàn)各種不同的計算模型基礎設施,例如web服務、分布式計算和網(wǎng)格計算基礎設施。
[0102]計算機程序(也稱為程序、軟件、軟件應用、腳本或代碼)可以用任何形式的編程語言來編寫,所述語言包括經(jīng)編譯或解釋的語言、聲明性或過程式語言,并且計算機程序可按任何形式來部署,包括被部署為獨立程序或被部署為模塊、組件、子例程、對象或者適合用在計算環(huán)境中的其他單元。計算機程序可以但不是必須對應于文件系統(tǒng)中的文件。程序可被存儲在保存其他程序或數(shù)據(jù)的文件的一部分中(例如,存儲在標記語言文檔中的一個或多個腳本)、存儲在專用于所關注程序的單個文件中或者存儲在多個協(xié)調(diào)的文件中(例如,存儲一個或多個模塊、子程序或代碼部分的文件)。計算機程序可被部署來在一個計算機或多個計算機上執(zhí)行,所述多個計算機位于一個地點或分布在多個地點并由通信網(wǎng)絡互連。
[0103]本說明書中描述的過程和邏輯流可通過一個或多個可編程處理器執(zhí)行一個或多個計算機程序以通過對輸入數(shù)據(jù)進行操作并生成輸出而執(zhí)行動作,從而來執(zhí)行。過程和邏輯流也可由專用邏輯電路來執(zhí)行,并且裝置也可實現(xiàn)為專用邏輯電路,專用邏輯電路例如是FPGA (現(xiàn)場可編程門陣列)或ASIC (專用集成電路)。
[0104]適用于執(zhí)行計算機程序的處理器例如包括通用和專用微處理器,以及任何種類的數(shù)字計算機的任何一個或多個處理器。一般地,處理器將從只讀存儲器或隨機訪問存儲器或者這兩者接收指令和數(shù)據(jù)。計算機的基本元件是用于根據(jù)指令執(zhí)行動作的處理器和用于存儲指令和數(shù)據(jù)的一個或多個存儲器設備。一般地,計算機還將包括一個或多個大容量存儲設備,或者操作性地耦合到一個或多個大容量存儲設備以便從其接收數(shù)據(jù)或向其傳送數(shù)據(jù),或者既包括也操作性地耦合到一個或多個大容量存儲設備,所述大容量存儲設備用于存儲數(shù)據(jù),例如是磁盤、磁光盤或光盤。然而,計算機不是必須具有這種設備。另外,計算機可被嵌入在另一設備中,另一設備舉例來說例如是移動電話、個人數(shù)字助理(PDA)、移動音頻或視頻播放器、游戲機、全球定位系統(tǒng)(GPS)接收機或者便攜式存儲設備(例如,通用串行總線(USB)快閃驅(qū)動器)。適用于存儲計算機程序指令和數(shù)據(jù)的設備包括所有形式的非易失性存儲器、介質(zhì)和存儲器設備,例如包括半導體存儲器設備,例如EPROM、EEPROM和快閃存儲器設備;磁盤,例如內(nèi)部硬盤或可移除盤、磁光盤;以及⑶-ROM和DVD-ROM盤。處理器和存儲器可被專用邏輯電路所補充,或者被包含在專用邏輯電路中。
[0105]為了支持與用戶的交互,本說明書中描述的主題的實施例可實現(xiàn)在計算機上,該計算機具有用于向用戶顯示信息的顯示設備,例如CRT (陰極射線管)或LCD (液晶顯示)監(jiān)視器,以及用戶可用來向計算機提供輸入的鍵盤和指點設備,例如鼠標或跟蹤球。其他種類的設備也可用于支持與用戶的交互;例如,提供給用戶的反饋可以是任何形式的感官反饋,例如視覺反饋、聽覺反饋或觸覺反饋;并且來自用戶的輸入可按任何形式被接收,包括聲響、話音或觸覺輸入。此外,計算機可通過向用戶使用的設備發(fā)送文檔并從該設備接收文檔來與用戶交互;例如,通過響應于從web瀏覽器接收的請求而向用戶的客戶端設備上的web瀏覽器發(fā)送網(wǎng)頁。
[0106]本說明書中描述的主題的實施例可在計算系統(tǒng)中實現(xiàn),該計算系統(tǒng)包括后端組件,例如作為數(shù)據(jù)服務器,或者包括中間件組件,例如應用服務器,或者包括前端組件,例如具有用戶可通過其來與本說明書描述的主題的實現(xiàn)方式交互的圖形用戶界面或Web瀏覽器的客戶端計算機,或者一個或多個這種后端、中間件或前端組件的任何組合。系統(tǒng)的組件可由任何形式或介質(zhì)的數(shù)字數(shù)據(jù)通信(例如通信網(wǎng)絡)互連。通信網(wǎng)絡的示例包括局域網(wǎng)(“LAN”)和廣域網(wǎng)(“WAN”),互聯(lián)網(wǎng)(例如,因特網(wǎng))和同伴網(wǎng)絡(例如,自組織同伴網(wǎng)絡)。
[0107]計算系統(tǒng)可包括客戶端和服務器??蛻舳撕头掌饕话憧杀舜诉h離并且通常通過通信網(wǎng)絡來交互??蛻舳撕头掌鞯年P系是由于計算機程序在相應計算機上運行且相互之間具有客戶端-服務器關系而發(fā)生的。在一些實施例中,服務器發(fā)送數(shù)據(jù)(例如,HTML頁面)到客戶端設備(例如,為了向與客戶端設備交互的用戶顯示數(shù)據(jù)和從該用戶接收用戶輸入)。在服務器處可從客戶端設備接收在客戶端設備處生成的數(shù)據(jù)(例如,用戶交互的結(jié)果)。
[0108]雖然本說明書包含許多具體實現(xiàn)細節(jié),但這些細節(jié)不應被解釋為對任何發(fā)明的范圍或可請求保護的范圍的限制,而是對特定發(fā)明的特定實施例的具體特征的描述。本說明書中在分開的實施例的上下文中描述的某些特征也可在單個實施例中組合實現(xiàn)。相反,在單個實施例的上下文中描述的各種特征也可分開地或者按任何適當?shù)淖咏M合在多個實施例中實現(xiàn)。另外,雖然以上可將特征描述為按某些組合來動作,或者甚至最初權利要求是這樣記載的,但來自要求保護的組合的一個或多個特征在一些情況下可被從該組合中刪去,并且要求保護的組合可指向子組合或子組合的變體。
[0109]類似地,雖然操作在附圖中是按特定順序描繪的,但這不應當被理解為為了實現(xiàn)期望的結(jié)果要求這種操作按所示出的特定順序或按先后順序執(zhí)行,或者要求所有示出的操作都被執(zhí)行。在某些情況中,多任務和并行處理可能是有利的。另外,在以上描述的實施例中各種系統(tǒng)組件的分離不應當被理解為在所有實施例中都要求這種分離,并且應當理解所描述的程序組件和系統(tǒng)一般可被一起集成在單個軟件產(chǎn)品中或被封裝到多個軟件產(chǎn)品中。
[0110]這樣,已描述了主題的特定實施例。其他實施例在所附權利要求的范圍內(nèi)。在一些情況下,權利要求中記載的動作可按不同的順序執(zhí)行,而仍實現(xiàn)期望的結(jié)果。此外,附圖中描繪的過程要實現(xiàn)期望的結(jié)果并非必然要求所示出的特定順序或者先后順序。在某些實現(xiàn)方式中,多任務和并行處理可能是有利的。
【權利要求】
1.一種方法,包括: 在與用戶賬號相關聯(lián)的第一計算設備上,接收來自在所述第一計算設備上運行的應用的運行中查詢; 基于所述運行中查詢,根據(jù)一個或多個應用特定訪問策略,確定多個數(shù)據(jù)項中所述應用擁有查看許可的一個或多個數(shù)據(jù)項, 所述多個數(shù)據(jù)項中的至少一個由與所述用戶賬號相關聯(lián)的第二計算設備貢獻;以及將所述一個或多個數(shù)據(jù)項呈現(xiàn)給所述應用,而不呈現(xiàn)所述多個數(shù)據(jù)項中的其他數(shù)據(jù)項,所述其他數(shù)據(jù)項是所述應用不擁有查看許可的數(shù)據(jù)項。
2.權利要求1所述的方法,包括 向遠程存儲位置發(fā)送請求以接收所述數(shù)據(jù)項;以及 從所述遠程存儲位置接收所述數(shù)據(jù)項。
3.權利 要求1所述的方法,其中所述運行中查詢保持活躍,直到所述應用被禁用或刪除。
4.權利要求1所述的方法,其中確定所述一個或多個數(shù)據(jù)項包括:確定所述多個數(shù)據(jù)項中的每個數(shù)據(jù)項關聯(lián)的標識符是否匹配與所述應用相關聯(lián)的標識符。
5.權利要求4所述的方法,其中與所述應用相關聯(lián)的標識符標識了對與該標識符相關聯(lián)的數(shù)據(jù)項擁有共享訪問權的應用家族。
6.權利要求1所述的方法,其中確定所述數(shù)據(jù)項是響應于從與所述用戶賬號相關聯(lián)的另一計算設備接收到關于數(shù)據(jù)項的通知。
7.一種方法,包括: 從與用戶賬號相關聯(lián)的第一計算設備接收數(shù)據(jù)項,該數(shù)據(jù)項與在所述第一計算設備上運行的應用相關聯(lián); 確定存儲所述數(shù)據(jù)項的容器,該容器專用于與所述第一計算設備相關聯(lián)的所述用戶賬號、并且專用于所述應用; 將所述數(shù)據(jù)項存儲在所述容器中;以及 向與所述用戶賬號相關聯(lián)的一個或多個其他設備發(fā)送關于所述數(shù)據(jù)項的通知,所述通知包括與所述數(shù)據(jù)項相關聯(lián)的所述應用的標識。
8.一種方法,包括: 從與用戶賬號相關聯(lián)的第一計算設備接收數(shù)據(jù)庫事務日志文件,所述數(shù)據(jù)庫事務日志文件標識了對數(shù)據(jù)庫的離散改變,所述數(shù)據(jù)庫事務日志文件是代替所述數(shù)據(jù)庫而被接收;以及 將所述事務日志文件通知給多個相關計算設備中的每一個,所述相關計算設備與和所述第一計算設備相關聯(lián)的所述用戶賬號相關聯(lián)。
9.權利要求8所述的方法,還包括響應于來自所述多個相關計算設備之一的請求而提供一個或多個所述事務日志文件。
10.一種方法,包括: 從與用戶賬號相關聯(lián)的第一計算設備接收標識了對數(shù)據(jù)庫的離散改變的第一事務日志; 從與所述用戶賬號相關聯(lián)的第二計算設備接收標識了對所述數(shù)據(jù)庫的離散改變的第二事務日志;
確定所述第一事務日志和所述第二事務日志之間存在沖突; 確定所述事務日志的兩個或更多事務是否能夠被合并;以及 如果所述兩個或更多事務能夠被合并,將合并的事務應用到所述數(shù)據(jù)庫。
11.權利要求10所述的方法,其中如果所述兩個或更多事務不能被合并,確定沖突獲勝者事務,并將該事務應用到所述數(shù)據(jù)庫。
12.權利要求10所述的方法,其中合并事務包括:確定共同祖先數(shù)據(jù)庫,并且在所述共同祖先數(shù)據(jù)庫、所述第一事務日志和所述第二事務日志之間執(zhí)行三方合并。
13.權利要求10所述的方法,其中所述沖突在沒有用戶交互的情況下被解決。
14.一種系統(tǒng),包括: 第一計算設備,與用戶賬號相關聯(lián)并且被配置為: 接收來自在所述第一計算設備上運行的應用的運行中查詢; 基于所述運行中查詢,根據(jù)一個或多個應用特定訪問策略,確定多個數(shù)據(jù)項中所述應用擁有查看許可的一個或多個數(shù)據(jù)項, 所述多個數(shù)據(jù)項中的至少一個由與所述用戶賬號相關聯(lián)的第二計算設備貢獻,以及將所述一個或多個數(shù)據(jù)項呈現(xiàn)給所述應用,而不呈現(xiàn)所述多個數(shù)據(jù)項中的其他數(shù)據(jù)項,所述其他數(shù)據(jù)項是所述應用不擁有查看許可的數(shù)據(jù)項;以及服務器系統(tǒng),被配置為: 從所述第一計算設備接收數(shù)據(jù)項,該數(shù)據(jù)項與在所述第一計算設備上運行的所述應用相關聯(lián), 確定用于存儲所述數(shù)據(jù)項的容器,該容器是專用于與所述第一計算設備相關聯(lián)的所述用戶賬號、并且是專用于所述應用; 將所述數(shù)據(jù)項存儲在所述容器中,以及 向與所述用戶賬號相關聯(lián)的一個或多個其他設備發(fā)送關于所述數(shù)據(jù)項的通知,所述通知包括與所述數(shù)據(jù)項相關聯(lián)的所述應用的標識。
15.權利要求14所述的系統(tǒng),所述第一計算設備還被配置為 向遠程存儲位置發(fā)送請求以接收所述數(shù)據(jù)項;以及 從所述遠程存儲位置接收所述數(shù)據(jù)項。
16.權利要求14所述的系統(tǒng),其中所述運行中查詢保持活躍,直到所述應用被禁用或刪除。
17.權利要求14所述的系統(tǒng),其中確定所述一個或多個數(shù)據(jù)項包括:確定所述多個數(shù)據(jù)項中的每個數(shù)據(jù)項相關聯(lián)的標識符是否匹配與所述應用相關聯(lián)的標識符。
18.權利要求17所述的系統(tǒng),其中與所述應用相關聯(lián)的標識符標識了對與該標識符相關聯(lián)的數(shù)據(jù)項擁有共享訪問權的應用家族。
19.權利要求14所述的系統(tǒng),其中確定所述數(shù)據(jù)項是響應于從與所述用戶賬號相關聯(lián)的另一計算設備接收到關于數(shù)據(jù)項的通知。
20.權利要求14所述的系統(tǒng),包括: 服務器系統(tǒng),被配置為: 從所述第一計算設備接收數(shù)據(jù)庫事務日志文件,所述數(shù)據(jù)庫事務日志文件標識了對數(shù)據(jù)庫的離散改變,所述數(shù)據(jù)庫事務日志文件被接收以代替所述數(shù)據(jù)庫;以及 將所述事務日志文件通知給多個相關計算設備中的每一個,所述相關計算設備與和所述第一計算設備相關聯(lián)的所述用戶賬號相關聯(lián)。
21.權利要求20所述的系統(tǒng),其中所述服務器系統(tǒng)被配置為響應于來自所述多個相關計算設備之一的請求而提供一個或多個所述事務日志文件。
22.權利要求14所述的系統(tǒng),包括: 服務器系統(tǒng),被配置為: 從所述第一計算設備接收標識了對數(shù)據(jù)庫的離散改變的第一事務日志; 從第二計算設備接收標識了對所述數(shù)據(jù)庫的離散改變的第二事務日志; 確定所述第一事務日志和所述第二事務日志之間存在沖突; 確定所述事務日志的兩個或更多事務是否能夠被合并;以及 如果所述兩個或更多事務能夠被合并,將合并的事務應用到所述數(shù)據(jù)庫。
23.權利要求22所述的系統(tǒng),其中所述服務器系統(tǒng)被配置為:如果所述兩個或更多事務不能被合并,確定沖突獲勝者事務,并將該事務應用到所述數(shù)據(jù)庫。
24.權利要求22所述的系統(tǒng),其中合并事務包括:確定共同祖先數(shù)據(jù)庫,并且在所述共同祖先數(shù)據(jù)庫、所述第一事務日志和所述第二事務日志之間執(zhí)行三方合并。
25.權利要求22所述的系統(tǒng),其中所述沖突在沒有用戶交互的情況下被解決。
26.—種計算機程序產(chǎn)品,存儲在計算機可讀介質(zhì)上,包括指令,所述指令當在第一計算設備上被執(zhí)行時使得所述第一計算設備執(zhí)行操作,所述操作包括: 接收來自在所述第一計算設備上運行的應用的運行中查詢; 基于所述運行中查詢,根據(jù)一個或多個應用特定訪問策略,確定多個數(shù)據(jù)項中所述應用擁有查看許可的一個或多個數(shù)據(jù)項, 所述多個數(shù)據(jù)項中的至少一個由與用戶賬號相關聯(lián)的第二計算設備貢獻,所述用戶賬號與所述第一計算設備相關聯(lián);以及 將所述一個或多個數(shù)據(jù)項呈現(xiàn)給所述應用,而不呈現(xiàn)所述多個數(shù)據(jù)項中的其他數(shù)據(jù)項,所述其他數(shù)據(jù)項是所述應用不擁有查看許可的數(shù)據(jù)項。
27.權利要求26所述的計算機程序產(chǎn)品,所述操作包括向遠程存儲位置發(fā)送請求以接收所述數(shù)據(jù)項;以及從所述遠程存儲位置接收該數(shù)據(jù)項。
28.權利要求26所述的計算機程序產(chǎn)品,其中所述運行中查詢保持活躍,直到所述應用被禁用或刪除。
29.權利要求26所述的計算機程序產(chǎn)品,其中確定所述一個或多個數(shù)據(jù)項包括:確定所述多個數(shù)據(jù)項中的每個數(shù)據(jù)項相關聯(lián)的標識符是否匹配與所述應用相關聯(lián)的標識符。
30.權利要求29所述的計算機程序產(chǎn)品,其中與所述應用相關聯(lián)的標識符標識了對與該標識符相關聯(lián)的數(shù)據(jù)項擁有共享訪問權的應用家族。
31.權利要求26所述的計算機程序產(chǎn)品,其中確定所述數(shù)據(jù)項是響應于從與所述用戶賬號相關聯(lián)的另一計算設備接收到關于數(shù)據(jù)項的通知。
32.一種裝置,包括: 與用戶賬號相關聯(lián)的計算設備,被配置為提供: 多個應用;同步管理器,被配置為將數(shù)據(jù)項上傳到遠程存儲并且接收與所述用戶賬號相關聯(lián)的其他設備上傳到所述數(shù)據(jù)存儲的數(shù)據(jù)項;以及 訪問管理器,被配置為根據(jù)一個或多個應用特定訪問策略來確定所述多個應用中的每個應用可以查看的數(shù)據(jù)項的許可。
33.權利要求32所述的裝置,其中所述應用被配置為向所述訪問管理器提供運行中查詢,所述運行中查詢保持活躍,直到所述應用被禁用或刪除。
34.權利要求32所述的裝置,其中所述訪問管理器被配置為基于與所述數(shù)據(jù)項相關聯(lián)的標識符來確定所述多個應用中的每個應用可以查看的數(shù)據(jù)項的許可。
35.權利要求32所述的裝置,其中所述同步管理器被配置為響應于從與所述用戶賬號相關聯(lián)的另一計算設備 接 收到關于數(shù)據(jù)項的通知,接收所述數(shù)據(jù)項中的至少一個。
【文檔編號】G06F17/30GK103620599SQ201280027149
【公開日】2014年3月5日 申請日期:2012年6月1日 優(yōu)先權日:2011年6月3日
【發(fā)明者】D·B·吉安保羅, D·德阿特勒, M·G·沃特森, M·J·里德, C·加洛韋, B·C·特朗布爾, N·W·C·吉勒特 申請人:蘋果公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
都昌县| 页游| 桂林市| 汉沽区| 海宁市| 肇东市| 湘乡市| 招远市| 忻州市| 湘潭县| 子长县| 历史| 汕尾市| 涞源县| 安陆市| 和田市| 汕尾市| 怀宁县| 开化县| 浦东新区| 康平县| 荆州市| 上虞市| 翼城县| 夹江县| 修武县| 吴江市| 定安县| 永清县| 融水| 浦北县| 新余市| 萨嘎县| 衡阳县| 周口市| 霸州市| 梅州市| 建湖县| 黎川县| 烟台市| 德化县|