專利名稱:信息項目集合目錄的發(fā)布系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)系統(tǒng),尤其涉及一種發(fā)布信息項目集合目錄的系統(tǒng)和方法。
背景技術(shù)
RSS(簡易信息聚合)是現(xiàn)在互聯(lián)網(wǎng)上被廣泛采用的網(wǎng)站信息發(fā)布技術(shù),它允許 用戶將挑選的多個信息發(fā)布源的信息項目聚合到一個統(tǒng)一的常規(guī)樹形目錄,作為檢索入 口,讓用戶通過這個統(tǒng)一的檢索入口檢索來自不同信息發(fā)布站點的信息。
由于RSS采用的是常規(guī)樹形目錄,所以RSS存在由常規(guī)樹形目錄結(jié)構(gòu)帶來的一 系列問題
(1) 一個項目只能歸屬到一個目錄下;
(2)固定的檢索路徑;
(3)分類模式組合引起路徑分支爆炸;
(4)不能依據(jù)項目特定屬性值對項目進(jìn)行檢索
申請人在2007年7月20日提交的
公開日2008年4月9日、公開號 CN101158949、發(fā)明名稱“基于集合的文件項目歸類和檢索的方法與系統(tǒng)”的專利申請 中提出了有關(guān)信息項目集合目錄的技術(shù)方案,用以解決上述的四個問題。申請人在2009 年6月30提交了申請?zhí)枮镻CT/CN2009/072520、發(fā)明名稱“信息項目集合目錄的聚合方 法和系統(tǒng)”的專利申請,在該專利申請中提出了聚合信息項目集合目錄的邏輯方案,但 是沒有提出如何通過網(wǎng)絡(luò)發(fā)布信息項目集合目錄,這使得方案的可實現(xiàn)性不強。發(fā)明內(nèi)容
本發(fā)明的目的在于解決上述問題,提供了一種信息項目集合目錄的發(fā)布系統(tǒng), 使得服務(wù)器和客戶端的信息項目集合目錄得以同步,增強了信息項目集合目錄相關(guān)方案 的可實現(xiàn)性。
本發(fā)明的另一目的在于提供了一種信息項目集合目錄的發(fā)布方法。
本發(fā)明的技術(shù)方案為本發(fā)明揭示了一種信息項目集合目錄的發(fā)布系統(tǒng),包 括
目錄發(fā)布服務(wù)器,進(jìn)一步包括
目錄數(shù)據(jù)庫存儲模塊,用于存儲包括被發(fā)布的信息項目集合目錄、該目錄對 應(yīng)的更新戳;
更新日志數(shù)據(jù)庫存儲模塊,用于對被發(fā)布的信息項目集合目錄的每次成功的更 新操作打上更新戳,并將其存儲成一條更新記錄;
上載更新組件,連接目錄數(shù)據(jù)庫存儲模塊和更新日志數(shù)據(jù)庫存儲模塊以及目錄 數(shù)據(jù)庫壓縮快照存儲模塊,將客戶端對被發(fā)布的信息項目集合目錄的更新操作更新至目 錄數(shù)據(jù)庫存儲模塊并將成功的更新操作的信息保存至更新日志數(shù)據(jù)庫存儲模塊,并且當(dāng) 當(dāng)前累計的成功的更新操作次數(shù)超過預(yù)設(shè)閾值時用目錄數(shù)據(jù)庫存儲模塊當(dāng)前的內(nèi)容生成一個壓縮快照保存至目錄數(shù)據(jù)庫壓縮快照存儲模塊;
目錄數(shù)據(jù)庫壓縮快照存儲模塊,連接上載更新組件和下載更新組件,用于存儲 目錄數(shù)據(jù)庫存儲模塊中的內(nèi)容的壓縮快照;
下載更新組件,連接更新日志數(shù)據(jù)庫存儲模塊和目錄數(shù)據(jù)庫壓縮快照存儲模 塊,利用更新日志數(shù)據(jù)庫存儲模塊中的更新記錄以及目錄數(shù)據(jù)庫壓縮快照存儲模塊中的 壓縮快照,配合客戶端更新客戶端的被發(fā)布的信息項目集合目錄的副本;
服務(wù)器端通信組件,用于與客戶端建立通信連接,履行與客戶端進(jìn)行數(shù)據(jù)收發(fā) 的任務(wù);
客戶端,通過通信信道與該目錄發(fā)布服務(wù)器交互,進(jìn)一步包括
本地目錄存儲模塊,用于在客戶端存儲包括被發(fā)布的信息項目集合目錄的副 本、該副本對應(yīng)的更新戳;
快照下載及更新同步組件,連接本地目錄存儲模塊,利用目錄發(fā)布服務(wù)器的更 新日志或者利用目錄發(fā)布服務(wù)器的壓縮快照更新客戶端的被發(fā)布的信息項目集合目錄的 副本;
更新任務(wù)生成及提交組件,根據(jù)用戶操作生成更新任務(wù)并提交至目錄發(fā)布服務(wù) 器;
客戶端通信組件,與目錄發(fā)布服務(wù)器建立通信連接,履行與服務(wù)器進(jìn)行數(shù)據(jù)收 發(fā)的任務(wù)。
根據(jù)本發(fā)明的信息項目集合目錄的發(fā)布系統(tǒng)的一實施例,該目錄數(shù)據(jù)庫存儲模 塊進(jìn)一步包括
信息項目集合存儲單元,為信息項目集合目錄中每個信息項目集合記錄其標(biāo) 識、該信息項目集合與信息項目集合目錄中其他信息項目集合間的父子關(guān)系、該信息項 目集合的屬性規(guī)定以及其他的該信息項目集合的附屬信息;
信息項目存儲單元,為信息項目集合目錄中每個信息項目記錄其標(biāo)識、該信息 項目隸屬的信息項目集合、該信息項目擁有的屬性和對應(yīng)的屬性取值以及其他的該信息 項目的附屬信息;
更新戳單元,記錄目錄數(shù)據(jù)庫存儲模塊所存儲的信息項目集合目錄的更新戳。
根據(jù)本發(fā)明的信息項目集合目錄的發(fā)布系統(tǒng)的一實施例,更新日志數(shù)據(jù)庫存儲 模塊中存有記載以下信息的多條記錄更新戳、對象類型、標(biāo)識、操作類型、操作參 數(shù)。
根據(jù)本發(fā)明的信息項目集合目錄的發(fā)布系統(tǒng)的一實施例,該發(fā)布系統(tǒng)還包括
檢索組件,連接本地目錄存儲模塊,用于在客戶端的信息項目集合目錄中做檢 索操作。
根據(jù)本發(fā)明的信息項目集合目錄的發(fā)布系統(tǒng)的一實施例,該發(fā)布系統(tǒng)還包括
目錄聚合組件,連接本地目錄存儲模塊,用于對客戶端中的信息項目集合目錄 做聚合操作。
本發(fā)明還揭示了一種信息項目集合目錄的發(fā)布方法,發(fā)布方法包括客戶端上載 更新操作的過程以及客戶端下載服務(wù)器發(fā)布目錄以更新本地目錄副本的過程,
客戶端上載更新操作的過程進(jìn)一步包括5
根據(jù)客戶端的用戶界面操作生成一個更新任務(wù);
將該更新任務(wù)提交至服務(wù)器;
服務(wù)器根據(jù)接收到的該更新任務(wù),按照該任務(wù)包含的多筆更新操作信息依次更 新服務(wù)器該任務(wù)對應(yīng)的發(fā)布目錄,并在每次更新成功的同時將目錄的更新戳增加一個單 位,并將本次更新操作信息打上目錄此刻的更新戳保存至更新日志形成一條更新記錄, 更新日志通過更新戳和服務(wù)器發(fā)布目錄關(guān)聯(lián);
如果該目錄對應(yīng)的當(dāng)前累計的成功更新操作次數(shù)超過預(yù)設(shè)閾值,將該發(fā)布目錄 做整體壓縮生成一個壓縮快照,并將該計數(shù)清零;
客戶端下載服務(wù)器發(fā)布目錄以更新本地目錄副本的過程進(jìn)一步包括
客戶端請求查詢服務(wù)器發(fā)布目錄當(dāng)前的更新狀態(tài),包括服務(wù)器發(fā)布目錄當(dāng)前的 更新戳以及更新日志的更新戳范圍;
將服務(wù)器發(fā)布目錄的更新戳和更新日志的更新戳范圍與客戶端的本地目錄副本 的更新戳比較之后,在下載更新日志和下載壓縮快照兩種方式中選擇一種方式來更新本 地目錄副本。
根據(jù)本發(fā)明的信息項目集合目錄的發(fā)布方法的一實施例,更新日志中的更新記 錄包括更新戳、對象類型、標(biāo)識、操作類型、操作參數(shù)。
根據(jù)本發(fā)明的信息項目集合目錄的發(fā)布方法的一實施例,將服務(wù)器發(fā)布目錄的 更新戳和該目錄更新日志的更新戳范圍與客戶端的本地目錄副本的更新戳比較之后,下 載更新本地目錄副本的步驟進(jìn)一步包括分三種情況來進(jìn)行目錄更新
如果本地目錄副本的更新戳等于服務(wù)器發(fā)布目錄的更新戳,則等待一段預(yù)設(shè)的 時間后再進(jìn)行更新戳的比較;
如果本地目錄副本的更新戳舊于服務(wù)器發(fā)布目錄的更新戳且所需的更新操作在 更新日志的更新戳范圍內(nèi),則下載所需的更新日志,再按照更新日志的更新戳的順序更 新本地目錄副本;
如果本地目錄副本的更新戳舊于服務(wù)器發(fā)布目錄的更新戳且所需的更新操作不 在更新日志的更新戳范圍內(nèi),則下載壓縮快照并解壓縮以重建本地目錄副本。
本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果本發(fā)明的技術(shù)方案是客戶端通過通信 信道與目錄發(fā)布服務(wù)器交互,將服務(wù)器上的發(fā)布目錄下載到客戶端本地建立本地副本, 并與發(fā)布目錄更新狀態(tài)保持同步。此外,客戶端將對于發(fā)布目錄的修改操作上載至目錄 發(fā)布服務(wù)器,經(jīng)過排序按序更新保存在目錄數(shù)據(jù)庫存儲模塊中的被發(fā)布目錄,并將成功 的更新操作打上更新戳記錄在更新日志數(shù)據(jù)庫存儲模塊中。
圖1是本發(fā)明的信息項目集合目錄的發(fā)布系統(tǒng)的實施例的結(jié)構(gòu)示意圖。
圖2是本發(fā)明的目錄發(fā)布服務(wù)器的結(jié)構(gòu)示意圖。
圖3是本發(fā)明的客戶端的結(jié)構(gòu)示意圖。
圖4是本發(fā)明的目錄數(shù)據(jù)庫存儲模塊的示意圖。
圖5是本發(fā)明的更新日志數(shù)據(jù)庫存儲模塊的示意圖。
圖6是本發(fā)明的客戶端上載更新操作的示意圖。
圖7是本發(fā)明的客戶端下載服務(wù)器發(fā)布目錄以更新本地目錄副本的示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的描述。
在介紹本發(fā)明的實施例之前,需要對本發(fā)明所涉及的技術(shù)術(shù)語和技術(shù)背景進(jìn)行 解釋說明。
信息項目集合目錄是本發(fā)明的發(fā)布系統(tǒng)需要處理的對象。信息項目定義為可以 作為一個邏輯整體在計算機(jī)系統(tǒng)上處理和展示給用戶的信息結(jié)構(gòu)體。文件系統(tǒng)中的文件 是信息項目的一個典型實例,但并不只有文件才是信息項目。例如關(guān)系數(shù)據(jù)庫中的一條 記錄在物理上是作為數(shù)據(jù)庫文件的一部分存儲,但其邏輯上可以作為一個整體進(jìn)行處理 和向用戶展示,因此關(guān)系數(shù)據(jù)庫中的記錄也可以是信息項目的一個例子。再例如Outlook 此類郵件收發(fā)軟件中的一封電子郵件也是作為一部分在郵件箱文件中存儲,但邏輯上也 可以作為一個整體進(jìn)行處理和展示,因此電子郵件也可以是信息項目的一個例子。
信息項目集合是由η個信息項目組成的數(shù)學(xué)意義上的集合,η為大于或等于0的 整數(shù)。在實際應(yīng)用中,一個信息項目集合可以包含多個信息項目。
信息項目集合目錄則是由η個信息項目集合通過父子關(guān)系構(gòu)成的信息結(jié)構(gòu)體,η 為大于或等于0的整數(shù)。父集合的概念限定為如果指定信息項目集合A是信息項目集 合B的父集合,則B包含的所有信息項目也被A包含,反過來可以稱B是A的子集合。
在實際處理中信息項目往往用一個標(biāo)識來唯一代表,例如操作系統(tǒng)中的一個文 件采用唯一的文件路徑來代表,互聯(lián)網(wǎng)中的一張網(wǎng)頁可以用唯一的URL來代表。只要設(shè) 計好合適的文法規(guī)則任何類型的信息項目都可以用一個文本字符串來唯一地標(biāo)識,所以 實際應(yīng)用中信息項目集合中存儲的是代表信息項目本體的標(biāo)識而不是信息項目包含的信 息本身,因此一個信息項目集合可以包含多種信息項目,一個信息項目集合目錄可以用 來管理來自多個信息源各種類型的信息項目。例如在一臺個人電腦上設(shè)置一個信息項 目集合目錄用于管理各類本地文件及電子郵件,同時也可以用這個目錄管理來自互聯(lián)網(wǎng) 上不同網(wǎng)站的包括網(wǎng)頁在內(nèi)的各種信息項目。
{言肩、J頁目集合目錄的發(fā)布系統(tǒng)
下面請參見圖1,圖1示出了信息項目集合目錄的發(fā)布系統(tǒng)的基本架構(gòu)。發(fā)布系 統(tǒng)包括兩部分目錄發(fā)布服務(wù)器和客戶端。一方面,客戶端通過通信信道與目錄發(fā)布服 務(wù)器交互,將目錄發(fā)布服務(wù)器上的發(fā)布目錄下載到客戶端,建立本地副本,并與發(fā)布目 錄保持更新同步。另一方面,客戶端將對發(fā)布目錄的修改操作上載至目錄發(fā)布服務(wù)器, 進(jìn)入更新任務(wù)隊列,按順序更新被發(fā)布目錄,并將成功的更新操作打上更新戳記錄在更 新日志數(shù)據(jù)庫中。
圖2示出了目錄發(fā)布服務(wù)器的結(jié)構(gòu)。目錄發(fā)布服務(wù)器包含以下幾個模塊目錄 數(shù)據(jù)庫存儲模塊10、更新日志數(shù)據(jù)庫存儲模塊11、目錄數(shù)據(jù)庫壓縮快照存儲模塊12、上 載更新組件13、下載更新組件14以及服務(wù)器端通信組件15。這些模塊之間的連接關(guān)系 是服務(wù)器端通信組件15連接上載更新組件13和下載更新組件14。上載更新組件13分 別連接目錄數(shù)據(jù)庫存儲模塊10、更新日志數(shù)據(jù)庫存儲模塊11、目錄數(shù)據(jù)庫壓縮快照存儲 模塊12。下載更新組件14分別連接更新日志數(shù)據(jù)庫存儲模塊11和目錄數(shù)據(jù)庫壓縮快照存儲模塊12。
一個目錄發(fā)布服務(wù)器可以同時管理多個目錄的更新和發(fā)布。對于單獨的一個目 錄需要獨立的一套由目錄數(shù)據(jù)庫存儲模塊10、更新日志數(shù)據(jù)庫存儲模塊11和目錄數(shù)據(jù) 庫壓縮快照存儲模塊12構(gòu)成的數(shù)據(jù)存儲。本案后續(xù)內(nèi)容如無特殊說明均針對的是發(fā)布 一個目錄的情況。目錄數(shù)據(jù)庫存儲模塊10用于存儲被發(fā)布的信息項目集合目錄以及發(fā) 布所需的和目錄本身聯(lián)系緊密的其他信息,例如目錄對應(yīng)的更新戳。從實際處理的角 度來看,在一個信息項目集合目錄中存在兩種對象,一種是信息項目集合,需要記錄的 信息有信息項目集合的標(biāo)識、該信息項目集合與目錄中其它信息項目集合間的父子關(guān) 系、該信息項目集合的屬性規(guī)定以及其他的該信息項目集合的附屬信息;另一種是信息 項目,需要記錄的信息有信息項目的標(biāo)識,該信息項目在信息項目集合目錄中隸屬的 信息項目集合、該信息項目擁有的屬性和對應(yīng)的屬性取值以及其他的該信息項目的附屬 信息。圖4示出了目錄數(shù)據(jù)庫存儲模塊10的邏輯構(gòu)成。依照上述分析,目錄數(shù)據(jù)庫存 儲模塊10從邏輯上看至少要包含兩塊,一塊用于記錄目錄中每個信息項目集合的有關(guān)信 息稱為信息項目集合存儲單元100,一塊用于記錄目錄中每個信息項目的有關(guān)信息稱為信 息項目存儲單元102。當(dāng)然這種劃分并不代表實際實現(xiàn)中目錄數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu),僅表 示目錄數(shù)據(jù)庫存儲模塊的數(shù)據(jù)成分的邏輯上的構(gòu)成。此外考慮到需要記錄發(fā)布目錄的更 新狀態(tài),本發(fā)明的目錄數(shù)據(jù)庫存儲模塊10還增加了記錄更新戳信息的更新戳單元104。 更新戳用來表征目錄被更新的順序狀態(tài),在實現(xiàn)中更新戳可以是一個自然數(shù)變量,對目 錄數(shù)據(jù)庫存儲模塊10存儲的目錄每作一次成功的更新操作,同時更新戳立即增加一,并 且隨后將本次更新操作的信息記錄在更新日志數(shù)據(jù)庫模塊11中所采用的更新戳必須與執(zhí) 行完本次操作時的目錄的更新戳完全一致。
對于目錄的更新操作按照針對的對象不同可分為對信息項目集合的更新和對信 息項目的更新。對信息項目集合的更新操作又可以分為增加一個信息項目集合;刪 除一個信息項目集合;修改目錄中現(xiàn)存的一個信息項目集合的標(biāo)識、它與目錄中其它信 息項目集合之間的父子關(guān)系、它的屬性規(guī)定以及其他附屬信息。對信息項目的更新操 作有向目錄中增加一個信息項目(即設(shè)置該信息項目與目錄中的信息項目集合的隸屬 關(guān)系);從目錄中刪除一個項目(即去除該項目和目錄中任意信息項目集合間的隸屬關(guān) 系);修改目錄中一個信息項目的標(biāo)識、它在目錄中和信息項目集合的隸屬關(guān)系、它擁 有的屬性取值以及其他附屬信息。根據(jù)更新操作的共同點,一次更新操作無論針對信息 項目集合還是信息項目,無論執(zhí)行何種內(nèi)容的更新,都可以用包含更新對象的類型、 更新對象的標(biāo)識、更新操作的類型、更新操作所需若干參數(shù)等字段的一條記錄來表示。 圖5示出了更新日志數(shù)據(jù)庫存儲模塊11的數(shù)據(jù)構(gòu)成。例如圖5的更新日志數(shù)據(jù)庫存儲模 塊11存儲的第一條更新記錄是更新戳為101、更新對象類型是信息項目集合、更新對 象的標(biāo)識為“檔案”(在實際處理中往往采用一個與信息項目集合內(nèi)涵一致且在該信息項 目集合目錄范圍內(nèi)唯一的名稱作為信息項目集合的標(biāo)識,這里正是采用這種處理方式)、 操作類型是修改、以及各操作參數(shù)取值等信息。只有執(zhí)行成功的更新操作才會被記錄在 更新日志中,并且更新記錄的更新戳必須與執(zhí)行完該操作的時刻的目錄數(shù)據(jù)庫存儲模塊 10的更新戳一致。為了便在客戶端目錄副本與服務(wù)器發(fā)布目錄同步的過程中查詢更新戳 在某個區(qū)段范圍內(nèi)的更新記錄,實際處理中往往將更新記錄按更新戳順序的方式存儲在更新日志數(shù)據(jù)庫存儲模塊11中。
在實現(xiàn)中由于受到服務(wù)器物理存儲器容量分配的限制,以及客戶端與服務(wù)器采 用日志進(jìn)行更新同步過程的時間性能等方面的約束,往往需要為更新日志數(shù)據(jù)庫存儲模 塊11設(shè)置一個容量的上限,即最多能容納多少條更新記錄。更新日志數(shù)據(jù)庫存儲模塊 11達(dá)到容量上限時,當(dāng)有新的更新操作信息送達(dá)保存時便需要淘汰最舊的若干條更新記 錄也就是更新戳最小的一批記錄以防止更新日志數(shù)據(jù)庫存儲模塊11超出容量的限制。而 這樣可能會導(dǎo)致客戶端目錄副本的更新狀態(tài)超出更新日志的覆蓋范圍,也就是采用更新 日志已經(jīng)無法使客戶端目錄副本與服務(wù)器發(fā)布目錄同步成一致的更新狀態(tài),本方案采用 壓縮快照來解決這個問題。壓縮快照在這里指的是將目錄數(shù)據(jù)庫存儲模塊10保存的信息 作為一個整體通過無損壓縮過程得到的一個壓縮的信息存儲。由于目錄數(shù)據(jù)庫存儲模塊 10的內(nèi)容會隨著隨后的一系列更新操作而發(fā)生改變,所以把在某個時間點上得到的目錄 數(shù)據(jù)庫存儲模塊10的內(nèi)容的壓縮存儲稱之為壓縮快照。顯然,利用壓縮快照通過解壓過 程可以恢復(fù)得到對應(yīng)時間點目錄數(shù)據(jù)庫存儲模塊10的整體內(nèi)容,所以當(dāng)客戶端目錄副本 的更新狀態(tài)超出服務(wù)器該發(fā)布目錄的更新日志所能覆蓋的范圍時就可以由客戶端直接下 載最新的壓縮快照通過解壓重建客戶端目錄副本。在實際處理中考慮到整個上載更新操 作過程的時間性能問題以及從節(jié)約存儲空間的角度來看,不可能每執(zhí)行一次更新操作便 生成一個壓縮快照,較好的方式是當(dāng)累計執(zhí)行一定數(shù)量的更新操作后再生成一個壓縮快 照。所以可以設(shè)置一個更新增量計數(shù)器,初值設(shè)置為0,每執(zhí)行一次成功的更新操作計 數(shù)器加1,當(dāng)計數(shù)值到達(dá)預(yù)設(shè)閾值時生成一個壓縮快照并將計數(shù)器清零。這樣隨著發(fā)布 目錄被不斷更新,一系列壓縮快照將被生成并被存儲在目錄數(shù)據(jù)庫壓縮快照存儲模塊12 中。從訪問邏輯上看,壓縮快照存儲模塊12可以按照棧結(jié)構(gòu)來組織這些壓縮快照,即新 產(chǎn)生的快照被置于棧頂,越是舊的壓縮快照越接近棧底。這樣做的目的是當(dāng)有客戶端請 求下載最新壓縮快照時可以通過棧頂迅速找到最新的壓縮快照。在壓縮快照存儲模塊12 中舊的壓縮快照并不立即淘汰,這是由于舊的壓縮快照可能正處在被多個客戶端下載的 過程中,因為這些客戶端在開始提出下載壓縮快照請求的時候更加新的壓縮快照還沒有 產(chǎn)生。所以壓縮快照存儲模塊12中存儲的壓縮快照要么是最新的,要么是正處于被下載 狀態(tài)的舊的壓縮快照,一旦檢測到某個舊的快照沒有被客戶端下載,便可以將其從壓縮 快照存儲模塊12中刪除。
在上述的三個存儲模塊的基礎(chǔ)上,上載更新組件13的功能是將客戶端對發(fā)布目 錄的更新操作寫入服務(wù)器的目錄數(shù)據(jù)庫存儲模塊10、更新日志數(shù)據(jù)庫存儲模塊11和目錄 數(shù)據(jù)庫壓縮快照存儲模塊12。下載更新組件14的功能是配合客戶端,使客戶端能將服務(wù) 器發(fā)布的目錄下載至客戶端在客戶端本地生成一個副本,并與服務(wù)器發(fā)布目錄保持更新 狀態(tài)的同步。具體而言,就是根據(jù)本地發(fā)布目錄副本的更新狀態(tài)采用更新日志數(shù)據(jù)庫存 儲模塊11中的更新記錄以及目錄數(shù)據(jù)庫壓縮快照存儲模塊12中的壓縮快照來更新客戶端 的發(fā)布目錄的副本。
圖3示出了客戶端的詳細(xì)結(jié)構(gòu)??蛻舳税ㄒ韵碌慕M件本地目錄存儲模塊 20、快照下載及更新同步組件21、更新任務(wù)生成及提交組件22、客戶端通信組件23、目 錄檢索組件M(可選)和目錄聚合組件25(可選)。這些組件之間的連接關(guān)系是客戶 端通信組件23分別連接更新任務(wù)生成及提交組件22和快照下載及更新同步組件21。本9地目錄存儲模塊20分別連接快照下載及更新同步組件21、檢索組件M和目錄聚合組件 25。
本地目錄存儲模塊20用于在客戶端存儲服務(wù)器發(fā)布目錄的副本、該副本對應(yīng)的 更新戳,其數(shù)據(jù)構(gòu)成與服務(wù)器的目錄數(shù)據(jù)庫存儲模塊10—致,參見圖4??煺障螺d及更 新同步組件21用于從目錄發(fā)布服務(wù)器下載發(fā)布目錄的過程,利用目錄發(fā)布服務(wù)器的更新 日志或者利用目錄發(fā)布服務(wù)器的壓縮快照更新客戶端的被發(fā)布的信息項目集合目錄的副 本。而更新任務(wù)生成及提交組件22用于將客戶端對發(fā)布目錄的修改操作提交至目錄發(fā)布 服務(wù)器的過程,是根據(jù)用戶操作生成更新任務(wù)并提交至目錄發(fā)布服務(wù)器??蛻舳送ㄐ沤M 件23負(fù)責(zé)與目錄發(fā)布服務(wù)器建立通信連接,履行與服務(wù)器進(jìn)行數(shù)據(jù)收發(fā)的任務(wù)。
客戶端還包括可選的檢索組件M,用于在客戶端的信息項目集合目錄中做檢索 操作。具體的檢索操作的內(nèi)容在申請人的公開號為CN101158949的申請中。
客戶端還包括可選的目錄聚合組件25,用于對客戶端的信息項目集合目錄做聚 合操作。目錄聚合沒有涉及到服務(wù)器和客戶端的交互,其具體內(nèi)容申請人在2009年6月 30日申請的國際申請?zhí)枮镻CT/CN2009/072520的PCT申請中已經(jīng)公開。具體而言,目 錄聚合組件25實現(xiàn)的步驟為第一步,設(shè)置初始結(jié)果目錄為由0個信息項目集合構(gòu)成的 目錄,即空目錄。第二步,根據(jù)實際需要設(shè)置η個源信息項目集合目錄間的優(yōu)先順序, 并按此順序?qū)ⅵ莻€源信息項目集合目錄組織成隊列,η大于等于1。第三步,判斷隊列是 否為空,如果隊列為空則結(jié)束處理將當(dāng)前結(jié)果目錄最為最終得到的結(jié)果信息項目集合目 錄,如果隊列非空則取隊首元素作為當(dāng)前要處理的源信息項目集合目錄,并對隊首元素 做出隊操作。第四步,將當(dāng)前處理的源信息項目集合目錄和當(dāng)前結(jié)果信息項目集合目錄 聚合成新的結(jié)果信息項目集合目錄(作為下個循環(huán)的當(dāng)前結(jié)果信息項目集合目錄),然后 返回到第三步。其中第四步是核心,它的具體操作是從根集合開始按照一定順序逐個將 源信息項目集合目錄中的每一個項目集合依照預(yù)先定義的映射規(guī)則映射到結(jié)果信息項目 集合目錄中。在每次獨立的映射操作中,源信息項目集合目錄中正在被處理的項目集合 稱為源信息項目集合,源信息項目集合映射到結(jié)果目錄中對應(yīng)的項目集合稱為目標(biāo)項目 集合。對于每次映射操作存在兩種可能情況一種情況是按照預(yù)定義映射規(guī)則當(dāng)前結(jié)果 目錄中存在唯一的目標(biāo)項目集合與源項目集合對應(yīng),則記錄這個映射關(guān)系;另一種情況 是按照預(yù)定義映射規(guī)則在當(dāng)前結(jié)果目錄中不存在與源項目集合對應(yīng)的目標(biāo)項目集合,則 在結(jié)果目錄中創(chuàng)建一個新的項目集合作為目標(biāo)項目集合與源項目集合的對應(yīng),新的目標(biāo) 項目集合的父集合指定為源項目集合在源目錄中的父集合映射到結(jié)果目錄中對應(yīng)的目標(biāo) 項目集合,并記錄這一映射關(guān)系。為了達(dá)到聚合信息項目的目錄規(guī)定源項目集合包含 的直接隸屬項目成為目標(biāo)項目集合的直接隸屬項目。
在具體實施中對于一個源項目集合需要在結(jié)果目錄中找到內(nèi)涵與其一致的唯一 的目標(biāo)項目集合,并將源項目集合中的直接隸屬項目匯聚到目標(biāo)項目集合中。判定目標(biāo) 項目集合的內(nèi)涵與源項目集合是否一致的標(biāo)準(zhǔn)就是預(yù)定義映射規(guī)則。例如在實際應(yīng)用中 為每個信息項目集合都取了代表其內(nèi)涵的名稱,用來存放視頻信息項目的信息項目集合 取名為“視頻”,用來存放音頻信息項目的信息項目集合取名為“音頻”等等,則在一 個集合目錄中不會存在同名的兩個項目集合。因此可以預(yù)定義同名映射規(guī)則,即在結(jié)果 目錄中找到與源項目集合相同名稱的項目集合作為對應(yīng)的目標(biāo)項目集合,并將其直接隸屬項目匯聚到目標(biāo)項目集合中。如果在當(dāng)前結(jié)果目錄中沒有找到相同名稱的項目集合, 則表示在當(dāng)前結(jié)果目錄中沒有內(nèi)涵與源項目集合一致的項目集合,則需要結(jié)果目錄中創(chuàng) 建一個新的項目集合采用相同的名稱并將源項目集合的直接隸屬項目匯聚其中。
這樣做產(chǎn)生的整體效果是將來自多個源信息項目集合目錄的多個內(nèi)涵一致的信 息項目集合包含的項目匯聚到結(jié)果目錄中的一個統(tǒng)一的項目集合中去,在結(jié)果目錄中便 可以將這些來自不同的信息源但歸屬于同一內(nèi)涵的信息項目作為一個整體進(jìn)行檢索。
客戶端上載更新操作的過稈
圖6示出了客戶端上載更新操作的過程。這一過程主要是由客戶端的更新任務(wù) 生成及提交組件22和目錄發(fā)布服務(wù)器中的上載更新組件13配合完成。首先,由客戶端 的更新任務(wù)生成及提交組件22根據(jù)用戶的界面操作數(shù)據(jù)轉(zhuǎn)化生成一個更新任務(wù)(一個更 新任務(wù)都可以看作由多筆更新操作組成的更新操作序列),再發(fā)送更新任務(wù)至服務(wù)器。在 服務(wù)器端每個發(fā)布目錄都有對應(yīng)的更新任務(wù)隊列。服務(wù)器接收到客戶端發(fā)來的更新任務(wù) 后將其放進(jìn)對應(yīng)的更新任務(wù)隊列的尾部等待處理。另有更新任務(wù)處理程序依次從更新任 務(wù)隊列的頭部取出更新任務(wù),按照更新任務(wù)中多筆更新操作順序更新存儲在目錄數(shù)據(jù)庫 存儲模塊10的發(fā)布目錄,并在每次成功的更新操作后將對應(yīng)的更新戳加一。隨后將更新 任務(wù)中執(zhí)行成功的更新操作按照更新順序打上對應(yīng)的更新戳,并記錄在更新日志(存儲 在更新日志數(shù)據(jù)庫存儲模塊11)中(即寫更新日志的步驟)。在寫更新日志之后服務(wù)器向 客戶端回送更新任務(wù)執(zhí)行結(jié)果(可能的信息有更新任務(wù)中哪些更新操作執(zhí)行成功,哪 些更新操作執(zhí)行失敗等),客戶端接收到執(zhí)行結(jié)果后對結(jié)果進(jìn)行某些處理,例如彈出 提示框告知用戶哪些更新操作失敗。
在回送更新任務(wù)執(zhí)行結(jié)果后,本次更新任務(wù)對目錄數(shù)據(jù)庫更新戳的增量累計進(jìn) 入一個更新增量計數(shù)器。當(dāng)這一計數(shù)器超過預(yù)先設(shè)定的閾值時,清空計數(shù)器,并將目錄 數(shù)據(jù)庫存儲模塊10當(dāng)前的內(nèi)容做整體壓縮后生成一個壓縮快照,再將壓縮快照壓入目錄 數(shù)據(jù)庫壓縮快照存儲模塊12的棧結(jié)構(gòu)的棧頂。
客戶端下載服各器發(fā)布目錄以更新本地月錄爵丨本的過禾呈
圖7示出了客戶端下載服務(wù)器發(fā)布目錄的過程。這一過程是由目錄發(fā)布服務(wù)器 的下載更新組件14和客戶端的快照下載及更新同步組件21共同配合完成。首先,客戶 端創(chuàng)建一個定時器,定時器按照一定時間間隔觸發(fā)更新狀態(tài)檢查流程客戶端請求目錄 發(fā)布服務(wù)器查詢相應(yīng)的發(fā)布目錄當(dāng)前的更新狀態(tài),包括發(fā)布目錄當(dāng)前的更新戳(即目錄 數(shù)據(jù)庫存儲模塊10中的更新戳)、更新日志記錄的更新戳范圍(即更新日志數(shù)據(jù)庫存儲模 塊11中的更新記錄的最新更新戳和最舊更新戳),再將其與本地目錄副本的更新狀態(tài)進(jìn) 行比較,有如下的三種情況。第1種情況是本地目錄副本更新戳等于服務(wù)器發(fā)布目錄的 更新戳,也就是兩者的更新狀態(tài)一致,則返回定時器程序,等待一段時間后再進(jìn)行更新 狀態(tài)檢查。第2種情況是本地目錄副本比發(fā)布目錄舊(亦即本地目錄副本的更新戳舊于 發(fā)布目錄的更新戳)且所需的更新增量日志在更新日志數(shù)據(jù)庫存儲模塊11的記錄范圍內(nèi) (同樣采取更新戳比較的辦法),則下載所需的更新增量日志,再按照更新日志項的更新 戳的順序更新本地目錄副本,直至本地目錄副本的更新狀態(tài)與先前檢查時的發(fā)布目錄的 更新狀態(tài)一致??紤]到客戶端在執(zhí)行上述流程的同時發(fā)布目錄可能會遭遇新的更新(可 能來自其他客戶端,也可能來自本客戶端),所以隨后流程轉(zhuǎn)到發(fā)布目錄的更新狀態(tài)的查11詢。第3種情況是本地目錄副本比服務(wù)器發(fā)布目錄舊但所需的更新增量日志不在更新日 志數(shù)據(jù)庫存儲模塊11的記錄范圍內(nèi)(這種情況包含一種特殊的情形客戶端還沒有建立 本地目錄副本的狀況)。在這種情況下,客戶端無法使用更新日志來更新本地目錄副本, 因此需要下載最新的服務(wù)器發(fā)布目錄的數(shù)據(jù)庫的壓縮快照,并解壓縮以重建本地目錄副 本。在目錄發(fā)布服務(wù)器最新創(chuàng)建的目錄數(shù)據(jù)庫的壓縮快照總是被放置在目錄數(shù)據(jù)庫壓縮 快照存儲模塊12的棧結(jié)構(gòu)的頂部,當(dāng)客戶端請求最新的目錄壓縮快照時只需將棧頂?shù)膲?縮快照傳送給客戶端即可??紤]到非最新壓縮快照也可能處于被下載狀態(tài),所以對非棧 頂壓縮快照采用逐步淘汰機(jī)制。
為了便于理解,為上述3種情況的判別舉例如下假設(shè)采用自然數(shù)序號作為更 新戳,現(xiàn)服務(wù)器上的一發(fā)布目錄的更新戳為216,其對應(yīng)的更新日志的更新戳范圍是101 至216(根據(jù)本案前面對更新戳的說明,可知當(dāng)前發(fā)布目錄的更新戳必然和更新日志的更 新戳上限一致)。如果某客戶端本地目錄副本的更新戳為216,經(jīng)過和服務(wù)器發(fā)布目錄的 更新戳對比可知客戶端本地目錄副本的更新狀態(tài)與發(fā)布目錄一致,這正是上段所述的第1 種情況。如果客戶端本地目錄副本的更新戳在100至215范圍之內(nèi)(即大于或等于100, 并且小于或等于215),與發(fā)布目錄的更新戳比較顯然不等,隨后將該更新戳加1(加1 的目的是獲取所需增量更新記錄的更新戳的下限,例如客戶端本地目錄副本的更新戳為 100,而所需用來更新本地目錄副本的更新日志記錄的更新戳范圍是101至216)再與更新 日志更新戳范圍比較得到與上段所述第2種情況相匹配的結(jié)果。如果客戶端本地目錄副 本的更新戳小于100,通過同樣的方法比較可以確定客戶端本地目錄副本的更新狀態(tài)既不 等于服務(wù)器發(fā)布目錄的更新狀態(tài),并且也不在更新日志所覆蓋的范圍內(nèi)這正是上段所述 的第3種情況。
上述實施例是提供給本領(lǐng)域普通技術(shù)人員來實現(xiàn)或使用本發(fā)明的,本領(lǐng)域普通 技術(shù)人員可在不脫離本發(fā)明的發(fā)明思想的情況下,對上述實施例做出種種修改或變化, 因而本發(fā)明的保護(hù)范圍并不被上述實施例所限,而應(yīng)該是符合權(quán)利要求書提到的創(chuàng)新性 特征的最大范圍。1權(quán)利要求
1.一種信息項目集合目錄的發(fā)布系統(tǒng),包括 目錄發(fā)布服務(wù)器,進(jìn)一步包括目錄數(shù)據(jù)庫存儲模塊,用于存儲包括被發(fā)布的信息項目集合目錄、該目錄對應(yīng)的 更新戳;更新日志數(shù)據(jù)庫存儲模塊,用于對被發(fā)布的信息項目集合目錄的每次成功的更新操 作打上更新戳,并將其存儲成一條更新記錄;上載更新組件,連接目錄數(shù)據(jù)庫存儲模塊和更新日志數(shù)據(jù)庫存儲模塊以及目錄數(shù)據(jù) 庫壓縮快照存儲模塊,將客戶端對被發(fā)布的信息項目集合目錄的更新操作更新至目錄數(shù) 據(jù)庫存儲模塊并將成功的更新操作的信息保存至更新日志數(shù)據(jù)庫存儲模塊,并且當(dāng)當(dāng)前 累計的成功的更新操作次數(shù)超過預(yù)設(shè)閾值時用目錄數(shù)據(jù)庫存儲模塊當(dāng)前的內(nèi)容生成一個 壓縮快照保存至目錄數(shù)據(jù)庫壓縮快照存儲模塊;目錄數(shù)據(jù)庫壓縮快照存儲模塊,連接上載更新組件和下載更新組件,用于存儲目錄 數(shù)據(jù)庫存儲模塊中的內(nèi)容的壓縮快照;下載更新組件,連接更新日志數(shù)據(jù)庫存儲模塊和目錄數(shù)據(jù)庫壓縮快照存儲模塊,利 用更新日志數(shù)據(jù)庫存儲模塊中的更新記錄以及目錄數(shù)據(jù)庫壓縮快照存儲模塊中的壓縮快 照,配合客戶端更新客戶端的被發(fā)布的信息項目集合目錄的副本;服務(wù)器端通信組件,用于與客戶端建立通信連接,履行與客戶端進(jìn)行數(shù)據(jù)收發(fā)的任務(wù);客戶端,通過通信信道與該目錄發(fā)布服務(wù)器交互,進(jìn)一步包括 本地目錄存儲模塊,用于在客戶端存儲包括被發(fā)布的信息項目集合目錄的副本、 該副本對應(yīng)的更新戳;快照下載及更新同步組件,連接本地目錄存儲模塊,利用目錄發(fā)布服務(wù)器的更新 日志或者利用目錄發(fā)布服務(wù)器的壓縮快照更新客戶端的被發(fā)布的信息項目集合目錄的副 本;更新任務(wù)生成及提交組件,根據(jù)用戶操作生成更新任務(wù)并提交至目錄發(fā)布服務(wù)器; 客戶端通信組件,與目錄發(fā)布服務(wù)器建立通信連接,履行與服務(wù)器進(jìn)行數(shù)據(jù)收發(fā)的 任務(wù)。
2.根據(jù)權(quán)利要求1所述的信息項目集合目錄的發(fā)布系統(tǒng),其特征在于,該目錄數(shù)據(jù)庫 存儲模塊進(jìn)一步包括信息項目集合存儲單元,為信息項目集合目錄中每個信息項目集合記錄其標(biāo)識、該 信息項目集合與信息項目集合目錄中其他信息項目集合間的父子關(guān)系、該信息項目集合 的屬性規(guī)定以及其他的該信息項目集合的附屬信息;信息項目存儲單元,為信息項目集合目錄中每個信息項目記錄其標(biāo)識、該信息項目 隸屬的信息項目集合、該信息項目擁有的屬性和對應(yīng)的屬性取值以及其他的該信息項目 的附屬信息;更新戳單元,記錄目錄數(shù)據(jù)庫存儲模塊所存儲的信息項目集合目錄的更新戳。
3.根據(jù)權(quán)利要求1所述的信息項目集合目錄的發(fā)布系統(tǒng),其特征在于,更新日志數(shù)據(jù) 庫存儲模塊中存有記載以下信息的多條記錄更新戳、對象類型、標(biāo)識、操作類型、操 作參數(shù)。
4.根據(jù)權(quán)利要求1所述的信息項目集合目錄的發(fā)布系統(tǒng),其特征在于,該發(fā)布系統(tǒng)還 包括檢索組件,連接本地目錄存儲模塊,用于在客戶端的信息項目集合目錄中做檢索操作。
5.根據(jù)權(quán)利要求1所述的信息項目集合目錄的發(fā)布系統(tǒng),其特征在于,該發(fā)布系統(tǒng)還 包括目錄聚合組件,連接本地目錄存儲模塊,用于對客戶端中的信息項目集合目錄做聚 合操作。
6.—種信息項目集合目錄的發(fā)布方法,發(fā)布方法包括客戶端上載更新操作的過程以 及客戶端下載服務(wù)器發(fā)布目錄以更新本地目錄副本的過程,客戶端上載更新操作的過程進(jìn)一步包括 根據(jù)客戶端的用戶界面操作生成一個更新任務(wù); 將該更新任務(wù)提交至服務(wù)器;服務(wù)器根據(jù)接收到的該更新任務(wù),按照該任務(wù)包含的多筆更新操作信息依次更新服 務(wù)器該任務(wù)對應(yīng)的發(fā)布目錄,并在每次更新成功的同時將目錄的更新戳增加一個單位, 并將本次更新操作信息打上目錄此刻的更新戳保存至更新日志形成一條更新記錄,更新 日志通過更新戳和服務(wù)器發(fā)布目錄關(guān)聯(lián);如果該目錄對應(yīng)的當(dāng)前累計的成功更新操作次數(shù)超過預(yù)設(shè)閾值,將該發(fā)布目錄做整 體壓縮生成一個壓縮快照,并將該計數(shù)清零;客戶端下載服務(wù)器發(fā)布目錄以更新本地目錄副本的過程進(jìn)一步包括 客戶端請求查詢服務(wù)器發(fā)布目錄當(dāng)前的更新狀態(tài),包括服務(wù)器發(fā)布目錄當(dāng)前的更新 戳以及更新日志的更新戳范圍;將服務(wù)器發(fā)布目錄的更新戳和更新日志的更新戳范圍與客戶端的本地目錄副本的更 新戳比較之后,在下載更新日志和下載壓縮快照兩種方式中選擇一種方式來更新本地目 錄副本。
7.根據(jù)權(quán)利要求6所述的信息項目集合目錄的發(fā)布方法,其特征在于,更新日志中的 更新記錄包括更新戳、對象類型、標(biāo)識、操作類型、操作參數(shù)。
8.根據(jù)權(quán)利要求6所述的信息項目集合目錄的發(fā)布方法,其特征在于,將服務(wù)器發(fā)布 目錄的更新戳和該目錄更新日志的更新戳范圍與客戶端的本地目錄副本的更新戳比較之 后,下載更新本地目錄副本的步驟進(jìn)一步包括分三種情況來進(jìn)行目錄更新如果本地目錄副本的更新戳等于服務(wù)器發(fā)布目錄的更新戳,則等待一段預(yù)設(shè)的時間 后再進(jìn)行更新戳的比較;如果本地目錄副本的更新戳舊于服務(wù)器發(fā)布目錄的更新戳且所需的更新操作在更新 日志的更新戳范圍內(nèi),則下載所需的更新日志,再按照更新日志的更新戳的順序更新本 地目錄副本;如果本地目錄副本的更新戳舊于服務(wù)器發(fā)布目錄的更新戳且所需的更新操作不在更 新日志的更新戳范圍內(nèi),則下載壓縮快照并解壓縮以重建本地目錄副本。
全文摘要
本發(fā)明公開了信息項目集合目錄的發(fā)布系統(tǒng)和方法,使得服務(wù)器和客戶端的信息項目集合目錄得以同步。其技術(shù)方案為客戶端通過通信信道與目錄發(fā)布服務(wù)器交互,將服務(wù)器上的發(fā)布目錄下載到客戶端本地建立本地副本,并與發(fā)布目錄更新狀態(tài)保持同步。此外,客戶端將對于發(fā)布目錄的修改操作上載至目錄發(fā)布服務(wù)器,經(jīng)過排序按序更新保存在目錄數(shù)據(jù)庫存儲模塊中的被發(fā)布目錄,并將成功的更新操作打上更新戳記錄在更新日志數(shù)據(jù)庫存儲模塊中。
文檔編號H04L29/06GK102024005SQ200910196048
公開日2011年4月20日 申請日期2009年9月22日 優(yōu)先權(quán)日2009年9月22日
發(fā)明者時文 申請人:時文