內存數據管理技術在族譜信息系統中的應用論文
設計并實現了具有數據錄入、數據服務、數據輸出功能的族譜信息系統。 族譜信息系統采用了分布式結構,在每個分布數據節點引入內存信息管理技術,采用列存儲模型,自動初始化熱點數據,并根據用戶請求組織數據建立索引,同時利用事務日志對每個分布數據節點的內外存進行數據同步,對中心數據節點和分布數據節點進行數據同步。
0引言
族譜又稱為家譜、宗譜,是一種記錄家族世代繁衍和重要人物事跡的圖文體裁。 族譜文獻對于我們了解人文歷史有很大的幫助,并且在政治經濟學、地理學、群體遺傳學等方面都有著潛在的研究價值[1]。 傳統的中國式族譜通常以紙質、布質等形式的譜書為承載形式,各族、各家擁有自己獨立的譜書。 這些譜書在存在形式上相互獨立,但是在內容上卻有很強的相關性。 傳統的譜書式族譜在信息交互和共享方面存在著先天不足,且實體的譜書不便于后續的修改(續修)以及保存。 因此,近年來族譜數字化受到了社會的廣泛關注。
數字化族譜系統除了能提供給用戶錄入族譜信息、利用族譜信息的功能之外,還需要兼顧中國式族譜的特殊需求——譜書。 家族在編修族譜時,通常都需要以采集好的族譜數據為基礎,通過編輯、排版形成內容豐富、圖文并茂、樣式美觀的譜書,然后將其印刷成冊并分發給族人。 目前,國內外在數字化族譜系統方面已有一些研究和開發工作。 著名的族譜網站FamilySearch[2]中,用戶可以方便地創建和管理個性化族譜空間,但沒有提供族譜數據紙質化輸出功能。 文獻[34]都實現了基于單機形式的族譜錄入軟件:將族譜的制作工作分割成多個任務,由多位制作人員分別完成這些任務并以文件存儲任務中的族譜數據,最后將多個數據文件合并,編輯形成最終的族譜。 但是這種數據管理方式不利于信息的共享,而且多個數據文件之前存在較多的冗余以及沖突,無法自動完成數據文件合并。 為了加快族譜數字化進程,結合實際的應用需求,本文設計并實現了一個基于B/S架構的族譜信息系統,該系統提供了族譜數據的錄入、查詢服務、紙質化輸出等功能。 結合族譜信息系統中的實際需求,本系統的數據存儲采用了分布式結構和內存數據管理技術,大大加快了族譜信息錄入和檢索的速度。
本文內容組織如下:第1節介紹族譜信息數據的特點;第2節介紹系統功能,并分析引入內存數據管理技術的必要性;第3節將簡單介紹本系統中所涉及的相關內存數據管理技術;第4節介紹內存數據管理技術在族譜信息系統中的具體應用;第5節對本文工作進行總結并對未來工作進行展望。
第5期張文杰,等:內存數據管理技術在族譜信息系統中的應用華東師范大學學報(自然科學版)2014年1族譜數據簡介
族譜數據通常由三部分構成:世系數據、文檔數據以及多媒體數據。
(1) 世系數據包括人物數據和人物之間的親緣關系數據。 其中親緣關系主要分為父子(父女)、母子(母女)、配偶、過繼(從親屬中收養子女)、兼祧(一位男子同時繼承多家)。 世系數據是族譜數據中最重要的部分。 (2) 文檔數據包括在族譜中家族大事件的文字記錄和重要的人物傳記,族譜中的文檔數據除文本之外還包含圖表等,呈現一種圖文并茂的形式。
(3) 多媒體數據包括族譜中記錄人物或者家族大事件的圖像、音頻、視頻,這里的多媒體數據并不包括文檔數據中含有的圖表。
族譜數據中的文檔數據、多媒體數據和一般的文檔數據、多媒體數據在組織和存儲形式上并無明顯區別,而世系數據作為族譜數據中的核心數據,其特點鮮明。
如果把世系數據中每個人物作為節點,人物之間的關系作為邊,則世系數據就構成了一種類似樹的結構,下文中也把這種結構稱為世系樹,如圖1所示。
如果考慮更廣泛的親緣關系(如聯姻),很多世系數據就會聯系在一起構成類似森林的結構,這和社會網絡[5]數據非常相似。 但是世系數據比社會網絡數據所表達的人物群體更加特定,人物之間的關系更加明確。
總結起來,世系數據具有以下特點:
(1) 表達對象是特定的.人物“群體”——家族(或者支系),人物關系是親緣關系,相比其他人際關系要更加緊密和牢固。
(2) 如果把人物視作節點,把人物之間的關系視作邊,世系數據構成了一種特殊的層次結構—世系樹。
(3) 如果把多個世系樹用聯姻關系聯系在一起,會構成一種特殊的圖結構,類似于森林和社會化網絡數據。
圖1世系樹示例圖
Fig。1The tree structure of genealogy data
2族譜信息系統
傳統族譜信息系統采用的是單機管理不易于擴展功能,數據分散且有大量冗余,無法利用這些族譜數據向公眾用戶提供服務。 為了更好地收集和利用族譜數據,我們設計并開發了一款基于B/S架構的族譜信息系統。 該系統支持多用戶并行錄入同一族譜中的數據,并統一對族譜數據進行管理,同時通過本系統還可向公眾用戶提供對已錄入族譜數據的檢索。
族譜信息系統的主要功能包括數據錄入、數據服務和數據輸出。
2。1數據錄入
數據錄入功能主要包括三部分:世系數據錄入、文檔數據錄入、多媒體數據錄入。 其中世系數據錄入是指錄入人物的基本數據以及錄入人物之間的聯系數據。
2。2數據服務
數據服務功能主要包括數據展示、統計檢索、一鍵尋祖和一鍵尋親。
(1) 數據展示
數據展示功能包括族譜展示和對照預覽。 族譜展示功能主要顯示一個族譜的基本信息。 對照預覽則用于在正式輸出紙質化族譜之前以各種不同的樣式來預覽輸出的效果。
(2) 統計檢索
統計檢索提供了對系統中的族譜數據進行統計和檢索的功能。 族譜統計是顯示整個族譜的統計信息,如總人數、男女比例、生死狀況等。 簡單檢索和組合檢索是在某些族譜屬性或者人物屬性上進行檢索的功能。
(3) 一鍵尋祖和一鍵尋親
一鍵尋祖可以從族譜中根據人物之間的親緣關系得到指定人物在指定范圍內(比如限定世代數)的祖先。 一鍵尋親則是指在族譜數據中找到兩個指定人物之間的親緣關系鏈(即兩人是通過哪些人關聯在一起)。
2。3數據輸出
為了滿足用戶傳統紙質譜書的需求,族譜信息系統中提供了數據輸出功能,主要包括族譜編排、族譜生成。
(1)族譜編排
譜志編排功能是通過用戶的個性化需求對譜書的樣式、數據出現的順序、名詞的表達方式等進行設置。
(2) 族譜生成
族譜生成功能主要是在族譜編排過后,按照用戶的個性化需求從原始族譜數據中轉換生成電子版的譜書以供印刷。
2。4應用內存數據管理技術的必要性
通過對族譜信息系統的功能分析,族譜信息系統具有以下特點。
(1)數據源單一。 在數據錄入過程中,對每個錄入用戶來說,只能操作自己參與錄入的族譜數據。 同時,數據輸出過程中,只需要去訪問要生成電子族譜的特定族譜的數據。
(2)數據量較大。 每個族譜都存有數量和容量龐大的世系數據、文檔數據、多媒體數據。
(3)實時性要求高。 由于本系統基于B/S模式設計,無論是數據錄入、數據服務還是數據輸出功能,系統響應時間都應該很短。
族譜信息系統的大數據量和高實時性的特點對系統實現提出了挑戰。 而隨著主存的成本顯著降低,許多成熟的內存數據管理技術為族譜信息系統的實現提供了解決方案[6]。
3內存數據管理技術
內存數據管理[7]的關鍵技術包括存儲結構[8]、索引結構[9]、并發控制[10]、同步策略[11]、故障恢復[12]等。 本節將重點介紹系統中用到的索引結構和同步策略。
3。1索引結構
內存數據庫由于其工作的主版本保存在內存中,所以內存數據庫的索引選擇應結合存儲介質的特點,從而通過索引的建立來保證內存數據庫查詢操作的高效性。 目前在內存數據庫中經常選用的索引結構有hash索引和T樹索引。
(1) hash索引[13]定義了一個hash函數,通過將關系表的索引項傳入到hash函數可以計算出相應的hash值,從而在索引項和hash值之間建立起對應關系,通過hash索引查找數據只需常數時間的復雜度。
(2) 在內存數據庫中目前較廣泛使用的一種樹是結合B樹[14]和AVL樹進化而來的T樹[14]。 T樹的單個節點有多個數據,因此擁有良好的修改和存儲特性。 由于T樹屬于AVL樹的一種演進,具有AVL樹的平衡特性,從而進一步提升了樹的搜索性能。 因此T樹在時間和空間兩者間具備較好的平衡性。
hash索引在進行定值的查找時效率很高,而T樹索引一方面具有樹的二叉性而且其設計符合內存數據庫存儲介質的特性,所以當前主流的內存數據庫都至少提供了這兩種索引結構。3。2同步策略
內存數據管理的數據同步更新技術大致可以分為表復制技術、事務復制技術、觸發器技術和影子表技術。 這里主要介紹表復制技術和事務復制技術[15]。
(1) 表復制技術:采用把某一時刻源數據表的內容通過網絡發送到復制的副本,因為復制的內容是表的某一時刻的狀態,所以又被形象地稱為表快照。 表快照的復制不是以事務為基礎,所以副本缺乏基本的關系完整性。 基于表復制技術不需依賴特別的機制,不占用額外的系統資源,管理和操作也非常容易,而且在同步初始化和崩潰恢復時是必須的。 但是全表更新效率很低。
(2) 事務復制技術:事務復制技術是把修改源數據的事務通過網絡發送到復制的副本,復制可以是修改的表項事務或事務日志。 復制的時間可根據應用需求而確定。 副本接收到復制內容后,要重復一遍接收到的事務操作來實現與數據源的一致。 一般是基于數據庫日志通過分析日志的信息來獲得數據的差異,最后達到數據同步。
4內存數據管理技術在系統中的應用
在族譜信息系統中需要大量的遞歸查詢操作,而且系統對數據存取的實時性要求比較高,只依靠基于磁盤的傳統數據庫系統無法滿足族譜信息系統的要求。 為了保證數據處理的實時性和可靠性,族譜信息系統中采用內存和外部存儲設備(如磁盤)共同作為數據的存儲介質。 族譜信息系統將實時或關鍵性數據的操作放在內存數據庫中進行,由于內存的數據存取速度比磁盤快,引入內存數據管理技術會使族譜信息系統更高效,更迅捷。
4。1族譜信息系統結構
在族譜信息系統的業務邏輯中,系統的運營商負責分配錄入任務給各個代理商,各代理商再將任務分割為多個子任務,并組織多位錄入人員進行錄入。 為了增加子系統的可靠性和靈活性,族譜信息系統采用分布式結構[16](如圖2所示)。 系統中包括了一個中心數據節點和多個分布數據節點。 中心數據節點儲存了所有的族譜數據;而每個代理商擁有一個分布數據節點,存儲了本代理商代理錄入完成的族譜數據。
每個分布數據節點都是由一個磁盤數據庫和一個內存管理單元組成。 其中內存管理單元包括內存數據庫、用戶請求處理模塊、接收隊列、發送隊列、節點狀態管理模塊、資源管理模塊和數據同步模塊,內存數據庫采用列存儲模型來實現存儲。 用戶請求處理模塊主要是接收用戶請求,并根據用戶請求進入不同的處理分支。 接收隊列用于接收用戶提交的新增的數據或者是修改的數據。 發送隊列用于發送給用戶所要求的查詢結果數據。 數據同步模塊用來維持分布數據節點和中心數據節點的數據同步。 資源管理模塊主要是對內存資源進行分配和回收。
4。2數據錄入功能的內存管理策略
在數據錄入功能中,每個錄入用戶登錄之后首先會選擇自己要錄入的族譜,系統自動連接該族譜隸屬的代理商的分布數據節點。
分布數據節點中的用戶請求處理模塊會識別用戶數據錄入請求,把用戶選擇的族譜數據作為熱點數據存入到內存數據庫當中。 由于數據錄入功能的主要操作是插入新元組,所以元組集合在內存數據庫中采用堆組織以便高效地插入新元組;同時按照鍵值建立哈希索引,其中重名的會依次放在指針數組中。 圖2族譜信息系統架構
Fig。2The structure of the genealogy information system
當用戶插入新元組時,新元組會加入到系統的接收隊列,分布數據節點會把新增元組加入到內存中存儲; 當用戶需要請求檢索數據時,對應分布數據節點會根據索引快速定位數據位置并返回給用戶;當用戶修改數據時會把修改后的數據加入到系統的接收隊列,分布數據節點會把接收隊列中的數據依次更新;當用戶刪除數據的時候,分布數據節點會通過索引定位到該數據并執行刪除,同時內存資源管理模塊進行內存資源回收。
4。3數據服務功能的內存管理策略
由于在數據服務功能中主要是對世系數據的大量結構化查詢,分布數據節點采用T樹索引結構來存儲元組信息。 其中每個節點的數據中都含有人物對象的詳細信息和分別指向父親、母親、過繼或兼祧父親、過繼或兼祧母親的四個指針。 同時建立哈希索引(同第4。2節)。
當數據錄入導致本族譜世系數據發生改變的時候,會對內存T樹索引和哈希索引進行更新,分為以下幾種情況。
(1) 如果需要增加新的元組,系統會對T樹索引做插入操作并更新哈希索引;
(2) 如果需要更新某個元組,系統會通過T樹索引找到舊元組直接進行更新如需要則同時更新哈希索引;
(3) 如果需要刪除某個元組,系統會先通過T樹索引找到該元組然后刪除該元組,更新T樹索引和哈希索引,同時資源管理模塊進行內存資源回收。
在數據服務功能中,當用戶請求一鍵尋祖的時候輸入要尋祖的人物譜名和祖先的世代數(可以不輸入,默認為族譜中最小的世代數),分布數據節點會首先通過哈希索引找到T樹索引中對應的人物對象元組節點。 如果存在多個重名的人物對象則會返回幾個人物對象的具體信息供用戶選擇;如果該譜名只對應一個人物對象或者用戶從重名人物中選擇了一個人物對象,則分布數據節點會從世系樹中該人物對象節點開始循環地通過父親或兼祧父親指針尋找祖先節點;當該祖先的世代數等于用戶輸入的值,則停止循環并返回該祖先節點元組給用戶。
4。4數據輸出功能的內存管理策略
在數據輸出功能中,每個用戶需要首先選擇族譜,分布數據節點把對應的族譜數據作為熱點數據載入到內存數據庫中,在后續的族譜編排和族譜生成中可以直接訪問分布數據節點的內存,并建立T樹索引(同第4。2節)。
當用戶對世系數據進行分組(可以按照個人或者是世代分組)時,分布數據節點會通過T樹索引檢索對應人物更新其分組號;當用戶按照需求對世系和文檔進行分卷時,會對世系分組和文檔數據進行排序用于生成對應的電子族譜,同時分布數據節點會按照用戶的編排順序對內存中的數據進行排序;當用戶選擇相應的模板請求族譜生成的時候,分布數據節點會根據模板的格式生成族譜并返回給用戶。
4。5數據同步策略
在族譜信息系統中,每個分布數據節點的內存數據庫保存著實時數據,但是內存屬易失性存儲,為了提高數據的可靠性,必須和外存數據庫進行數據同步。 同時中心數據節點作為所有分布數據節點族譜數據的副本也需要和分布數據節點進行數據同步。
4。5。1分布數據節點內外存數據同步
分布數據節點內外存數據同步屬于單向同步,除了內存數據初始化外,數據都是從內存數據庫傳輸到外存數據庫當中。
在族譜信息系統中,分布數據節點的內外存數據同步是由常駐后臺進程MMSyn來實現的。 分布數據節點啟動后,MMSyn進程就會自動啟動。 MMSyn進程啟動時需要初始化系統設置的同步周期時間和進程數閥值。 MMSyn進程在上次同步操作完成和下次同步操作開始之間會休眠一個同步周期。 每次MMSyn進程被喚醒之后,會通過事務日志來檢測是否存在數據更新,如果有而且當前的進程數低于閥值就進行數據更新,否則MMSyn進程繼續休眠。 MMSyn進程在數據更新過程前會讀取存儲的上次完成同步的事務日志序列號,從下一事務日志開始在外存里重做事務操作從而完成同步。
4。5。2分布數據節點與中心數據節點的數據同步
分布數據節點分散存儲著各個代理商代理錄入的族譜信息,而中心數據節點作為穩定的中心數據備份必須和分布數據節點進行數據同步。 分布數據節點與中心數據節點的數據同步屬于單向同步,除了分布數據節點崩潰從中心數據節點恢復以外,數據都是從分布數據節點傳輸到中心數據節點當中。
在族譜信息系統中,分布數據節點與中心數據節點的數據同步是由分布數據節點常駐后臺進程DSyn和中心數據節點常駐后臺進程CSyn來實現的。 在族譜信息系統啟動后,CSyn和DSyn進程會自動啟動。
和MMsyn進程相似,DSyn進程在啟動時需要初始化系統設置的同步周期時間和進程數閥值。 每次DSyn進程被喚醒之后,會讀取存儲的上次完成同步的事務日志序列號n,如果當前最大的日志序列號m>n(日志序列號是遞增的),則將n<日志序列號>m的日志發送給中心數據節點。
中心數據節點一旦啟動,就會開啟CSyn進程。 當分布數據節點發送過來日志序列時,CSyn重做事務操作從而完成同步。
5結論
本文設計并實現的族譜信息系統采用了B/S架構,能更好地支持族譜數據的分散錄入以及集中共享的現實需求。 在族譜數據管理方面采用了分布式結構,其中包括中心數據節點和分布數據節點。 中心數據節點存儲全部族譜的數據,分布數據節點存儲對應代理商錄入的族譜數據,通過同步策略實現中心數據節點和各個分布數據節點的數據同步,大大加強了系統的可靠性和靈活性。
分布數據節點引入了內存數據管理技術,采用列存儲模型存儲結構,并根據用戶具體的請求初始化熱點數據,建立索引。 用戶的操作在分布數據節點內存中進行,加快了系統的響應速度。 同時,系統利用事務日志進行分布數據節點的內外存同步和內存數據庫恢復,增強了系統的可靠性。
未來的工作還需要考慮熱點數據的優化選擇、分布數據節點負載均衡等問題。
【內存數據管理技術在族譜信息系統中的應用論文】相關文章:
頂管技術在工程中的應用論文06-25
論文:節能技術在工業電氣中的應用06-25
ERP技術在電力物資管理中的應用的論文07-02
項目管理中BIM技術的應用與推廣論文10-28
科研管理中數據挖掘技術的應用論文10-21
教育技術在小學體育教學中的應用論文07-04
LED在照明工程中的應用-LED技術論文05-29
管理信息系統在企業中的應用08-08
節能環保技術在建筑施工中的應用論文03-23