【摘要】在教育資源大規模應用系統中,除了資源數據存儲外,資源元數據信息的更新、獲取也會成為系統的瓶頸。我們提出了一種利用資源分類信息樹來輔助教育資源元數據分布式存儲的策略,并就其各種操作進行了研究。該策略除擁有集中式存儲的資源查全、查準特性外,還擁有靈活的擴展性,能應對大規模用戶訪問。
【關鍵詞】元數據;資源分類信息樹;分布式存儲
【中圖分類號】G420 【文獻標識碼】B【論文編號】1009—8097(2010)04—0108—04
一 引言
在有大規模用戶參與的教育資源建設和地區級有組織的教育資源共建共享項目中,教育資源存儲都采取了服務器集群、分布式存儲等方式,以應對用戶上傳下載。但一般資源元數據信息都采取集中存儲的方式[2][3][4],在用戶規模不斷擴大的情況下,元數據信息的訪問將成為系統瓶頸。因此我們研究了一種利用資源分類信息樹來輔助教育資源元數據分布式存儲的策略,且不失集中存儲所具有的資源查全、查準特性。同時我們認為,教育資源本身的分類特性以及教育資源用戶興趣偏好的明顯存在,也支持元數據的分布式存儲。
二 資源分類信息樹
全國信息技術標準化技術委員會教育技術分技術委員會(http://www.celtsc.edu.cn/)制定的《教育資源建設技術規范》中,利用學科、實用對象、素材類型三種基本分類方法產生了六種分類體系,根據在實踐中教師偏好,我們選擇了圖1的分類體系作為基礎:
考慮教材版本對資源內容和用戶的影響,我們將教材版本作為一種基本分類,同時為每一種分類增加一種名為“其他”的類別,以用于容納在該分類下無明確類別的資源,如一張圖片,它可能沒有教材版本的區別。這樣擴展為如圖2的形式。
這里我們對分布式系統中典型的兩類節點的定義如下:
教育資源元數據節點:為教育資源某種(些)分類下的教育資源元數據提供存儲、查詢等服務。在一個分布式系統中,教育資源元數據節點可根據需要增加。
教師節點:最主要的資源用戶,他們可能是通過普通瀏覽器或通過專有客戶端訪問教育資源。
1 資源分類信息樹的定義
參照一般數據結構教科書中對樹的定義,資源分類信息樹定義如下:資源分類信息樹是包含有n個結點的有限集合,在這個集合上定義了一個唯一的關系,它滿足下列條件:
(1) 集合中存在唯一的一個結點,它沒有前驅,稱為樹的根,這里命名為“教育資源”;
(2) 除根以外,集合中的每個結點都有且僅有一個前驅;
(3) 除根以外,集合中的任何一個結點a,都存在唯一的一個從根到a的結點序列a0,a1,a2,am,其中,a0即樹根,而am=a,在這個序列中,節點ai是ai-1(1≤i≤m)的后繼。這個結點序列稱為從根到a的路徑;
(4) 每個結點表示教育資源某種分類下的具體分類,如按學科分類下的“語文”;
(5) 沒有后繼的結點稱為葉結點,有且只有葉結點而且必須存儲至少一條元數據節點信息,表示該類元數據信息由這些元數據節點存儲。如果元數據節點信息超過一條,表示該類元數據信息有多個完全備份。
(6) 如果某種教育資源分類方法的某種類別在某結點直接后繼中,那么該分類所有類別都必須出現在該結點的直接后繼集合中。
通過擴展樹的廣義表表示法,可按照以下方式存儲資源分類信息樹:用中括號表示結點的后繼,用小括號表示元數據節點信息。則上圖可表示為:
“教育資源[語文[人教版[一年級(元數據節點A),二年級(元數據節點B,元數據節點C),六年級(元數據節點C)],蘇教版(元數據節點D),師大版[小學(元數據節點F),初中(元數據節點G)]],政治(元數據節點E),地理(元數據節點E)]”
為了便于存儲和傳輸,我們參考《教育資源建設技術規范》,對資源類別進行編碼,其中元數據節點信息是一個HTTP地址,因此經過編碼,圖3中的資源分類信息樹可進一步表示如下:
“EduRes [ GS001 [ T001 [ GO003 ( http://metaa.edutella.com), GO004 ( http://metab.edutella.com, http://metac.edutella.com ), GO008 ( http://metac.edutella.com ) ], T002 (http://metad.edutella.com ), T003 [ GOE001 (http://metaf.edutella.com),GOE002 (http://metag.edutella.com)]], GS005(http://metae.edutella.com),GS007( http://metae.edutella.com ) ]”
同時,考慮資源分類信息樹的動態性,我們為其設置了版本號和校驗碼,用“V”代表版本號,“RTree”代表編碼后的資源分類信息樹,那么校驗碼“CS”由如下公式生成:
CS=MD5(Byte(V)+Byte(RTree))
顯然在應用的初期,資源分類信息樹的規模較小,元數據節點數量極少,在元數據節點上存儲了葉節點對應分類下更詳細的分類,以及相關的元數據信息。元數據節點需要定期告知自己的存儲以及訪問情況,便于系統動態調整資源分類信息樹。
2 資源分類信息樹的操作
資源分類信息樹是一棵動態發展的樹,或者說是當前系統中元數據節點的結構化映像,它對用戶上傳下載資源起著初步導航定位的作用。一般來說,對資源分類信息樹存在著以下幾種操作:
(1)資源分類信息樹的構建與獲取
根據應用系統的規模,決定需要部署元數據節點的數量,以及各元數據節點服務的教育資源類別。在系統運行過程中,元數據節點將自己元數據存儲量、檢索次數等用戶活動數據反饋給系統,然后系統給出建議決策。元數據節點首先獲得資源分類信息樹,然后將其轉發給連接上它的教師節點,過程如圖4所示。
(2)資源分類信息樹的更新
隨著系統的不斷成長,在收集到足夠元數據節點用戶行為信息后,資源分類信息樹就需要進行更新,包括增加元數據節點、合并訪問壓力小的資源分類結點、分離訪問壓力大的資源分類結點。在資源分類信息樹的變化過程中,需要符合其定義,特別需要保證有且只有葉結點能關聯元數據節點信息。下面圖示列出了資源分類信息樹更新的各種情形:
如上所示,資源分類信息樹的更新主要涉及到結點分裂、替換、合并三個操作。總的來說,這個樹的更新是比較容易的。但樹的結構更新后,對應的元數據節點對其存儲的元數據信息必須做出相應的調整,而這些元數據節點是分布在網絡中的,同時為教師節點提供著服務,這需要精心設計調整策略,保證元數據節點與資源分類信息樹的一致性,并同時為教師節點提供正確服務。
通過分析“分裂、替換、合并”三個操作可以發現,對于元數據節點元數據信息的調整的核心操作是“一個或多個<元數據節點1向元數據節點2剪切元數據信息>的過程”。例如圖6所示的分裂過程,即是:元數據節點A將除“語文、數學、英語”以外的元數據信息剪切到新元數據節點B上,同時根節點“教育資源”不再存儲元數據節點信息,成為非葉結點;圖7所示的替換過程即是:元數據節點A將“英語”類元數據信息剪切到新元數據節點C上,其他無變化;圖8所示的合并過程即是:元數據節點B將“物理”類元數據信息剪切到網絡中元數據節點C上。除去核心操作,其它操作主要是資源分類信息樹結構信息的調整以及最新信息在各節點的分發。其整體流程如圖5。
在元數據節點調整過程中,元數據節點需要暫停服務,以防止數據的不一致性。由于元數據調整非常少,可以在教師節點比較少的時候進行,如深夜調整,這樣能降低由此給教師帶來的不便。
(3)元數據節點定位
由于元數據信息分布在不同的元數據節點上,教師節點上載、檢索資源等都需要確切知道元數據所在的元數據節點。因此需要利用資源分類信息樹來定位目標信息所在的元數據節點集。其算法如下:
第一步:變量初始化,將要上載或檢索資源的分類信息按“學科-教材版本-適用對象-素材類型”排序,設序列為如下形式:ConditionStr[]={“GS001”, “*”, “GO006”, ……},其中“*”表示不區分該類別,在這里表示不分教材版本。用MPeers存儲資源分類信息樹的目標結點集合,結點信息包含路徑信息,如“EdurRes.GS001.T002”,表示“蘇教版”結點,初始將“EduRes”根結點加入集合中:MPeers = { “EduRes” };
第二步:對MPeers集合中結點進行順序訪問,如果是非葉結點,獲取該結點的所有直接后繼結點,并結合ConditionStr中對該分類的限制,用符合要求的直接后繼結點集合替代該非葉結點。以圖3所示的資源分類信息樹為例,“EduRes”結點是非葉結點,其直接后繼結點集合為{“EduRes.GS001”, “EduRes.GS002”, ……},ConditionStr中對學科類別資源限制為“GS001”,因此MPeers集合變為:Mpeers = {“EduRes.GS001”};
第三步:重復第二步直到MPeers集合中都是葉結點為止。收集該集合中所有結點所包含的元數據節點信息,即為本次上載或檢索的目標元數據節點集。
由于資源分類信息樹的規模一般非常小,因此時間復雜度可以忽略。在極端情況下,如果ConditionStr中對所有分類都不限制,形如ConditionStr = {“*”, “*”, ……},就類似廣度優先遍歷資源分類信息樹,結果包含網絡中所有元數據節點信息。
三 基于資源分類信息樹的元數據操作
1 元數據上傳
在資源分類信息樹的輔助下,元數據上傳過程比較簡單,在確定目標元數據節點后,即可將元數據信息推送到對應元數據節點上。但當教師節點無法直接訪問所確定的目標元數據節點時,需要其他元數據節點代理。其基本過程如圖9所示。
2 元數據檢索過程
同理,元數據檢索過程在資源分類信息樹的輔助下,也可以直接確定其目標元數據節點集,如果能直接訪問這些元數據節點,即可并行發出檢索請求,并最終合并檢索結果。但在無法直接訪問某目標元數據節點時,需要其他元數據節點代理。其基本過程如圖10。
四 總結
應對大規模訪問是元數據分布存儲的最重要目的,資源分類信息樹可以很好地組織元數據節點,并能比較容易地增加、備份、合并、分裂元數據節點,擴展性較好。同時在對元數據節點發起查詢前,通過資源分類信息樹預先確定目標元數據節點集,提高了系統效率。資源分類信息樹與目錄集中式(一般分布式資源網采用“目錄集中訪問,資源分布存儲”)以及一般P2P網絡(常采用Tracker或不完全DHT模式)中元數據存儲的比較情況如下表所示:
參考文獻
[1] 路秋麗,魏順平.網絡教育資源標準及標準應用的調查分析[J].中國電化教育, 2005,(7).
[2] 孫波.開放式教學資源網絡管理平臺的研究與實現[D]. 北京:北京師范大學,2002.
[3] 余勝泉,朱凌云,曹曉明.教育資源管理的新發展[J].中國電化教育,2003,(9).
[4] GEM[EB/OL].
[5] 羅慧, 吳國新. P2P技術及其資源發現與定位[J]. 計算機與信息技術,2004.
[6] 胡進鋒,鄭緯民. P2P系統結點信息收集算法[R].北京:清華大學計算機系高性能計算研究所,2004.