TWI337310B - Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system - Google Patents

Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system Download PDF

Info

Publication number
TWI337310B
TWI337310B TW093122603A TW93122603A TWI337310B TW I337310 B TWI337310 B TW I337310B TW 093122603 A TW093122603 A TW 093122603A TW 93122603 A TW93122603 A TW 93122603A TW I337310 B TWI337310 B TW I337310B
Authority
TW
Taiwan
Prior art keywords
item
project
type
relationship
extension
Prior art date
Application number
TW093122603A
Other languages
English (en)
Other versions
TW200513874A (en
Inventor
Bekim Demiroski
Robert T Whitney
J Patrick Thompson
Anil K Nori
Sameet Agarwal
Pedro Celis
David G Campbell
Soner F Terek
Kim Cameron
Walter R Smith
Darren A Shakib
Nathaniel H Ballou
Srinivamurthy P Acharya
Balan Sethu Raman
Peter M Spiro
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/US2003/026144 external-priority patent/WO2005029313A1/en
Priority claimed from US10/646,580 external-priority patent/US7428546B2/en
Priority claimed from US10/693,574 external-priority patent/US7590643B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW200513874A publication Critical patent/TW200513874A/zh
Application granted granted Critical
Publication of TWI337310B publication Critical patent/TWI337310B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)

Description

