• 沒有找到結果。

記憶體快取資料結構設計

第五章、 軟體知識庫系統之設計

5.3 系統資料儲存設計

5.3.2 記憶體快取資料結構設計

為加速資料存取,設計記憶體快取資料以加速存取速度。此方法將資料庫的 資料讀至記憶體中,採用COM 的物件儲存,利用指標將物件連結起來。某些較 耗費空間且較不常用的資料則先讀至檔案系統,直接存取檔案會比從資料庫查詢 來得快。快取資料的類別關係圖如圖 5 - 4:

圖 5 - 4 快取資料類別關係圖

各類別設計介紹如下:

z Category

此物件儲存一個知識類別,並以一指標指向其父類別(ParentCategory),類 別簡介存放在檔案系統中,以IntroFile 存檔名。最新狀態存放五個指標,指 向 Book 或 TechKlg,此外相等類別、相關類別及子類別都以 KeywordList 類別存取,而其下的書本知識則以BookList 存取,其關係圖如圖 5 - 5 所示:

圖 5 - 5 知識類別資料結構關係圖

z Issue

此物件儲存一個議題,以一指標指向其父類別(ParentCategory),簡介一樣 存 放 於 檔 案 系 統 中 , 也 以 五 個 指 標 存 放 其 最 新 狀 態 ; 其 下 的 解 法 以 KeywordList 類別存取。其關係圖如圖 5 - 6 所示:

圖 5 - 6 議題資料結構關係圖

z Approach

此物件儲存一個解法,以一個指標指向實作的議題(ParentIssue),並以一 TechKlgList 類別存取採用此解法的技術知識,其關係圖如圖 5 - 7 所示:

圖 5 - 7 解法資料結構關係圖

z Technique

此物件儲存一個技術,分別以一指標指向與其相關或相等的關鍵字,並以一 TechKlgList 類別存取使用此技術的知識,其關係圖如圖 5 - 8 所示:

圖 5 - 8 技術資料結構關係圖

z TechKlg

此物件儲存一個技術知識,可能是技術論文或技術報告。利用指標連到此知 識 採 用 的 解 法 , 並 以 KeywordList 類別存取其運用的技術。此外利用 TechKlgList 類別存取引用、被引用、改善、被改善的技術知識,其關係圖如 圖 5 - 9 所示:

圖 5 - 9 技術知識資料結構關係圖

z Book

此物件儲存一個書本知識。利用一個指標指向此書本所探討的知識類別,並 以一BkIssueList 類別存取其下的子議題,其關係圖如圖 5 - 10 所示:

圖 5 - 10 書本知識資料結構關係圖

z BkIssue

此物件儲存一個書本知識的子議題。利用一指標指向該書本知識,以一指標 指向父議題,並以一BkIssueList 類別存取其下的子議題,關係圖如圖 5 - 11

所示:

圖 5 - 11 書本子議題資料結構關係圖

上述物件資料是在系統初始化時從資料庫取出,置於記憶體中,當使用者要 使用知識庫時,各相關模組便自上述物件存取資料,由於知識庫是多人使用環 境,上述記憶體會讓多個處理程序(Process)共用,這時如果資料有修改,某些 記憶體區段會被鎖住,此時其他處理程序將無法讀到資料。由於平行執行需要非 常多的考量與控制,我們採用較簡化的方式,將所有需要修改的資料先寫入一個 修改資料列表(Update List),並準備另一台機器做交換。兩台伺服器中,一台 伺服器供使用者查詢及使用,另一台則將應修改的資料進行處理,一段時間後將 另一台機器換給使用者查詢,原機器則依其列表處理所有應修改的資料。以這種 方式,供使用者查詢的機器不必立刻修改資料,因此所有的記憶體區段都只是讀 取鎖定,其他的處理程序仍可讀到資料,也不用考慮因修改導致平行程序資料錯 誤的問題。