專利名稱:結構化的數據存儲的制作方法
結構化的數據存儲
背景
計算機系統通常包括短期存儲器和長期存儲器。短期存儲器通常使用動態
RAM,它通常提供對存儲在RAM內數據的快速訪問。諸如由硬盤提供的長期 存儲器,提供對存儲數據的相對較慢的訪問,但是正常情況下即使在斷電之后 仍能保有數據。因此,計算機使用存儲在短期存儲器內的數據來操控和處理數 據,而在數據未被處理時使用長期存儲器存儲數據。
用戶(包括各個計算機過程)通常在處理完程序和數據后將數據保存在磁 盤內。同樣地,用戶還將存儲的數據從磁盤載入短期存儲器使得數據能夠被查 看和/或操控。然而,隨著數據量變得愈加龐大和復雜,這次操作可能會要求大 量的時間來進行保存和裝載。
發明內容
提供本概述來引入簡化形式的一組概念,這些概念將在詳細描述部分中進 一步描述。本概述并不旨在標識所聲明主題的關鍵特征或本質特征,也不是旨 在用于輔助確定所聲明主題的范圍。
根據所述實施例的各個方面,提供一種用于實現結構化的數據存儲的方法 的實現。后端數據是通常對用戶努力完成的任務頗為重要的"核心"或"骨干" 信息。后端數據可以從諸如硬盤或其他長期數據存儲的計算機程序產品中接 收。后端數據是使用與諸如GUID的唯一標識符相關聯的節點而結構化的。節 點可使用唯一標識符來尋址,并且后端數據項與相應的可尋址節點相關聯,使 得后端節點能夠被快速訪問。前端數據通常與如何獲得、使用和呈現后端數據 更為相關。前端數據可以從諸如硬盤或其他長期數據存儲的計算機程序產品中 接收。前端數據是使用與諸如GUID的唯一標識符相關聯的節點而結構化的。 節點可使用唯一標識符來尋址,并且前端數據項與相應的可尋址節點相關聯, 使得前端節點能夠被快速訪問。
根據另一方面, 一種實現結構化的數據存儲的系統包括文件編寫器,用
以將來自計算機程序的后端數據保存到計算機程序產品內;后端數據裝載器,
用以接收來自計算機程序產品的后端數據;前端數據裝載器,用以接收來自計 算機程序產品的前端數據;以及顯示模塊,響應于所接收到的用于顯示特定后 端數據項的前端數據來顯示該特定數據項。
參考附圖描述了非限制性和非詳盡的實施例,其中除非另外指定,否則在 各個視圖中類似的參考編號指示類似的部分。
圖1示出了可根據一實施例使用的示例性計算設備;
圖2示出了用于結構化的數據存儲的一個示例性數據存儲格式;以及
圖3示出了用于結構化的數據存儲的一個實例操作流程300。
具體實施例方式
以下將結合作為本發明一部分并示出用于實踐本發明的特定實施例的附 圖來更詳盡地描述各個實施例。然而各實施例被實現為許多不同的形式并且不 應將其解釋為被限制在此處描述的實施例;相反地,提供這些實施例以使得本
公開變得透徹和完整,并且將本發明的范圍完全傳達給本領域普通技術人員。 這些實施例可被實踐為方法、系統或設備。因此,這些實施例可采用硬件實現 形式、整個的軟件實現形式或者結合軟件和硬件方面的實現形式。因此,以下 詳細描述并非是局限性的。
這種實施例可被實現為計算機進程、計算機系統(包括移動手持式計算設 備)或者諸如計算機程序產品這樣的制品。計算機程序產品可以是計算機系統 可讀并且編碼指令計算機程序以執行計算機進程的計算機存儲介質。計算機程 序產品也可以是計算系統可讀的且對指令計算機程序進行編碼以執行計算機 過程的載波傳播信號。
不同實施例的邏輯操作被實現為(l)在計算系統上運行的計算機實現的步 驟的序列和/或(2)計算系統內部的互連機器模塊。具體實現的選擇取決于實現 實施例的計算系統的性能需求。因此,在此描述的組成這些實施例的邏輯操作 另外還可被稱為操作、步驟或模塊。
圖1示出了可根據一個示例性實施例使用的示例性計算設備。用于實現本
發明的示例性系統包括計算設備,諸如計算設備100。計算設備100可被配置
為客戶機、服務器、移動設備、或者是能夠在基于網絡的協作系統中與數據進
行交互的任何其他計算設備。在一個非常基本的配置中,計算設備1oo通常包
括至少一個處理單元102和系統存儲器104。取決于計算設備的確切配置和類 型,系統存儲器104可以是易失性的(諸如RAM)、非易失性的(諸如ROM、 閃存等)或是兩者的某種組合。系統存儲器104通常包括操作系統105、 一個 或多個應用程序106,并且可以包括程序數據107。根據該實施例,如下將詳 述的服務器排隊系統108通常在應用程序106中實現。
計算設備100也可具有其它特征或功能。例如,計算設備100也可含有附
加的數據存儲設備(可移動和/或不可移動),諸如磁盤、光盤或磁帶。這樣的 額外存儲在圖1中由可移動存儲109和不可移動存儲110示出。計算機存儲介 質可包括易失性和非易失性、可移動和不可移動介質,它們以用于存儲諸如計 算機可讀指令、數據結構、程序模塊或其它數據這樣的信息的任意方法或技術 來實現。系統存儲器104、可移動存儲109和不可移動存儲IIO都是計算機存 儲介質的示例。計算機存儲介質包括,但不限于,RAM、 ROM、 EEPROM、 閃存或其它存儲器技術、CD-ROM、數字多功能盤(DVD)或其它光存儲、磁 帶盒、磁帶、磁盤存儲或其它磁性存儲設備、或能用于存儲所需信息且可以由 計算設備IOO使用文件編寫器和裝載器訪問的任何其它介質。任何這樣的計算
'機存儲介質都可以是設備100的一部分。計算設備100也可以具有諸如鍵盤、 鼠標、筆、語音輸入設備、觸摸輸入設備等輸入設備112。也可以包括諸如顯 示器、揚聲器、打印機等的輸出設備114。
計算設備100也可以包括使設備能夠諸如通過網絡來與其他計算設備118 通信的通信連接116。網絡包括局域網和廣域網,以及其他大范圍網絡。包括 但不限于內聯網和外聯網。通信連接116是通信介質的一個示例。通信介質通 常可具體化為諸如載波或其它傳輸機制等已調制數據信號中的計算機可讀指 令、數據結構、程序模塊或其它數據,并且包括任何信息傳遞介質。術語"已 調制數據信號"是指以在該信號中編碼信息的方式來設置或改變其一個或多個 特性的信號。作為示例,而非限制,通信介質包括有線介質,諸如有線網絡或
直接線連接,以及無線介質,諸如聲學、RF、紅外線和其它無線介質。如此處 所用的術語計算機可讀介質既包括存儲介質又包括通信介質。
圖2示出了用于結構化的數據存儲的一個示例性數據存儲格式。窗口 200 包括在結構化的數據存儲中使用的示例性文件結構。節點210是根節點,通常 包括樹狀結構中的下級節點。例如,節點210包括節點220 (用于存儲"后端" 數據)和節點250 (用于存儲"前端"數據)。額外的下級(或"子")節點
可用于存儲與上級(或"父")節點相關的屬性和其他信息。
每個節點通常與允許對該結點進行唯一地指定和尋址的GUID (例如,唯 一標識符)相關聯。作為一個示例,用于一節點的GUID可以被"散列"來為 唯一密鑰提供地址,從而能夠快速定位該節點的物理地址。子節點可以通過將 任何子節點GUID與父節點相關聯(使得所得的結構例如可以通過跟隨相關聯 的鏈接而被遍歷)來與父節點相關。節點可以包含用于訪問固定長度和可變長 度結構內元素的信息。因此,所得結構可以被快速訪問以實現有效的數據搜索 和裝載。
向磁盤保存信息和從其檢索信息通常很耗時,至少對時常需要等待信息裝 載的用戶而言很不方便。以結構化的格式存儲數據使數據能夠被程序有效地接 收并且相對快捷地呈現給通過程序界面請求數據的用戶。
如窗口 200中所示,由一應用程序用戶操控的數據被組織成后端數據和前 端數據。該應用程序可以是諸如項目管理工具的程序。由此,用戶可以通過使 用后端數據和前端數據兩者來管理項目,而這些數據通常由用戶輸入,通過使 用該程序來操控和組織,并被存儲在磁盤上以供后續檢索。數據被結構化以使 得訪問該數據的程序通常首先裝載后端信息,隨后裝載前端信息(通常用于與 后端數據相接口)。
后端數據(諸如由節點250所表示的)是通常對用戶努力完成的任務頗為 重要的"核心"或"骨干"信息。(相比而言,如下討論,前端數據通常與如 何獲得、使用和呈現后端數據更為相關。)例如,項目管理程序的后端數據包 括諸如任務名、資源日程表、分配、查找表、約束等的信息(通常作為父節點 220的子節點222存儲)。
任務名可以包括與一項目相關聯的任務的名稱(或編號)。資源可以包括
與該任務相關聯的人(或其他資源)。日程表可用于指定任務的日期和/或時間, 分配可用于將資源與任務相關聯。査找表可用于存儲例如與完成任務相關的試 探性或其他類型的經組織的知識。約束可用于限制例如某些資源何時可用。
節點224的內容(與"任務"相關)已被展開以示出深一層的子節點。子 ;節點可用于表示給定屬性的固定數據、表索引、實際數據(諸如,任務名)、 基于GUID的散列位置、以及對數據的索引(來自散列的位置或其他索引)。 GUID散列和對后端數據的子節點的索引兩者都可被預先計算并且隨后被存 儲,使得預先計算的散列和索引能夠被用作由程序裝載的數據(而無需實質上 的計算,諸如計算GUID的散列函數)。 > 前端數據(諸如由節點250所表示的)通常與如何獲得、使用和呈現后端
數據更為相關。例如,由項目管理程序使用的前端數據信息包括諸如外部數據 鏈接、導入/導出映射信息、表單、宏語言程序、前端表格、視圖、以及過濾器、 項目報告、組、工具欄、定制字段信息之類的信息(通常作為父節點250的子 節點252存儲)。
; 例如,外部數據鏈接、導入映射信息(例如,來自電子數據表)和表單可
用于獲取后端數據。宏語言程序、過濾器、和組可用于操控所獲得的后端數據。 表單、表格、過濾器、項目報告、組、工具欄、以及自定制字段信息可用于控
制如何顯示后端數據。(可以實現上述功能的組合,諸如通過過濾來操控和顯 示數據。)
I 可以在節點254內存儲各種視圖(例如,用于顯示后端數據的前端信息)。
可以在節點256中存儲哪些視圖可見(例如,在程序關閉時)。存儲在節點254 和256中的信息由程序用來確定哪一視圖是最近使用的,使得程序能夠快速搜 索并定位由用戶最近使用的特定后端數據。于是程序就能夠快速恢復該視圖, 因為(例如)后端數據已經被載入存儲器,并且GUID的相關散列和相關索引
;已經被預先計算以供快速引用。
圖3示出了用于結構化的數據存儲的一個實例操作流程300。在操作302, 接收后端數據。后端數據可以從諸如硬盤或其他長期數據存儲的計算機程序產 品中接收。后端數據通過使用與諸如GUID的唯一標識符相關聯的節點來結構 化。節點可通過使用唯一標識符來尋址,并且后端數據項與相應的可尋址節點
相關聯,使得后端節點能夠被快速訪問。
后端數據項可以通過使用針對該數據項的預先計算的散列值來定位。預先 計算的散列值可以用其他后端數據來定位。另外,后端數據項可以通過使用針 對該數據項的預先計算和預先確定的索引來定位。預先計算的索引可以用其他 ;后端數據來定位。
在操作304,接收前端數據。前端數據可以從計算機程序產品中接收并且
通常關聯于后端數據而被存儲。后端數據和前端數據也可以是兄弟節點。前端
數據通過使用與諸如GUID的唯一標識符相關聯的節點來結構化。節點可通過
使用唯一標識符來尋址,并且前端數據項與相應的可尋址節點相關聯,使得前 I端節點能夠被快速訪問。
前端數據還包括用于顯示接收到的后端數據的特定后端數據項的信息。顯
示信息可以包括諸如與最近一次用戶所查看的特定后端數據項的視圖有關的
顯示信息之類的信息。
前端數據項可以通過使用針對該數據項的預先計算的散列來定位。預先計 :算的散列可以用其他后端數據來定位。另外,前端數據項可以通過使用針對該
數據項的預先計算和預先確定的索引來定位。預先計算的索引可以用其他前端
數據來定位。
在操作306,使用來自前端數據的信息來顯示后端數據。 一般而言,前端 信息描述后端信息能夠如何被顯示。例如,前端信息可以存儲與用戶最近查看 '的后端數據視圖相關的信息。同樣地,在各實施例中,可以在全部前端數據裝 載之前顯示后端數據。另外,前端數據的接收次序可通過試探來設置,諸如"按 最近査看的次序裝載"以及"裝載可由最后一次保存的視圖所導航到的前端數 據"。
本說明書通篇引述的"一個實施例"、"一實施例"或"一示例性實施例" ;意指特定的說明特征、結構或特性是涵蓋在本發明至少一個實施例中的。于是, 這樣短語的使用可引用到不止一個實施例中。進一步,在一個或多個實施例中, 所述特征、結構或特性能以任何合適的方式組合。
然而,本領域熟練的技術人員會認識到本發明也可不用一個或多個特定細 節,或者采用其它方法、資源、材料等來實現。僅僅為了避免模糊本發明的方
面,這里未示出和詳述其它情況下我們熟知的結構、資源或操作。
雖然已經示出并描述了本發明的示例性實施例和應用形式,但是應當認識 到本發明不局限于上述的精確配置和資源。對本領域的技術人員顯而易見的是 可以對在此公開的本方面的方法和系統的安排、操作以及細節作出各種修改、 改變和變更,而不背離所作權利要求的發明的范圍。
權利要求
1.一種用于接收結構化數據的計算機實現的方法,包括從計算機程序產品接收后端數據,其中所述后端數據是用節點來結構化的,其中所述節點與唯一標識符相關聯并且所述節點可用所述唯一標識符來尋址,并且其中特定的后端數據項與相應的可尋址節點相關聯;從計算機程序產品接收前端數據;其中所述前端數據是用節點來結構化的,其中所述節點與唯一標識符相關聯并且所述節點可用所述唯一標識符來尋址,并且其中所述前端數據包括用于顯示所接收到的后端數據的特定后端數據項的信息;以及響應于所接收到的用于顯示所述特定后端數據項的前端數據,顯示所述特定數據項。
2. 如權利要求1所述的方法,其特征在于,所接收到的用于顯示所述特 定后端數據項的前端數據用唯一標識符來尋址,所述唯一標識符與所接收到的 用于顯示所述特定后端數據項的前端數據相關聯。
3. 如權利要求1所述的方法,其特征在于,所顯示的特定后端數據項用 針對所述數據項的預先計算的散列來定位,其中所述預先計算的散列定位在所 接收到的后端數據內。
4. 如權利要求1所述的方法,其特征在于,所接收到的特定后端數據項 可用預先計算的散列函數結果來尋址,其中所述預先計算的散列函數結果被存 儲在所接收到的后端數據內。
5. 如權利要求1所述的方法,其特征在于,所接收到的特定后端數據項 可用預先計算的索引來尋址,其中所述預先計算的索引被存儲在所接收到的后 端數據內。
6. 如權利要求1所述的方法,其特征在于,所述后端數據在所述前端數 據被接收之前被接收。
7. 如權利要求1所述的方法,其特征在于,所述用于顯示特定后端信息 項的信息包括與最后一次使用的后端信息視圖相關的信息。
8. —種用于接收結構化數據的系統,包括 文件編寫器,用以將來自計算機程序的后端數據和前端數據保存到計算機 程序產品內;其中所述后端數據是用節點來結構化的,其中所述節點與唯一標識符相關聯并且所述節點可用所述唯一標識符來尋址,并且其中特定的后端數據項與相應的可尋址節點相關聯;其中所述前端數據是用節點來結構化的,其 ;中所述節點與唯一標識符相關聯并且所述節點可用所述唯一標識符來尋址,并 且其中所述前端數據包括用于顯示所接收到的后端數據的特定后端數據項的 f曰息;后端數據裝載器,用以接收來自計算機程序產品的后端數據; 前端數據裝載器,用以接收來自計算機程序產品的前端數據;以及 > 顯示模塊,響應于所接收到的用于顯示所述特定后端數據項的前端數據來顯示所述特定數據項。
9.如權利要求8所述的系統,其特征在于,所接收到的用于顯示所述特定后端數據項的前端數據用唯一標識符來尋址,所述唯一標識符與所接收到的用于顯示所述特定后端數據項的前端數據相關聯。 ;
10.如權利要求8所述的系統,其特征在于,所顯示的特定后端數據項通過使用針對所述數據項的預先計算的散列來定位,其中所述預先計算的散列定位在所接收到的后端數據內。
11. 如權利要求8所述的系統,其特征在于,所接收到的特定后端數據項 可用預先計算的散列函數結果來尋址,其中所述預先計算的散列函數結果被存I儲在所接收到的后端數據內。
12. 如權利要求8所述的系統,其特征在于,所接收到的特定后端數據項 可用預先計算的索引來尋址,其中所述預先計算的索引被存儲在所接收到的后 端數據內。
13. 如權利要求8所述的系統,其特征在于,所述后端數據在所述前端數 ; 據被接收之前被接收。
14. 如權利要求8所述的系統,其特征在于,所述用于顯示特定后端信息 項的信息包括與最后一次使用的后端信息視圖相關的信息。
15. —種用于接收結構化數據的系統,包括用于從計算機程序產品接收后端數據的裝置,其中所述后端數據是用節點 來結構化的,其中所述節點與唯一標識符相關聯并且所述節點可用所述唯一標 識符來尋址,并且其中特定的后端數據項與相應的可尋址節點相關聯;用于從計算機程序產品接收前端數據的裝置;其中所述前端數據是用節點 來結構化的,其中所述節點與唯一標識符相關聯并且所述節點可用所述唯一標 ;識符來尋址,并且其中所述前端數據包括用于顯示所接收到的后端數據的特定 后端數據項的信息;以及響應于所接收到的用于顯示所述特定后端數據項的前端數據來顯示所述 特定數據項的裝置。
16. 如權利要求15所述的系統,其特征在于,所接收到的用于顯示所述 >特定后端數據項的前端數據用唯一標識符來尋址,所述唯一標識符與所接收到的用于顯示所述特定后端數據項的前端數據相關聯。
17. 如權利要求15所述的系統,其特征在于,所接收到的特定后端數據 項可用預先計算的散列函數結果來尋址,其中所述預先計算的散列函數結果被 存儲在所接收到的后端數據內。
18. 如權利要求15所述的系統,其特征在于,所接收到的特定后端數據 項可用預先計算的索引來尋址,其中所述預先計算的索引被存儲在所接收到的 后端數據內。
19. 如權利要求15所述的系統,其特征在于,所述后端數據在所述前端 數據被接收之前被接收。
20. 如權利要求15所述的系統,其特征在于,所述用于顯示特定后端信 息項的信息包括與最后一次使用的后端信息視圖相關的信息。
全文摘要
結構化的數據存儲允許高效的數據搜索和裝載。結構化格式使數據能夠由程序高效地接收并且相對快捷地呈現給通過程序界面請求該數據的用戶。
文檔編號G06F17/30GK101366030SQ200780001833
公開日2009年2月11日 申請日期2007年1月3日 優先權日2006年1月4日
發明者R·H·維舍納莫提, R·R·埃耶, S·巴特 申請人:微軟公司