1337310 九、發明說明: 【發明所屬之技術領域】 本發明係有關於一種資訊儲存與取出之領域,且由其 關於一種用以於一計算型系統中組織、搜尋、與共用不同 類型資料之主動儲存平台。本發明之各種不同實施例導向 由一硬體/軟體介面系統利用擴充與繼承方法以管理資料。 【先前技術】
個別碟片容量已經在過去十年間大約每年成長百分之 七十(70%)。莫爾定律精確的預測中央處理單元(CPU)的能 力的急速成長也已經在近年來發生。有線與無線技術已提 供了龐大的連結與頻寬。假設目前的趨勢繼續下去,在幾 年之内,平均膝上型電腦將具有大約一兆位元(TB)儲存, 並包含幾百萬個檔案,且500百萬位元(GB)裝置將會變得 报常見。
消費者主要使用其電腦於通訊或組織個人資訊,無論 其為傳統個人電腦管理員(PIM)類$1資料或媒體,例如數位 音樂或照片。數位内容的量以及儲存原始位元的能力已經 大大增加;然而可讓消費者用於組織與統一此資料之方法 並沒有跟上腳步。有知識的工作者花費大量的時間管理與 共享資訊,也某些研究估計有知識的工作者花費其時間的 1 5-25%於沒有生產力的資訊相關動作上。其他研究估計一 典型有知識的工作者每天約花費2 · 5小時於搜尋資訊上。 研發人員與資訊科技(IT)部份投資大量的時間與金錢 於建立其自己的共用儲存摘要之資料儲存,以呈現例如 6 1337310 人、地、_、與事件之此類事項。此不僅導致重複的工作, 且亦建立沒有共用搜尋或共享此資料之機制之共用資料 島。只要想許多通訊錄如何在今日存在於執行Micr〇s〇ft windows作業系統之一電腦上。許多應用程式,例如電子 郵件客戶端與個人財務程式,維持個人通訊錄,且極少共 用此程式個別維護之通訊錄資料之應用程式。因此,一財 務程式(如同Microsoft M〇ney)不以一電子郵件接觸資料 夾(如Microsoft Outi〇ok中者)中維護之位址共用付費者的 位址。實際上,許多使用者具有多個裝置與邏輯上應同步 化其本身與跨各種不同額外來源間之個人資料,包含行動 電話至商業服務,例如MSN與A〇l ;然而,共用文件之 合作藉由附加文件至電子郵件訊息而大量達成—也就是手 動而無效率。 此缺之合作的理由是電腦系統中組之資訊之傳統方法 著重於使用檔案-資料夾-與-目錄-型系統(「檔案系統」), X根據用於儲存檔案之儲存媒體之實體組織以組織複數檔 案至資料失目錄階層中。於1960年代間研發之MuUics作 業系統可歸功於使用檔案 '資料夹、及目錄以管理作業纟 _ 统層的資料的可儲存單元的先鋒。尤其是,Muiucs使用檔 案階層中之符號位址(藉此引八檔案路徑之點子),其中檔 案之實體位址對使用者並非透明(應用程式與使用者端)。 此槽案系統完全未考慮任何個別檔案的檔案格式及於檔案 系統層不相關的檔案間的關係(也就是指階層中檔案位置 之外者)。由於M u 11 i c s的問世,可儲存資料已經於作業系 7 统層規刻至檔索、資料夹、與目錄中。這些檔案一般包含 t施於i Μ '由該構案系統所維持之一特殊檔案中之棺案階層本 身(該广 ^ 目錄」)。接著,此目錄維護對應至該目錄中所有 其他;^ 1 *莱與該階層中此檔案之節點位置(在此稱為資料夾) 之一項 巧目清單。此係約四十年來的習知技藝。 然而’提供位於該電腦的實體儲存系統中之一合理資 訊呈斑 方式’ 一檔案系統卻是該實體儲存系統之一抽象 化》 且因此該檔案之利用需要該使用者操控(具有内容、特 性 > ^ 及與其他單元之關係之單元)與該作業系統提供(檔 · 資料爽、及目錄)間之一間接手段層(轉譯)。因此,使 用者i iiS m 、您用程式與/或使用者端)沒有選擇,只能強迫資訊單 元至-私& ^ 谓案系統結構中,即使這麼做沒有效率、不一致、
或不相I 〜脊。此外,既有擋案系統了解極少關於儲存於個別 資料結構,也由於此,大部份的資訊維持鎖定於 此。存取(及可理解)於撰寫其之應用程式之檔案令。因 少=,此缺乏資訊之架構描述及管理資訊之機制導向具有極 ^ =個別儲存間共用資料之資料儲存之建立。舉例來說, 汗多個人電腦(pc)使用者具有包含關於於某程度上互動 < 籲 人之資訊之五個不同儲存一舉例來說,〇utl〇〇k c〇ntacts、 線上帳戶位址、windows Address Book、Quicken Payees、 及立即訊息(IM)兄弟清單一由於組織檔案對這些pc使用 者呈現重大挑戰。由於大部份既有檔案系統利用用以組織 檔案與資料夾之一巢狀資料失比喻,當檔案數量增加,則 用於維護有彈性且有效率之一紐織架構所需之努力使人畏 8 1337310 縮。在此情況中,具有單一檔案之多個分類會是#常有難 的,然而,利用既有檔案系統中之硬或軟連結係累贅真 以维護的。 * μ缺 過去所做出之幾個不成功嘗試已點出檔案系紙 點。某些先前的嘗試已經包含使用内容可定址記懍雜提然 <機制,其中資料可由内容而非由實體位址加以存取, ^ 經 而這些努力已證明不成功,由於内容可定址記憶雜 證明為對裝置的小範圍使用是很有用的,例如快取e憔艏 與記憶體營理單元,基於各種不同原因還不可能玲於装踅 的大型使用,例如實體儲存媒艘,且因此此一解決方'· 直等於不存在。利用物件導向資料庫(OODB)系統1其他 ^ 試已被實行’但在特徵化強烈資料庫特徵與良好#權、 現方式中’這些嘗試在處理檔案呈現方式中是無姝的 、妹 無法根據該硬體/軟體介面系統層的階層結構複製速度 率、及簡化檔案與資料夾β其他努力,例如嘗試使用 SmallTalk(及其他衍生物),證明處理檔案與非檔案墓現方 式相當有效,但缺乏必須有效組織與利用各種不同資料檔 案間存在之關係之資料庫特性,且因此此系統之全面效能 無法被接受。又其他嘗試使用BeOS (及其他此作業系統研 九)S登明處理非棺案呈現方式是不足的—與傳統播牵系統 相同之核心缺點一除了可足夠呈現檔案,且提供相同必須 資料庫特性之外。 資料庫技術係存在類似挑戰之技藝之另一區域。舉例 來說,該相關資料庫模型已在商業上大大成空,事實上獨 9 1337310
立軟體廠商(ISV) —般練習相關資料庫軟體產品(例如 Microsoft SQL伺服器)中有效之功能之一小部份。然而, 大部份與此一產品之一應用程式互動係為簡單「獲得」與 「放入」形式。對此有許多快速明顯之理由,例如不可論 知之平台或資料庫一常常被忽略之一關鍵理由係該資料庫 不需要提供一主要商業應用程式廠商真正需要之確實抽象 化。舉例來說,該真實世界具有「項目」之標記,例如「顧 客」或「訂單j (以及一訂單嵌入「線上項目」,作為其本 身之項目),相關資料庫僅代表表格與行。因此,該應用程 式可能想要具有各方面之一致性、鎖定、安全性 '及/或觸 發該項目層(以命名一些),一般的資料庫僅於該表格/行層 提供這些特性。若各項目獲得映射致該資料庫中某些表格 中之單一行,此會運作良好,在具有多行項目之一訂單之 一情況中,可能有一項目為何真正獲得映射至多個表格之 理由,以及當在該情況中時,該簡單相關資料庫系統不提 供相當正確的抽象化。因此,一應用程式必須建立該資料 庫頂端之邏輯,以提供這些基本抽象化。換句話說,該基 本相關模型不提供一足夠平台以儲存資料,其中高階應用 程式可容易被研發,由於該基本相關模型需要該應用程式 與該儲存系統間之一間接手段層,其中該資料之語義結構 僅可見於特定範例中之應用程式中。某些資料庫廠商建立 更高階功能至其產品中一例如提供物件相關功能、新組織 模型等等一沒有一者提供需要的全面解決方法,其中一真 正的全面解決方法係為有用的網域抽象化(例如「個人」、 10
r J'事件J等等)提供有用的資料模型抽I 項目」、「擴充」、「關係」等等)。 有鐘於前述既有資料儲存與資料庫技術中之 要有新儲存平台提供_改良能力,以組織、搜 享電腦系統中所有類型資料—擴充與延伸該資 出既有檔案系統與資料庫系統,且設計以儲存所 料之一儲存平台。本發明結合之前在此併入參照 月滿足此需求。尤其是,本發明為由一硬體/軟體 操控之物件提供擴充與繼承之方法。 本發明所聲明之優先權係美國專利申 1 0/693,574號(律師文件號碼MSFT_2847),標題 由硬體/軟體介面系統管理之資訊單元的擴充及 統及方法」;申請於2003年8月21曰之美國專利 10/646,580號(律師文件號碼msFT-2735),標題 項目型儲存平台中資料模型化之系統與方法」; 2003年8月21曰之國際專利申請案第pC t/us 號(律師文件號碼MSFT-2779),標題為「於一項 平台t資料模型化之系統與方法」;其内容在此併 本案主要關於下列共同指派申請案所揭示者 内容在此併入本發明參照(及為了方便,在此; 份):申請於2003年8月21曰之美國專利 1 0/647,058號(律師文件號碼MSFT-1748),標題 由硬體/軟體介面系統但獨立於實體呈現方式之 資訊單元的呈現之系統及方法」;申請於2003年 良化(例如 缺乏,需 尋、與共 料平台超 有類型資 之相關發 介面系統 請案第 為「可藉 繼承之系 申請案第 為「於一 及申請於 03/26144 目型儲存 入參照。 ,其整體 椅要其部 申請案第 為「可藉 外管理之 8月21 1337310 日之美國專利申請案第1〇/646,941號(律師文件號瑪 MS FT-1 749),標題為「可藉由來自其實體組織之硬體/軟# 介面系統管理之資訊單元的分離之系統及方法j;申請於 2003年8月21曰之美國專利申請案第10/646,940號(律師 文件號碼MS FT- 175 0),標題為「可藉由硬體/軟體介面系 統管理之資訊單元的組織之一基本架構之實施方式之系統 及方法」;申請於2003年8月21曰之美國專利申請案第 1 0/646,63 2號(律師文件號碼MSFT-1751),標題為「可藉 由硬體/軟體介面系統管理之資訊單元的組織提供一頂階 結構之一核心架構之實施方式之系統及方法」;申請於 2003年8月21曰之美國專利申請案第1 0/646,645號(律師 文件號碼MSFT- 1 752) ’標題為「可藉由硬體/軟體介面系 統管理之呈現資訊單元間關係之系統及方法」;申請於 2003年8月21曰之美國專利申請案第10/646,5 75號(律師 文件號碼MSFT-2733),標題為「以一項目型儲存平台介面 化應用程式之系統及方法j;申請於2003年8月21曰之美 國專利申請案第 10/646,646 號(律師文件號碼 MSFT-2734),標題為「用以組織、搜尋、及共享資料之儲 存平台j ;申請於2003年10月24曰之美國專利申請案第 10/6 92,779號(律師文件號碼MSFT-2829),標題為「可藉 由硬體/軟體介面系統管理之組織資訊單元之一數位影像 架構之實施方式之系統及方法」;申請於2003年10月24 曰之美國專利申請案第1 0/692,5 1 5號(律師文件號瑪 MSFT-2 8 44),標題為「可藉由硬體/軟體介面系統管理之資 12 1337310 訊單元提供同步化服務之系統及方法」;申請於與本案同一 曰之美國專利申請案第 1 0/692,508號(律師文件號碼 MSFT-2845) ’標題為「可藉由硬體/軟體介面系統管理之資 訊單元提供關聯與階層性同步 申請於2003年10月24曰之美 號(律師文件號碼MSFT-2846) 介面系統管理之資訊單元之同 及方法」。 【發明内容】 下列簡介提供描述於之前 内容中(該「相關發明j )之本 介並非用於提供本發明之所有 非用於定義本發明之範圍。而 細描述與圖式之一介紹。 本發明以及該相關發明統 共享資料之一儲存平台。本發 料儲存之概念超出既有檔案系 計以做為包含結構化、非結構 資料類型之儲存。 本發明之儲存平台包含實 料儲存。該資料庫引擎包含具 料庫引擎。該資料儲存實施支 化、及資料安全性之一資料模 型資料及該名台提供一機制以 化服務之系統及方法」;以及 國專利申請案第1 0/693,362 ,標題為「可藉由硬體/軟體 步化架構之實施方式之系統 在此併入參照之相關發明之 發明各方面之一簡介。此簡 重要方面之一徹底描述,亦 是,此簡介用於做為下列詳 合導向用以組織、搜尋、及 明之儲存平台擴充與延伸資 統與資料庫系統之外,且設 化、或半結構化資料之所有 施於一資料庫引擎上之一資 有物件相關擴充之一相關資 援組織、搜尋、共享、同步 型。描述於架構中之特定類 擴充該架構組以定義新類型 13 1337310 資料(基本上為由 ^ 架構k供之基本類型之子類。一同 步化功能促進使用去 負t) 「】 系統之功能允‘ 供類似稽案 力把允4具有既有檔案系統之資料 作,但並無此傳統標$ 子之相互刼 凡搭案系統之限制。一變更 該資料庫儲在夕、έ 機制提供 这貝計㈣存之心變更之能力。㈣ 應用程式介面,分故斑成 σ乃包含一組 能,並存取該架構中描述之資料。 料千台之功 由該資料储存實施之資料模型定義代 、_ 及關係之資料儲存單元。一項目係可储存於 牛 之一資料罝分 〇 舞科儲存中 貢料單兀•,且可包含一或多個元件或關係。—_ 包含一或多個攔位(在此亦稱為一屬性)之一類型凡件係 係係二項目間之一連結。(如在此所使用者,這些^ 關 定項目可使用大寫’以自其他用於類似近接性中乞:他特 中突顯出來;然而,並非用於區別一大寫 弓 ,如「項目 (Item)」’且當非大寫時為相同詞,如「項 π 9 (“em)且 應假設或暗示此有所不同。) 該電腦系統另包含複數項目,其中各項 由可由一硬 趙/軟體介面系統操控之一不連續的可儲在 子資訊單元組 成,由該項目之-組織結構組成之複數項目資科失;及用 以操控複數項目之一硬體/軟體介面系統,且复 /、中各項目屬 於至少一項目資料夾,且可屬於超過一個項 θ貞科夾。 一項目或該項目屬性值之某些部份可動能u汾 Α 〜叶算,此係 相對於由一永久儲存取出者而言。換句話說,姑 琢硬體/軟體 介面系統不需要該項目儲存’且支援特定動作 吓’例如列舉 14 1337310 9【·妒秀8时正賴丨 第〇丨號蔚丨谋行年ί〇月修正 該目前項目組之能力,或取出給定該健存平台之其識別符 之一項目(其更完整描述於描述該應用程式介面,或ΑΡΙ 之各節中)一舉例來說,一項目可為一行動電話之目前位置 或一溫度感應器上讀取之溫度。該硬體/軟體介面系統可操 控複數項目,且另可包含由該硬體/軟體介面系統管理之父 數個關係互連之項目。 該電腦系統之一硬體/軟體介面系統另包含一核心架 構’以定義該硬體/軟體介面系統了解且可直接以一預定及 可預測方式處理之一組核心項目。為了操控複數項目,該 電腦系統與複數關係互連,並於該硬體/軟體介面系統層管 理該關係。 該 項目、 用程式 用行為 本程式 允許應 屬性, 查詢語 由一應 該資料 其中實 至記憶 雜性。 储存平台之API為定義 "、 蝴肌Ί两廿卞 項目擴 介面提 ,且與 設計模 用程式 以隔離 言之細 用程式 庫引擎 施該資 趙中之 充、及關係提供資料類別。除 供一組架構類別,為該資料類 該資料類別一同為該儲存平台 型。該儲存平台API提供_簡 設計人員根據該資料储存中項 該應用程式設計人員與該基本 節之方式形成查詢'該儲存平 所做至一項目之變更,且接著 (或任何種類儲存彡丨擎)要求之 料儲存。此允許應用程式設計 一項目,而保留資料儲存更新 台架構中之各 此之外,該應 別定義一組共 API提供該基 化查詢棋蜇, 目之各種不同 資料庫引擎之 台API亦收集 將其組織至由 正確更新中’ 人員做出變更 至該A PI之複 15 1337310 透過其共用儲存基礎與架構化資料,本發明之儲存平 台允許為消費者、有之事的工作者與專家更有效的應用程 式研發。其提供一豐富可擴充應用程式介面,不只可用於 其資料模型中繼承之功能,亦可囊括且擴充既有檔案系統 與資料庫存取方法。
鑑於此互相相關發明之拱形架構(在實施方式之第II 節t詳細描述)中,本發明尤其導向使用擴充以擴充項目與 屬性類型之功能,以及使用繼承以促進有效搜尋與組織相 關項目之間(在實施方式之第III節中詳細描述)。本發明之 其他特性與優點可自下列本發明實施方式與附圖明顯獲 得。 【實施方式】 1.簡介
本發明之標的描述具有符合法定需求之特徵。然而, 說明本身並非用於限制本專利之範圍。而是,發明人覺得 宣示之標的亦可於其他方法中實施,包含與此文件中描述 相似之不同步驟或步驟組合,結合其他發明或未來之技 術。此外,雖然「步驟」一詞可能在此用於暗示實施方法 之不同元件,該詞不應解釋為暗示在此揭示之各種不同步 驟之中或之間之任何特定順序,除非當個別步驟之順序明 確加以描述之外。 A.範例計算環境 本發明之許多實施利可執行於一電腦上。第1圖與下 列討論用於提供本發明可實施之適用計算環境之簡要一般 16 1337310
說明。雖然不需要,本發明之各種不同方面可描述於正由 一電腦,例如一客户端工作站或一伺服器,執行之電腦可 執行指令之通用内容中,例如程式模組。一般來說,程式 模組包含執行特定工作或實施特定抽象資料類型之副程 式、程式、物件、元件、資料結構等等。此外,本發明可 以其他電腦系統配置實施,包含手持式裝置、多處理器系 統、微處理器型或可程式化消費者電子元件、網路p C、微 電腦、主機電腦等等。本發明亦可實施於工作藉由透過一 通訊網路連結之遠端處理裝置執行之分散式計算環境中。 在一分散式計算環境中,程式模組可放置於區域與遠端記 憶體儲存裝置中。
如第1圖t所示,一範例通用目的計算系統包含一傳 統個人電腦2 0或類似者,包含一處理單元2 1 ' —系統記 憶體2 2、及耦合包含系統記憶體之各種不同系統元件至該 處理單元2 1之一系統匯流排2 3。該系統匯流排2 3可為任 何類型之匯流排結構,包含一記憶體匯流排或記憶體控制 器、一週邊匯流排、及使用任何匯流排架構之一區域匯流 排。該系統記憶體包含唯讀記憶體(ROM)24及隨機存取記 憶體(RAM)25。包含例如於開機期間幫助轉換該個人電腦 20中元件間之資訊之基本程式之一基本輸出/入系統 26(BI〇S)儲存於ROM 24中。該個人電腦20另可包含用以 讀取與寫入一硬碟(未顯示)之一硬碟裝置27、用以讀取與 寫入一可移除磁碟29之一磁碟裝置28、及用以讀取與寫 入一可移除光碟3 1,例如一 CD ROOM或其他光學媒體’ 17 1337310
之一光碟裝置30。該硬碟裝置27、磁碟裝置28、及光碟 裝置30分別藉由一硬碟裝置介面32、一磁碟裝置介面33、 及一光碟裝置介面34連結至系統匯流排23。該裝置與其 相關電腦可讀取媒體提供電腦可讀取指令、資料結構、程 式模組及該個人電腦20之其他資料之非揮發性儲存。雖然 在此描述之範例環境實施一硬碟' 一可移除磁碟2 9及一可 移除光碟31,熟知該項技藝人士應了解可儲存可由一電腦 存取之資料之其他類型電腦可讀取媒體,例如磁匣、快閃 記憶卡、數位影碟、伯努利匣、隨機存取記憶體(RAM)、 唯讀記憶體(ROM)等等亦可用於該範例作業環境中。同樣 的,該範例環境亦可包含許多類型之監控裝置,例如熱感 應器與安全性或火警系統,及其他資訊來源。
許多程式模組可儲存於該硬碟、磁碟 29、光碟 31、 ROM 24或RAM 25上,包含一作業系統35、一或多個應 用程式36、其他程式模組37與程式資料38。一使用者可 透過輸入裝置輸入指令與資訊至該個人電腦20中,例如一 鍵盤40與指標裝置42。其它輸入裝置(未顯示)可包含一 麥克風、搖桿、遊戲墊、衛星碟、掃描器等等。這些與其 他輸入裝置常常透過耦合至該系統匯流排之一序列埠介面 46連結至該處理器單元2 1,但亦可由其他介面加以連結, 例如一並列埠、遊戲埠或通用序列埠(U S B)。一螢幕4 7或 其他類型顯示裝置亦可經由一介面連結至該系統匯流排 23,例如一視訊轉接器48。除了該螢幕47之外,個人電 腦一般包含其他週邊輸出裝置(未顯示),例如喇D八與印表 18 1337310 機。第1圖之範例系統一包含一主機轉接器5 5、小型電腦 系統介面(SCSI)匯流排56、及連結至該SCSI匯流排56之 一外部儲存裝置6 2。
該個人電腦 2 0可利用邏輯連結至一或多個遠端電腦 操作於一網路環境中,例如一遠端電腦49。該遠端電腦49 可為另一個人電腦 '一伺服器、一路由器、一網路PC' — 對等裝置或其他共用網路節點,且一般包含上述關於該個 人電腦 2 0之許多或所有元件,雖然僅一記憶體儲存裝置 5 0舉例說明於第1圖中。第1圖中所述之邏輯連結包含一 區域網路(LAN)51與一廣域網路(WAN)52。此網路環境常 見於辦公室、專業型電腦網路、内部網路與網際網路。
當使用於一 LAN網路環境中時,該個人電腦透過一網 路介面或轉接器53連結至該LAN 5 1。當使用於一 WAN 網路環境中時,該個人電腦20 —般包含一數據機54或其 他用以建立透過該廣域網路5 2之通訊之構件,例如網際網 路。可為内建或外接之數據機54經由該序列埠介面46連 結至該系統匯流排2 3。在一網路環境t,關於該個人電腦 20描述之程式模組或其部分可儲存於該遠端記憶體儲存 裝置中。應了解所示之網路連結僅為範例,且亦可使用其 他建立該電腦間之一通訊連結之構件。 如第2圖之方塊圖中所示,一電腦系統200可粗略分 成三個元件群:該硬體元件202、該硬體/軟體介面系統元 件204、及該應用程式元件206(在此特定内容中亦稱為該 「使用者元件」或「軟體元件」)β 19 1337310 在一電腦系統200之各種不同實施例中,且參照回第 1圖,該硬體元件202可包含該中央處理單元(CPU)21、該 記憶體(ROM 24 與 RAM 25)、該基本輸出/入系統 (BIOS)26、及各種不同輸入/輸出(I/O)裝置,例如一鍵盤 40、一滑鼠42、一螢幕47'及/或一印表機(未顯示)。該 硬體元件202為該電腦系統200包含該基本實體架構。 該應欲程式元件206包含各種不同軟體程式,包含但 不限於編譯器、資料庫系統、文書處理器、商用程式、視 訊遊戲等等。應用程式提供電腦資源用於解決問題、提供 解決方法、及為各種不同使用者(機器、其他電腦系統、及 /或使用者端)處理資料之構件。 該硬體/軟體介面系統元件2 04包含(且在某些實施例 t可主要組成)一作業系統,在大部分情況中其本身包含一 殼與一核心。一「作業系統」(OS)係一特殊程式,作用如 同應用程式與電腦硬體間之一媒介物。該硬體/軟體介面系 統元件204亦可包含一虛擬機器管理員(VMM)、一共用語 言執行時間(CLR)或其功能相同者、一 Java虛擬機器(JVM) 或其功能相同者、或其他取代或加入一電腦系統中之作業 系統中之此軟體元件。一硬體/軟體介面系統之目的係提供 一使用者可執行應用程式之一環境。任何硬體/軟體介面系 統之目標係使該電腦系統方便使用,以及以一有效率的方 法利用該電腦硬體。 該硬體/軟體介面系統一般於開機時載入於一電腦系 統中,且其後管理該電腦系統中所有應用程式。該應用程 20 1337310 式藉由經由一應用程式介面(API)要求服務與該硬體/軟體 介面系統互動。.某些應用程式允許使用者端經由一使用者 介面與該硬體/軟體介面系統互動,例如一命令語言或一圖 形使用者介面(GUI)。 一硬體/軟體介面系統傳統上為應用程式執行各種不 同服務。在多個程式可同時執行之一多工硬體/軟體介面系 統中,該硬體/軟體介面系統決定何應用程式應以何順序執 行,且在輪流切換至另一應用程式之前應為各應用程式允 許多少時間'> 該硬體/軟體介面系統一管理多個應用程式間 内部記憶體之共享,並處理輸入與輸出至附加硬體裝置, 例如硬碟、印表機、及撥號埠。該硬體/軟體介面系統亦傳 送關於操作狀態與可能發生之任何錯誤之訊息至各應用程 式(且在特定情況中至該使用者端)。該硬體/軟體介面系統 亦可卸載批次工作之管理(如列印),使得該初始應用程式 可自此工作被釋放,且可恢復其他處理與/或操作。在可提 供平行處理之電腦上,一硬體/軟體介面系統亦管理切割一 程式,使得其一次執行於超過一處理器上。 一硬體/軟體介面系統殼(在此簡稱為一「殼」)係至一 硬體/軟體介面系統之一互動式使用者端介面。(一殼亦可 稱為一「指令轉譯器」,或在一作業系統中為一「作業系統 殼」。)一殼係直接可由應用程式及/或使用者端存取之硬體 /軟體介面系統之外部層。相對於一殼,一核心係直接與該 硬體元件互動之一硬體/軟體介面系統之最内層。 雖然想像本發明之許多實施例特別適用於電腦型系 21 1337310 統’此文件中完全無欲限制本發明於此實施例中。相反的, 在此使用的「電腦系統」一詞用於包圍任何與所有可儲存 與處理資訊及/或可使用該已儲存資訊控制該裝置本身之 行為或執行之裝置’不論是否此裝置.為電子、機械、邏輯、 或虛擬之本質。 B.傳統檔案型儲存
在今日大部分的電腦系統中,「檔案」為可包含該硬體 /軟體介面系統以及應用程式、資料組等等之可儲存資訊之 單元。在所有現代硬體/軟體介面系統(Wind〇ws、Unix、 Linux、Mac OS、虛擬機器系統等等)中,檔案為可由該硬 體/軟體介面系統操控之之基本不連續的(可儲存與可取出) 資訊(如資料、程式等等)單元。檔案群一般組織於「資料 夾」中。在 Microsoft Windows、Macintosh OS、及其他硬 體/軟體介面系統中,一資料夾係可取出、移動、及操控為 單一資訊單元之一檔案集合。接著,這些資料夾組織於稱 為一「目錄」(將在下方詳加描述)之一樹狀階層配置中。
在特定其他硬體/軟體介面系統中,例如DOS、z/OS及大 部分Unix型作業系統,「目錄」及/或「資料夾」一詞是可 互換的,且早期的Apple電腦系統(如Apple lie)使用「類」 一詞而非目錄;然而,如在此所使用者,這些詞本質是類 似的且可互換,且用於另包含所有其他相等的詞,用於參 照至階層資訊儲存結構與其資料夾與檔案元件。 傳統上’ 一目錄(也稱為資料夾之一目錄)係一樹狀階 層結構,其中檔案群組化至資料夹中,接著根據包含該目 22 1337310 錄樹之相關卽點位置加以排列。舉例來說,如第2 a β Α圖中 舉例所示,一 DOS型檔案系統基本資料夾(或「根目錄 可包含複數資料夾214’各可另包含額外資料夾(如同該 定資料夹之「子資料夾」)216,且各亦可包含無限個額$ 資料夹218。各個資料夾可具有—或多個檔案22〇,雄然於 該硬體/軟體介面系統層,一資料夾中之個別檔案沒有共通 性,除了其於樹狀階層中之位置之外。不令人騖訝的此 將檔案規劃至資料夾階層之方法間接反映用於儲存這些檔 '、之八里储存媒趙之實體組織(如硬碟、軟碟、CD-ROM等 等)β ^除了前述之外,各資料夹係其子資料夾及其檔案之一 合益一也就是說,各資料夾擁有其子資料夾與檔案。舉例 ^ 、。 資料夾藉由該硬體/軟體介面系統刪除時,該資 邛夹之子資料夾與檔案亦被刪除(在各子資料夾之情況 遞込包含其本身之子資料夾與檔案)。同樣的,各檔 、般由僅—資料夾擁有,雖然一檔案可被複製’且此副 =位於—不同資料夾中…標案之—副本本身係-不同且 單元,沒有直接連結至原始者(如至原始檔之變 更並不會於該硬體/軟體介面系統層鏡設至該複製檔中)。 此來,檔案與資料夾因此特徵化於「實體」本質中, 由於資料夹如同實體容器般被處自,且檔案如同這些容器 中之單獨且個别之實體元件般被處理。 用以組織、搜尋、及共享資料之winfs儲存平台 本發明’結合在此之前討論併入參照之相關發明,導 23 1337310 向用以儲存、搜尋、及共享資料之一儲存平台。本發明之 儲存平台將該資料平台延伸與擴張至既有檔案系統與上述 資料庫系統種類之外,且設計為所有類型之資料之儲存, 包含稱為項目之一新資料形式。 c.詞彙表 如在此所使用及在申請專利範圍中者,下列詞彙具有 下列意義:
• 一「項目」係可由一硬體/軟體介面系統存取之一 可儲存資訊單元,其不像一簡單檔案,係具有跨所 有由該硬體/軟體介面系統殼暴露至一使用者端之 物件支援共用之一基本組屬性之一物件。項目亦具 有跨所有項目類型共用支援之屬性與關係,包含允 許引入之新屬性與關係之特性(且將在下方詳細討 論)。
• 一「作業系統」(OS)係一特殊程式,做為應用程式 與電腦硬體間之一媒介物。在大部分的情況t,一 作業系統包含一殼與一核心。 • 一「硬體/軟體介面系統」係一軟體,或一硬體與 軟體之組合,做為一電腦系統之基本硬體元件與執 行於該電腦系統上之應用程式間之介面。一硬體/ 軟體介面系統一般包含(且在某些實施例中,僅由 其組成)一作業系統。一硬體/軟體介面系統亦可包 含一虛擬機器管理員(VMM)、一共用語言執行時間 (CLR)或其功能相同者、一 Java虛擬機器(JVM)或 24 1337310 其功能相同者、或其他取代或加入一電腦系統中作 業系統之此軟體元件。一硬體/軟體介面系統之目 的係提供一使用者可執行應用程式之一環境。任何 硬體/軟體介面系統之目標係使該電腦系統方便使 用’以及以一有效率之方法使用該電腦硬體。 D.儲存平台簡介
請參閱第3圖’一儲存平台30〇包含實施於—資料庫 引擎3 1 4上之一資料儲存3〇2。在—實施例中,該資料庫 引擎包含具有物件相關擴充之一相關資料庫引擎。在一實 施例中,該相關資料庫引擎3 14包含該Microsoft SQL甸 服器相關資料庫引擎。該資料儲存302實施一資料模型 304,支援資料之組織、搜尋、共享、同步化、及安全性。 特殊類型之資料描述於架構中,例如架構34〇,且該錯存 平台300提供用以配置該架構及用以擴充該架構之工具 346,如下方將更完整描述者。 實施於該資料儲存3〇2中之—變更追蹤機制3〇6提 追縱變更至該資料健在夕处士 Hr 寸砵孖之此力。該資料儲存3 〇2亦提供
全性功能308與一斗如/政„丄从' 升級/降及功此310,兩者皆將於下方 整討論。該資賊_抽+ , 褚存302亦提供一組應用程式介面;312 以將該資料儲在q 存302之功能揭示至利用該儲存平台之其 傾仔干台元株命士
千與應用程式(如應用程式350a、350b、. 350c)。本路 BB (-)⑵,其傳存平台…含—應用程式介1 S應用程式,例如應用程式3 50a ' 350b 及35〇c,存取 -a褚存平台之所有前述功能,並存取描述j 25 1337310 該架構中之資料 A PI結合加以使 Win32 API 326。 本發明之儲 程式,包含促進 務3 3 0。舉例來. 資料儲存302之 至具有其他格式 平台300亦提供 有檔案系統相互 系統3 1 8。在至· 供具有額外功能 與其他系統互動 施,例如一 Info 以其他公用程式 在至少某些 統之硬體/軟體介 但非加以限制, —虛擬機器管理 其功能相同者、 者’或形成其整 料,本發明之儲 允許更有效的應 設計表面區域, 。該儲存平台API 322可由應用程式其他 用,例如該OLE DB 324與該Microsoft 存平台300提供各種不同服務328至應用 使用者或系統間之資料共享之一同步化服 說,該同步化服務3 30可允許與具有如同 相同格式之其他資料儲存34〇,以及存取 之資料儲存342相互操作的能力。該儲存 檔案系統功能’允許該資料儲存3 〇 2與既 操作的能力’例如該Windows NTFS稽索 少某些實施例中,該儲存平台3 2 0亦可提 之應用程式’用以允許資料動作,且允許 。這些功能可以額外服務328之形式實 Agent服務334及一通知服務332,以及 336之形式。 實施例中’該儲存平台係實施於一電腦系 面系統中’或形成其整合部分。舉例來說 本發明之儲存平台可實施於一作業系·统 員(VMM)、一共用語言執行時間(CLR)或 或一 Java虛擬機器(JVM)或其功能相同 合部分。透過其共用儲存基礎及架構化資 存平台為消費者、有知識之工作者與專家 用程式研發。其提供一豐富且可擴充程式 不只有用於其資料模型令繼承之功能,亦 26 1337310 包含且擴充既有檔案系統與資料存取方法。 在下列描述中,且在各種不同圖式中,本發明之儲存 平台300可稱為「WinFS」。然而,使用此名稱參照該儲存 平台主要方便說明用,且並非用於做任何限制。 Ε.資料模型
本發明之儲存平台3 00之資料儲存3 02實施一資料模 型,支援位於該儲存中之資料之組織、搜尋、共享、同步 化、及安全性。在本發明之資料模型中,一「項目」係儲 存資訊之基礎單位。該資料模型提供用以宣告項目與項目 擴充及用以建立項目間之關係及用以組織項目資料夾及類 目中之項目之一機制,如下方將更完整說明者。
該資料模型依賴於兩個原始機制,類型與關係。類型 為提供一格式之結構,其管理一類型例之形式。該形式表 示為一已排序屬性組。一屬性係一值或一給定類型之值組 之一名稱。舉例來說,一 USPostalAddress可具有屬性街 道、城市、郵遞區號、州,其中街道、城市與州為字串類 型,而郵遞區號為Int32類型。街道可為允許該地址為該 街到屬性具有超過一個值之多重值(即一組值)。該系統定 義特定原始類型,可用於其他類型之架構中一這些包含字 串、二進位、布林值、Intl6、Int64、單、雙、位元組、曰 期時間、十進位與 GUID。一類型之屬性可利用該原始類 型或(具有下列所述之某種限制)任何建構類型加以定義。 舉例來說,一位置類型可能定義具有屬性座標與地址,其 中該地址屬性係為如上述U S P 〇 s t a 1A d d r e s s類型。屬性亦 27 1337310 可為必要或選擇性。
關係可被宣告且呈現兩個類型例組間之一映射。舉例 來說,可能有一關係宣告於個人類型與位置類型之間,稱 為Live At,其定義何人住在何位置。該關係具有一名稱、 兩個端點、命名為一來源端點與一目標端點。關係亦可具 有一已排序屬性組。來源與目標端點具有一名稱與一類 型。舉例來說,該LiveAt關係具有一來源稱為類型個人之 居住者,及一目標稱為類型位置之住所,且除此之外具有 屬性起始日期與結束日期,指示該居住者住在該住所之期 間。注意一個人可在不同時間住在多個住所,且一住所可 具有多個居住者,所以放置起始曰期與結束日其資訊最可 能的位置是在該關係本身上。 關係定義由給定為端點類型之類型所限制之範例間之 一映射。舉例來說,該LivesAt關係無法為一汽車係該居 住者之一關係,由於一汽車並不是一個人。
該資料模型允許類型間之一子類型-超級類型之定 義。該子類型-超級類型關係亦稱為基礎類型關係,以如果 類型A係類型B之基本類型之方式加以定義,其必須是每 個B範例亦為A範例之情況。另一個表示方法是與B —致 的每個範例亦必須與A —致。舉例來說,若A具有類型為 字串之一名稱屬性,而B具有類型為Int 16之一年齡屬性, 其跟隨任何B範例必須具有一名稱與一年齡。該類型階層 可想像為於根處具有單一超級類型之一樹。來自該根之分 支提供該第一層子類型,於此層之分脂提供第二層子類 28 1337310 型,以下類推至其本身 具有任何子類型之最拯折瑩石牺 型。該樹並非限制為—秘 接近葉子類 一給定類型具有零個戈 任何#環。 型。一給定範例可與具有 個超級類 一致化。另一方面,對於哕 取夕類尘 ί於該樹中任何層之―給 該範例可於該層與大部份 靶例來說 亦必須為該類型之子類型 災之範例 !項目 耗例,則一類型稱為抽象。 一項目係一可儲存眘 μ 仔育訊早元,不像一簡 具有一基本屬性組之—物株 檔案其係 藉由該儲存平台暴 所有物件,其 王使用者端或應用程式。:^目· 有跨所有項目類型it用*拉 項目亦具 屬性與關係引入之特性, 匕3允迕新 如下所討論者。 項目為共用操作之物杜 „ , 件,例如拷貝、刪除、移動、開 啟、列印、備分H t 秒動開 出之罩开複製專專。項目為可被儲存與取 且所有形式之可储存資訊皆藉由 項目間之關係之儲存平台加以操控,各將在下
方洋加讨論D 項目用於呈現真實世界與快 — Μ ^ A』丨解貪枓卓疋,像是 接觸、個人、服務、位置、文件(各種不同順序)等等。第 5A圓係舉例說明一項目之結 歹塊圓。該項目之不合 :名稱係,位置」。該項目之合格名稱係「一 —」, ,、指出此項目結構定義為核心架構令之一特定項目類型。 (該何新架構將在稍後詳加討論。) 29 1337310 該位置項目具有複數屬性,包含Eaddresses、
MetropolitanRrgion、Neighborhood、及 PostalAddresses。 各者之特定類型屬性立即跟隨該屬性名稱加以指示,且以 —冒號(「:」)與該屬性名稱隔開。至於該類型名稱之右 側’為該使性類型允許之值數量指示於括弧(r门」)之間, 其中一星號(「*」)至該冒號(「:」)右側,指示一不指定 及/或無限數量(「許多」)。一「1」至該冒號右側指示可 有最多一值。一「0」至該冒號左侧指示該屬性系選擇性(可 能完全沒有值)。_「1」至該冒號左側指示必須至少有一 值(該屬性係必要)。Neighborhood 與 MetropolitanRegion 皆為類型「nvachar」(或相等者),其係一預定資料類型或 簡單類型」(且在此指示為缺乏大寫)。然而,EAddresses 與 PostalAddresses 分別係類型 Eaddress 與 PostalAffresses 之已定義類型或「複雜類型」之屬性(在此指示為大寫)。 一複雜類型係自一或多個簡單資料類型及/或自其他複雜 類型取出之類型。一項目之屬性之複雜類型亦由「巢狀元 件」組成,由於該複雜類型之細節巢狀至該中間項目中, 以定義其屬性,且關於這些複雜類型之資訊已具有這些屬 性(在項目之邊界中’如稍後會加以討論者)之項目加以維 護。這些類型化之概念為已知,且由熟知該項記憶人士可 快速了解。 第5 B圖係舉例說明複雜屬性類型p 〇 s t a 1A d d r e s s與 EAddress之一方塊圖。該PostalAddress屬性類型定義屬 性類型PostalAddress之一項目可預期具有零或一個城市 30 1337310 值、零或一個國家代碼值、零或一個郵寄站值:及任何 量(零至許多)PostalAddress類型依此類推等等。如此 來,在此定義一項目中一特定屬性之資料之形狀。 EAddress屬性類型類似定義,如圖所示。雖然在此選擇 使用此應用程式,另一個代表該位置項目中複雜類型之 法是以其令所列之各複雜類型之個別屬性繪製項目。第 圖係舉例說明該位置項目之一方塊圖,其中其複雜類型 另加描述。然而,應了解第5C圖中位置項目之另一呈 方式係用於第5 A圖中舉例說明之相同項目。本發明之 存平台一允許子類型化,藉此一屬性類型可為另一屬性 型(其中該屬性類型繼承另一屬性類型之屬性、父屬性類 之一子類型。 類似於屬性與其屬性類型但與其不同,項目繼承呈 其本身之項目類型,其亦可為子類型化之主題換句話怒 本發明之數個實施例中之儲存平台允許一項目做為另一 目之一子類型(藉此該項目繼承另一項目之屬性、父 目)。此外,對於本發明之各種不同實施例來說,每個項 係該「項目j項目類型之一子類型,其係該基礎架構中 現之第一與基礎項目類型。(該基礎架構亦會在稍後加以 論。)第6 A圖舉例說明一項目,此範例中之位置項目, 為該基礎架構中找到之項目項目類型之一子類型。在此 式中,該箭頭指示該位置項目(如同所有其他項目)係該 目項目類型之一子類型。該項目項目類型,如同所有其 項目自此取出之基礎項目,具有許多重要屬性,例 數 該 性 方 5C 將 現 儲 類 型) 現 I 1 項 項 因 發 討 做 圖 項 他 如 31 1337310
ItemID與各種不同時間戳,且藉此定義一作業系統中所有 項目之標準屬性。在目前圖式中,這些項目項目類型之屬 性由位置繼承,且藉此變成位置之屬性。
另一個呈現自該項目項目類型繼承之位置項目中之屬 性之方法是以來自其中列示之父項目之各屬性類型之個別 屬性繪製位置。第6 B圖係舉例說明該位置項目之一方塊 圖,其中描述之繼承類型附加於其立即屬性。應注意且了 解此項目係第5A圖中舉例說明之相同項目,雖然在本圖 式中,位置舉例說明具有其所有屬性,皆為立即一顯示於 此圖與第5A圖中一且為繼承一顯示於此圖中但並非於第 5A圖中(然而在第5A圖中,這些屬性藉由以一箭頭顯示加 以參照,其中該位置項目係該項目項目類型之一子類型)。
項目係獨立物件;因此,若您刪除一項目,所有項目 立即與繼承屬性也會被刪除。同樣的,當取出一項目時, 接收的是該項目與所有其立即與繼承屬性(包含關於其複 雜屬性類型之資訊)。本發明之特定實施利可允許於取出一 特定項目時要求一子組屬性;然而,許多此實施例之預設 值係提供當取出時具有其立即與繼承屬性之項目。此外, 該項目之屬性亦可藉由新增新屬性至該項目之類型之既有 屬性加以擴充。這些「擴充j接著為該項目之真正屬性, 且該項目類型之子類型可自動包含該擴充屬性。 該項目之「邊界」係由其屬性(包含複雜屬性類型、擴 充等等)加以呈現。一項目之邊界亦呈現執行於一項目上之 一操作之限制,例如複製、刪除、移動、建立等等。舉例 32 1337310 來說,在本發明之數個實施例中,當一項目被複製時,該 項目邊界中之所有亦會被複製。對於各項目來說,該邊界 包含下列者: • 該項目之項目類型及若該項目係另一項目之一子 類型(如在本發明之數個實施例之此情況中,其中 所有項目皆自該基本架構中之單一項目與項目類 型取出),任何可應用子類型資訊(也就是指關於該 父項目類型之資訊)。若該原始項目被複製至另一 項目之一子類型,該副本亦可為該相同項目之一子 類型。 • 該項目之複雜類型屬性與擴充,若有的話。若該原 始項目具有複雜類型之屬性(原生或擴充),該副本 亦可具有相同複雜類型。 • 在「擁有關係」上之項目之紀錄,也就是指何其他 項目(該「目標項目」)由目前項目(該「擁有項目」) 擁有之項目之擁有清單。此尤其關於項目資料夾, 將在下方完整討論,且該規則說明於下方所有項目 必須屬於至少一項目資料夾。此外,關於嵌入項目 —將在下方完整討論—嵌入項目視為該項目之 部分,其中其為操作加以嵌入,例如複製、刪除等 等。 2.項目辨識 項目唯一辨識於具有一 ItemID之全域(global)項目空 間中。該Base.Item類型定義類型GUID之一欄位ItemID, 33 1337310 其為該項目儲存該身分。一項目必須具有確實一身分於該 資料儲存302中。
一項目參照係包含資訊以定位與辨識一項目之一資料 結構。在該資料模型中,一抽象類型係定義命名為 ItemReference,所有項目參照類型自此取出。該 ItemReference類型定義一虛擬方法,命名為Resolve該 Resolve方法解決該ItemReference,並傳回一項目。此方 法係由ItemReference之具艘子類型加以置換,其實施取 出一項目給定參照之一功能。該Resolve方法係呼叫為該 儲存平台API 322之部分。
ItemIDReference 係 ItemReference 之一子類型。其定 義一 Locator與一 ItemID欄位。該Locator摘位命名(即辨 識)一項目網域。期由一定位器解決方法加以處理,其可解 決該Locator之值至一項目網域。該ItemID欄位係為類型 ItemID。
ItemPathReference 係一特殊化 ItemReference,第一一 Locator與一 Path爛位。該Locator糊位辨識一項目網域。 期由一定位器解決方法加以處理,其可解決該Locator至 一項目網域之值。該Path棚位包含該儲存平台名稱領域中 之一(相關)路徑,根植於由該Locator所提供之項目網域。 此類型之參照無法用於—組操作中。該參照一般必須 透過一路徑解決方法處理加以解決。該儲存平台 API 322 之Resolve方法提供此功能。 上述討論之參照形式透過第1 1圖中舉例說明之參照 34 1337310 類型階層加以呈現。繼承自這些類型之額外的參照類型可 定義於架構中。其可用於一關係宣告中做為該目標欄位之 類型。 3.項目資料夾與類目 如下方將完整討論者,項目群組可組織至稱為項目資 料夾之特定項目中(其不要與擋案資料夾搞混了)。然而, 不像在大部分的檔案系統中,一項目可屬於超過一項目資 料夾,使得當一項目存取於一項目資料夾並修改時,此修 改之項目接著可直接從另一項目資料夾存取。基本上,雖 然存取至一項目可能自不同項目資料夾發生,實際正存取 者事實上正是相同的項目。然而,一項目資料夾不必須擁 有其所有成員項目,或可僅與其他資料夾結合共同擁有項 目,使得一項目資料夾之刪除不一定會導致該項目之刪 除。然而,在本發明之數個實施例中,一項目必須屬於至 少一項目資料夾,使得若一特定項目之主項目資料夾被刪 除,則對某些實施例來說,該項目會自動被刪除,或在其 他實施例中,該項目會自動變成一預設項目資料夾之一成 員(如一「垃圾桶」項目資料夾在概念上類似於各種不同檔 案-與-資料夾-型系統中名稱類似的資料夾)。 如下方將完整討論者,項目所屬之類目亦可根據共用 描述特徵,例如(a) —項目類型(或類型)、(b) —特定立即獲 繼承屬性(或屬性)、或(〇對應至一項目屬性之一特定值(或 值)。舉例來說,為個人接觸資訊包含特定屬性之一項目可 自動屬於一接觸類目,且具有接觸資訊屬性之任何項目同 35 1337310 樣會自動屬於此類目《同樣的,任何具有一位置屬性具有 一「紐約市」值之項目可自動屬於一 NewYorkCity類目。 類目在概念上係不同於項目資料夾,然而項目資料夾 可包含沒有互相關聯性之項目(即沒有一共同描述特徵)、 一類目中之各項目具有用以描述該類目之一共用類型、屬 性、或值(一「通用性」),且正是此通用性在該類目其他 項目中形成與其他項目之關係的基礎。此外,一特殊資料 夾中一項目之成員並非根據任何該項目之特殊方面加以強 制,對於特定實施例來說,具有可分類為相關於一類目之 一通用性之所有項目可於該硬體/軟體介面系統層自動變 成該類目之一成員。概念上,類目亦可視為一虛擬項目資 料夾,其成員係根據一特定查詢之結果而定(例如一資料庫 中之内容),且符合此查詢條件之項目(由該類目之通用性 加以定義)因此會包含該類目之成員。 第4圖舉例說明項目、項目資料夾、及類目間之結構 關係。複數項目 402、 404、 406、 408、 410、 412、 414、 416、418、及420為各種不同項目資料夾422、424、426、 428、及 430之成員。某些項目可屬於超過一個項目資料 夾,如項目402屬於項目資料夾422與424。某些項目, 如項目402、404、406、408、410、及412,亦為一或多個 類目432、434、及436之成員,而其他時候,如項目414、 416、418、及420,可不屬於任何類目(雖然這很可能是在 特定實施例中,任何屬性自動暗示一類目中成員之所有 權,且恩此一項目可能必須完全沒有特性,才不會在此一 36 1337310 實施例中為任何類目之一成員 ) 相對於資料决^阳 構,類目與項目資钭奂 灭之1¾層、,·〇 “士 s 具有很像圖中導向圖的結構。在任 何事件中,項目、項目f料夾 稱在任 資料失及類目都是項目(不同項目 相對於檔案、資n 〇 #抖夹、及目錄,本發明之項目、項目 資料夹、及類目並非特徵化於 項項目 艰」本質中,由於#、-5 有實體容器的對等概念,且因此 ' 目可存在於超過一個此 位置中。項目存在於超過一個項目 資枓失位置中以及規劏 至類目中之能力於該硬體/軟體 两層供一遞增與夯眚 程度之資料操控與儲存結構功能,、 t出目刖業界中可用的 之外。 4.架構 a)基礎架構 為了為項目之建立與使用提供— ^ 通用基礎,本發明之 儲存平台之各種不同實施例包含有_ ^ 基礎架構,歧見利用 以建立與組織項目與屬性之一概念架冑。該基礎架構定義 特定特殊類型之項目與屬性,且這些特殊基礎類型之特性 子類型可另自其取出。此基本架構之使用允許—程式設計 人員在概念上分辨項目(及其各自類型)與屬性(及其各自 類型)。此外’該基礎架構說明基礎屬性組,所有項目可處 理為所有項目(及其對應項目類型)自該基本架構(及其對 應項目類型)中之基礎項目取出。 如第7圖中舉例說明所示,且關於原本發明之數個實 施例’該基本架構定義三個頂階類型:項目、擴充、及屬 37 1337310 性基礎。如圖所示,該項目類型係由此基冑「項目」項目 類聖之屬14所疋義。相&的’該頂階屬性類型 「ΡΓ〇Ρ^Β^」沒有預定屬性,且僅為支柱,所有其他 屬改類型自此取出’且所有取出之屬性類型透過此互相關 聯(自該I $14類型共同取出該擴充類型屬性定義該 擴充擴充何項目’以及當一項目具有多個擴充時,辨識分 辨擴充之間。
項目資料失係該項目項目類型之一子類型,除了自該 項目繼承之屬14之外’訂出用以建立連結至其成員(若有的 話)之關係之特性’然而IdentityKey與皆為
PropertyBase 之子類型。接著,categ〇ryRef 係 identityKey 之一子類型。 b)核心架構
本發明之储存平台之各種不同實施例另包含有一核心 架構’其位頂階項目類型結構提供一概念架構。第8 a圖 係舉例說明該核心架構中之項目之一方塊圖,而第8B圖 係舉例說明該核心架構中之屬性類型之一方塊圖。具有不 同副檔名(*.c〇m、*.exe、* bat、*.sys等等)之檔案間之差 異與檔案-與-資料夹型系統t之此公式類似於該核心架構 之功能。在該項目型硬體/軟體介面系統中,該核心架構定 義一組核心項目類型’其直接(由項目類型)或間接(由項目 子類型)特徵化所有項目至一或多個核心架構項目類型 中,該項目型硬體/軟體介面系統了解它,且可直接以一預 定且可預期之方式處理。該預定項目類型反映該項目型硬 38 1337310 體/軟體介面系統中之最常見項目,且因此一有效層由該項 目型硬體/軟體介面系統了解這些包含該核心架構之預定 項目類型加以獲得》
在特定實施例中,該核心架構係不可擴充一也就是 說,沒有額外的項目類型可為直接來自該基本架構中項目 類型之子類型,除了為自核心架構部分之特殊預定取出項 目類型之外。藉由避免擴充至該核心架構(也就是藉由避免 增加新項目至該核心架構),由於每個後續項目類型必須是 一核心架構項目類型之一子類型,該儲存平台要求使用該 核心架構項目類型。此結構允許定義額外項目類型中彈性 之一合理程度,且亦保留具有一預定組核心項目類型。 對本發明之各種不同實施例來說,且參照第8 A圖, 該核心架構支援之特定項目類型包含一或多個下列各者: • 類目:此項目類型之項目(及自其取出之子類型)代 表該項目型硬體/軟體介面系統中之有效類目。 • 商品:可辨識值之項目。
• 裝置:具有支援資訊處理功能之一邏輯結構之項 目° • 文件:具有不由項目型硬體/軟體介面系統轉譯, 但由對應至該文件類型之一應用程式轉譯之内容 之項目。 • 事件:記錄特定發生事件於該環境中之項目。 • 位置:代表實體位置(如地理位置)之項目。 • 訊息:兩個或多個原則(定義如下)間之通訊之項 39 1337310 目。 • 原則:具有一 ItemID旁至少一明確可驗證身分之 項目(如一個人、組織、群組、家庭、授權、服務 等等之辨識)。 •陳述:具有關於不包含限制、策略、訂閱、憑據等 等之環境之特殊資訊之項目。 同樣的’且參照第8B圓,由該核心架構支援之特殊 屬性類铟可包含一或多個下列各者: •憑據(自該基本架構中之基礎Pr〇pertyBase類型取 出) 鲁原則身分金錄(自該基本架構中之IdentityKey類 型取出) 鲁郵件地址(自該基本架構中之屬性類型取出) #豐畜文子(自該基本架構中之屬性類型取出) • EAddress(自該基本架構中之屬性類型取出) • IdentitySeCUrityPaCkage(自該基本架構中之關係 類型取出) 籲RdeOccupancy(自該基本架構中之關係類型取出) • BasicPresence(自該基本架構中之關係類型取出) 這些項目與屬性另參照第8A圖與第8B圖之其各自屬 性加以描述。 5·關係 關係係二進位關係,其中一項目指定為來源而另一 項目指定為目#。該來源項目與該目標項目係由該關係相 40 1337310 關連。該來源項目一般控制該關係之生命週期。也就是說, 當該來源項目被刪除時,該項目間之關係亦被刪除。 關係分類為:包含與參照關係。該包含關係控制該目 標項目之生命週期,而該參照關係不提供任何生命週期管 理語義。第1 2圖舉例說明關係分類之方式。
該包含關係類型另分類至持有與内嵌關係。當至一項 目之所有持有關係被移除時,該項目也會被刪除。一持有 關係透過一參照計算機制控制該目標之生命週期。該内嵌 關係允許合成項目之模型化,且可被視為互斥持有關係。 一項目可為一或多個持有關係之目標,但一項目可為一個 内嵌關係之目標。為一内嵌關係之一目標之一項目無法為 任何持有或内嵌關係之一目標。 參照關係不控制該目標項目之生命週期。其可為搖擺 —該目標項目可能不存在。參照關係可用於該全域項目名 稱領域(即包含遠端資料儲存)中任何處模型化參照至項 目。
擷取一項目不會自動擷取其關係。應用程式必須明確 要求一項目之關係。除此之外,修改一關係不會修改該來 源或目標項目;同樣的,增加一關係不會影響該來源/目標 項目。 a)關係宣告 該明確關係類型以下列元件定義: 參一關係名稱係指定於該名稱屬性中。 • 關係類型為下列其中之一:持有、内嵌、參照。此 41 1337310 指定於該類型屬性中。 參來源與目標端點。各端點指定該參照項目之一名稱 與類型。 • 該來源端點欄位一般為類型ItemID(不宣告),且其 必須參照相同資料儲存中之一項目做為該關係範 例。
• 對於持有與内嵌關係來說,該目標端點欄位必須 為類型 ItemIDReference,且其必須參照相同資 料儲存中之一項目做為該關係範例。對於參照關 係來說,該目標端點可為任何ItemReference類 型,且可參照其他儲存平台資料儲存中之項目。 籲一純量或 PropertyBase類型之選擇性一或多個 攔位可被宣告。這些欄位可包含與該關係相關之 資料。 • 關係範例儲存於一通用關係表中。
參每個關係範例係由該組合(來源ItemID、關係ID) 為一辨識。不論其類型為何,該關係ID為一給 定項目中來源之所有關係於一給定來源ItemID 中係唯一的。 該來源項目係該關係之擁有者。指定為擁有者之一項 目控制該關係之生命週期,該關係本身係分離自其關聯之 項目。該儲存平台API 322提供用以揭示與一項目相關之 關係之機制。 在此為一關係宣告之一範例: 〈Relationship Name="Employment" BaseType="Reference" > 42 1337310 〈Source Name="Employee" ItemType="Contact.Personn/> 〈Target Name=nEmployer” ItemType="Contact,Organization” ReferenceType="ItemIDReferenceM /> 〈Property Name=MStartDate" Type="the storage platformTypes.DateTime'1 /> <Property Name='lEndDaten Type="the storage platformTypes.DateTime" /> <Property Name=nOffice,! Type=Mthe storage platformTypes.DateTime'1 /> 〈/Relationship〉 此為一參照關係之一範例。若由該來源參照所參照之 個人項目不存在,該關係無法被建立。同樣的,若該個人 項目被刪除,該個人與組織間之關係範例也會被刪除。然 而,若該組織項目被刪除,該關係不會被刪除且其會榣擺。 b)持有關係 持有關係用於模型化該目標項目之參照計算型生命週 期管理。 一項目可為另或更多關係至項目之一來源端點。不為 一内嵌項目之一項目可為一或多個持有關係中之一目標。 該目標端點參照類別必須為11 e m I D R e f e r e n c e,且其必 須參照該相同儲存中之一項目做為該關係範例。 持有關係加強該目標端點之生命週期管理。一持有關 係範例之建立與搖擺之項目係一原子操作。額外之持有關 係範例可被建立為將目標放置該相同項目。當具有一給定 項目為目標端點之最後持有關係範例被刪除時,該目標項 目亦被刪除。 當該關係之一範例建立時,於該關係宣告中指定之端 點項目之類型一般會被加強。該端點項目之類型無法在該 關係被建立之後建立。 持有關係做為行程該項目名稱領域中之一關鍵角色。 43 V1337310 其包含定義與該來源項目相關之目標項目之名稱之「名稱 廣,。此相關名稱對來源自一給定項目之所有持有關係來 說是唯-的。開始自該根項目至一給定項目之此相關名稱 之排序清單形成至該項目之完整名稱β 該持有關係形成一導向非循環圖(DAG)。當一持有關 係建立時,該系統確保一循環被建立,因此確保該項目名 稱領域形成一 dag。
該持有關係控制該目標項目之生命週期,然而其無法 控制該目標端點項目之操作一致性。肖目標項目操作獨立 自透過一持有關係擁有其之項目。於為一持有關係之一來 源之一項目上之複製、移動、備分及其他操作不會影響相 同關係之一目標之項目—舉例來說,也就是說,備份一資 料夾項目不會自動備份資料夾中所有項目(該資料夾成員 關係之目標)。 下列係一持有關係之一範例: 〈Relationship Name="FolderMembers" BaseType="Holding” > 〈Source Name="F〇lder” ItemType="Base.Folder"/〉
〈Target Name=MItem" ItemType="Base.Item" ReferenceType="ItemIDReference" /> 〈/Relationship〉 該資料夾成員關係允許一資料夾之概念做為項目之一 通用集合。 C)内嵌關係 内嵌關係模型化該目標項目之生命週期之互斥控制之 概念。其允許合成項目之概念。 一内嵌關係範例之建立及目標化之項目係一原子操 作。一項目可為零或更多内嵌關係之一來源。然而,一項 44 1337310 目可為一與僅一内嵌關係之一目標。係一内嵌關係之一目 標之一項目無法為一持有關係之一目標。 該目標端點參照類型必須是11 e m ID R e f e r e n c e,且其必 須參照相同資料儲存中一項目做為該關係範例。 當該關係之一範例建立時,指定於該關係宣告中之端 點項目之類型一般會被加強。在該關係被建立之後,該端 點項目之類型無法變更。
内嵌關係控制該目標端點之操作一致性。舉例來說, 一項目之序列化動作包含所有内嵌關係之序列化,其來源 來自該項目以及所有其他目標,複製一項目亦複製所有其 内嵌項目。 下例係一範例宣告: 〈Relationship Name="ArchiveMembers" BaseType="Embedding” > 〈Source Name="Archive" ItemType="Zip.Archive" /> <Target Name="Member" ItemType="Base.Item " ReferenceType="ItemIDReference" /> <Property Name="ZipSize" Type="the storage platformTypes.bigint" /> 〈Property Name="SizeReduction" Type="the storage platformTypes.float" /> 〈/Relationship〉 d)參照關係 該參照關係不控制其參照之項目之生命週期。此外, φ 該參照關係不保證該目標之存在,亦不保證該目標之類型 如指定於該關係宣告中一般》此意指該參照關係可搖擺。 同樣的,該參照關係可參照其他資料儲存中之項目。參照 關係可視為與網頁中連結相似之概念。 參照關係宣告之一範例如下所示: <Relationship Name="DocumentAuthor" BaseType="Reference" > <Sourc IternType^'Occument" ItemType="Base.Document"/> 〈Target ItemType=”Author" ItemType="Base,Author” ReferenceType="ItemIDReference" /> 〈Property Type="Role" Type="Core.CategoryRef" /> 45 1337310 <Property Type="DisplayName" Type="the storage platformTypes.nvarchar(256)" /> 〈/Relationship〉 任何參照類型允許於該目標端點中。參與於一參照關 係中之項目可為任何項目類型。 參照關係用於模型化項目間最沒有生命週期之管理關 係。由於該目標之存在並非強制,該參照關係便於模型化 放鬆耦合關係。該參照關係可用於將目標放於其他資料儲 存中之項目,包含其他電腦上之儲存。
e) 規則與限制 下列額外規則與限制應用於關係: • 一項目必須是(一内敌關係)或(一或多個持有關 係)之一目標。一例外係該根項目。一項目可為 零或多個參照關係之一目標。 • 為内嵌關係之一目標之一項目無法維持有關係 之來源。其可為參照關係之一來源。 • 若自檔案升級,一項目無法維持有關係之一來 源。其可為内嵌關係與參照關係之一來源》
• 可自一檔案升級之一項目無法為一内嵌關係之 一目標。 f) 關係之排序 在至少一實施例中,本發明之儲存平台支援關係之排 序。該排序係透過該基礎關係定義中一名稱為「Order」之 屬性加以達成。該Order攔位上沒有唯一性限制。不保證 具有相同「排序」屬性值之關係之排序,然而保證其可於 具有較低「排序j值之關係之後與具有較高「排序」欄位 46 1337310 值之關係之前加以排序。 應用程式可藉由排序該組合(SourceltemID 、 RelationshipID、Order)以獲得預設順序中之關係。不論該 集合中之關係之類型為何,源自一給定項目之所有關係範 例排序為單一集合。然而,此保證一給定類型(如 FolderMembers)之所有關係為一給定項目之關係及何之一 排序子組。
用以操控關係之資料儲存API 3 1 2實施之緣關係排序 之一組操作。引入下列項目以幫助解釋操作: 籲係具有排序值W之排序集合中之 第一關係。 • 係具有排序值之排序集合中之 最後一關係6 _ 係具有排序值 义之集合中之一給定關 係。
• /?e/Prev係具有小於Ori/X之排序值OrdPrev之集 合中至之一最接近關係;及 • 係具有大於OrrfX之排序值OrdNext之集 合中至ReIX之一最接近關係。 該操作包含但不限於: • InsertBeforeFirst(SourceItemID, Relationship) 插入該關係做為該集合中之第一關係。該新關係 之「Order」屬性之值可小於OrdFirst» • Insert After Last (Source ItemlD, Relationship)插 47 1337310 入該關係做為該集合中之最後一關係。該新關係 之「Order」屬性之值可大於OrdLast。 • Insert At (SourceltemID, ord, Relationship)為j 講_ 「Order」屬性插入具有該指定值之一關係。 • InsertBefore(SourveItemID, ord, Relationship) 插入該關係在具有該給定順序值之關係之前。該 新關係可被指派OrdPrev與ord間之「Order」值, 前後不包含。
• InsertAfter(SourceItemID, ord, Relationship)插 入該關係在具有該給定順序值之關係之後。該新 關係可被指派ord與OrdNext間之「Order」值, 前後不包含。 • Mov e B efore (SourceltemlD, ord, Relationship ID) 移動具有給定關係ID之關係至具有給定「Order」 值之關係之前。該關係可被指派OrdPrev與ord 間之一新「Order」值,前後不包含。
• MoveAfterfSourceltemID, ord, RelationshipID) 移動具有給定關係ID之關係至具有給定「Order」 值之關係之後。該關係可被指派ord與OrdNext 間之一新「Order」值,前後不包含。 如前所述,每一項目必須為一項目資料夾之一成員。 根據關係,每個項目必須具有含有一項目資料夾之一關 係。在本發明之數個實施例中,特定關係由該項目間既有 之關係所呈現》 48 1337310
如為本發明各種不同實施例所實施者,一關係提供由 一項目(該來源)「擴充」致令一項目(該目標)之一導向二 進位關係。一關係由該來源項目(擴充其之項目)所擁有, 且因此若該來源被移除,該關係亦會被移除(如當該來源北 刪除時,該關係也會被刪除)。此外,在特定範例中,一關 係可共享(共同擁有)該目標項目之所有權,且此擁有權必 須反映於該關係(如為該關係屬性類型顯示於第7圖中者) 之 IsOwned屬性(或其對等者)中。在這些實施例中,新 IsOwned關係之建立會自動遞增該目標項目上之一參照計 數,且刪除此一關係會遞減該目標項目上之參照計數。對 於這些特定實施例來說,若具有大於零之一參照計數,項 目繼續存在,且若當該計數達到零時會自動被刪除。同樣 的,一項目資料夾係具有(或可具有)一組至其他項目之關 係之一項目,這些其他項目包含該項目資料夾之成員。關 係之其他實際實施方式可能且由本發明參與以達成在此所 描述之功能。
不論實際實施方式為何,一關係係來自一物件至另一 物件之一可選擇連結。一項目屬於超過一項目資料夾、以 及屬於一或多個類別之能力,及是否這些項目、資料夾、 及類別為公用或私用,係由給予存在(或其缺乏)於一項目 型結構中之意義加以決定。這些邏輯關係係指派給一組關 係之意義,不論實際實施方式為何,其為特定應用以達成 在此所述之功能。邏輯連結係建立於該項目與其項目資料 夾或類別(反之亦然)之間,基本上,由於項目資料夾與類 49 1337310 別各為一特定類型之項目。因此,項目資料夾與類別可與 任何其他項目相同之方法運作一複製、增加至一電子郵件 訊息、嵌入一文件中等等而無限制一且項目資料夾與類別 可利用如同為其他項目般之相同機制被序列化與解序列化 (匯入與匯出)。(舉例來說,在XML中,所有項目可具有 一序列化格式,且此格式應用相等於項目資料夾、類別、 及項目。)
代表一項目與其項目資料夾間之關係之前述關係可自 該項目邏輯擴充至該項目資料夾、自該項目資料失邏輯擴 充至該項目、或兩者皆是。自一項目邏輯擴充至一項目資 料夹之一關係代表該項目資料夹對該項目係公用,且共享 具有該項目之成員資訊;相反的,缺乏自一項目至一項目 資料夾之一邏輯關係代表該項目資料夾對該項目係私用, 且不共享具有該項目之成員資訊'同樣的,自一項目資料 夾邏輯擴充至一項目之一關係代表該項目對該項目係公 用,且可共享該項目資料夾:然而,缺乏自該項目資料夾 至該項目之一邏輯關係代表該項目係私用且不可共享。因 此,當一項目資料夾匯入至另一系統時,其係共用於該新 内容尹之「公用」項目,且當一項目為其他可共享項目搜 尋其項目資料夾時,其係提供具有關於其屬於之可用享項 目之資訊之項目之「公用」項目資料央。 第9圖係舉例說明一項目資料夾(同樣的係一項目本 身)、其成員項目、及該項目資料夾與其成員項目間之互連 關係之一方塊圖。該項目資料夾900具有複數項目902、 50 1337310
904 '及906之成員。項目資料夾900具有來自其本身至項 目9 02之一關係912,其代表該項目902係公用且可共享 至項目資料夾900、其成員904與906、及任何可存取項目 資枓夾900之其他項目資料夾、類別、或項目(未顯示)。 然而,沒有來自項目902至該項目資料夾900之關係代表 項目資料夹900對項目902係私用,且不與項目902共其 成員資訊。另一方面,項目904的確具有來自其本身至項 目資料夾900之一關係924,其代表該項目資料夾900係 公用,且與項目9 04共用其成員資訊。然而,沒有來自項 目資料夾900至項目904之關係代表項目904係私用且不 可共享於項目資料夾900、其其他成員902與906、及可存 取項目資料夾900之任何其他項目資料夾、類別、或項目 (未顯示)。相對於其對項目902與904之關係(或其缺乏), 項目資料夾 900具有來自其本身至該項目906之一關係 916,且項目906具有一關係926回到項目資料夾900,其 共同代表項目906係公用且可共享於項目資料夾900、其 成員902與904、及任何其他可存取項目資料夾900之項 目資料夾、類別、或項目(未顯示),且項目資料夾900係 公用且與項目906共享其成員資訊。 如前所討論者,一項目資料夾中之項目不需要共享一 通用性,由於項目資料夾並非「加以描述」。另一方面,類 別由共用於所有其成員項目之一通用性加以描述。因此, 一類別之成員有限繼承至具有所述通用性之項目,且在特 定實施例中,所有符合一類別之描述之項目會自動製作該 51 1337310 類別之成員。因此,項目資料夾允許欲由其成員所呈現之 瑣碎類型架構,而類別根據該定義通用性允許成員。
當然,類別描述本質上為邏輯,且因此一類別可由類 型、屬性、及/或值之任何邏輯呈現方式加以描述。舉例來 說,一類別之一邏輯呈現方式可為其成員,以包含具有兩 個屬性之一或兩者之項目。若這些為該類別之所述屬性為 「A」與「B」,則該類別關係可包含具有屬性A但非B之 項目、具有屬性B但非A之項目 '及具有屬性A與B之 項目。此屬性之邏輯呈現方式係由該邏輯運算子「OR」, 其中由該類別描述之成員組係具有屬性A OR B之項目。 同樣的,邏輯運算元(包含但不限於「AND」、「XORj、及 「NOT」之單獨或組合)亦可用於描述一類別,此應由熟知 該項技藝人士所了解。
除了項目資料夾(未描述)與類別(已描述)間之差異之 外,至項目之類別關係與至類別之項目關係基本上與在上 方本發明之許多實施例中為項目資料夾與項目所揭示之相 同方式。 第1 0圖係舉例說明一類別(同樣的係一項目本身)、其 成員項目、及該類別與其成員項目間之互連關係之一方塊 圖。該類別1000具有複數項目1002、1004、及1006之成 員,其所有共享如由類別1〇〇〇描述(共通性描述1 008’)之 共同屬性、值、或類型1 008之某些組合。類別1 000具有 來自其本身至項目1002之一關係1012,其代表該項目1002 係公用且可共享至類別1 000、其成員1 004與1 006、及任 52 1337310
何其他可存取類別1 0 Ο 0之類別、項目資料夾、或項目(未 顯示)。然而,沒有來自該項目1002至該類別1000之關係 代表類別1 000對項目1 002係私用,且不與項目1 002共享 其成員資訊》另一方面,項目1004的確具有自其本身至類 別1 0 0 0之一關係1 0 2 4,代表該類別1 0 0 0係公用且與項目 1 004共享其成員資訊。然而,沒有自類別1〇〇〇擴充至該 項目1 004之關係代表項目1 004係私用且不可共享於類別 1 000、其其他成員1 002與1 006、及任何其他可存取類別 1 0 0 0之類別、項目資料夾、或項目(未顯示)。相對於與項 目1002與1 004之關係(或其缺乏),具有來自其本身至項 目1 0 0 6之一關係之類別1 0 0 0具有回到類別1 0 0 0之一關係 1026,同時代表項目1006係公用且可共用至類別1000、 其項目成員1 002與1 004、及任何其他可存取類別1 〇〇〇之 類別、項目資料夾、或項目(未顯示),且該類別1 0 0 0係公 用且與項目1 006共享其成員資訊。
最後,由於類別與項目資料夾本身為項目,且項目可 互相具有關係,類別可對項目資料夾具有關係,且反之亦 然,而類別、項目資料夾、及項目可於其他特定實施例中 分別對其他類別、項目資料夾、及項目具有關係。然而, 在各種不同實施例中,在該硬體/軟體介面系統層,項目資 料夾結構及/或類別結構禁止包含循環。項目資料夾與類別 結構類似於導向圖,禁止循環之實施例類似於導向非循環 圖(DAG),其藉由圖形理論業界中之數學定義,為導向圖, 其中沒有路徑開始與結束於相同頂點處。 53 1337310 6.可擴充性 該儲存平台用於提供有一初始架構組 340,如上所 述。然而,除此之外,在至少某些實施例中,該儲存平台 允許顧客,包含獨立軟體廠商(ISV)建立新架構344(即新項 目與巢狀元件類型)。此節點出用以藉由擴充該項目類型與 定義於該初始架構組 3 4 0中之巢狀元件類型(或簡稱「元 件」類型)建立此架構之機制。 最好,該初始項目組與巢狀元件類型之擴充限制如下:
• — ISV 允許引入新項目類型,即 subtype Base.Item ; * 一 ISV允許引入新巢狀元件類型,即 subtype Base.NestedElement ; * 一 ISV 允許引入新擴充,即 subtype
Base.NestedElement;但,
• 一 ISV無法子類型化任何由該初始儲存平台架 構組340所定義之類型(項目、巢狀元件、或擴 充類型)。 由於由該初始儲存平台架構組所定義之一項目類型或 巢狀元件類型可能不真正符合一 ISV應用程式之需求,其 必須允許ISV自訂該類型。此以擴充之概念加以允許。擴 充為強烈類型例,但(a)其無法獨立存在及(b)其必須附加於 一項目或巢狀元件。 除了點出架構可擴充性之需求之外,擴充亦用於點出 該「多類型化」問題。由於在某些實施例中,該儲存平台 54 1337310 9P-J〇. 28 年月,正样換頁 第P丨? A 〇)號蔚膝竹年I。月修正 無法支援多個繼承或重複子類型,應用程式可使用擴充做 為模型化重複類型例之一方法(如文件係一合法文件以及 一安全文件)。 a)項目擴充 為了提供項目可擴充性,該資料模型另定義一抽象類 型,命名為 Base.Extension。此為擴充類型階層之一根類 型。應用程式可子類型化Base.Extension以建立特定擴充 類型。 該Base.Extension類型係定義於該基本架構中,如下 所示: <Type Name="Base.Extension" IsAbstract="True"> <Propety Name="ItemID"
Type="the storage platformTypes.uniqueidentified"
Nullable="false"
Multi Valucd="false"/> 〈Property Name=”ExtensionID"
Type="the storage platformTypes.uniqueidentified"
Nullable="false"
Multi Valued="false'7> </Type> 該 ItemID 欄位包含該擴充與其相關之項目之 ItemID。具有此ItemID之一項目必須存在。若具有該給訂 ItemID之項目不存在,該擴充無法被建立。當該項目被刪 除時,具有相同ItemID之所有擴充也會被刪除。該元組 (ItemID,ExtensionID)唯一辨識擴充例。 一擴充類型之結構類似於一項目類型之結構: * 擴充類型具有欄位; * 欄位可為原始或巢狀元件類型;及 * 擴充類型可彼子類型化。 55 1337310
下列限制為擴充類型加以應用: • 擴充無法為關係之來源與目標; 參擴充類型例無法獨立存在於一項目之外:及 •擴充類型無法使用為該儲存平台類型定義中之 攔位類型。 可與一給訂項目類型有關之擴充之類型上沒有限制。 任何擴充類型允許以擴充任何項目類型。當多個擴充例附 加於一項目時,其互相獨立於結構與行為中。 該擴充例個別自該項目儲存與存取。所有擴充類型例 可自一全域擴充檢視加以存取。可產生一有效查詢以傳回 一給定擴充類型之所有實體,不論其相關於何種項目類 塑。該儲存平台API提供可儲存、取出與修改項目上擴充 之一可程式化模型。 該擴充類型可為利用該储存平台單一繼承模型子類型 化之類型。自一擴充類型取出建立一新擴充類型。一擴充 之結構或行為無法取代或置換該項目類型階層之結構或行 為。類似於項目類型,擴充類型例可直接透過與該擴充類 担相關之檢視加以存取。該擴充之ItemID指出其属於何項 目,且可用於自該全域項目檢視取出該對應項目物件。該 擴充為操作一致性之目的可視為該項目之部分。該儲存平 台定義之複製/移動、備份/恢復與其他共用操作可操作於 該擴充上’如同該項目之部分。 考慮下列範例。一接觸類型定義於該視窗類型紐中 〈Type Name="Contact" BaseType=“Base.Item” > ·· r · 〈Property Name="Name"
Type="String" 56 1337310
Nullable=Mfalse" Multivalued:" false"/〉 〈Property Name="Addressn Type=’’Address"
Nullable=f,true" Multivalued:" false*'/〉 </Type> 一 CRM應用程式研發人員會想要附加一 CRM應用程 式擴充至儲存於該儲存平臺中之接觸上。該應用程式研發 人員會定義一 CRM擴充,其包含該應用程式可操控之額 外資料結構:
<Type Name="CRMExtensionM BaseType="Base.Extension" > 〈Property Name=”CustomerID"
Type="Stringn
Nullable=nfalseM
MultiValued="falsef7> </Type> 一 HR研發人員可能亦想要以該接觸附加額外資料。 此資料獨立於該 CRM應用程式資料之外。同樣的,該應 用程式研發人員可建立一擴充: <Type Name=MHRExtension" EBaseType="Base.Extension" > 〈Property Name=,’EmployeeID" fype=nStringn Nullable="falseM MultiValued="falsen/>
</Type> CRMExtension與HRExtension為可附加於接觸項目之 兩個獨立擴充。其互相獨立建立與存取。 在上述範例中,該CRMExtension類型之爛位與方法 無法取代該接觸階層之攔位或方法。應注意該 CRMExtension類型之範例可附加於接觸之外之其他項目 類型。 當該接觸項目被取出時,其項目擴充不會自動被取 57 1337310 出。給定一接觸項目,其相關項目擴充可藉由為具有相同 Itemld之擴充查詢該全域擴充檢視加以存取。 該系統中所有 CRMExtension 擴充可透過該 CRMExtension類別檢視加以存取,不論其屬於何項目。一 項目之所有項目擴充共用相同項目id。在上述範例中,該 接觸項目例與該附加之CRMExtension與HRExtension例 具有相同之ItemID。 下表歸納項目、擴充與巢狀元件類型間之相似性與差
異: 項目VS項目擴充VS巢狀元件 項目 項目擴充 巢狀元件 共享該項目
項目ID 具有其本身 之項目id 之項目id 儲存 査詢/搜尋 查詢/搜尋範 圍 項目階層儲 存於其本身 表中 可査詢項目 表 可跨一項目 類型之所有 項目擴充階 層儲存於其 本身表中 可查詢項目 擴充表 可跨一項目 擴充類型之 不具有其本 身之項目 id。巢狀元間 係該項目之 部分 以項目儲存 一般僅可於 包含項目内 容中查詢 一般僅可在 單一(包含)
58 1337310 範例搜尋 關係語義 可具有至項 目之關係 至項目之關可經由持 聯 有、内嵌與軟 關係關聯於 其他項目 所有範例搜項目之巢狀 尋 元件類型例 中搜尋 沒有至項目沒有至巢狀 擴充之關係 元件之關係 一般僅可經經由欄位關 由擴充加以聯至項目。巢 關聯。該擴充狀元件為該 語義類似於項目之部分 内嵌項目語 義
b)擴充巢狀元件類型 巢狀元件類型並非以與該項目類型之相同機制加以擴 充。巢狀元件之擴充以與巢狀元件類型之欄位相同之機制 加以儲存與存取。 該資料模型為命名為Element之巢狀元件類型定義一
根: <Type Name="Element"
IsAbstract^" True"> 〈Property Name="ElementID"
Type=Mthe storage platformTypes.uniqueidentifier" NullableWfalse"
Multi Valued="false,7> </Type> 該巢狀元件類型自此類型加以繼承。該巢狀元件元件 類型額外定義為一多元件組之一欄位·· <Type Name="NestedElement" BaseType="Base.Element" IsAbstract="True"> 〈Property Name="Extensions”
Type="Base. Element"
Nullable="false" 59 1337310
MultiValued="true"/> </Type> 該巢狀元件擴充於下列方式不同於項目擴充: • 巢狀元件擴充並非擴充類型。其不屬於根植於該 Base.Extension類型之擴充類型階層。 • 巢狀元件擴充儲存與該項目之其他欄位,且不可 全域存取一無法做出取出一給定擴充類型之所 有範例之一查詢。 • 這些擴充與(該項目之)其他巢狀元件儲存之相同 方式加以儲存。如同其他巢狀組,該巢狀元件擴 充儲存於一 UDT中。其可透過該巢狀元件類型 之擴充欄位加以存取。 • 用於存取多值屬性之集合介面易用於存取與循 環類型擴充組。 下列表歸納與比較項目擴充與巢狀元件擴充。 項目擴充vs巢狀元件擴充_ 項目擴充 巢狀元件擴充 儲存 項目擴充階層儲存儲存如同巢狀元 於其本身表中 件 查詢/搜尋 可查詢項目擴充表一般僅可於該包 含項目内容中查 詢 查詢/搜尋範圍 可跨一項目擴充類一般僅可於單一 型之所有範例加以(包含)項目之巢 搜尋 狀元件類型例中 60 1337310 加以搜尋 可程式化能力 需要特殊擴充API巢狀元件擴充如 與擴充表上之特殊同巢狀元件之任 查詢 何其他多值欄
位;使用一般巢狀 元件類型API
行為 關係語義 項目ID 可關聯行為 不允許行為(?)
沒有至項目擴充之沒有至巢狀元件 關係 擴充之關係 共用該項目之項目沒有其本身之項 id 目id。巢狀元件 擴充係該項目之 __ F.資料庫引擎
如上所述,該資料儲存係實施於一資料庫引擎上。在 本實施例中,該資料庫引擎包含實施該S Q L查詢語言之一 相關資料庫引擎,例如該Microsoft SQL伺服器引擎,具 有物件相關擴充。此節描述根據本發明,該資料儲存實施 之資料模型映射至該相關儲存,且提供由儲存平台客戶消 耗之邏輯API上之資訊。然而,應了解當應用一不同資料 庫引擎時,可應用一不同之映射。事實上,除了於一相關 資料庫引擎上實施該儲存平台概念資料模型之外,其亦可 實施於其他類型之資料庫上,如物件導向與X M L資料庫。 一物件導向(〇〇)資料庫系統提供用於程式設計語言 61 1337310
(如 C + +、Java)之持久性與處理。一 「項目」之儲存平台 概念相當映射至物件導向系統中之一「物件」,雖然内嵌集 合必須加入至物件_。其他儲存平台類型概念,像是既成 與巢狀元件類型,亦映射物件導向類型系統。物件導向系 統一般已經支援物件身分;因此,項目身分可映射至物件 身分。該項目行為(操作)相當映射至物件方法。然而,物 件導向系統一般缺乏組織功能,且很難搜尋。同樣的,物 件導向系統不支援非結構化與半结構化資料。為了支援在 此描述之完整儲存平台資料模型,如同關係、資料夾、及 擴充之概念必須加入該物件資料模型中。除此之外,如同 升級' 同步化、通知、及安全性之機制必須加以實施5
類似於物件導向系統,根據XSD(XML架構定義),XML 支援單一繼承型類型系統。本發明之項目類型系統可映射 至該XSD類型模型。XSD亦木提供行為之支援《項目之 XSD必須以項目行為參數化。XML文件處理單一 XSD文 件,且缺乏組織與廣泛搜尋功能。如同以物件導向資料庫, 為了支援在此描述之資料模型,其他如同關係及資料夾之 概念必須併入此XML資料庫中;同時,如同同步化、通 知與安全性之機制必須加以實施。 關於下列子節,提供一些舉例說明以促進揭示之一般 資訊。第1 3圖係舉例說明一通知機制之一示意圖。第1 4 圖係舉例說明一範例之一示意圖,其中二處理皆插入一新 紀錄至相同B樹中。第1 5圖舉例說明一資料變化偵測處 理。第I 6圖舉例說明一範例目錄樹。第1 7圊顯示一範例, 62 1337310 其中一目錄型檔案系統之一既有資料夾移入該傳 料儲存中。 1.利用UDT之資料儲存實施方式 在本實施例中,於包含該Microsoft SQL词 之一實施例中之相關資料庫引擎3 1 4支援内建绅 内建純量類型係「自然」及「簡單」的。其自游 者無法定義其本身類型,且其簡單於其無法封聚 構。使用者定義類型(此後稱:UDTs)為上述類里 提供一機制’且藉由允許使用者藉由定義複雜每 充該類型系統超出該自然純量類型之外。一旦由 加以定義’一 UDT可用於可能使用一内建純量海 系統中任何地方。 根據本發明之一方面,該儲存平台架構映身彳 庫引擎儲存中之UDT類別。資料儲存項目映 Base.Item類型取出之UDT類別。如同項目,揭 至 UDT 類別且使用繼承。該根擴充 Base.Extension,所有擴充類型自此取出。 一 UDT係一 CLR類別一其具有狀態(即資料 為(即程式)。UDT利用任何管理語言加以定 VB、.NET等等。UDT方法與操作子可針對該舞 例呼叫於T-SQL中。一 UDT可為··一行^ +
J 了 < 一 J T-SQL中一程式之一參數類型、或τ-SQL中—變 儲存平台架構至UDT類別之映射於—高 覺。一般來說’一儲存平台架構映射至—clR ^ 存平台資 丨服器引擎 ;量類型。 丨於該使用 :一複雜結 !可擴充性 i構類型擴 I 一使用者 i型之類型 至該資料 射至自該 ^充亦映射 類型係 欄位)與行 義一c#、 i型之一範 可之類型、 數之類型。 階相當直 ^稱領域》 63 1337310 一儲存平台類型映射至一 CLR類別。該CLR類別繼承鏡 射至該儲存平台類別繼承,而一儲存平台屬性映射至一 CLR類別屬性。 2.項目映射
為提供欲全域搜尋之項目的需求,且提供本賁施例之 相關資料庫的支援,以供繼承與類型取代之用,該資料庫 儲存中項目儲存的一可能實施方式可儲存所有項目於具有 一列類型 Base.Item之單一表中。利用類型可取代性,所 有類型之項目皆可加以儲存,且搜尋可利用 Yukon的「is of(Type)」操作子由項目類型與子類型加以過濾。 然而,由於考量與此一方法相關之負載,在本實施例 中,該項目由頂階類型加以切割,使得各類型「家族」之 項目儲存於一分離表中。在此切割架構之下,一表為各項 目類型直接自 Base.Item繼承加以建立。這些下繼承之類 型利用類型可取代性儲存於適當類型家族表中,如上所 述。僅繼承自Base.Item之第一層被特殊對待。
一「陰影(shadow)」表用於為所有項目儲存全域可搜 尋屬性之副本此表可由該儲存平台API之Update()方法 加以維護,所有資料變更透過此作成。不向該類型家族表, 此全域項目僅包含該項目之頂階純量屬性1並非完整UDT 項目物件。該全域項目表藉由揭示一 ItemID與一 TypelD 允許瀏覽至儲存於一類型家族表中之項目物件。該ItemID 一般會唯一辨識該資料儲存中之項目。該 TypelD可利用 元資料加以映射至一類型名稱與包含該項目之檢視,在此 64 1337310 不加以描述。由於由其 ItemID尋找一項目可為一共用操 作,兩者皆於該全域項目表之内容中,且否則,提供一 Getltem()函數以取出給予一項目之ItemID之一項目物件。
為了方便存取與隱藏實施方式細節至該可能之内容, 項目之所有查詢可能針對建立於上述項目表上之檢視。尤 其是,檢視可為各項目類型針對該適當類型家族表加以建 立。這些類型檢視可選擇相關類型之所有項目,包含子類 型。為了方便,除了該UDT物件之外,該檢視可為該類型 之所有頂階欄位揭示列,包含繼承欄位。 3. 擴充映射
擴充類似於項目,也具有某些相同要求。如同其他根 類型支援繼承,擴充傾向於許多相同的考量與斟酌於儲存 中。基於此,一類似類型家族映射應用至擴充,而非單一 表方法。當然,在其他實施例中,可使用單一表方法。在 本實施例中,一擴充由ItemID與一項目相關,且包含於該 項目内容中為唯一之一 ExtensionID。如同具有項目,可能 提供一功能以取出給定其身分之一擴充,其由一 ItemID與 ExtensionID對所組成。一檢視為各擴充類型加以建立,類 似於該項目類型檢視。 4. 巢狀元件映射 巢狀元件為可嵌入項目、擴充、關係、或其他巢狀元 件中,以形成深巢狀結構之類型。如同項目與擴充,巢狀 元件實施如同 UDT,但其儲存於一項目與擴充之中。因 此,巢狀元件沒有儲存映射超出其項目與擴充容器之外。 65 1337310 換句話說,沒有表於直接儲存巢狀元件類型之範例之系統 中,且沒有檢視特別專用於巢狀元件。 5. 物件身分 該資料模型中之各身分,即各項目、擴充與關係,具 有唯一金鑰值。一項目由其Item Id唯一辨識。一擴充係由 (ItemId,Extensi〇nId)之一合成金錄唯一辨識。一關係係由 (ItemId,RelationshipId) — 合成金鑰唯一辨識。itemid、 Extensionld 與 Relationshipld 為 GUID 值。 6. SQL物件命名 該資料儲存中建立之所有物件可儲存於由該儲存平台 架構名稱取出之一 SQL架構名稱中。舉例來說,該儲存平 。基本架構(通常稱為「基礎」)可產生「[System.storage]」 SQL架構中之類型,例如「[System St〇rage]」tem」。產生 之名稱由一限定子加入字首,以減少命名衝突。在適當處, 使用騖莫號(丨)做為該名稱各邏輯部分之一分隔器。下 表繪出用於該資料儲存中物件之命名規則之輪廓。列出各 架構7L件(項目、擴充、關係與檢視)與用於存取該資料儲 声__中範I例之裝飾命名規則。 物件 名稱裝飾 -——--J 說明 範例 主要 項目 搜尋 檢視 MasterJltem — 提供一 項目簡 介於該 目前項 目網域 [System. Storage]. [Master! Item] 66 1337310 中 〇 類 型 Item Type 提 供 來 [AcmeCorp.Doc]. 化 項 白 項 目 [OfficeDoc] 目 搜 之 所 有 尋 檢 屬 性 資 視 料 與 任 何 父 類 型 〇 主 要 Master! Extension 提 供 該 [System. Storage]. 擴 充 a 前 項 [Master! Extensio 搜 尋 S 網 域 n] 檢 視 中 所 有 * 擴 充 之 一 簡 介 〇 類 型 Extension lextensio 為 擴 充 [AcmeCorp.Doc]. 化 擴 n Type 提 供 所 [Extension ! Stick 充 搜 有 屬 性 yNote] 尋 檢 資 料 〇 視 主 要 Master! Relationsh 提 供 該 [System. Storage]. 關 係 >P S 前 項 [Master!ReIation 檢視 a 網 域 ship] 中 所 有
67 1337310 2S-
R 第彳导丨^”號專利案竹年丨0月修正 關係之 一 簡 介。 關係 Relation$hip!re/a/ 提供與 [AcmeCorp.Doc]· 檢視 ionshipN ame 一給定 [Relationship! Au 關係祖 thorsFormDocume 關之所 nt] 有資料 檢視 View! v/ewName 根據該 [AcmeCorp.Doc]. 架構被 [ViewlDocumentT 禕定義 itles] 提供該 列/類 型。 7·列命名 當映射任何物件模型至一儲存中時,由於與一應用程 式物件儲存之惡外資訊’會發生撞名之可能性。為了避免 為了避免撞名’所有非類型特定列(不直接映射至一類型宣 告中之一命名為Property之列)以一底線(」字元加於字 首在本實施例申,不允許底線(_)字元做為任何識別符屬 性之開頭字元。此外’為了統-CLR與該資料儲存間之命 名,-儲存平台類型或架構元件(關係等等)之所有屬性應 具有一大寫第一字元。 8.搜尋檢視 68 1337310 由用於搜尋已儲存内容之储存平台提供檢視。為各項 目與擴充類型提供一 SQL檢視。此外,提供檢視以支援關 係與檢視(如同由該資料模型定義者該儲存平台中之所 有SQL檢視與基本表係唯讀。資料可利用該儲存平台API 之Update()方法加以儲存或變更,如下方將完整說明者。 明確定義於一儲存平台架構(由該架構設計人員加以 定義,且不自動由該儲存平台加以產生)中之各檢視可由命 名為 SQL 檢視[<schema-name>].[View!<view-name>]加以 存取°舉例來說’該架構「AcmePublisher.Booksj中命名 為 「 Bo〇kSa丨es」 之一檢視可利用該名稱 「[AcmePublisher.Books].[View!BookSales]」加以存取。 由於一檢視之輸出格式自訂於一各檢視基礎上(由定義該 檢視者提供之一任意查詢加以定義),該列直接根據該架構 檢視定義加以映射。 該儲存平台資料儲存中之所有 SQL搜尋檢視為列使 用下列排序規則: • 檢視結果之邏輯「關鍵」列,例如 、
Elementld、Relationshipld、... • 結果之類型上之元資料資訊,例如。 • 變 更 追 縱 列 , 例 如 Create Version , UpdateVersion、... • 類型特定列(該宣告類型之屬性) • 類型特定檢視(家族檢視)亦包含傳回該物件之一 物件列 69 1337310 各類型家族之成員可利用—連串項目檢視加以搜尋, 其為該資料儲存中各項目類型之—檢視。第η圖係舉例說 明一項目搜尋檢視之概念之一示意圖。 a)項目 各項目搜尋檢视包含各範例之一行與該特定類型或其 子類型之一項目。舉例來說,文件之檢視可傳回 Document、LegalDocument 與 ReviewD〇cument 之範例。給 予此範例,該項目檢視可被概念化,如第29圖中所示。 (1)主項目搜尋檢視 一儲存平台資料儲存之各範例定義一特殊項目桧視, 稱為該主項吞飨疣。此檢視提供該資料儲存中各項目上之 簡介資訊。該檢視為每項目類型屬性提供—列,一列描述 該項目類型,而數列用於提供變更追蹤與同步化資訊。該 主項目檢視利用該名稱「[System.Storage] [Mastetiltem]\ 辨識於一資料儲存中。 列 類型 「 說明 Itemld Itemld ----- 該項目之儲存平 台身分 _TypeId Typeld 該項目之Typeld —辨識該項目之 實際類型,並可用 於利用一元資料 類別取出該類型 上之資訊。 70 1337310 _RootItemId Itemld 第一非嵌入祖先 之Itemld控制此 項目之生命週 期。 <global change 全域變更追蹤資 tracking〉 訊 〈Item props〉 n/a 各項目類型屬性 之一列 (2)類型化項目搜尋檢視
各項目類型亦具有一搜尋檢視。類似於該根項目檢 視,此檢視亦提供經由該「_Item」列存取至該項目物件。 各類型化項目 搜尋檢視利用 該名稱 [schemaName].[itemTypeName]於一資料儲存中加以辨 識。舉例來說,[AcmeCorp.Doc].[OfficeDoc]。 列 類型 說 明 Itemld Itemld 該 項 a 之 儲 存 平 台 身 分 <type change … 類 型 變 更 追 蹤 資 tracking〉 訊 <parent props> <prope rty 每 個 父 屬 性 之 一 specific〉 列 〈item props〉 <prope rty 此 類 型 每 個 互 斥 specifi c> 屬 性 之 一 3 _Item 屬性之 CLR類型 CLR 類 型 — 已 宣
71 1337310 99ΓΤσ, 28-- 年月日终正替換頁 弟❼丨>7^〇)號專案必年L9月修正 —----- I___告項目之類型_ b)項目擴充 一 WinFS健存中所有項目擴充亦可利用搜尋檢視加以 存取β (1)主擴充搜尋檢視 一資料儲存之各範例定義一特殊擴充檢視,稱為主擴 充檢視。此檢視提供該資料儲存中各擴充上之簡介資訊。 該檢視具有各擴充屬性之一列,一列描述該擴充之類型, 而數列用於提供變更追蹤與同步化資訊。該主擴充檢視係 利用該名稱「[System.Storage].[MasterlExtension]」於 資料儲存中加以辨識。 列 類型 說明
Itemld
Itemld 此擴充相關聯之 項目之儲存平台 身分
Extensionld
Extensionld (GUID) 此擴充例之Id
Typeld
Typeld 該擴充之Typeld —辨識該擴充之 實際類型,且可用 於利用該元資料 類別取出該擴充 上之資訊。 :global hange 全域變更追蹤資 72 1337310
tracking〉 訊 <ext properties〉 〈property specific〉 "—----__ 各擴充類型屬性 之一列 '~~----— (2)類型化擴充搜尋檢視 各擴充類型亦具有一搜尋檢視。類似於主擴充檢視, 此檢視議題公難由該—Extension列存取至項目物件。各類 型化擴 充搜尋 檢視利 用 該名稱 [schemaName].[Extension!extensionTypeName]辨識於一資 料 儲存中 。 舉 例來說 , [AcmeCorp.Doc] · [Extension! OfficeDocExt]。 列 類型 說明 Itemld Itemld 此擴充與其相關 之項目之儲存平 台身分 Extensionld Extensionld (GUID) 此擴充例之Id <type change tracking〉 … 類別變更追蹤資 訊 〈parent props> 〈property speci fic> 各父屬性之一列 <ext props> 〈property specific〉 此類別之各互斥 眉性之一列 Extension 擴充例之 CLR類 別 CLR物件—已宣 告擴充之類型 73 1337310 c)巢狀元件 所有巢撞元件健存於項目 同以往’其藉由查言句該適當項 加以存取。 、擴充、或關係範例中。如 目、擴充、或關係搜尋檢視 d)關係 資料儲存中項目間之 如上所述,關係形成一儲存平台 速結之基礎單元。 U)主關係搜尋檢視
各資料儲存提供一主關係檢視。此檢視提供該資料儲 存中所有關係範例上之資訊。該主關係檢視利用該名稱
「[System.Storage].[Master!Relationship]」辨識於一資料 儲存中。 列 類型 說明 Itemld Itemld 來源端點之身 分(Itemld) Relationshipld Relationshipld (GUID) 關係範例之id RelTypeld RelationshipTypeld 該關係之 RelTypeld — 利用該元資料 類別辨識該關 係範例之類 型。 <global change ♦ · · 全域變更追蹤 74 1337310 tracking〉 資訊〇 TargetltemReference ItemReference 目標端點之身 分 Relationship Relationship 為此範例之關 係物件之範例 (2)關係範例搜尋檢視
各已宣告關係亦具有一搜尋檢視,其傳回該特定關係 之所有範例。類似於該主關係檢視,此檢視亦為該關係資 料之各屬性提供已命名列。各關係範例搜尋檢視利用該名 稱[schemaName].[Relationship!relationshipName]M— — 資料儲存中加以辨識。舉例來說 , [AcmeCorp.Doc] · [Relationship ! DocumentAuthor]。 列 類型 說明 Itemld Itemld 永源端點之身分 (Itemld) Relationshipld Relationshipld (GUID) 該關係範例之i d <type change tracking〉 … 類型變更追蹤資訊 TargetltemReference ItemReference 目標端點之身分 <source name> Itemld 永源端點身分之命名 屬性(別名為Itemld) 〈target name> ItemReference 或已取出類別 目標端點身分之命名 屬性(別名為 TargetltemReference) <rel property〉 〈property specific〉 該關係定義之各屬性 之一列 Relationship 關係範例之 CLR類型 C L R物件一宣告關係 之類型 e)
9.更新 75 1337310 該儲存平台資料儲存中所有檢視為唯讀。為了建立一 資料模型元件之一新範例(項目、擴充或關係),或為了更 新一既有範例,必須使用該儲存平台Αρι之 ProcessOperation 或 ProcessUpdategram 方法。該 pr〇cess〇perati〇n方法係由該資料儲存定義之單一儲存程 序’其消耗詳述域執行之一動作之一 「操作」。該 ProcessUpdategram方法係採取一組已排序操作之一已儲
存程序,亦稱為一「更新程式」,其集合詳述一組欲執行之 動作。 該操作格式係可擴充,且跨該架構元件提供各種不同 操作。某些共用操作包含: 1. 項目操作: a. CreateltenU建立一内嵌或持有關係之内容中之 一新項目) b‘ Updateltem(更新一既有項目) 2. 關係操作:
a. CreateRelationship(建立一參照或持有關係之 一範例) b. UpdateRelationship(更新一關係範例) c. DeleteRelationship(移除一關係範例) 3. 擴充操作: a. CreateExtension(加入一擴充至一既有項目) b. UpdateExtension(更新一既有擴充) c. De丨eteExtension(刪除一擴充) 76 1337310 i〇.變更追蹤&墓碑 變更追縱與墓碑服務由該資料儲存加以提供將在下 方詳加討論。本節提供揭示於一資料儲存中之變更追蹤資 訊之一輪廓。 a)變更追縱 由該資料健存提供之各搜尋檢視包含用於提供變更追 縱資訊之列;該列跨所有項目、擴充及關係檢視共用。由 架構設計人員明確定義之儲存平台架構檢視不會自動提供
變更追蹤資訊~透過該檢視本身建立於其上之搜尋檢視間 接提供此資訊。 對於該資料儲存中各元件來說’變更追蹤資訊可用於 兩處一該「主」元件檢視與該「類型化」元件檢視。舉例 來說’該AcmeCorp.Document.Document項目類型上之變 更追縱資訊可用於該主項 目 檢視 厂[System.Storage]_[Master!Item]j及類型化項目搜尋檢視 [AcmeCorp.Document].[Document]。 (1) 「主」搜尋檢視中之變更追蹤
該主搜尋檢視中之變更追蹤資訊提供一元件之建立與 更新版本上之資訊,同步夥伴建立該元件於資訊上、同步 夥伴最後更新元件之資訊及來自建立與更新之各夥伴之版 本號碼。同步關係(下方描述)中夥伴由夥伴金鑰加以辨 識。類型[System.Storage_Store],ChangeTrackingInfo 之命 名為一ChangeTrackinglnfo之單一 UDT物件包含所有此資 訊。該類型定義於該 System.Storage 架構中。 77 1337310 _ChangeTrackInfo可用於項目、擴充與關聯之所有全域搜 尋檢視中。ChangeTrackinglnfor之類型定義為: <Type Name=”ChangeTrackingInfo” BaseType=’’Base.NestedElement”> <FieldProperty Name=’’CreationLocalTS” Type=,’Sq】Types.SqlInt64”
Nullable=”False” /> 〈FieldProperty Name=”CreatingPartnerKey”
Type=”SqlTypes.SqlInt32” Nullable=”False” <FieldProperty Name=”CreatingPartnerTS”
Type=”SqlTypes.SqlInt64” Nullable=”False” /> <FieldProperty Name=”LastUpdateLocalTS”
Type=”SqlTypes.SqlInt64” Nullable=”False” /> <FieldProperty Name=,,LastUpdatingPartnerKey Type=”SqlTypes.SqlInt32” Nullable=”False” />
<FieldProperty Name=J,LastUpdatingPartnerTSn Type-,,SqlTypes.SqlInt64J, Nullable=”False” /> </Type> 這些屬性包含下列資訊:
列 說明 _CreationLocalTS 該區域機器之建立時間戳 CreatingPartnerKey 建立此時體之夥伴之 PartnerKey。若該實體為區 域建立,此為區域機器之 PartnerKey ° _CreatingPartnerTS 此實體建立於對應至 CreatingPartnerKey 之夥 伴處之時間之時間戳。 _LastUpdateLocalTS 對應至該區域機器之更新 時間之區域時間戳 _LastUpdatingPartnerKey 最後更新此時體之夥伴之 PartnerKey。若該最後更新 78 1337310 至該實體於區域完成,此為 該區域機器之PartnerKey。 _LastUpdatingPartnerTS 此實體更新於對應至 LastUpdatingPartnerKey 之夥伴處之時間之時間戳。 (2) 「類型化j搜尋檢視中之變更追蹤 除了提供相同資訊做為全域搜尋檢視之外,各類型化 搜尋檢視提供記錄該同步拓樸中各元件之同步狀態之額外 資訊。 ♦ 列 類型 說 明 <global change … 來 全 域 變 更 追 蹤 之 資 tracking〉 訊 _ChangeUnitVe MultiSet<Chan 該 特 定 元 件 中 變 更 單 元 rsions geUnitVersion> 之 版 本1 號碼之說 明 — ElementSyncM ElementSyncMe 關 於 僅 對 該 同 步 執 行 時 etadata tadata 間 有 興 趣 之 此 項 目 之 額 外 版 本獨立元資 料 〇 〜VersionSyncM VersionSyncMe 關 於 僅 對 該 同 步 執 行 時 etadata tadata 間 有 興 趣 之 此 版 本 之 額 外 版 本· 持定元資 料 b)墓碑
該資料儲存為項目、擴充與關係提供墓碑資訊。該墓 碑檢視於一處提供關於生活與墓碑實體(項目、擴充與關係) 之資訊。該項目與擴充墓碑檢視不提供存取至該對應物 79 1337310 件,而該關係墓碑檢視提供存取至該關係物件(該關係物件 於一墓碑關係之情況中係NULL)。 (1)項目墓碑 項目墓 碑經由 該檢視 [System.Storage]. :Tombstone!Item]自該系統取出。 列 類型 說明 Itemld Itemld 該項目之身分 _TypeID Typeld 該項目之類型 <Item properties〉 為所有項目定義之 屬性 Rootltemld Itemld 包含此項目之第一 非嵌入項目之 Itemld。 _ChangeTracki nglnfo 類 型 ChangeTrackingln fo之CLR範例 此項目之變更追蹤 資訊 IsDeleted BIT 此為一旗標,為生活 項目為0,而為墓碑 項目為1。 _DeletionWallc lock UTCDATETIME 根據刪除該項目之 夥伴之UTC牆鐘曰 期時間。若該項目活 著時其為NULL。 (2)擴充墓碑
80 1337310 擴 充墓碑 係利用 該檢視 [System.Storage].[Tomstone!Extension]自該系統取出。擴 充變更追蹤資訊類似於為項目所提供者’加上該
Extensionld 屬性》 列 類型 說 明 Itemld Itemld 擁 有 該 擴 充 之 項 百 之 身 分 Extensionld Extensionld 該 擴 充 之擴充 Id _TypeID Typeld 該 擴 充 之類型 ChangeTracki 類 型 此 擴 充 之 變 更 追 蹤 nglnfo ChangeTrackingln 資 訊 fo之CLR範例 _IsDeieted BIT 此 為 一 旗標, 為 生 活 項 § 為 0, 而 為 墓 碑 擴 充 為 1 ° _Deletion Wallc UTCDATETIME 根 據 刪 除 該 擴 充 之 lock 夥 伴 之 UTC 牆 鐘 曰 期 時 間 °若 該 擴 充 活 著 時 為 NULL 〇 (3)關係墓碑
關係墓 碑經由 該檢視 [System-Storage].[Tombstone!Relationship]自該系統取 出。關係墓碑資訊類似於為擴充所提供者。然而,額外資 訊提供於該關係範例之目標ItemRef上。除此之外,該關 81 1337310 係物件亦可選擇》 列 類型 說明 Itemld Itemld 擁有該關係之項目身 分(關係來源端點之 身分) Relationshipld Relationshipld 該 關 係 之 Relationshipld _TypeID Typeld 該關係之類型 _ChangeTracki nglnfo 類 型 ChangeTrackingln fo之CLR範例 此關係之變更追蹤資 訊 IsDeleted BIT 此為一旗標,為生活 項目為 0,而為墓碑 擴充為1。 _Deletion Wallc lock UTCDATETIME 根據刪除該關係之夥 伴之UTC牆鐘日期時 間。若該關係活著則 為 NULL。 Relationship 一關係之CLR範 例 此為生活關係之關係 物件。其為墓碑關係 為 NULL。 TargetltemRefe rence ItemReference 目標端點之身分 (4)墓碑清除
82 1337310 為了避免墓碑資訊毫無邊際的成長’該資料儲存提供 一墓碑清除工作。此工作決定墓碑資訊何時可被捨棄。該 工作計算該區域建立/更新版本上之一邊界,且接著藉由丟 棄所有稍早墓碑版本截斷該墓碑資訊° 11.幫助器API舆功能 該基本映射亦提供許多幫助器功能。這些功能提供以 透過該資料模型幫助共用操作。
a) Function [System.Storage]-Getltem
Returns an Item object given an 11emI d //
Item Getltem (Itemld Itemld) b) Function [System.Storage].GetExtension // Returns an extension object given an Itemld and Extensionld //
Extension GetExtension (Itemld Itemld, Extensionld Extensionld) c) Function [System-Storage].GetRelationship // Returns an relationship object given an Itemld and Relationshipld //
Relationship G e t Re 1 at i o nsh ip (Itemld Itemld, Relationshipld Relationshipld) 12.元資料 有兩類型的元資料呈現於該儲存中:立即元資料(一項 目之類型等等)與類型元資料。 a) 架構元資料 架構元資料儲存於該資料儲存中,做為來自該元架構 之項目類型之範例。 b) 立即元資料 83 1337310 立即元資料由一應用程式使用以查詢一項目之類塑’ 並尋找與一項目相關之擴充。為一項目給予該Itemld,一 應用程式可查詢該全域項目檢視,以傳回該項目之類螌’ 並使用此值以查詢該Meta.Type檢視’以傳回該項目之已 宣告類型上之資訊。舉例來說, // Return metadata Item object for given Item instance // SELECT m,_Item AS metadata Info Obj
FROM [ Sy st em . St o rag e ]. [ I tem ) i INNER JOIN [ M e t a ]. [ Ty p e ] m ON i._TypeId = m.Itemld WHERE i.Itemld = @Itemld G.安全性 一般來說,所有可安全性物件利用第26圖中所示之存 取遮罩格式安排其存取權限。在此格式中,該低順序16 位元為物件特定存取權限,下7個位元為標準存取權限, 應用至大部分物件類型,且該4個高順序位元用於指定一 般存取權限’各物件類型可映射至一組標準與物件特定權 限。該ACCESS_SYSTEM_SECURITY位元對應至存取該物 件之SACL之權限。 在第26圖之存取遮罩結構中,項目特定權限放置於該 物件特定權限一節中(低順序1 6位元)。由於在本實施例 中,該儲存平台揭示二組API以管理安全性—Win32與該 儲存平台API,必須考慮該擋案系統物件特定權限,以激 勵該儲存平台物件特定權限之設計。 本發明之儲存平台之安全模型完整描述於稍早在此併 入參照之相關申請案中。如此一來,第27圖(部分 84 1337310 及C)根據一安全性模型之一實施例描述自—既有安全區域 取出之一新相同保護安全區域。 H.通知與變更追蹤
根據本發明之另一方面,該儲存平台提供允許應用程 式追縱資料變更m功&。此特性主要用於維護揮發 性狀態或執行商業邏輯於資料變更事件上之應用程式。應 用程式為項目、項目擴充及項目關係上之通知加以登圮。 通知於資料變更已遞送之後非同步化傳遞。應用程式;由 項目、擴充與關係類型以及操作類型過濾通知。 根據一實施例,該儲存平纟Αρι 3 22為通知提供兩 介面。首先’應用程式為由變更至項目、項目擴充及項 關係觸發之簡單資料變更事件加以註冊。第二, 欲程 建立「觀察者」物件,以監控項目 '項目擴充與項目間 係組β於一系統失敗後,或於一糸 ^系統於一擴充時段後離 後,一觀察者物件之狀態可储存與重新 。 平一通知 反映多個更新。 關於此功能之額外細 案t找到。 I.同步化 郎可於稍早併入參照 之相關申請
。故供—同母 務33〇,(1)允許該储存平台之多個範例(各具有宜本 料儲存302)以根據一彈性規則組二’、 (ΐί)為第三者提供-基礎架構以同步化本發明之儲二 資料儲存與實施專屬ϋ訊協定之其他資料來源。〒 85 1337310 儲存平台-至-儲存平台同步化發生於一群參與副本 中。舉例來說,參照第3圖,可能想要在該儲存平台之另 一範例之控制下提供該儲存平台300之資料儲存302與另 一遠端資料儲存338間之同步化,也許執行於一不同電腦 系統上。此群組之總成員不需要於任何給定時間了解於任 何給定副本。
不同副本可做獨立變更(即同時)。同步化之處理定義 為其他副本所作變更發覺之每個副本。此同步化功能係繼 承多主。 本發明之同步化功能允許副本以: 籲決定另一副本發覺之何變更; 鲁要求關於此副本未發覺之變更之資訊; • 傳達關於其他副本未發覺之變更之資訊; • 決定而變更何時互相衝突; • 區域應用變更: • 傳達衝突解決方法至其他副本,以確保收斂性; 及
籲根據衝突解決方法之特定策略解決該衝突。 1.儲存平台-至-儲存平台同步化 本發明之儲存平台之同步化服務3 3 0之主要應用係同 步化儲存平台之多個範例(各具有其本身資料儲存)。該同 步化服務操作於該儲存平台架構層(而非該資料庫引擎 314之基礎表)。因此,舉例來說,「範圍」用於定義同步 化組,如下所討論者。 86 1337310 該同步化服務操作於「網變更」之原則上。並非記錄 與傳送個別操作(例如具有處理複製),該同步化服務傳送 這些操作之最終結果,因此常常將多個操作之結果統一於 單一結果變更上。
該同步化服務一般不尊重處理界線。換句話說,若二 變更做於單一處理中之一儲存平台資料儲存,不保證這些 變更會自動應用於所有其他副本一可能一個顯示,而另一 不會顯示。此原則之例外是若於相同處理中對相同項目做 二變更,則這些變更保證會自動被傳送且應用至其他副 本》因此,項目會是該同步化服務之一致單元。 a)同步化控制應用程式 任何應用程式可連結至該同步化服務,並開始一同步 化操作。此一應用程式提供必須執行同步化之所有參數(請 見下方之同步化設定擋)。此應欲程式在此稱為同步化控制 應用程式(SCA)。
當同步化兩個儲存平台範例時,同步化由一 S C A初始 化於一側。該S C A通知該區域同步化服務以同步化該遠端 夥伴。另一方面,該同步化服務由來自該原始機器之同步 化服務所傳送之訊息喚醒。其根據呈現於該目的機器上之 永久配置資訊(請見下方之映射)加以回應。該同步化服務 可執行於排程上或響應至事件。在這些情況中,實施該排 程之同步化服務會變成該SCA。 為了啟動同步化,必須採取兩個步驟。首先,該架構 設計人員必須以適當同步語義(指定變更單元,如下所述) 87 1337310 注釋該儲存平台架構。第二,同步化必須適當配置於具有 參與該同步化之儲存平台之一範例之所有機器上(如下所 述)。 b)架構注釋 該同步化服務之一基礎概念係一變更單元。一變更單 元係由該儲存平台個別追蹤之一最小架構片段。對於每個 變更單元來說,該同步化服務可決定是否其由於該最新同 步化變更與否。
指定該架構中之變更單元做為幾個目的。首先,其決 定該同步化服務在該線上有多繞舌。當於一變更單元中做 一變更時,由於該同步化服務不知道該變更單元之何部分 變更,該整個變更單元會傳送至其他副本。第二,其決定 衝突偵測之顆粒度。當對相同變更單元做兩個同時變更(這 些詞在下幾節中會詳細定義)時,該同步服務會發生一衝 突;另一方面,若對不同變更單元做同時變更,則沒有衝 突會發生,且該變更會自動合併。第三,其強烈影響由該 系統保持之元資料數量。許多同步化服務元資料為各變更 單元加以保持;因此,將變更單元做更小會增加同步之負 載。 定義變更單元需要尋找正確的斟酌。基於這個理由, 該同步化服務允許架構設計人員參與該處理中。 在一實施例中,該同步化服務不支援大於一元件之變 更單元。然而,其的確支援架構設計人員指定小於一元件 之變更單元之能力,也就是將一元件之多個屬性群聚於一 88 1337310 不連續的變更單元令。在此實施例中,利用下列與法加以 完成: <Type Name="Appointment" MajorVersion="l" MinorVersion="0" ExtendsType="Base.Item"
ExtendsVersion=" 1 "> <Field Name="MeetingStatustl Type="the storage platformTypes.uniqueidentifier Nullable:” False"/〉 <Field Name="OrganizerNameu Type="the storage platformTypes.nvarchar(512)" Nullable="False'7> <Field Name="OrganizerEmairi Type="the storage platformTypes.nvarchar(512)" TypeMajorVersion=.T‘ MultiValued="True"/> 〈ChangeUnit Name=”CU_Status”> <Field Name=,,MeetingStatus,,/> </ChangeUnit> <ChangeUnit Name=’’CU_Organizer”/> 〈Field Name=’OrganizerName” /> <Field Name=’OrganizerEmail” /> </ChangeUnit> </Type> c)同步化配置
希望保持其資料之特定部份同步之一群儲存平台夥伴 稱為一同步化社區(community)。該社區之成員想要保持同 步,然而其不需要以完全相同之方式呈現該資料;換句話 說,同步化夥伴可轉換其同步化之資料。 在一對等情況中,對等者為所有其夥伴維護轉換映射 是不實用的。而是,該同步化服務採取定義「社區資料夾j 之方法。一社區資料夾係代表所有社區成員同步化之一假 想「共享資料夾」之一抽象p 此概念最好由一範例加以舉例說明。若Joe想要保持 他幾台電腦的我的文件資料夾同步,Joe定義一社區資料 89 1337310 夹,稱為JoesDocuments。接著,在每一電腦上,Joe規劃 該假想JoesDocuments資料夾與該區域我的文件資料夾間 之一映射。從此觀點來看,當Joe的電腦互相同步時,其 會根據 JoesDocument中之文件加以討論,而非其區域項 目。如此一來,所有Joe的電腦會互相了解,而不需要知 道其他人是誰一該社區資料夾變成該同步化社區之社交語 言。
規劃該同步化服務由三個步驟所組成:(1)定義區域資 料夾與社區資料夾間之映射;(2)定義決定何者或得同步化 (如與誰同步化及應傳送何子組及接收何者)之同步化設定 檔;及(3)定義不同同步化設定檔應執行之排程,或手動執 行。 (1)社區資料夾一映射 社區資料夾映射儲存為個別機器上之 XML配置檔。 各映射具有下列架構·‘ /mappings/communityF older
此元件為此映射代表之社區資料夾命名。該名稱跟隨 資料夾之語法規則。 /mappings/localFolder 此元件為該映射轉換至之區域資料夾命名。該名稱跟 隨資料夾之語法規則。該資料夹必須已經為有效之映射加 以存在。此資料夾中之項目視為各映射之同步化。 /mappings/transformat ions 此元件定義如何自該社區資料夾轉換項目至該區域資 90 1337310 料失,及轉換回去。若不存在或為空,不執行任何轉換。 尤其是,此意指沒有ID被映射。此配置主要用於建立一 資料夾之一快取記憶體。 /mapp ings/transformations/mapIDs 此元件要求新產生的區域ID指派至映射自該社區資 料失之所有項目,而非重新使用社區ID。該同步化執行時 間會維護ID映射,以來回轉換項目。 /mappings/transformations/lo cal Root
此元件要求該社區資料夾中所有根項目必須做該特定 根之子。 /mappings/runAs 此元件控制處理何授權針對此映射要求。若不存在, 假設為傳送者。 /mappings/runAs/sender 此元件之存在指示必須扮演對此映射之訊息傳送者, 且要求其憑證下之處理。 (2)設定檔
一同步化舍弟檔戲必須發動同步化之一總參數組。由一 S C A提供至該同步化執行時間以初使同步化。儲存平台· 至-儲存平台同步化之同步化設定檔包含下列資訊: • 區域資料夾,做為變更之來源與目的; • 同步化之遠端資料夾名稱一此資料夾必須界猶 如上所定義之一映射自該遠端夥伴公佈: • 方向一該同步化服務支援僅傳送、僅接收、及傳 91 1337310 送-接收同步化; • 區域過濾器一選擇何區域資訊傳送至該遠端夥 伴。表現為透過該區域資料夾之一儲存平台查 詢; 參遠端過濾器一選擇何遠端資訊自該遠端夥伴取 出一表現為透過該社區資料失之一儲存平台查 詢; 參轉換一定義如何轉換項目自或至該區域格式;
• 區域安全性一指示自該遠端端點取出之變更是 否於該遠端端點(扮演)許可下或該使用者區域初 始化該同步化加以應用:及 • 衝突解決方法策略一指示是否應拒絕、登錄、或 自動解決衝突一在後者的情況中,其指示使用何 衝突解決器,以及其配置參數。
該同步化服務提供允許簡單建立同步化設定檔之一執 行時間CLR類別》設定檔亦可為簡易儲存被序列化至與自 XML檔(通常跟著排程)。然而,該除殂平台中沒有標準位 置是所有射並擋儲存處;SCA歡迎建立一設定檔於該點 上,而不會加以堅持。注意沒有必要具有一區域映射以初 始同步化。所有同步化資訊可指定於該設定檔中。然而, 需要該映射,以回應該遠端側所初始之同步化要求。 (3)排程 在一實施例中,該同步化服務部提供其本身之排程基 礎架構。而是,其依賴另一元件以執行此工作一該Windows 92 1337310
Scheduler >可於該Microsoft Windows作業系統獲得。該 同步化服務包含做為一 SCA之一指令行公用程式,並根據 儲存於一 XML檔中之一同步化設定檔觸發同步化。此公 用程式使其非常容易配置該Windows Scheduler執行同步 化於該排程上,或響應至該事件,例如使用者登入或登出。 d)衝突處理
該同步化服務中之衝突處理分成三階段:(〗)衝突偵 測,發生於變更應用程式時間一此步驟決定是否一變更可 安全應用;(2)自動衝突解決方式與登錄一在此步驟期間 (立即發生於該衝突被偵測到之後),會諮詢自動衝突解決 器,以看看是否該衝突可被解決一若否,該衝突可被選擇 性登錄;及(3)衝突偵查與解決方式一此步驟發生於若某些 衝突被登錄時,且發生於該同步節之内容之外一在此時, 已登錄衝突可被解決並自該登錄移除。 (1>衝突偵測 在此實施例中,該同步服務偵測兩類型之衝突:知識 型與限制型。
(a)知識型衝突 一知識型衝突發生於兩個副本對相同變更單元做獨立 變更時。若不互相知會,兩個變更稱為獨立一換句話說, 該第一版本不被該第二之知識所涵蓋,反之亦然。該同步 化服務根據該副本之知識自動偵測所有此類衝突,如上所 述。 有時候想想一變更單元之版本歷史中之衝突是很有幫 93 1337310 助的。若沒有衝突發生於一變更單元之生命中,其版本歷 史係一簡單連鎖一各變更發生於前一者之後。在一知識型 衝突之情況中,兩個變更平行發生,導致該連鎖分開,並 變成一版本樹。 b)限制型衝突 有些情況獨立變更會在一起應用時違反一整合限制。 例如,建立具有該相同目錄中相同名稱之一檔案之二副本 可能導致此一衝突發生》
一限制型衝突包含兩個獨立變更(正如同一知識型衝 突),但其不會影響相同的變更單元。而是,其會影響不同 變更單元,但具有一限制存在於期間。 該同步服務偵測限制違反於變更應用時間,並自動發 生限制型衝突。解決限制型衝突通常需要修改該變更之自 訂碼,如此一來便不會違反該限制。該同步服務不會為這 麼做提供一通用目的機制。 (2)衝突處理
當偵測到一衝突時,該同步服務可採取三個動作其中 之一(由該同步化設定檔中同步化初始器加以選擇):(1)拒 絕該變更,將其傳回傳送者;(2)登錄一衝突至一衝突登錄 中;或(3)自動解決該衝突。 若該變更被拒絕,該同步化服務做為如同該變更不到 達該副本。一負面知識傳送回該原創者。此解決方式策略 原始有用於無頭副本(例如檔案伺服器)上,其中登錄衝突 不可行。而是,此副本強迫其他者計拒絕其處理該衝突。 94 1337310 同步化初始器配置衝突解決方法於其同步化設定檔 中。該同步化服務以下列方式支援結合多個衝突解決器於 一單一設定檔中一首先,藉由——指派欲嘗試之一衝突解 決器清單,直到其中之一成功為止;且第二,藉由關聯衝 突解決器與衝突類型,如將更新-更新知識型衝突導向一解 決器,但是所有其他衝突至該登錄。 (a)自動衝突解決方法 該同步化服務提供許多預設衝突解決器。此清單包含:
參區域wins :若與區域儲存資料相衝突,則不管輸 入變更; 參遠端wins :若與輸入變更相衝突,則不管區域資 料; * 最新撰寫者wins :根據該變更之時間戳為各變更 挑出區域wins或遠端wins(注意該同步化服務一 般不會依賴時鐘值;此衝突解決器係該規則之主 要例外)。
確定性:以保證於所有副本上相同之方式挑出一贏 家,否則並無意義一該同步化服務之一實施例使用夥伴ID 之詞典比較,以實施此特性。 除此之外,ISV可實施與安裝其本身之衝突解決器。 自訂衝突解決器可接受配置參數;此參數必須由該同步化 檔案之衝突解決方式部分中之SCA加以指定。 當一衝突解決器處理一衝突時,其傳回必須執行之操 作清單(而非該衝變更)回該執行時間。該同步化服務接著 95 應用這些操作,已適當調整遠端知識,以包含已考慮何衝 突處理器。 當應用該解決方法時偵測到另一衝突是可能的。在此 ~情況中,該新衝突必須在該原始處理繼績之前解決。 當將衝突考慮為一項目之版本歷史之分支時,衝突解 決方法可視為結合一合併兩個分支以形成單一點。因此, 衝突解決方法會將版本歷史轉入DAG中。 (b>衝突登錄
—并T特殊種類係該衝突登錄器。 同步化服務登錄衝突Α ▲ 马類型ConflictRecord之項目。.含 &己錄關於回衝突之項日,队 目延 κ (除非該項目本身已被刪除)。各 突圮錄包含:導致該 )各 新 '更新、更新-刪除 輪入變更,該衝突之類型: 且該輪入變更之版本、肖除-更新、插入·插入、或限制 用於偵査與解決方,、與該副本之知識傳送它。登錄衝突 、歹式,如下所述。 (C)衝突僞查舆炫也, 該同步服務為應 、方式
錄,並建議其中街★ 式提供一 API,以檢查該衝突 舉所有衝突,令 之解決方式。該API允許應用程式 4關於—給 ^ 程式以三種方式其中給疋項目之衝突。其亦允許此應 一接受該已登錄 之解決已登錄衝突··(1)遠端 一忽略該已登鲦變更 寫該衝突區域變更;(2)區域wj 該應用程式提議〜 衝突°卩伤,及(3)建議新變更〜其 突由一應用程式 ’在其建議中解決該衝突。_旦 決,該同步化服務會自 i砑霄目忑登錄加以移β 96 1337310 (d)副本之收斂與衝突解決方式之傳播 在複雜同步化情況中’相同衝突可於多個副本處被偵 測。若此發生,幾件事可能會發生:(1)該衝突可於一副本 上解決,且該解決方法會傳送至其他副本;該衝突自動 於兩個副本上解決;或(3)該衝突手動於兩個副本上解決 (透過該衝突偵查API)。 為了確保收斂’該同步化服務將衝突解決方式傳至其 他副本。當解決一衝突之一變更到達一副本,該同步化服 務會自動尋找由此更新加以解決之登錄中之任何衝突記錄 一衝突解決方式結合 並加以消滅。如此一來,於一副本之 至所有其他副本。 若不同贏家由於相同衝突由不同副本選擇,該同步化
出保每次會產生相同結果(一實施例使用複製I d詞典 比較)。
衝突解決方式時發生。 同步化至非儲存平台資料鍵存
ISV 統之 ''龙允許該儲存平台同步化至遺留系
97 1337310 等等 化服 個儲 用該 式, 端, 面, 定檔 化執 對於 化之 存平 舉允 失之 新同 知識 化轉 °同步化轉接器對許多由該同步化服務所提供之同步 務很有利,如下所述。 除了該名稱之外,同步化轉接器不需要實施為插入某 存平台架構。若想要,一 「同步化轉接器」可僅為利 同步化服務執行時間介面以獲得服務之任何應用程 如變更列舉與應用程式。 為了讓其他人較容易配置與執行同步化至一給定後 同步化轉接器被鼓勵以揭示該標準同步化轉接器介 其執行同步化給定該同步化設定檔,如上所述。該对 提供配置資訊至該轉接器,某些轉接器傳送至該同步 行時間’以控制執行時間服務(如該資料夾以同步化) a)同步化服務 該同步化服務提供許多同步化服務至轉接器撰寫者 此節之剩餘部份來說,很方便將該儲存平台執行同步 機器稱為該「客戶端」,而將該轉接器談話對象之非 台後端為該「伺服器」。 (1)變更列舉 根據由該同步化服務所維護之變更追蹤資料變更 許同步化轉接器报容易列舉已發生於—資料儲存資;: 變更,由於已嘗試與此夥伴之最後一次同步化。
變更根據一「支柱」之概念加以列舉〜呈現關於該最 步化之資訊之一不透明結構。該支柱採取該儲存平台 之形式’如前幾節中所述。利用變更列舉服務之同i 接器落入兩個廣泛類別中:使用「儲存支柱」者V 98 使用「供應支柱」者。 差異係根據關於該最新同步化之資訊儲存處而定—在 該客戶成卜,4·、+^
或在該词服器上。對轉接器來說常常較容易 子此 > 訊於該客戶端上—該後端常常不可便利儲存此資 另一方面,若多個客戶端同步化至相同後端,儲存此 資訊於該客户《上係較無纟在某些情》兄巾是不正確的 一其使一客戶端不查覺其他客戶端已經推至該伺服器之變 更右一轉接器想要使用—伺服器儲存支柱,該轉接器必 須於變更列舉時將其提供回該儲存平台。 為了讓該儲存平台維護該支柱(無論為區域或遠端雇 存)’該健存平台必須杏壤Ο ; 貝一學已成.功應用於該伺服器之變更 這些與僅這些變更可句人 I 3於該支柱中。在變更列舉期間 同步化轉接器使用一認可介面已報告何變更已成功應用 在同步化尾聲,利用楹^ ,、支柱之轉接器必須讀取該新支才 (併入所有已成功應用之變更),並將其傳至其後端。 通常’轉接器必須蚀左 v。 存平台資料健存中之項目/特定資料與其插入該,
及遠端版本(時間戳)。二。:化資料之常見範例為遠端〖 之—機制,且變更列舉提二:服務提供用以儲存此資言 傳回之變更。這會在大提供此額外資料心 該資料庫之需求。部…中為轉接器減少重新查言丨 (2)變更應用程式 變 變更應用程式允許@ 更至該區域儲存平台。 步化轉接器應用自 轉接器預期將該變 其後端接收之 更轉換至該儲 99 1337310
存平台架構。第24圖舉例說明該處理,丨 類別自該儲存平台架構產生。 =子平。API 變更應用程式之主要功能係自冑憤測 s ^ τ 〗龙。如同在儲 存至-儲存平台同步化之情況中’一 夕-畲迷雄* . ^次疋義為做成 一重複變更,而無互相知會。當轉接 ,〇dt „ , ^ , 竹饮裔使用變更應用程 式時’其幻貝指定關於執行何衝突彳貞 , _ 又往。若偵測不 由該轉接器之知識所涵蓋之一重複區 叉文變更應用程 式發生一衝突《與變更列舉相似,轉 将接盗可使用儲存或提 供支柱。變更應用程式支援轉接器特定元資料之有效儲 存。此資料可由該轉接器附加於被應用之變更,且可由該 同步化服務加以储存。該資料可於下—變更列舉上傳回。/ (3>衝突解決方式 上述衝突解決方式機制(登錄與自動解決方式選項)同 樣對同步化轉接器有效。同步化轉接器可在應用變更時指 定衝突解決方式之策略。若指定,衝突可傳送至該特定衝 突處理器且被解決(若可能p衝突亦可被登錄。當嘗試應 用一區域變更至該後端時’該轉街器偵測一衝突是可能 的。在此-情況中,轉接器可仍傳送該_突至欲根據策 略解決之同步化執行時間。&此之外,同步化轉接器可要 求任何由該同步化服務偵測之衝突傳回加以處理。此尤其 在該後端可儲存或解決衝突的情況中特別方便。 b)轉接器實施方式 某些「轉接器」為利用執行時間介面之簡單應用程式 時,轉接器被鼓勵以實施該.標準轉接器介面。這些介面允 100 1337310 許同步化控制應用程式以:要求該轉接器根據一給定同步 化設定檔執行同步化;取消同步化;及接收一進行中同步 化之進度報告(完成百分比)。 3.安全性 該同步化服務努力盡少引入由該儲存平台所實施之安 全性模型中。不為同步化定義新權限,使用既有之權限。 尤其是,
• 可讀取一資料儲存項目之任何人可列舉變更至 該項目: • 可寫入一資料儲存項目之任何人可應用變更至 該項目;及 • 可擴充一資料儲存項目之任何人可將同步化元 資料與該項目相關聯。
該同步化服務不維護安全性作者資訊。當一變更 由使用者U於副本A做成且傳至副本B時,事實是於A(或 由U)原始做成之變更會遺失。若B將此變更傳至副本C, 此會在B的授權下完成,而非A的授權下。此導致下列限 制··若不相信一副本做成其本身變更至一項目,其無法傳 送由其他者所做之變更。 當初使化該同步化服務時,其由一同步化控制應用程 式加以完成》該同步化服務扮演該S C A之身分,並執行該 身分下之所有操作(區域與遠端)。為了舉例說明,觀察使 用者U無法導致該區域同步化服務,以為使用者U沒有讀 取權限之項目自一遠端儲存平台取出變更。 101 丄幻731〇 4.可管理性 監控副本之一分散式社區係一複雜問題。該同步化服 務可使用一「掃除」演算法,以收集與散佈關於該副本狀 態之資訊。該掃除演算法之屬性確保關於所有已配置副本 之資料最終會被收集,且會債測失敗(不回應)之副本。 此社區型監控資訊可於每個副本處做成。監控工具可 執行於一任意選擇副本處,以檢查此間控資訊並做成管理 決策。任何配置變坑必須直接於該已影響之副本做成。
J.傳統檔案系統相互操作性
如上所述’在至少某些實施例中,本發明之儲存平台 想要實施為一電腦系統之硬體/軟體介面系統之一整合部 分。舉例來說,本發明之儲存平台可實施為一作業系統之 —整合部分,例如作業系統之Microsoft Windows家族。 在該容量中,該儲存平台API變成該作業系統API之一部 分,其中應用程式透過此與該作業系統互動。因此,該儲 存平台變成應用系統透過此儲存資訊於該作業系統上之構 件,且該儲存平台之項目型資料模型因此會取代此一作業 系統之傳統檔案系統。舉例來說,如同實施於作業系統之 Microsoft Windows家族中者,該儲存平台可能取代實施於 該作業系統中之NTFS檔案系統。目前,應用程式透過由 該作業系統之 Windows家族所揭示之 Win32 API存取 NTFS檔案系統之服務。 然而,了解完全以本發明之儲存平台取代該NTFS檔 案系統會需要記錄既有的Win32型應用程式,且此記錄可 102 1337310 能不想要’對 之某些相互操 本發明之一實 設計模型之應 統NTFS檔案 命名規則之一 作性。此外, 儲存平台量中 關於此功 申請案中找到 K·错存if 該儲存平 平台之特性與 之一 API »本 之一實施例。 相關申請案中 請參閱第 有關係,且係 項目。各項目. 第19圖本 架構·該储存 料儲存302對 料儲存對談(如 DQP(分散式查 本發明之儲存平台來說提供與既有擋案系統 作性可能是有利的,例如 NTFS。因此,在 施例中,該儲存平台允許依賴該Win32程式 用程式存取該儲存平台之資料餘存以及該傳 系統之内容。最後,該储存平台使用該Win32 超級組之一命名規則,以促進容易的相互操 該儲存平台支援透過該Win3 2 API儲存於_ 之檔案與目錄。 能之額外細節可於稍早在此併入參照之相關
^ 台 API 〇包含允許應用程式存取上面所討論之儲存 功能,以及存取儲存於該資料儲存中之項目 節描述本發明之儲存平台之一儲存平台Αρι 關於此功能之細節可於稍早在此併入參照之 找到,為了方面’在下方歸納某些資訊。 18圓,一包含資料夾係包含至其他項目之持 相等於一擋案系統資料夾之一共用概念之一 係包含」於至少一包含資料夾中。 艮據本發明舉例說明該儲存平台A p〖之美本 平台API使用SQL客戶端19〇〇與該區域資 談,且亦可使用SQL客戶端19〇〇與遠端資 資料儲存34〇)。該區域儲存3〇2亦可利用 詢處理器)或透過上述儲存,台同步化服務
103 1337310
(同步化」)與該遠端資料健存340對談。該儲存承A
ητ 卞台 API 322亦為資料儲存通知做為該橋API,傳送應用程式的訂 閲至該通知引擎332,並將通知路由至該應用 * 征A (如應用 程式350a、350b、或35〇c),亦如上所述。在—實施例中 該儲存平台API 3 22亦可定義—有限「提供者」架構使 得其可存取Microsoft Exchange與AD中之資料。 第20圖以架構方式呈現該儲存平台Api — 〜分槐不同 兀件。該儲存平台API由下列元件所組成:(丨 v )貢枓類別 2002 ’其呈現該儲存平台元件與項目類型,(2)執行時間架 構2004 ’其管理物件持久性並提供支援類別2〇〇6 ;及㈠') 工具2 00 8*其用於自該儲存平台架構產生clr類別。 自—給定架構導致之類別階層會直接反映該架構中之 類型階層β做為一範例,考慮定義於該接觸架構中之項目 類型’如第21Α圖與第21Β圖中所示。 第2 2圖舉例說明操作中之執行時間架構。該執行時間 架構操作如下: 1· 一應用程式350a、350b、或350c結合至該儲存 平台中之一項目。 2. 該架構2004建立對應至該已結合項目之一 ItemContext 物件 2202 ° 3. 該應用程式傳送此jtemContext上之一尋找,已 獲得一項目及何;該傳回之集合在概念上係一物 件圖2204(由於關係)。 4. 該應用程式變更、刪除、及插入資料。 104 1337310 5.該應用程式藉由呼叫該Update()方法儲存該變 更。 第23圖舉例說明一「FindAll」操作之執行。 第24圊舉例說明該處理,其中該儲存平台Αί>1類別 自該儲存平台架構產生。 第25圖舉例說明該檔案API依據之架構。該儲存平 台API包含用以處理棺案物件之一名稱領域。此名稱領域 稱為 System.Storage.Files » System. Storage-Files 中類別之 資料成員直接反映儲存於該儲存平台儲存中之資料;此資 訊自該檔案系統物件「升級」,或可利用該Win32 Αρι原生 建立》該System.Storage.Fi丨es名稱領域具有兩個類別: Fileltem與Directoryltem。這些類別之成員及其方法可藉 由看著第25圖中之架構圈快速估計。FileItem與
DireCt〇ryItem係來自該儲存平台API之唯讀。為了修改它 們’必須使用該Win32 API或SyStem.I0中之類別。 關於API, —程式設計介面(或更簡單的說,介面)可 被視為任何允許一或多個程式碼片段與一或多個其他程式 瑪片段所提供之功能通訊或加以存取之機制、程序、通訊 協定。或者,一程式設計介面可被視為一或多個可通訊耦 合至其他元件之一或多個機制、方法、函數呼叫、模組、 物件之一系統之一元件之機制、方法 '函數呼叫、模組、 物件等等。前-句中「程式碼片段」—詞意欲包含一或多 個程式碼指令或行,且包含如程式碼模組、物件 '副程式、 函數等等,不論應用的術語為何,或是否該程式碼片段個 105 1337310 別編譯,或是否該程式碼片段提供為來源、立即、或物件 程式碼,或是否該程式碼片段用於一執行時間系統或處理 中,或是否為於相同或不同機器上或跨多個機器散佈,或 是否由該程式碼片段所呈現之功能完全實施於軟體中、完 全實施於硬體中 '或硬體與軟體之一組合。
概念上,一程式設計介面可大致檢視,如第30A圖或 第30B圖中所示。第30A圖舉例說明一介面介面1做為一 導管,第一與第二程式碼片段透過其通訊。第30B圖舉例 說明一介面包含介面物件II與12(其可為或可不為該第一 與第二程式碼片段之部分),允許一系統之第一與第二程式 碼片段經由媒體Μ加以通訊。在檢視第30B圖中,可將介 面物件11與12考慮為相同系統之個別介面,且亦可考慮 物件U與12加上媒體Μ包含該介面。雖然第30Α與第3 0Β 圖顯示雙向流程且介面於流程各側上,特定實施例可僅具 有資訊流程於一方向(或如下所述般沒有資訊流程),或僅 具有一介面物件於一側。藉由範例但非加以限制,例如應 用程式介面(API)、輸入點、方法、函數、副程式、遠端程 序呼叫 '及元件物件模型(COM)介面之詞皆囊括於程式設 計介面之定義中。 此一程式設計介面之方面可包含該第一程式碼片段傳 送資訊(其中「資訊」用於其最廣泛解釋中,且包含資料、 命令、要求等等)至該第二程式碼片段之方法、該第二程式 碼片段接收該資訊之方法、及該資訊之結構 '順序、語法' 組織、架構、時間及内容。如此一來,該基本傳輸媒體本 106 1337310
身可能對該介面之操作、是否該媒體為有線或無線或兩者 之一組合並不重要,只要該資訊以該介面所定義之方法加 以傳輸。在特定情況中,當該資訊傳輸可經由另一機制(如 放置於一緩衝器、檔案等等中之資訊自該程式碼片段間之 資訊流程分離)或不存在時,或當一程式碼片段存取由一第 二程式碼片段所執行之功能時,資訊可能不在傳統所知中 之單或雙向傳送。任何或所有方面可能在一給定情況中很 重要,如根據是否該程式碼片段為一鬆耦合或緊耦合配置 中一系統之部分,且因此此清單應被視為舉例說明而非加 以限制。
此一程式設計介面之概念對熟知該項技藝人士來說係 為已知,且在本發明前述詳細說明中可清楚獲得。然而, 有其他方法以實施一程式設計介面,除非表示排除在外, 且這些也意欲由此說明書尾端之申請專利範圍所囊括。此 其他方法可出現為比第30A與第30B圖之簡單檢視更精細 或複雜,但然而,其執行一類似功能以完成相同之全面結 果。我們現在將簡單描述一程式設計介面之某些舉例說明 之其他實施方式。 因數。來自一程式碼片段至另一程式碼片段之一通訊 可間接藉由將該通訊分成多個不連續的通訊加以完成。此 以架構方式描述於第31A與第3 1B圖中。如圖所示,某些 介面可描述代表可切割功能組。因此,第3 0 A與第3 0 B圖 之介面功能可被因數化,以達成相同之結果,正如同可以 數學方式提供24,或2乘上2.乘上3乘上2。因此,如第 107 1337310
31A圖中所示,介面介面1所提供之功能可被子切割,以 將該介面之通訊轉成多個介面介面1A、介面1B、介面1C 等等而仍達成相同結果。如第31B圖中所示,介面II所提 供之功能可被子切割至多個介面介面Ila、Ilb、lie等等 而仍達成相同結果。同樣的,自該第一程式碼片段接收資 訊之第二程式碼片段之介面 12可被因數化至多個介面 I2a、I2b ' I2c等等。當因數化時,包含該第1程式碼片段 之介面數不需與包含該第2程式碼片段之介面數相符。在 第31A與第31B圖之情況中,介面介面1與II之功能精 神分別維持與第30A與第30B圖相同。介面之因數化亦可 跟隨相聯、交換、及其他數學屬性,使得該因數可能很難 辨認。例如,操作之順序可能不重要,且因此,由一介面 執行之一功能可能藉由另一程式碼片段或介面,或藉由該 系統之一個別元件加以執行以執行進一步到達該介面。此 外,熟知該程式設計技藝人士可了解有各種不同方法做出 達成相同結果之功能呼叫。
重新定義。在某些情況中,可能在仍完成想要結果時 忽略、新增或重新定義一程式設計介面之特定方面(如參 數)。此舉例說明於第3 2 A與第3 2 B圖中。舉例來說,假 設第 30A 之介面介面 1 包含一功能呼叫 Square(input,precision, output),包含三個參數 input' precision與output之一呼叫,且其自該第1程式碑片段提 出至該第2程式碼片段。若該中間參數精度不於一給定情 況中加以考慮,如第32A圖中所示,可以僅忽略,或甚至 108 1337310
以一無意義(在此情況中)參數加以取代。亦可加入無關之 一額外參數。在任一事件中,可達成平方之功能,只要在 輸入由該第二程式碼片段平方後傳回輸出。精度對某些下 流或該計算系統之其他部分來說可能是一有意義之參數; 然而,一旦認知到精度對於計算平方之狹窄目的並非必要 時,其可被取代或被忽略。舉例來說,不傳送一有效精度 值,例如一生日之一有意一值可被傳送,而不會反向影響 該結果。同樣的,如第32B圖中所示,介面II由介面ΙΓ 取代,重新定義以忽略或新增參數至該介面。介面12可類 似重新定義為介面12 ’, 重新定義以忽略不必要的參數, 或可在別處處理之參數。在此之重點在於在某些情況中, 一程式設計介面可包含不為某種目的所需之方面,例如參 數,且因此其可被忽略或重新定義,或為其他目的在別處 處理。
内部編碼。合併兩個分別程式碼模組之一些或所有功 能亦可行,使得其間之「介面j變更形式。舉例來說,第 3 0A與第30B圖之功能可分別轉換成第33A與第33B圖之 功能。在第33A圖中,之前第30A圖之第1與第2程式碼 片段合併至包含兩者之一模組中。在此情況中,該程式碼 片段仍可互相通訊,但該介面可調適為一形式,更適用於 單一模組。因此,舉例來說,正式呼叫與傳回陳述式可能 不再必要,但依據介面介面1之類似處理或回應可能仍有 效。同樣的,顯示於第3 3B圖中,來自第30B圖之介面12 之部分(或全部)可於内部寫入於介面 Π 中,以形成介面 109 1337310 II’’。如圖所示,介面12分成I2a與I2b,且介面部分I2a 以介面11内部編碼,以形成介面11 ’,。對於一具體範例來 說,考量來自第 30B 圖之介面 II 執行一函數呼叫 square(input,output),其由介面12接收,其在由該第二程 式碼片段處理以輸入(加以平方)傳送之值之後,會以輸出 傳回已平方之結果。在此一情況中,由該第二程式碼片段 (平方輸入)執行之處理可由該第一程式碼片段執行,而不 需至該介面之一呼叫。
分離(divorce)。來自一程式碼片段至另一程式碼片段 之一通訊可間接藉由將該通訊分成多個不連續的(discrete) 通訊加以完成。此以架構方式描述於第34A與第34B圖 中。如第34A圖中所示,提供中間媒介(分離介面,由於 其分離來自該原始介面之功能及/或介面辜能)之一或多個 片段,以將該第一介面(介面1)上之通訊轉至使其與一不 同介面一致,在此情況中為介面介面2A、介面2B與介面 2C。此可能完成於,如有一已安裝基本應用程式設計為根 據一介面1通訊協定與一作業系統通訊,但接著該作業系 統變更為使用一不同介面,在此情況中為介面介面2A、介 面2B與介面2C。重點是由該第2程式碼片段使用之原始 介面變更,使得其不再與由該第1程式碼片段使用之介面 相容,且因此一媒介物用於使該舊與新介面相容。同樣的, 如第34B圖中所示,一第三程式碼片段可以分離介面DI1 引入,以接收來自介面Π且與分離介面DI2之通訊,以傳 送該介面功能至重新設計以與DI2運作之介面12a與12b, 110 1337310 但提供相同之功能結果。同樣的,DI1與DI2可共同運作, 以翻譯第30B圖之介面II與12之功能至一新作業系統, 而提供相同或相似之功能結果。
重寫。又另一可能的變化係動態重寫該程式碼,以用 其他者取代該介面功能,但達成相同之全面結果。舉例來 說,可能有一系統,其中以一中間語言(如Microsoft IL、 Java ByteCode等等)呈現之一程式碼片段提供至一執行環 境(例如由該.Net架構、該Java執行時間環境、或其他類 似執行時間類型環境所提供者)中之一即時(ΠΤ)編譯器或 轉譯器。該J IT編譯器可被寫入,以動態轉換來自該第1 程式碼片段至該第2程式碼片段之通訊,即將其與可能由 該第2程式碼片段(該原始或一不同第2程式碼片段)所要 求之一不同介面一致。此描述於第35A與第35B圖中。如 可於第35A圖中所見,此方法類似於上數之分離情況。其 可完成於,如一已安裝基本應用程式設計以根據一介面1 通訊協定與一作業系統通訊,但接著該作業系統變更以使 用一不同介面處。該JIT編譯器可用於半途一致化來自該 已安裝型應用程式至該作業系統之新介面之通訊。如第 35B圖中所述,此動態重寫該介面之方法可應用至動態因 數化,或同時改變該介面。 亦應注意上述經由其他實施例做為一介面達成相同或 類似結果之情況亦可以各種不同方式結合,串聯及/或並 聯,或與其他介入程式碼結合。因此’上方呈現之其他實 施例不互斥,且可混合、相符與合併,以產生與第3 0 A與 111 1337310 第30B圖中所呈現之通用情況相同或相等之情況。亦應注 意當以大部分程式設計建構時,有其他類似方法達成一介 面之相同或相似功能,其可能不在此描述,但然而由本發 明之精神與範圍所呈現,即應注意其至少部分功能由一介 面之值下之一介面呈現,且其有利結果。 III.擴充與雉承
本發明之基礎概念係對一特定擴充利用已由一架構所 描述且由該硬體/軟體介面系統所強化之複雜結構、行為與 操作模型化真實世界應用程式物件之項目。為了提供豐富 子類型化功能,且在本發明之各種不同實施例中,一硬體/ 軟體介面系統(為了方便,我們在此後應簡稱為「WinFS」) 可提供項目(與項目類型)可利用「擴充」擴充之一機制。 擴充提供額外資料結構(屬性、關係等等)至目前存在之項 目類型結構。
如之前在此所討論者(且由其在第II.E.6.(a)與II.F.3 節中所討論者),該儲存平台用於提供有一初始架構組,在 至少某些實施例中,該儲存平台允許顧客,包含獨立軟體 廠商(IS V),建立新架構(即新項目與巢狀元件類型)。由於 由該初始儲存平台架構組所定義之一項目類型或巢狀元件 類型可能不真正符合一 IS V應用程式之需要,必須允許 ISV以自訂該類型。此以擴充之概念加以允許。擴充係強 烈類型例,但(a)其無法獨立存在且(b)其必須附加於一項目 或巢狀元件。同樣的,除了點出架構可擴充性之需要,擴 充亦用於點出「多類型」問題。在某些實施例中,由於該 112 1337310 儲存平台可能不支援多繼承或重疊子類型,應用程式可使 用擴充做為模型化重複類型例之一方法(如一文件可為一 「合法文件」以及一「安全文件」)。 A.類型系統 在本發明之各種不同實施例中,該WinFS類型系統提 供用以定義資料結構之一機制。該類型系統用於呈現儲存 於WinFS中之資料。一 WinFS類型宣告於一 winFS架構 中。一 WinFS架構定義一名稱領域,其為一組類型與其他 WinFS架構元件做為一邏輯群紐。winFs架構可利用可能 使用一 XML格式之一 winFS架構定義語言(SDL)加以宣 告。下列係一可能架構宣告之一範例。 <Schema Namespace="System.Storage" > Type definitions </Schema> 定義 繞中 稱領
WinFS架構亦為類型版本化做為一單元。 啟動該系統之數個系統架構。有包含該系統中根_ 4 型宣告之System.Storage架構名稱領域,及宣告分 一1^系 所有原始純量類型之 System.Storage.WinFS架構名 域。 該WinFS類型系統宣告一組簡單純量類型。這 為該WinFS類型系統中之所有其他類型用做為大部八 些類 型 建立方塊。這些類型宣告於該架構名 System.Storage.WinFS中。下表,義該原始類型級 原始 稱領域
WinFS 已管理 CLR類型 說明
113 1337310 類型 SQL類型 字串 Sql String 字串 變數一具有一最大長度 為 2Λ3 1字元長度之長 度統一碼資料。長度可 固定自1 -4000字元,或 利用該「max」關鍵字不 加以限制。 二 進 位 SqlBinar y Byte[] 變數一具有 2Λ32位元 組長度之一最大長度之 長度二進位資料。長度 可固定自 卜8000位元 組,或利用「m a X j關鍵 字不加以限制。 布林 值 SqlBoole an 布林值 可為Null的布林值 位 元 組 SqlByte 位元組 單一無正負位元組 Int 1 6 Sqllntl 6 Int 1 6 自 _2Λ15(-32,768)至 2Λ15-1(32,767)之整數 資料。 Int32 Sqllnt32 Int3 2 自 -2A3 1 (-2,1 47,483,648) 至 2Λ31-1(2,147,483,647)
114 9911337310 年月曰修正#掩f 之整數(全數字)資料。 Int64 Sqllnt64 Int64 白 -2Λ63(-92233720368547 75808) 至 2Λ63-1(9223372036854 775807)之整數(全數字) 資料。 單 S qlS ingl e 單 自 -1.79Ε+308 至 1.79Ε + 308之浮點數資 料 雙 SqlDoubl e 雙 自 -3.40Ε + 38 至 3.40Ε + 38之浮點數資料 十進 位 SqlDecim al 十進位 SQLDecimal 具有比 CLR十進位類型較大之 值範圍。 在儲存中,精度總是28 個數字且純量為0。 曰 期 時間 SqlDateT ime 曰期時間 自1753年1月1日至 9999年12月3 1日之日 期與時間,具有三百分 之一秒或3.3 3釐秒之一 精確度。 Gui d SqlGuid Guid 全域唯一識別符 (GUID)。 1337310
Xml SqlXmlRe ader XmlReader 對里程碑 B 來說, WinFS.Xml 會映射至 「字串」類型。真正的 XML資料類型支援預期 於里程碑C中。 流 TBD TBD 為有效存取使用檔案流 回儲存之一二進位資料 類型。此類型會於里程 碑C中支援。
一 WinFS列舉係宣告稱為一值清單之一組已命名常數 之一純量類型。一列舉類型可使用於可使用一純量類型之 任何地方。在此為一列舉宣告之一範例: 〈Enumeration Name="Gender” > <Value Name="Male" /> 〈Value Name="Female" /> 〈/Enumeration〉
該列舉之值以零為基礎。在上述範例中,Gender. Male呈 現值〇,而Gender.Female呈現值1。 一複雜類型由一名稱與一組屬性加以定義。一屬性係 該類型之一成員領域,且由一名稱與一類型加以定義。一 屬性之類型可為純量(包含列舉類型)或其他複雜類型。一 WinFS類型可使用為稱為一巢狀類型之一屬性類型。一巢 狀類型之一範例僅可存在為一複雜WinFS類型之一屬性值 一該範例係巢狀於一複雜類型之一範例中。一巢狀類型係 利用該巢狀類型架構元件加以宣告。在此為有效類型宣告 116 1337310 之一些範例: <NestedType Name="Address" BaseType="System.Storage.NestedObject"> 〈Property Name="Street" Type=1'WinFS.String" Size="256"
Nullable="false" /> <Property Name="City" Type=" WinFS.String" Size=”256”
Nullable="false" /> <Property Name="State" Type=" WinFS.String" Size="256"
Nullable="false" /> 〈Property Name=”Country" Type=”WinFSString" Size=M256"
Nullable="false" /> </NestedType> 〈ItemType Name="Person”
BaseType=" System. Storage. Item">
<Property Name="Name" Type="WinFS.String" Size=M256M
Nullable="false" /> 〈Property Name="Age" Type="WinFS.Int32" Nullable="false" Default=" 1 "/> 〈Property Name="Picture" Type="WinFS.Binary" Size="max"/> 〈Property Name="Addresses" Type="MultiSet" MultiSetOfType="Address"/> </ItemType>
對於類型為字串與二進位之屬性來說,必須指定一大 小屬性。此屬性指定包含於該屬性中之值之最大大小。一 屬性可選擇性利用該可為空之屬性宣告一可為空之限制。 一值「false」為此屬性指定當建立該類型之一範例時,該 應用程式必須提供一值。另一選擇性屬性係為該屬性指定 該預設值之預設屬性。若該應用程式不提供,此值會於範 例建立時指派給該屬性。 上述範例中之地址屬性係為類型 Multiset。類塑 117 1337310
Multiset之一屬性亦稱為一多值屬性。在該範 Multiset包含一組類型位址之範例。一 Multiset 集合。其可包含一複雜類型之零或多個範例。該 中範例之類型必須為一複雜巢狀類型。Multiset 援WinFS純量類型之範例(包含列舉類型)。類型 之屬性無法為空,且無法具有一預設值。
WinFS支援單繼承類型。WinFS中之所有類 一且僅於WinFS類型上繼承。該繼承類型稱為 型,且此類型取出之類型稱為該基本類型β該 BaseType屬性中之基本類型類型化宣告元件。假 自基本類型B取出’基本類型B接著自類型c卑 型C係該類型A與B之祖先類型。該類型八竹 與C之一後代類型。儲存於winFS中之一資料範 單一類型之一範例。然而,我們可將資料範例視 類型與所有其祖先類型之一組類型之一範例。對 組類型之一範例之一資料範例來說’我們稱並非 何其他類型之祖先之類型為最取出類型β單類型 係一最取出類型之一範例。一般來說,我們較偏 型元件之最取出類型作為其類型。該取出類型繼 其基本類型中之所有屬性。該取出類型可宣生新 無法覆寫定義於該基本類型中之屬性。宣告 中之一屬性必須不使用與該基本類型之—屬性 稱。 該資料模型中繼承之主要優點來自已繼承類 例中,該 類似於一 Multiset 類型不支 Multiset 型必須自 該取出類 WinFS 之 .設類型A :出。該類 該類型B 例永遠為 為包含該 於係此一 該組中任 資料範例 好一單類 承宣告於 屬性,但 取出類蜇 之相同名 型之可取 118 1337310 代性。考慮下列範例: <NestedType Name="Name" BaseType="System.Storage.NestedObject" > <Property Name="FirstName"
Type="WinFS.String" /> <Property Name="LastName"
Type="WinFS.String" /> </Nestedype> <NestedType Name="NameWithMiddleInitial" BaseType="Name" > 〈Property Name="MiddleInitial” Type=“V/inFS.String" /> </NestedType>
〈NestedType Name="Person"
BaseType="System.Storage.Item" > <Property Name="RealName" Type="Name" /> 〈Property Name='OtherNames” Type="MultiSet” MultiSetOfType="Name" /> </NestedType>
在上述範例中,類型個人具有一類型為 Name之屬性 RealName,及係一組類型 Name 之一屬性 OtherNames。一 般來說,會要求該屬性RealName僅具有其類型為 Name 之範例。然而,藉由繼承,單值範例允許RealName之值, 只要該類型 Name係該元件之最取出類型之祖先其中之 一。所以,名稱WithMiddlelnitial之一範例會允許該屬性 RealName 之值。 相同規則擴充至設定屬性。該屬性Other Names包含 一組元件。對於係該組之一成員之各單類型例來說,該範 例之最取出類型必須具有Name作為其祖先其中之一。所 以,該組OtherNames中某些範例可為類型Name之範例, 而其他可為類型NameWithMiddlelnitial之範例。 119 1337310 繼承亦允許方便查詢,其中於該winFS系統尋找一特 定類型之所有範例是可能的。當尋找一類型之所有範例 時’該查詢引擎亦會傳回其最取出類型為此類型後代之所 有範例。然而,這些操作僅為項目、肖充、及關係類型(並 非屬性類型)加以支援。對巢狀類型(亦稱為巢狀元件属 性、或複雜屬性類型)來說’該操作值為單一多組 含之範例加以支援。 Β.類型家族 簡言之,該WinFS類型系統定義四個不同類型家族: ♦巢狀元件類型(亦稱為巢狀類型或屬性類型) • 項目類型 • 關係類型 各類型家族具有一不同屬性組與使用於兮、 丹使用於該WinFS類 系統中。該System-Storage架構名稱領域為各類型家族 告做為根類型之四個類型》下列幾節詳細描述該類型家衣 1·巢狀元件類型 不像其他WinFS類型家族’巢狀類型可使用為複雜 WUFS類型之屬性之類型。—巢狀類型之範例僅可巢狀於 另一乾例類型之一範例令》然而,巢狀類型之範例無法全 面查詢一也就是說,應用程式無法做出傳回該winFS儲存 中一給定巢狀類型之所有範例之_簡單查詢。 2.項目類型 其祖先係該類型
一 WinFS項目係一類型之一範例 120 1337310 99Π〇. 年月曰修正替換頁 —----—— ….— 與%丨>穴60,號專利案今7年Θ月修正
System.Storage.Item。此類型係一複雜類型,其為該項目 類型家族之根。System.Storage.Item宣告類型Guid之名稱 Itemld之一屬性。此為一項目之—特殊屬性,做為該項目 之一主要金鑰》此屬性之值為一給定Win FS儲存中之項目 保證為唯一值。此屬性係非不可為空,且當建立一項目類 型之一範例時’必須由該應用程式加以指派》該ItemId屬 性亦不可變一其可能永遠不會變更且必須不被重新使用。 該查詢引擎可傳回一WinFS儲存中一給定項目類型之 範例。此查詢可傳回該類型之所有範例與其所有類型後代 類型。稍後會描述該項目具有於該WinFS系統操作語義中 之中央角色。 3.關係類型 關係類型允許關係存在於項目之間。WinFS關係類型 描述二進位關係,其中一項目指定為該來源而另一項目指 定為該目標。一關係係一類型之一範例,其祖先係該類型 System.Storage.Relationship。此類型係該關係類型階層之 一根:
System.Storage.Relationship 類型宣告下列屬性: • Sourceltemld —係該關係範例之一來源之項目之 Itemld • Relationshipld—關於該來源項目之關係之一為 一識別符;該對(SourceItemId,RelationshipId)為 WinFS中之關係類型形成主要金鑰。 • Targetltemld—該關係之目標之Itemld ; 121 1337310 • Mode— 3個可能關係範例模式其中之一:持有、 内嵌或參照 • Name—為持有關係包含該關係之名稱 • IsHidden—應用程式可選擇性使用以過濾不需要 被顯示之關係之一布林值屬性 該 SourceItemId、RelationshipId、TargetItemId 與 Mode 屬性值為不可變。其於關係範例建立時被指派且無法被變 更。
一關係類型宣告為具有下列額外限制之一範例類型: • 來源與目標端點規格:各端點指定一名稱與該已 參照項目之類型 • 該關係類型之範例之已允許模式:一關係範例無 法為不於該關係宣告中允許之Mode屬性具有一 值 這裡係一關係宣告之一範例: <RelationshipType Name="DocumentAuthor"
BaseType=" System. Storage. Relationship" AllowsHolding="true"
AllowsEmbedding="false"
AllowsReference="true" > <Source Name="Document" Type="Core.Document"/> <Target Name="Author" Type="Core.Contact" /> 〈Property Name="Role" Type="WinFS.String” /> 〈Property Name="DisplayName" Type="WinFS.String" /> </RelationshipType> 該Document Author關係宣告有至持有或參照模式之範例 限制。此意指該 Document Author關係之一範例可具有值 Mode = ” Reference” 或 Mode = ” Holding” 之範例。具有值 Mode =’’Embedding”之範例不被允許。 122 1337310 該關係I告項目類刑「 —炎源端點 蝴盟「Core.Document」之一來观 名稱為「Document」及類型「c〇re C〇ntactj之一目的端 點。該關係亦宣告二額外屬'14。該關係範例與該項目個別 地儲存與存取。所有關係類型例可自一全域擴充檢視加以 存取。可做出會傳回一給定關係類型之所有範例之一查詢。 給定一項目,該項目係一來源之所有關係可根據該關 係之Sourceltemld屬性加以列舉。同樣的,為一給定項目
來說,該項目係一目標之相同儲存中之所有關係可利用該 關係之Targetltemld屬性加以列舉β a)關係語義 下列各節描述不同關係範例模式之語義: 持有關係:持有關係用於模型化該目標項目之參照計 算型生命週期管理。一項目可為至項目之另或多個關係之 一來源端點。並非為一内嵌項目之_項目可為一或多個持 有關係之一目標 > 該目標項目必須與該關係範例於相同铑 存中。
持有關係強化該目標端點之生命週期管理。一持有關 係範例之建立及被設定目標之項目係一原子操作。額外持 有關係範例可建立為設定目標於相同項目上》當具有一給 定項目做為目標端點之最後持有關係範例被刪除時,該目 標項目亦會被刪除》 當建立該關係之一範例時’指定於該關係宣告中之端 點項目之類型會被強化。在建立該關係之後,該端點項目 之類型無法被變更。 123 1337310 持有關係於形成該WinFS項目名稱領域中扮演一關鍵 角色。所有持有關係參與於該名稱領域宣告中。該關係需 告中之「名稱」領域定義關於該來源項目之目標項目之名 稱。此相關名稱對源自一給定項目且無法為空的所有持有 關係來說是唯一的。始自該根項目至一給定項目之相關名 稱之排序清單形成該完整名稱至該項目。
該持有關係形成一導向非循環圖(DAG)。當一持有關 係建立時,該系統確保一循環不會被建立,且因此確保該 WinFS項目名稱領域形成一 DAG。若要獲得該WinFS名稱 領域與項目路徑之更多資訊,請參照該「WinFS名稱領域」 規格。
内嵌關係:内嵌關係模型化該目標項目之生命週期之 互斥管理之概念。其允許合成項目之概念。一内嵌關係範 例之案例與被放置目標之項目係一原子操作。一項目可為 零或多個内嵌關係之一來源。然而,一項目可為一且僅一 内嵌安係之一目標。係内嵌關係之一目標之一項目無法為 一持有關係之一目標。該目標項目必須於與該關係範例相 同之儲存内。 當該關係之一範例建立時,於該關係宣告中指定之端 點項目之類型會被強化。於該關係建立後,該端點項目之 類型無法變更。該内嵌關係不參與於該 WinFS名稱領域 中。一内嵌關係之名稱屬性之值必須為空。 參照關係··參照關係不控制其參照之項目之生命週 期。參照關係不保證該目標存在,也不保證該目標之類螌 124 1337310 如同該關係宣告中所指定者。此意指該參照關係可搖擺》 同樣的,該參照關係可參照其他WinFS儲存中之項目。 在WinFS中,參照關係會被用於模型化項目間最無生 命週期之管理關係。由於該目標之存在並非強制,該參照 關係便於模型化鬆耦合關係。該參照關係可用於將項目之 目標放置於其他WinFS儲存中,包含其他機器上之儲存。 該内嵌關係不參與於該WinFS名稱領域中。一内嵌關係之 名稱屬性之值必須為空。 b)關係規則與限制 Φ 下列額外規則與限制應用於關係: 參一項目必須為(一内嵌關係)或(一或多個持有關 係)之一目標。為一例外係該根項目。一項目可 為一或多個參照關係之一目標。 * 為内嵌關係之一目標之一項目無法為持有關係 之來源。其可為參照關係之一來源。 • 若已自檔案升級,一項目無法維持有關係之一來 源。其可為内嵌關係與參照關係之一來源。
• 自一檔案升級之一項目無法為一内嵌關係之一 目標。 當一關係類型A自一基本關係類型B取出時,應用下 列規則: • 關係類型A可另限制該端點類型。該端點類型必 須為該基本關係B中對應端點類型之子類型。若 該端點另加以限制,必須宣告該端點之一新名 125 1337310 稱。若該端點不另加以限制,該端點之規則係選 擇性。 • 關係類型 A可另限制宣告於該基本關係中已允 許之範例模型。該已限制範例模式組必須為已允 許範例類型之基本類型組之一子組。 • 該端點之名稱視為屬性名稱:其無法與一屬性隻 一名稱或該類型或其雞本類型之一端點之一名 稱相同。
• 若該對應端點類型不另由該取出關係加以限 制,該來源與目標元件係選擇性。 在此為自定義如上之文件作者關係取出之一關係類型 之一宣告之一範例: <RelationshipType Name="LegalDocumentAuthor" BaseType="Core. Document Author"
AllowsHolding=" false"
AllowsEmbedding="false"
AllowsReference="true" > <Source Name="LegalDocument" Type="Legal.Document 7> 〈Property Name=”CaseNumber” Type=”WinFS.String” /> </RelationshipType>
該Legal Document Author關係另限制該來源端點,但非該 目標端點。該來源端點類型係自 Core.Document取出之 Legal.Document。該目標端點在此情況中不另加以限制, 因此該目標元件被省略。該關係另限制該已允許範例模 式。其拒絕該持有模式,且唯一剩餘已允許模式係參照。 4.擴充類型 一 WinFS擴充係一類型之一範例,其祖先係該類型 126 1337310 99Ηβ^---- 年月日修正替換頁 — - __ 第勹號專利案彳^[年1〇月修正
System.Storage.Extension。此類型係一複雜類型,其為該 擴充類型家族之根。 • System . Storage. Extension 定義二屬性: • Itemld—與該擴充相關之Item之Itemld。 • Extensionld—關於該Itemld之擴充之唯一識別 符。該對(ItemId,ExtensionId)唯一辨識_擴充 例0 下列限制應用於擴充類型: •擴充類型例無法獨立存在於一項目之外。在該擴 充類型例建立之前’具有與該擴充ItemId相同之 Itemld之一項目類型例必須存在於該儲存中。若 具有該給訂Itemld之項目不存在,該擴充無法被 建立。當該項目被刪除時,所有具有相同ItemiD 之擴充也會被刪除》 * 一給定最取出擴充類型之至多一範例可與一個 別項目相關。 參擴充無法為關係之來源與目標。 沒有限制用於可與一給定項目類型相關之擴充類型 上。任何擴充類型允許擴充任何項目類型。當多個不同擴 充類型例附加於一項目上時,其結構與行為互相獨立。該 擴充例個別地自該項目加以儲存與存取。所有擴充類型例 可自一全面擴充檢視加以存取。可做出會傳回一給定擴充 類型之所有範例之一查詢,不論其關於何類型6該擴充之 ItemId指出其屬於何項目且可用&自該全面項目檢視取出 127 1337310 --- 年月日修正替換頁 該對應項目物件。同樣的,給定一項目,與該項目相關之 所有擴充例可利用該擴充之Itemld屬性加以列舉β C.增強功能 在本發明之數個實施例中,一硬體/軟體介面系 統利用擴充與繼承,以正式化各種不同項目間之關係,且 藉此增強查詢複數項目之能力。 1.繼承 第36圊舉例說明一連串互相相關之項目與其關係之 一子組。該文件項目36〇2與一接觸項目36〇4直接由一指 定關係3 606相關聯,在此情況中其係一「作者關係」—也 就是說,該接觸3604係該文件3602之「作者广在此範例 中’該圖片項目3622、該音樂項目3624、及該特殊項目 3626皆自該文件項目3604繼承’由於各項目之類型係該 文件項目類型之一子類型。同樣的,該個人項目3642與該 組織項目3644自該接觸項目3604繼承。在本發明數個實 施例中,這些繼承項目(圖片3622、音樂3624、特殊3626、 個人3642、及組織3644)不僅繼承個別父項目(文件3602 與接觸3604)之屬性,但其亦繼承這兩個父項目間之指定 關係。舉例來說,圖片3622繼承至接觸3 604之一關係 3662、至個人3642之一關係3664、及至組織3644之一關 係3666。一類似關係組亦由顯示之各其他項目加以繼承。 然而,注意到關係繼承並非自動,且不會發生於每個 内各中是很重要的。舉例來說,描述一類型何時可繼承(即 繼承控制)之屬性不可自我繼承。繼承參數由該硬體/軟體 )28 1337310 介面系統加以維護與調整。 2.擴充 第37A圖舉例說明應用程式特定目的之一項目之標準 子類型化之缺點。在此圖中,一接觸可由四個應用程式 APP1、APP2、APPX、及 APPY 加以存取。APP 1 與 APP2 存取該標準接觸,但APPX及APPY各需要一已擴充控制 物件(加入額外欄位),且因此取出接觸’與接觸’’,其各自 接觸加以繼承。然而1問題是現在有三個基本接觸項目之
不同範例--個於接觸中,一個於接觸’中,而一個於接 觸’’中。 舉例說明於第3 7 B圖中對此問題之一部分解決方式係 擴充該接觸屬性,以包含需要此之一應用程式所需之攔 位。在此情況中,擴充接觸以包含APPX所需之額外欄位。 然而,直接擴充一項目之攔位,例如接觸,僅可完成一次, 且因此APPY無法應用此方法。
在本發明之一實施例中,一更複雜之解決方法係擴充 具有不同與分離自控制本身之一擴充之接觸,如第37C圖 舉例說明者。如此一來,APPX可擴充接觸,以包含其APPX 額外欄位,而APPY亦可個別地擴充接觸,以包含其APPY 額外欄位。這些擴充接著可搜尋與可查詢本身,且因此這 些擴充為該硬體/軟體介面系統允許多類型化之一形式。 IV.結論 如同前述舉例說明者,本發明導向用以組織、搜尋、 及共享資料之一儲存平台。本發明之儲存平台擴充與擴張 129 丄u 資料儲存之概令扣山 設計為所有類i資料既有稽案系統與資料庫系統之外,且 或半結構化資料,例如相二…構化、非結構化' 料形式,稱為項目相關(表狀)資料、xml、及一新資 本發明之儲存平其共用儲存基礎與架構化資料, 效之應用程式研1 費者、知識工作者及專家更有 1 發。其提供一豐富且可擴充麾用;g 4 A 面’不僅使於其資料斑刑ώ 、兄應用程式介 充既有… 承之功能有效,亦囊括與擴 樓案系統與資料存取方法。路 明概念之外,可斟μ,+, # 胖隹布超出廣泛發 不限於所揭示之特定=例做出變更。因此’本發明並 範圍中所1 例’但用於涵蓋於所附申請專利 ,疋義知本發明精神與範圍之所有修改。 上述中很明顯看到,本發明之各種不同系,統、方法、 …所有或部分可實施於程式碼(即指令)之…。 此私式碼可错存於-電腦可讀取媒雜上,例如一磁性、電 性或光學儲存媒體’包含但不限於一軟碟匣、CDR0M、 CD-RW、DVD__、dvd ram '磁帶快閃記憶雜硬 碟裝置、或任何其他機器可讀取餘存媒趙,其令,當該程 式碼載入一機器且由該機器執行時,例如一電腦或飼服 器’該機器變成用以實施本發明之一裝置。本發明亦可實 施於程式碼之行式中,其透過某種傳輸媒體加以傳輸例 如透過電線或電規、透過光纖、透過—網路,包含該網際 網路或—内部網路,或經由任何其他傳輪形式,其中,當 該,式碼由一機器接收與載入與執行時例如—電腦該 機器變成實施本發明之一裝置。當實施於一通用目的處理 130 1337310 器時,該程式碼結合該處理器提供唯一裝置,操作類似於 特定邏輯電路。 【圖式簡單說明】 前述簡介以及前述本發明實施方式在結合附圖閱讀時 較容易了解。為了舉例說明本發明之目的,顯示於本發明 各方面之範例實施例之圖式中;然而,本發明並不限於所 揭示之特定方法與手段。在圖式中:
第1圖係呈現本發明之各方面可併入之一電腦系統之 一方塊圖; 第2圖係舉例說明分成三個元件群組之一電腦系統之 一方塊圖:該硬體元件、該硬體/染體介面系統元件、及該 應用程式元件; 第2A圖為一檔案型作業系統中一目錄中之資料夾中 群組化之檔案舉例說明傳統樹狀階層結構: 第3圖係舉例說明一儲存平台之一方塊圖;
第4圖舉例說明項目、項目資料夾、及類目間之結構 關係; 第5 A圖係舉例說明一項目之結構之一方塊圊; 第5 B圖係舉例說明第5 A圖之項目之複雜屬性類別之 一方塊圖; 第5 C圖係舉例說明該「位置」項目之一方塊圖,其 中另描述其複雜類型(明確列示): 第6A圖舉例說明一項目做為該基本架構中發現之項 131 1337310 目之一子類型; 第6B圖係舉例說明第6A圖之子類型項目之一方塊 圖,其中明確列示其繼承類型(除了其立即屬性之外); 第7圖係舉例說明包含二頂階類別類型,項目及屬性 基礎,及自其取出之額外基本架構類型之基本架構之一方 塊圖;
第8 A圖係舉例說明該核心架構中之項目之一方塊圖; 第8 B圖係舉例說明該核心架構中之屬性類別之一方 塊圖; 第9圖係舉例說明一項目資料夾、其成員項目、及該 項目資料夾與其成員項目間之互連關係之一方塊圖; 第 10圖係舉例說明一類目(同樣的,其係一項目本 身)、其成員項目、及該類目與其成員項目間之互連關係之 一方塊圖; 第1 1圖係舉例說明該儲存平台之資料模型之一參照 類型階層之一示意圖; 第1 2圖係舉例說明關係如何被分類之一示意圖;
第1 3圖係舉例說明一通知機制之一示意圖; 第1 4圖係舉例說明一範例之一示意圖,其中二交易皆 插入一新紀錄至該相同B樹中; 第1 5圖舉例說明一資料變更偵測程序; 第1 6圖舉例說明一範例目錄樹; 第17圖顯示一範例,其中一目錄型擋案系統之一既有 資料夾被移入該儲存平台資料儲存中: 132 1337310 第1 8圖舉例說明包含資料夾之概念; 第19圖舉例說明該儲存平台API之基本架構; 第20圖有架構的呈現該儲存平台 API堆疊之各種不 同元件; 第21A圖係一範例接觸項目架構之一圖示呈現方式; 第21B圖係為第21A圖之範例接觸項目架構之元件之 圖示呈現方式; 第22圖舉例說明該儲存平台API之執行時架構; 第2 3圖舉例說明一「尋找全部」動作之執行; Φ 第24圖舉例說明儲存平台API類別自該儲存平台架 構產生之程序; 第25圖舉例說明一擋案以其為基礎之一架構; 第 2 6圖係舉例說明用於資料安全性目的之一存取遮 罩格式之一示意圖; 第27圖(部份a、b、及c)描述開闢一既有安全性區域 之一新相同保護安全性區域;
第 2 8圖係舉例說明一項目搜尋檢視之概念之一示意 面 · 團, 第29圖係舉例說明一範例項目階層之一示意圖; 第30A圖舉例說明一介面介面1做為一導管,第一與 第二程式碼片段透過其加以通訊; 第30B圖舉例說明一介面包含介面物件Π與12,其 允許一系統之第一與第二程式碼片段經由媒體Μ加以通 訊; 133 1337310 第3 1 A圖舉例說明介面介面1提供之功能如何被子區 分以將該介面之通訊轉換成多個介面介面1A、介面1B、 介面1 C ; 第31B圖舉例說明介面II提供之功能如何被子區分成 多個介面Ila、lib、lie; 第32A圖舉例說明一情況,其中可忽略一無意義參數 精確性或可亦一任意參數加以取代; 第32B圖舉例說明一情況,其中一介面可由一替代介 面加以取代,其定義為忽略或新增參數至一介面中; 第33A圖舉例說明一情況,其中一第1與第2程式碼 片段合併至包含兩者之一模組中; 第3 3 B圖舉例說明一情況,其中部份所所有一介面可 於内部寫入另一介面中,以形成一合併介面; 第3 4 A圖舉例說明一或多個中間片段可如何將該第一 介面上之通訊轉換以使其符合一或多個不同介面; 第 3 4B圖舉例說明一程式碼片段可如何以一介面引 入,以接收來自一介面之通訊,但傳輸該功能至該第二與 第三介面; 第3 5 A圖舉例說明一即時編譯器(JIT)可如何自一程 式碼片段之通訊轉換至另一程式碼片段; 第35B舉例說明動態重新撰寫一或多個介面之一 JIT 方法可應用至動態因素或改變該介面: 第3 6圖舉例說明一連串内連項目與其關係之一子組; 第37A圖為應用程式特定目的舉例說明一項目之標準 1337310 子類型之缺點; 份解決方 特且與接 動一多類 第3 7B圖舉例說明標準子類型之問題之一部 法;及 第3 7 C圖舉例說明本發明之一實施例,以獨 觸本 身 不 同 之 一擴充加_ 以擴充一 項巨 1 , 且因此啟 型功 能 〇 【主 要 元 件 符 號說明】 20 電 腦 2 1 處 理 單 元 22 系 統 記 憶 體 24 ROM 25 RAM 26 BIOS 27 硬 碟 29 可 移 除 儲 存 30 光 學 裝 置 3 1 可 移 除 光 碟 32 硬 碟 裝 置 介面 33 磁 碟 裝 置 介面 34 光 學 裝 置 介面 35 作 業 系 統 36 應 用 程 式 37 其 他 程 式 38 程 式 資 料 40 鍵 盤 42 滑 鼠 46 序 列 埠 介 面 47 螢 幕 48 視 訊 轉 接 器 49 遠 端 電 腦 50 軟 碟 5 1 區 域 網 路 52 廣 域 網 路 53 網 路 介 面 54 數 據 機 55 主 機 轉 接 器 56 SCSI [S流排 62 儲 存 裝 置 1337310 200 電腦系統 204 硬體/軟體介面 系統元件 206 應用程式元 件 2 1 2 DOS型檔案 系 統基本資 214 資料夾 220 擋案 302 資料儲存 306 變更追蹤 3 10 升級/降級 3 14 資料庫引擎 3 18 NTFS 322 儲存平台應 用 程式介面 324 OLE DB 328 服務 332 通知 336 公用程式 340 平台架構 344 新ISV架構 350a 應用程式 350c 應用程式 404 項目 408 項目 412 項目 4 16 項目 硬體元件 額外資料夾 儲存平台 資料模型 安全性 SQL儲存 應用程式介面 WIN 32應用程式介面 同步化 資訊代理者 遠端資料儲存 已擴充平台架構 架構配置工具 應用程式 項目 項目 項目 項目 項目
136 1337310 420 項目 422 項目資料夾 424 項目資料夾 426 項目資料夹 428 項目資料夾 430 項目資料夾 432 類別 434 類別 436 類別 5 12 關係 524 關係 5 16 關係 526 關係 900 項目資料夾 902 項目 904 項目 906 項目 1000 類別 1002 項目 1004 項目 1006 1008 項目 共用屬性、值、或類 型之組 合 1 008, 共用描述 1012 關係 1024 關係 1016 關係 1026 關係 1900 SQL客戶端 2002 資料類別 2004 執行時架構 2006 執行時架構類別 2008 設計時工具 2010 2012 XML中之架構描述 網路特定方法之程式碼 2014 架構 2016 UDT類別定義 2202 項目内容 2204 項目物件圖 3602 文件 3604 接觸 3606 已指定關係 3622 圖片 3624 音樂 3626 特殊
137 1337310 3642 個 人 3644 組織 3662 關 係 3 664 關係 3666 關 係
138

Claims (1)

1337310 9^10· 20- 年月日修正替換頁 第们號蔚膝啊年f 〇月修正 十、申請專利範圍: 1- 一種用以客製化一不連續的(discrete)可儲存資訊單元 之方法,包含下列步驟: 定義一不連續的可儲存資訊單元,其具有一類型結 構及一第一識別符; 定義一擴充類型(an extension type),其表示一所欲 額外資料結構; 定義該擴充類型之一擴充例,該擴充例係由該第一 識別符及一擴充識別符進行識別,並儲存於一電腦可讀 取儲存媒體中,可從該不連續的可儲存資訊單元個別存 取;以及 產生一客製化之不連續的可儲存資訊單元,其儲存 於一電腦可讀儲:存媒體中,且可從該不連續的可儲存資 訊單元個別存取,其中產生該客製化之不連續的可儲存 資訊單元之步驟,係包含將該擴充類型之該擴充例附加 至該不連續的可儲存資訊單元。 2. 如申請專利範圍第1項所述之方法,其中上述擴充例無 法獨立於該客製化之不連續的可儲存資訊單元的該類 型結構-而存在。 3. 如申請專利範圍第1項所述之方法,更包括下列步驟 定義複數擴充,其中每一擴充表示一所欲額外資料 結構;以及 附加該些擴充至該不連續的可儲存資訊單元的該 139 1337310 9p. Ιύ, 2L8-- I年月曰修正替換頁 類型結構。 4. 如申請專利範囡第3項所述之方法,其中上述複數擴充 係用於模型化多個重疊類型例(mode丨overlapping type instances) 〇 5. —種用以擴充一屬性(Property )之方法,上述屬性構 成一可由一硬體/軟體介面系統操控之複雜屬性類型, 上述方法包含利用一強烈類型例(一「擴充」)擴充該屬 性,上述擴充構成一不連續的可儲存資訊單元,其可由 該硬體/軟體介面系統操控且與該屬性相關。 6. 如申請專利範圍第5項所述之方法,其争上述擴充係附 加於該属性上。 7. 如申請專利範圍第5項所述之方法,其+上述擴充無法 獨立存在於該屬性之外,使得若上述屬性停止存在,該 擴充亦停止存在。 8. 如申請專利範圍第5項所述之方法,其中上述屬性係由 複數擴充加以擴充。 9. 如申請專利範圍第8項所述之方法,其中上述複數擴充 係用於模型化多個重叠類型例。 10. —種為一硬體/軟體介面系統來組織及有效查詢複數項 目之方法,上述項目搆成可由一硬體/軟體介面系統操 控之多個不連績的可儲存資訊單元,上述複數項目包含 與一第一項目與一第二項目相關之一第一關係,上述方 法包含:為將一第三項目的例示化(instantiation),上述 140 1337310 99ΓΤΙ). 28·~ ---, [牟月—日修正替換頁I 第三項目係該第一項目之一子類型例,上述第三項目自 動自該第一項目繼承一與該第二項目之關係。 11. 如申請專利範圍第10項所述之方法,其中為將一第四 項目例化,上述第四項目係該第二項目之一子類型例, 上述第四項目自動自該第二項目繼承一與該第一項目 之關係。 12. 如申請專利範圍第11項所述之方法,其中上述第四項 目另自動自該第二項目繼承一與該第三項目之關係。 13. 如申請專利範圍第10項所述之方法,其中為該第一項 目之一第一複數子類型例之各者,上述第一複數子類型 例之各者自動自該第一項目繼承一與該第二項目之關 係。 14. 如申請專利範圍第13項所述之方法,其中為該第二項 目之一第二複數子類型例之各者,上述第二複數子類型 例之各者另自動自該第二項目繼承與該第一項目之多 個關係。 15. 如申請專利範圍第14項所述之方法,其中上述第一複 數子類型例之各者自動自該第一項目繼承一與該第二 複數子類型例之各者之關係。 16. 如申請專利範圍第15項所述之方法,其中上述第二複 數子類型例之各者自動自該第二項目繼承一與該第一 複數子類型例之各者之關係。 17. —種用以操控複數不連績的可儲存資訊單元之硬體/軟 141 1337310 1 j 9ί>·¥>.序8日修正替換頁 體介面系統,上述系統包含: 一處理器,其經組態為執行處理器可執行指令; 與該處理器通訊之一記憶體,該記憶體儲存該處理 器可執行指令; 一子系統,其常駐於該記憶體中,且包含用以執行 下列步驟之處理器可執行指令: 定義多個不連續的可儲存資訊單元,其具有一類型 結構及各自之第一識別符; 定義至少一擴充類型,其表示所欲額外資料結構; 定義該至少一擴充類型的至少一擴充例,該至少一 擴充例係由該至少一擴充例所附加至之一不連續的可 儲存資訊單元的一個別第一識符別及一個別擴充識別 符來進行識別,該至少一擴充例係儲存於一電腦可讀取 儲存媒體中,且可從該等不連續的可儲存資訊單元個別 存取;以及 產生多個客製化之不連續的可儲存資訊單元,其儲 存於該電腦可讀取儲存媒體中,且可從該等不連續的可 儲存資訊單元個別存取,其中產生該等客製化之不連續 的可儲存資訊單元之步驟,係包含將該擴充類型之該擴 充例附加至該等不連續的可儲存資訊單元》 18.如申請專利範圍第17項所述之硬體/軟體介面系統,其 中該至少一擴充例無法單獨存在於該至少一擴充例所 附加至之該等客製化之不連續的可儲存資訊單元的該 142 1337310 日修替換頁 類型結構之外。 19. 如申請專利範圍第17項所述之硬體/軟體介面系統,該 系統更包含一子系統,該子系統常駐於該記憶體中,且 包含用以執行下列步驟之處理器可執行指令: 定義複數擴充,其中每一擴充表示一所欲額外資料 結構;以及 附加該等擴充至該等不連續的可儲存資訊單元的 該類型結構。 20. —種用以操控複數屬性(Properties)之硬體/軟體介面 系統,上述屬性搆成可由一硬體/軟體介面系統操控之 多個複雜屬性類型,上述系統包含一子系統,用以藉由 一強烈類型例(一「擴充」)來擴充一屬性,上述擴充構 成可由該硬體/軟體介面系統操控之一不連續的可储存 資訊單元。 2 1.如申請專利範圍第20項所述之系統,其中上述擴充係 附加於該屬性上。 22.如申請專利範圍第20項所述之系統,其中上述擴充無 法獨立存在於該屬性之外,使得若該屬性停止存在,該 擴充亦停止存在。 2 3 .如申請專利範圍第2 0項所述之系統,其申上述屬性係 由複數擴充加以擴充。 24. —種用以操控複數項目之硬體/軟體介面系統,其中一 項目構成可由該硬體/軟體介面系統操控之一不連續的 143 1337310 9|9· 10,以- 年月日修正替Μ 可儲存資訊單元,上述系統包含一子系統,用以組織與 有效查詢該複數項目,上述複數項目包含與一第一項目 及一第二項目相關之一第一關係,其中上述子系統: 為將一第三項目例示化(instantiation),該第三項 目係該第一項目之一子類型例,自動在該第三項目與該 第二項目間建立一關係, 為將一第四項目例示化,該第四項目係該第二項目 之一子類型例,自動在該第四項目與該第一項目間建立 一關係;及 自動在該第四項目與該第一項目間建立一關係。 2 5.如申請專利範圍第24項所述之系統,其中為該第一項 目之一第一複數子類型例之各者,且為該第二項目之一 第二複數子類型例之各者,該子系統: 自動為該第一複數子類型例之各者與該第二項目 建立一關係; 自動為該第二複數子類型例之各者與該第一項目 建立一關係;及 自動為該第一複數子類型例之各者與該第二複數 子類型例之各者建立一關係。 26. —種用以操控複數項目之硬體/軟體介面系統,其中一 項目構成一可由該硬體/軟體介面系统操控之不連續的 可儲存資訊單元,上述系統包含一子系統,用以藉由一 強烈類型例(一「擴充」)來擴充一項目,上述擴充構成 144 1337310 9ψΠθτ^--年月日修正替換頁 之不連續的可儲存資 一可由該硬艘/軟體介面系統操控 訊單元。 26項所述之系統’其中上述擴充係 27.如申請專利範团第 附加於該項目上。 28.如申請專利範圍第26項所 法單獨存在於該項目之外, 擴充亦停止存在。 述之系統’其中上述擴充無 使得若該項目停止存在,該 29.如申請專利範固第 26項所述之系統,其中上述項目 係 由複數擴充加以擴充。 30·—種包含電腦可讀取指令之電腦可讀取媒體該等電腦 可讀取指令經組態為執行一用以客製化—不連續的可 儲存資訊單元之方法,該方法包含下列步驟: 定義一不連續的可儲存資訊單元,其具有一類型結 構及一第一識別符; 疋義擴充類型’其表示一所欲額外資料結構; 定義該擴充類型之一擴充例,該擴充例係由該第一 識別符及一擴充識別符進行識別,並儲存於一電腦可讀 储存媒想中,可從該不連續的可儲存資訊單元個別存 取:以及 產生一客製化之不連續的可儲存資訊單元,其儲存 於一額外電腦可讀儲存媒體中,且可從該不連續的可儲 存資訊單元個別存取’其中產生該客製化之不連續的可 儲存資訊單元之步驟,係包含將該擴充類型之該擴充例 145 1337310 ^)0.- 年月日修正替換頁 附加至該不連續的可儲存資訊單元。 31. —種包含用以擴充一屬性(Property)之電腦可讀取指 令之電腦可讀取媒體,該屬性構成可由一硬艏/軟體介 面系統操控之一複雜屬性類型,上述電腦可讀取指令包 含用以利用一強烈類型例(一 「擴充」)來擴充該屬性的 多項指令,該擴充構成可由該硬體/軟體介面系統操控 之一不連續的可儲存資訊單元,其中上述擴充係附加於 該屬性,且其中當上述屬性停止存在時,該擴充亦停止 存在。 32. —種包含用以組織與有效查詢複數項目之電腦可讀取 指令之電腦可讀取媒體,該項目構成可由一硬體/軟體 介面系統操控之不連續的可儲存資訊單元,上述電腦可 讀取指令包含指令用以: 將一第一項目、一第二項目、及與一第一項目與一 第二項目有關之一第一關係例示化(instantiation); 將一第三項目例示化,上述第三項目係該第一項目 之一子類型例;及 自動在該第三項目與該第二項目間建立一已繼承 關係。 33. 如申請專利範圍第32項所述之電腦可讀取媒體,另包 含指令以: 將一第四項目例示化,上述第四項目係該第二項目 146 1337310 QQ. 10 28_ 年月日修正替換頁 之一子類型例;及 自動在該第四項目與該第一項目間建立一已繼承 關係。 34.如申請專利範圍第33項所述之電腦可讀取媒體,另包 含指令,以自動建立該第三項目與該第四項目間之一已 繼承關係。 147 1337310 七、指定代表圖: (一) 、本案指定代表圖為:第36圖。 (二) 、本代表圖之元件代表符號簡單說明: 3602 文件 3604 接觸 3606 已指定關係 3622 圖片 3624 音樂 3626 特殊 3642 個人 3644 組織 3662 關係 3664 關係 3666 關係 八、本案若有化學式時,請揭示最能顯示發明 特徵的化學式:
TW093122603A 2003-08-21 2004-07-28 Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system TWI337310B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/US2003/026144 WO2005029313A1 (en) 2003-08-21 2003-08-21 Systems and methods for data modeling in an item-based storage platform
US10/646,580 US7428546B2 (en) 2003-08-21 2003-08-21 Systems and methods for data modeling in an item-based storage platform
US10/693,574 US7590643B2 (en) 2003-08-21 2003-10-24 Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system

