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