Publications (2)

Publication Number Publication Date
TW200513874A TW200513874A (en) 2005-04-16
TWI337310B true TWI337310B (en) 2011-02-11

Family

ID=34279603

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093122603A TWI337310B (en) 2003-08-21 2004-07-28 Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system

Country Status (12)

Country Link
EP (1) EP1604310A4 (zh)
JP (1) JP4580390B2 (zh)
KR (1) KR101022936B1 (zh)
CN (1) CN1871598B (zh)
AU (1) AU2004271531B2 (zh)
BR (1) BRPI0406512A (zh)
CA (3) CA2815562C (zh)
IL (1) IL168666A (zh)
MX (1) MXPA05006260A (zh)
NO (1) NO20052052L (zh)
TW (1) TWI337310B (zh)
WO (1) WO2005024666A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI720528B (zh) * 2019-07-03 2021-03-01 神雲科技股份有限公司 用於擴充硬碟擴充單元的叢集式儲存系統

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
KR100938830B1 (ko) * 2007-12-18 2010-01-26 한국과학기술정보연구원 지식베이스 구축 방법 및 그 서버
CN101650670B (zh) 2008-08-14 2013-01-09 鸿富锦精密工业(深圳)有限公司 可共享应用程序配置参数的电子系统及其方法
US20100318964A1 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Software extension analysis
CN103678687B (zh) * 2013-12-26 2017-04-05 北京奇虎科技有限公司 基于配置系统的项目创建方法及装置
CN112015405B (zh) * 2019-05-29 2022-06-21 腾讯数码(天津)有限公司 界面布局文件的生成方法、界面生成方法、装置及设备
WO2022010491A1 (en) * 2020-07-10 2022-01-13 Hewlett-Packard Development Company, L.P. Application version switching
US11423025B2 (en) 2020-07-27 2022-08-23 International Business Machines Corporation Direct data loading of middleware-generated records
CN114201504A (zh) * 2021-11-15 2022-03-18 北京达佳互联信息技术有限公司 一种信息获取方法、装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078925A (en) * 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US6324533B1 (en) * 1998-05-29 2001-11-27 International Business Machines Corporation Integrated database and data-mining system
US6385767B1 (en) * 1999-09-30 2002-05-07 Unisys Corporation Method and system for creating and manipulating extensions to version control systems
US6763350B2 (en) * 2001-06-01 2004-07-13 International Business Machines Corporation System and method for generating horizontal view for SQL queries to vertical database
US6697818B2 (en) * 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
JP3695581B2 (ja) * 2001-08-08 2005-09-14 ソニー株式会社 記録装置および記録方法、記録媒体、並びに、電子カメラ
CN1561482A (zh) * 2001-08-24 2005-01-05 布鲁克斯自动控制公司 应用程序类扩展
JP2003150424A (ja) * 2001-11-16 2003-05-23 Fujitsu Ltd ファイルシステム、制御方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI720528B (zh) * 2019-07-03 2021-03-01 神雲科技股份有限公司 用於擴充硬碟擴充單元的叢集式儲存系統

Also Published As

Publication number Publication date
CN1871598B (zh) 2014-10-15
NO20052052L (no) 2005-07-06
WO2005024666A8 (en) 2005-08-18
EP1604310A4 (en) 2009-06-10
IL168666A (en) 2010-11-30
MXPA05006260A (es) 2005-08-19
JP4580390B2 (ja) 2010-11-10
KR101022936B1 (ko) 2011-03-16
CA2815562A1 (en) 2005-03-17
KR20060057524A (ko) 2006-05-26
CA2815867C (en) 2015-09-29
BRPI0406512A (pt) 2005-12-06
NO20052052D0 (no) 2005-04-26
CA2506337A1 (en) 2005-03-17
CA2506337C (en) 2015-01-20
CA2815562C (en) 2015-02-17
AU2004271531A1 (en) 2005-03-17
EP1604310A2 (en) 2005-12-14
WO2005024666A2 (en) 2005-03-17
CN1871598A (zh) 2006-11-29
JP2007503051A (ja) 2007-02-15
TW200513874A (en) 2005-04-16
AU2004271531B2 (en) 2009-12-10
CA2815867A1 (en) 2005-03-17
WO2005024666A3 (en) 2005-10-20

Similar Documents

Publication Publication Date Title
JP4583377B2 (ja) ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報のユニットに対する関係および階層の同期サービスを実現するシステムおよび方法
US7512638B2 (en) Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US8166101B2 (en) Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7743019B2 (en) Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
US7401104B2 (en) Systems and methods for synchronizing computer systems through an intermediary file system share or device
JP4583376B2 (ja) ハードウェア/ソフトウェアインタフェースシステムにより管理可能な情報のユニットに対する同期処理サービスを実現するシステムおよび方法
US7590643B2 (en) Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
JP2007521533A (ja) アプリケーションプログラムをアイテムベースのストレージプラットフォームとインターフェースするためのシステムおよび方法
JP2007521532A (ja) アイテムベースのストレージプラットフォームにおけるデータモデリングのためのシステムおよび方法
TWI337310B (en) Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
JP4580389B2 (ja) 仲介ファイルシステム共有または仲介デバイスを介してコンピュータシステムを同期させるためのシステムおよび方法
JP4583375B2 (ja) 同期スキーマの実装のためのシステム
RU2371757C2 (ru) Системы и способы моделирования данных в основанной на предметах платформе хранения
JP2007521537A (ja) データの編成、検索、および共有のためのストレージプラットフォーム
KR101109390B1 (ko) 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한 정보의 단위들에 대한 동기화 서비스를 제공하는시스템 및 방법
NZ540221A (en) Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees