亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于表分區(qū)和內(nèi)存數(shù)據(jù)庫的族譜生成系統(tǒng)優(yōu)化

        2017-03-02 08:20:19徐明民彭中華王黎維
        計算機與數(shù)字工程 2017年2期
        關(guān)鍵詞:數(shù)據(jù)庫系統(tǒng)

        徐明民 彭中華 王黎維

        (1.武漢大學(xué)計算機學(xué)院 武漢 430072)(2.武漢大學(xué)國際軟件學(xué)院 武漢 430072)

        基于表分區(qū)和內(nèi)存數(shù)據(jù)庫的族譜生成系統(tǒng)優(yōu)化

        徐明民1彭中華2王黎維2

        (1.武漢大學(xué)計算機學(xué)院 武漢 430072)(2.武漢大學(xué)國際軟件學(xué)院 武漢 430072)

        論文為現(xiàn)有的族譜系統(tǒng)數(shù)據(jù)存儲提出一種優(yōu)化的存儲方案——基于表分區(qū)的存儲方案。分析現(xiàn)有的族譜系統(tǒng)在數(shù)據(jù)存儲方案上的不足,參考PostgreSQL的表分區(qū)技術(shù),使用表分區(qū)方案來對族譜人物及關(guān)系數(shù)據(jù)重新建模和存儲,提高了對族譜數(shù)據(jù)的管理和操作效率;基于現(xiàn)有族譜生成系統(tǒng)在族譜生成過程中對數(shù)據(jù)處理的特點,引入內(nèi)存數(shù)據(jù)庫技術(shù),采用內(nèi)存數(shù)據(jù)庫SQLite在數(shù)據(jù)處理過程中存儲數(shù)據(jù),提高了對數(shù)據(jù)的處理效率。實驗部分測試了使用表分區(qū)和內(nèi)存數(shù)據(jù)庫技術(shù)的可行性和性能影響,實驗結(jié)果表明,使用表分區(qū)方案和內(nèi)存數(shù)據(jù)庫技術(shù)方案可以支持族譜數(shù)據(jù)的存儲和族譜生成過程中內(nèi)存數(shù)據(jù)的處理需求,并且在一定程度上優(yōu)化族譜生成系統(tǒng)的性能。

        族譜; PostgreSQL; 表分區(qū); 內(nèi)存數(shù)據(jù)庫; SQLite

        Class Number TP311

        1 引言

        族譜又稱為家譜、宗譜,是一種記錄家族世代繁衍和重要人物事跡的圖文體裁。族譜文獻對于我們了解人文歷史有很大的幫助,并且在政治經(jīng)濟學(xué)、地理學(xué)、群體遺傳學(xué)等方面都有著潛在的研究價值[1]。傳統(tǒng)的中式族譜通常以紙質(zhì)、布質(zhì)等形式的譜書為承載形式,各族、各家擁有自己獨立的譜書。這些譜書在存在形式上相互獨立,但是在內(nèi)容上卻有很強的相關(guān)性。傳統(tǒng)的譜書式族譜在信息交互和共享方面存在著先天不足,且實體的譜書不便于后續(xù)的修改(續(xù)修)以及保存。因此,近年來族譜數(shù)字化受到了社會的廣泛關(guān)注。數(shù)字化族譜系統(tǒng)除了能提供給用戶錄入族譜信息、利用族譜信息的功能之外,還需要兼顧中式族譜的特殊需求。家族在編修族譜時,通常都需要以采集好的族譜數(shù)據(jù)為基礎(chǔ),通過編輯、排版形成內(nèi)容豐富、圖文并茂、樣式美觀的譜書,然后將其印刷成冊并分發(fā)給族人。目前,國內(nèi)外在數(shù)字化族譜系統(tǒng)方面已有一些研究和開發(fā)工作。著名的族譜網(wǎng)站FamilySearch[2]中,用戶可以方便地創(chuàng)建和管理個性化族譜空間,但沒有提供族譜數(shù)據(jù)紙質(zhì)化輸出功能。文獻[3~4]都實現(xiàn)了基于單機形式的族譜錄入軟件:將族譜的制作工作分割成多個任務(wù),由多位制作人員分別完成這些任務(wù)并以文件存儲任務(wù)中輸入的族譜數(shù)據(jù),最后將多個數(shù)據(jù)文件合并、編輯形成最終的族譜。但是這種數(shù)據(jù)管理方式不利于信息的共享,而且多個數(shù)據(jù)文件之間存在較多冗余以及沖突,無法自動完成數(shù)據(jù)文件合并。為了加快族譜數(shù)字化進程,結(jié)合實際的應(yīng)用需求,本文實現(xiàn)了一個基于B/S架構(gòu)的族譜信息系統(tǒng)[5~6]。該系統(tǒng)提供了族譜數(shù)據(jù)錄入、查詢服務(wù)以及族譜紙質(zhì)化輸出等功能,但隨著錄入族譜的人物數(shù)據(jù)量的急速增長,數(shù)據(jù)庫表內(nèi)的人物和人物關(guān)系條數(shù)會急速增長,在目前族譜系統(tǒng)人物數(shù)據(jù)和人物關(guān)系數(shù)據(jù)單表的存儲方案下,查詢服務(wù)效率會急劇下降,對族譜數(shù)據(jù)的管理很不方便且可維護性很差;在面對大數(shù)據(jù)量族譜的生成時,目前內(nèi)存數(shù)據(jù)的存儲方式對數(shù)據(jù)的操作效率影響很大,同時也易造成系統(tǒng)的不穩(wěn)定,導(dǎo)致系統(tǒng)長時間無響應(yīng)甚至“假死”。結(jié)合族譜信息系統(tǒng)中的實際需求,本文對該系統(tǒng)的族譜數(shù)據(jù)存儲方案進行了改進,采用表分區(qū)技術(shù),提升了對族譜數(shù)據(jù)的操作和管理效率,同時在族譜的生成過程中,采用內(nèi)存數(shù)據(jù)庫SQLite,提高了對族譜數(shù)據(jù)操作的效率,從而提升族譜生成系統(tǒng)的效率和穩(wěn)定性。

        2 相關(guān)工作

        傳統(tǒng)族譜信息系統(tǒng)采用的是單機管理不易于擴展功能,其中的數(shù)據(jù)分散且有大量冗余,而且傳統(tǒng)族譜信息系統(tǒng)面向的是族譜制作用戶,無法利用其中的族譜數(shù)據(jù)向公眾用戶提供服務(wù)。為了更好地收集和利用族譜數(shù)據(jù),本文設(shè)計并開發(fā)了一款族譜信息系統(tǒng),整個系統(tǒng)如圖1所示[5]。族譜信息系統(tǒng)分為族譜信息錄入系統(tǒng)、族譜生成系統(tǒng)以及姓氏網(wǎng)站展示系統(tǒng)三個子系統(tǒng),族譜系統(tǒng)的主要功能包括數(shù)據(jù)錄入、數(shù)據(jù)服務(wù)和數(shù)據(jù)輸出。族譜信息錄入系統(tǒng)是基于B/S架構(gòu)的,該系統(tǒng)可以支持多用戶并行地錄入同一族譜中的數(shù)據(jù),并統(tǒng)一對族譜數(shù)據(jù)進行管理,同時通過本系統(tǒng)還可向公眾用戶提供對已錄入族譜數(shù)據(jù)的檢索。族譜信息錄入系統(tǒng)提供數(shù)據(jù)錄入的功能,錄入功能主要包括三部分:世系數(shù)據(jù)錄入、文檔數(shù)據(jù)錄入、多媒體數(shù)據(jù)錄入。姓氏網(wǎng)站展示系統(tǒng)提供數(shù)據(jù)服務(wù)的功能,主要包括數(shù)據(jù)展示、統(tǒng)計檢索、一鍵尋祖和一鍵尋親。族譜生成系統(tǒng)則為用戶提供數(shù)據(jù)輸出的功能,主要包括族譜編排和族譜生成。族譜編排功能是通過用戶的個性化需求對譜書的樣式、數(shù)據(jù)出現(xiàn)的順序、詞語的表達方式等進行設(shè)置;而族譜生成功能主要是在族譜編排過后,按照用戶的個性化需求從原始族譜數(shù)據(jù)中轉(zhuǎn)換生成電子版的譜書以供印刷。

        族譜生成系統(tǒng)是整個族譜系統(tǒng)的關(guān)鍵所在,生成系統(tǒng)生成族譜的大體流程如圖2所示,主要涉及到數(shù)據(jù)獲取、數(shù)據(jù)處理、數(shù)據(jù)填充和生成族譜四個階段。數(shù)據(jù)獲取是指從族譜數(shù)據(jù)庫中取出對應(yīng)要生成的族譜所有數(shù)據(jù)信息的過程,數(shù)據(jù)信息主要包括族譜全局?jǐn)?shù)據(jù)、人物數(shù)據(jù)和人物關(guān)系數(shù)據(jù);數(shù)據(jù)處理即是對取出的族譜數(shù)據(jù)進行規(guī)范化以及按照用戶的設(shè)置進行再處理轉(zhuǎn)化的過程;數(shù)據(jù)填充即是用經(jīng)過處理加工后的數(shù)據(jù)與用戶選擇的版式進行結(jié)合,填充對應(yīng)的版式;生成族譜環(huán)節(jié)包括先將處理后的數(shù)據(jù)信息和HTML格式的族譜模板組合生成一頁頁HTML格式的族譜,在此過程中同時還包括生成人物的頁碼信息,對應(yīng)更新族譜數(shù)據(jù)庫人物信息表的人物頁碼字段,然后替換HTML格式族譜中對應(yīng)的人物頁碼字段等。最終由HTML格式的族譜生成PDF格式的族譜。

        在多次生成族譜的過程中發(fā)現(xiàn),在數(shù)據(jù)獲取階段,獲取的數(shù)據(jù)信息中主要包括人物信息和人物關(guān)系信息,分別對應(yīng)存儲在數(shù)據(jù)庫的人物表和人物關(guān)系表中,并且每次都只會獲取與該族譜有關(guān)的所有數(shù)據(jù)。在數(shù)據(jù)獲取的過程中,人物表和人物關(guān)系表的信息都是基于選擇的族譜ID(Gid)來進行過濾,從而取出所有關(guān)聯(lián)的人物數(shù)據(jù)和人物關(guān)系數(shù)據(jù)。隨著族譜系統(tǒng)錄入的族譜數(shù)量越來越多,人物表和人物關(guān)系表的數(shù)據(jù)條目也急劇增加,而每次需要獲取的數(shù)據(jù)相對于整張表而言,相對很少;以單表的形式來存儲,不僅影響操作的效率,而且不方便進行管理。在數(shù)據(jù)處理和數(shù)據(jù)填充以及族譜生成階段,由于存取到的表數(shù)據(jù)需要常駐內(nèi)存,在此基礎(chǔ)上還需要對數(shù)據(jù)進行查詢和運算,目前的系統(tǒng)采用DataSet的存儲方式,以DataTable來存儲表數(shù)據(jù)的信息,當(dāng)需要計算的人物數(shù)據(jù)和關(guān)系數(shù)據(jù)量較大時,極易造成系統(tǒng)無響應(yīng)或者程序中斷的不穩(wěn)定情形出現(xiàn)。

        綜上所述,原來的數(shù)據(jù)存儲方案有如下缺陷:隨著錄入的數(shù)據(jù)越來越多,人物表和人物關(guān)系表的數(shù)據(jù)條目會急劇增長,單表存儲的數(shù)據(jù)管理方式顯然是不合適的;盡管在原來關(guān)系表的對應(yīng)字段上建有索引,在數(shù)據(jù)量增大后索引的性能也會極大下降;隨著族譜系統(tǒng)的推廣使用,生成系統(tǒng)對族譜數(shù)據(jù)的并行操作是很常見的情形,目前單表的存儲方式很影響系統(tǒng)的性能。在數(shù)據(jù)處理和數(shù)據(jù)填充階段,以Dataset方式來存儲數(shù)據(jù),處理的過程中效率較低;在族譜生成階段還涉及對族譜數(shù)據(jù)庫中人物頁碼字段的更新,此時網(wǎng)絡(luò)狀況很可能成為瓶頸因素;在內(nèi)存中處理大量數(shù)據(jù)時,由于沒有一些對應(yīng)的數(shù)據(jù)保護機制,很難保證數(shù)據(jù)的完整性和系統(tǒng)的穩(wěn)定性。

        圖1 族譜系統(tǒng)介紹

        圖2 族譜生成子系統(tǒng)流程示意圖

        3 表分區(qū)和內(nèi)存數(shù)據(jù)庫技術(shù)優(yōu)化方案

        根據(jù)上述分析,本文提出存儲優(yōu)化方案——表分區(qū)方案以及內(nèi)存數(shù)據(jù)庫技術(shù)方案。總體來看,使用表分區(qū)技術(shù)優(yōu)化存儲有以下優(yōu)勢:分區(qū)后,獲取族譜數(shù)據(jù)的查詢性能可以得到一定提升;通過將不同分區(qū)存儲在不同的磁盤,使多用戶并行獲取不同分區(qū)的族譜數(shù)據(jù)時,可以有效地分散I/O;分區(qū)后,可以將全局索引替換為分區(qū)索引,分區(qū)表的數(shù)據(jù)量遠遠小于原來的表,索引能更有效地發(fā)揮性能;同時對族譜數(shù)據(jù)的管理也更有效地進行,批量刪除族譜數(shù)據(jù)可以通過簡單的刪除某個分區(qū)來實現(xiàn)。使用內(nèi)存數(shù)據(jù)庫技術(shù)對于族譜生成有以下優(yōu)勢:利用內(nèi)存數(shù)據(jù)庫SQLite替換原來的DataSet的存儲形式,可以有效地提高數(shù)據(jù)處理的效率;使用內(nèi)存數(shù)據(jù)庫來存儲族譜的數(shù)據(jù)信息后,在族譜完全生成完成之前,生成系統(tǒng)只需和本地的SQLite進行交互,不再需要和遠程族譜數(shù)據(jù)庫通信,因此有效地減小了網(wǎng)絡(luò)因素的影響;內(nèi)存數(shù)據(jù)庫利用數(shù)據(jù)庫的事務(wù)管理等機制可以保證族譜數(shù)據(jù)的完整性和安全性,從而有效地提高生成系統(tǒng)的穩(wěn)定性。

        3.1 表分區(qū)方案

        數(shù)據(jù)庫分區(qū)是一種物理數(shù)據(jù)庫設(shè)計技術(shù),分區(qū)就是把邏輯上的一個大表分割成物理上的幾個塊。雖然分區(qū)技術(shù)可以實現(xiàn)很多效果,但其主要目的是為了在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減查詢時間。分區(qū)主要有兩種形式:水平分區(qū)和垂直分區(qū)。水平分區(qū)是對表的行記錄進行分區(qū),通過這樣的方式不同分組里的物理列分割的數(shù)據(jù)集得以組合,從而進行個體分割(單分區(qū))或集體分割(一個或多個分區(qū));垂直分區(qū)一般來說是通過對表的垂直劃分來減少目標(biāo)表的寬度,使某些特定的列被劃分到特定的分區(qū),每個分區(qū)都包含了其中的列所對應(yīng)的行,所有在表中定義的列在每個數(shù)據(jù)集中都能找到,所以表的特性依然得以保持。分區(qū)不僅能帶來訪問速度的提升,關(guān)鍵的是還它能帶來管理和維護上的方便。PostgreSQL數(shù)據(jù)庫支持基本的表分區(qū)功能,在PostgreSQL中表分區(qū)是通過表的繼承來實現(xiàn)的,目前PostgreSQL的表分區(qū)方案有:范圍分區(qū)和列表分區(qū)。范圍分區(qū)是指表被一個或者多個鍵字字段分區(qū)成“范圍”,在這些范圍之間沒有重疊的數(shù)值分布到不同的分區(qū)里。列表分區(qū)則是指表是通過明確地列出每個分區(qū)里應(yīng)該出現(xiàn)那些鍵字值實現(xiàn)的。

        目前的族譜數(shù)據(jù)庫中的數(shù)據(jù)表主要有族譜表、人物表以及人物關(guān)系表。族譜表主要包含每個族譜的描述信息,人物表記錄了錄入系統(tǒng)錄入的所有人物描述信息,人物關(guān)系表記錄了人物表中所有的人物之間的關(guān)系信息。隨著人物數(shù)據(jù)信息不斷地錄入,人物表和關(guān)系表的記錄條數(shù)會急劇增長;并且隨著族譜系統(tǒng)的進一步推廣和使用,極易出現(xiàn)對族譜數(shù)據(jù)庫數(shù)據(jù)的并行操作,引成的I/O集中會引起系統(tǒng)的性能變慢。

        因此考慮采用表分區(qū)方案對族譜系統(tǒng)數(shù)據(jù)庫中關(guān)鍵的數(shù)據(jù)表——人物表和人物關(guān)系表,進行分區(qū)處理。利用PostgreSQL數(shù)據(jù)庫的分區(qū)技術(shù)并參考族譜系統(tǒng)對數(shù)據(jù)存儲和操作的方式,利用族譜ID(Gid)對人物表和人物關(guān)系表進行范圍分區(qū)。以人物表為例,首先創(chuàng)建對應(yīng)范圍的分區(qū)表,設(shè)定一定的ID范圍對分區(qū)進行控制,然后創(chuàng)建觸發(fā)器函數(shù),這樣數(shù)據(jù)導(dǎo)入時則會按照設(shè)定的分區(qū)范圍,相對均勻地分布在多個分區(qū)。在族譜生成過程中需要獲取對應(yīng)族譜的所有數(shù)據(jù)時,則不再需要在一張千萬級的數(shù)據(jù)表中進行檢索,而是按照規(guī)則去對應(yīng)的分區(qū)中進行檢索,提高了查詢效率;同時原來數(shù)據(jù)表的索引可以分散到各個分區(qū),由于每個分區(qū)的記錄數(shù)遠遠小于原來的表,分區(qū)上的索引可以更好地實現(xiàn)加快查詢的效果;隨著族譜數(shù)據(jù)的錄入和族譜的生成完成,需要對某個族譜段的族譜數(shù)據(jù)進行刪除時,可以通過簡單地刪除某一個或者幾個分區(qū)來進行,方便了對族譜數(shù)據(jù)的管理;并且可以考慮將多個分區(qū)分別放置在不同的物理磁盤上,這樣在處理對族譜數(shù)據(jù)的并行操作時,I/O可以被有效地分散,提高了生成系統(tǒng)的響應(yīng)時間和系統(tǒng)的穩(wěn)定性。

        3.2 內(nèi)存數(shù)據(jù)庫技術(shù)

        內(nèi)存數(shù)據(jù)庫拋棄了傳統(tǒng)的磁盤數(shù)據(jù)管理方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面都進行了相應(yīng)的改進,所以數(shù)據(jù)處理速度比傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)處理方式要快很多。內(nèi)存數(shù)據(jù)庫和傳統(tǒng)數(shù)據(jù)庫的區(qū)別在于傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)是關(guān)系型數(shù)據(jù)庫,開發(fā)這種數(shù)據(jù)庫的目的是處理永久、穩(wěn)定的數(shù)據(jù);關(guān)系數(shù)據(jù)庫強調(diào)維護數(shù)據(jù)的完整性、一致性,但很難顧及有關(guān)數(shù)據(jù)及其處理的實時要求。對內(nèi)存數(shù)據(jù)庫而言,將整個數(shù)據(jù)庫或其主要的“工作”部分放入內(nèi)存,使每個事務(wù)在執(zhí)行過程中沒有I/O,則為系統(tǒng)較準(zhǔn)確估算和安排事務(wù)的運行時間,使之具有較好的實時處理能力。常見的內(nèi)存數(shù)據(jù)庫有:SQLite、FastDB、Memcached和Redis等,結(jié)合在族譜生成過程中對數(shù)據(jù)處理的特點,最終選用了SQLite數(shù)據(jù)庫,因為SQLite作為一款開源的內(nèi)存數(shù)據(jù)庫軟件,相比其他內(nèi)存數(shù)據(jù)庫,不受許可證費用約束,在便攜性、 易用性、 緊湊性、 高效性和可靠性方面都有突出的表現(xiàn),更加輕量級,同時不僅支持對數(shù)據(jù)的查詢,也支持對數(shù)據(jù)的更新等操作,很好地滿足了族譜生成過程中對數(shù)據(jù)處理的需求。

        在族譜系統(tǒng)中,如圖2中所示,將該族譜的數(shù)據(jù)從服務(wù)器數(shù)據(jù)庫獲取到本機后,需要經(jīng)過數(shù)據(jù)處理、數(shù)據(jù)填充以及族譜生成這幾個階段后才能完成族譜PDF的最終生成。在這幾個處理階段中,族譜數(shù)據(jù)尤其是人物數(shù)據(jù)和人物關(guān)系表數(shù)據(jù)都會以DataTable的形式常駐在內(nèi)存中,當(dāng)該族譜涉及到的人物數(shù)據(jù)和人物關(guān)系數(shù)據(jù)較大時,內(nèi)存中的數(shù)據(jù)集也會很大,并且在此過程中涉及到對該數(shù)據(jù)集的查詢和更新操作,采用DataTable的形式進行存儲,處理效率較低,同時很難保證系統(tǒng)的穩(wěn)定性。因此考慮采用內(nèi)存數(shù)據(jù)庫技術(shù)對該內(nèi)存數(shù)據(jù)集進行優(yōu)化存儲。基于族譜生成系統(tǒng)的數(shù)據(jù)操作特點,采用SQLite來存儲生成過程中需要處理的內(nèi)存數(shù)據(jù)集。

        圖3所示為使用內(nèi)存數(shù)據(jù)庫SQLite后生成系統(tǒng)進行數(shù)據(jù)處理的過程。需要計算的內(nèi)存數(shù)據(jù)集會存儲在SQLite中,從而程序只需與本地的SQLite交互,生成族譜PDF中的人物頁碼信息也直接存儲在SQLite中,而不需要與遠程的族譜服務(wù)器進行通信。圖4所示為生成系統(tǒng)程序中具體對SQLite調(diào)用的過程。首先需要打開和連接本地的SQLite數(shù)據(jù)庫,將從族譜服務(wù)器獲取到的數(shù)據(jù)寫入到SQLite中進行初始化。在后續(xù)的數(shù)據(jù)處理、數(shù)據(jù)填充以及族譜生成階段,需要做查詢和操作時,都直接通過SQL語句與SQLite進行交互,獲取到相應(yīng)的數(shù)據(jù)集后進行操作;在數(shù)據(jù)操作的過程中,也會涉及對數(shù)據(jù)庫的清理,同時會涉及到對族譜數(shù)據(jù)進行備份等處理操作,最后在族譜生成工作完成后,關(guān)閉SQLite數(shù)據(jù)庫。利用SQLite的優(yōu)化存儲,在提高了生成系統(tǒng)效率的同時,更好地保證了內(nèi)存數(shù)據(jù)集的完整性和安全性,有效地提高了生成系統(tǒng)的穩(wěn)定性。

        圖3 使用SQLite的族譜生成系統(tǒng)

        圖4 調(diào)用數(shù)據(jù)庫SQLite的主要流程

        4 實驗

        實驗部分別對文中提出的基于表分區(qū)和使用內(nèi)存數(shù)據(jù)庫SQLite的方案進行功能測試和性能測試,并對測試結(jié)果進行分析和總結(jié)。

        4.1 實驗環(huán)境與測試數(shù)據(jù)

        測試選用的系統(tǒng)環(huán)境是一臺處理器為Intel Core i3-M3702.40GHz,2.0G內(nèi)存的PC機,操作系統(tǒng)選用Windows7的32位版本。測試使用未使用表分區(qū)方案和內(nèi)存數(shù)據(jù)庫SQLite的族譜生成系統(tǒng)和最新版本的族譜生成系統(tǒng)。

        測試數(shù)據(jù)集選取如下:數(shù)據(jù)集分別為DS1~DS5五個族譜,族譜的ID以及族譜的人物節(jié)點數(shù)和族譜的人物關(guān)系記錄依次如表1中所示。

        表1 測試數(shù)據(jù)集

        4.2 實驗結(jié)果與分析

        1) 功能測試

        功能測試主要測試基于表分區(qū)的方案能否滿足系統(tǒng)對族譜數(shù)據(jù)庫數(shù)據(jù)的操作,其中包括族譜數(shù)據(jù)的存儲、查詢、插入和刪除;以及測試基于內(nèi)存數(shù)據(jù)庫技術(shù)的存儲方案能否滿足族譜成功生成的功能。

        針對以上需要測試的功能,以人物表t_individual為例,設(shè)計幾個測試用例如下:

        (1)SELECTgid,fullname From t_individual ;

        (2)INSERT INTO t_individual( gid, fullname ) VALUES (1 ,’張三’);

        (3)UPDATE t_individual SET fullname = ’李四’ WHERE gid=1 AND fullname = ’張三’;

        (4)DELETE FROM t_individual WHERE gid =1 AND fullname = ’李四’;

        上述幾個測試用例涉及到了人物表分區(qū)后的查詢、插入、更新以及刪除操作。測試用例的運行正確表明了表分區(qū)方案用于族譜系統(tǒng)數(shù)據(jù)庫的可行性;分別使用原來的系統(tǒng)和使用SQLite后的生成系統(tǒng),生成相同的族譜PDF進行對比,發(fā)現(xiàn)內(nèi)容一致,也證明了內(nèi)存數(shù)據(jù)庫SQLite用于族譜系統(tǒng)的可行性。

        2) 性能測試

        圖5所示為表分區(qū)方案前后對人物信息表進行查詢時,數(shù)據(jù)集里對應(yīng)族譜數(shù)據(jù)檢索所消耗的時間對比。實驗結(jié)果表明:進行表分區(qū)后,對數(shù)據(jù)的檢索效率得到一定提升。并且在數(shù)據(jù)庫整體的數(shù)據(jù)集越大時,表分區(qū)的優(yōu)勢會更明顯。圖6所示為使用內(nèi)存數(shù)據(jù)庫SQLite前后,對應(yīng)不同大小的族譜數(shù)據(jù)集,利用生成系統(tǒng)生成族譜時消耗的時間對比。

        綜上,對于族譜數(shù)據(jù)查詢和族譜生成的性能測試,充分說明了使用表分區(qū)方案可以在一定程度上優(yōu)化族譜數(shù)據(jù)的查詢性能,并且方便了對族譜數(shù)據(jù)的管理;通過使用內(nèi)存數(shù)據(jù)庫技術(shù),有效地提升了生成系統(tǒng)的效率。

        圖5 表分區(qū)前后查詢效率對比

        圖6 使用內(nèi)存數(shù)據(jù)庫SQLite前后的效率對比

        5 結(jié)語

        在目前的族譜生成系統(tǒng)中,在族譜數(shù)據(jù)庫里人物數(shù)據(jù)和人物關(guān)系數(shù)據(jù)分別利用一張關(guān)系表來存儲,隨著族譜數(shù)據(jù)在錄入系統(tǒng)的不斷錄入,人物表和人物關(guān)系表的記錄條數(shù)會急劇增長,對族譜信息的獲取相對耗時,且存在多用戶并發(fā)操作族譜數(shù)據(jù)庫數(shù)據(jù)的情形,因此對人物表和關(guān)系表采用表分區(qū)機制,提高數(shù)據(jù)的獲取效率,同時增加了對族譜數(shù)據(jù)管理的方便性和可維護性;從數(shù)據(jù)庫取出數(shù)據(jù)后,在族譜生成階段對族譜數(shù)據(jù)需要進行不同的操作,但數(shù)據(jù)都需常駐內(nèi)存,并且生成系統(tǒng)還需要和族譜數(shù)據(jù)庫進行交互,當(dāng)族譜的數(shù)據(jù)量很大時,易造成程序的不穩(wěn)定;在和數(shù)據(jù)庫交互時,網(wǎng)絡(luò)狀況對系統(tǒng)的影響很大,因此采用內(nèi)存數(shù)據(jù)庫SQLite來存儲對應(yīng)數(shù)據(jù)。

        采用表分區(qū)方案及內(nèi)存數(shù)據(jù)庫技術(shù)方案:參考族譜系統(tǒng)應(yīng)用場景的具體情況,考慮對人物表和人物關(guān)系表進行表分區(qū),可以將不同的分區(qū)存儲到不同的磁盤,在分區(qū)的基礎(chǔ)上再建立索引,在提升對數(shù)據(jù)獲取效率的同時也方便了對族譜數(shù)據(jù)的管理;在將族譜數(shù)據(jù)取出后在內(nèi)存中對其進行處理時,采用內(nèi)存數(shù)據(jù)庫SQLite對其進行存儲,不僅減小了族譜生成過程中的網(wǎng)絡(luò)因素影響,同時有效地提升了生成系統(tǒng)的性能和穩(wěn)定性。

        [1] 張卓.開發(fā)利用族譜檔案的意義[J].云南檔案,2006(3):32-33. ZHANG Zhuo. Meaningof develop and exploit pedigree archives[J]. YunnanArchives,2006(3):32-33.

        [2] FamilySeareh[EB/OL]. http://www.familysearch.org.

        [3] 啟航宗譜[EB/OL]. http://www.qhzprj.com.

        [4] 中根網(wǎng)[EB/OL]. http://www.zongen.com.

        [5] 張文杰,彭智勇,彭煜煒.內(nèi)存數(shù)據(jù)管理技術(shù)在族譜信息系統(tǒng)中的應(yīng)用[J].華東師范大學(xué)學(xué)報:自然科學(xué)版,2014(5):311-319. ZHANG Wenjie, PENG Zhiyong, PENG Yuwei. Application ofin-memory data management technologyin genealogy information system[J]. Journal of East China Normal University:Nature Science Edition, 2014(5):311-319.

        [6] 姜洋,彭智勇,彭煜煒.基于圖數(shù)據(jù)庫的在線族譜編錄系統(tǒng)[J].計算機應(yīng)用,2015,35(1):125-130. JIANG Yang, PENG Zhiyong, PENG Yuwei. Online pedigree editing system based on graph database[J]. Journal of Computer Applications,2015,35(1):125-130.

        [7] 彭智勇,彭煜瑋.PostgreSQL數(shù)據(jù)庫內(nèi)核分析[M].北京:機械工業(yè)出版社,2012. PENG Zhiyong, PENG Yuwei. PostgreSQL Database Kernel Analysis[M]. Beijing: China Machine Press,2012.

        [8] PL/pgSQL[EB/OL]. http//www.Postgresql.org/docs/8.3/static/plpgsql.Html

        [9] G Eadon,EI Chong,S Shankar et al.Supporting table partitioning by reference in oracle[C]//Acm Sigmod International Conference on Managementof Data,2008:1111-1122.

        [10] 李亞龍,朱巖.表分區(qū)在分界開關(guān)監(jiān)控系統(tǒng)數(shù)據(jù)庫的應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2016(2):235-238. LI Yalong, ZHU Yan. Application of Table Partition in Boundary Load Switch Monitoring System Database[J]. Computer Systems & Applications,2016(2):235-238.

        [11] 劉玉紅,羅曉沛.表分區(qū)技術(shù)在短信增值業(yè)務(wù)中的研究與實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2008,17(11):72-75. LIU Yuhong, LUO Xiaopei. Study and Application of Partitioned Tables in SMS Business[J]. Computer Systems & Applications,2008,17(11):72-75.

        [12] J Lv,S Xu,Y Li. Application Reasearch of Embedded Database SQLite[J].International Forum on Information Technology & Application,2009,2:539-543.

        [13] 萬瑪寧,關(guān)永,韓相軍.嵌入式數(shù)據(jù)庫典型技術(shù)SQLite和Berkeley DB的研究[J].微計算機信息,2006,22(2):91-93. WAN Maning, GUAN Yong, HAN Xiangjun. Research on Typical Technologies of embedded database-SQLite and Berkeley DB[J]. Microcomputer Information,2006,22(2):91-93.

        [14] 王珊,肖艷芹,劉大為,等.內(nèi)存數(shù)據(jù)庫關(guān)鍵技術(shù)研究[J].計算機應(yīng)用,2007,27(10):2353-2357. WANG Shan, XIAO Yanqin, LIU Dawei, et al. Research of main memory database[J]. Journal of Computer Applications,2007,27(10):2353-2357.

        [15] 邵璐,費洪曉.內(nèi)存數(shù)據(jù)庫技術(shù)在移動實時累加系統(tǒng)中的應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2011,20(8):169-173. SHAO Lu, FEI Hongxiao.Application of MDB Technology to Mobile Real-Time Accumulative System[J]. Journal of Computer Applications,2011,20(8):169-173.

        Genealogy Generation System Optimization Based on Table Partition andMain Memory Database

        XU Mingmin1PENG Zhonghua2WANG Liwei2

        (1. Computer School, Wuhan University, Wuhan 430072) (2. International School of Software,Wuhan University, Wuhan 430072)

        This paper proposes an optimal storage solution for the genealogy data storage system — storage solution based on the table partition. The shortage of existing data storage solution on the genealogy system is analyzed, the genealogy data is re-modeled and storaged with the help of the PostgreSQL table partition. This method improves the management and operational efficiencyof genealogy data, based on the characteristics of data processing in the existing system , inmain memory database technology is brought. Thus, using SQLite database to store data in memory can improve the efficiency ofdata processing. Experiments test the feasibility and properties of table partition and main memory database technology.It turns out that the use of table partition scheme and main memory database technology can support the storage and processing requirements and partly optimize the performance of genealogy system.

        genealogy, PostgreSQL, table partition, main memory database, SQLite

        2016年8月15日,

        2016年9月29日

        徐明民,男,碩士研究生,研究方向:數(shù)據(jù)庫原理、數(shù)據(jù)管理。彭中華,男,碩士研究生,研究方向:軟件工程。王黎維,女,博士,副教授,研究方向:數(shù)據(jù)質(zhì)量、數(shù)據(jù)溯源、科學(xué)工作流。

        TP311

        10.3969/j.issn.1672-9722.2017.02.015

        猜你喜歡
        數(shù)據(jù)庫系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        數(shù)據(jù)庫
        財經(jīng)(2017年15期)2017-07-03 22:40:49
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        国产亚洲一二三区精品| 欧美国产亚洲日韩在线二区| 2020国产精品久久久久| 中文无字幕一本码专区| 国产高清乱码又大又圆| 国产一卡2卡3卡四卡国色天香 | 久久婷婷色综合一区二区| 校花高潮一区日韩| 天堂免费av在线播放| 一本色道久久88亚洲精品综合 | 日韩国产欧美视频| 亚洲免费成年女性毛视频| 亚洲国产丝袜久久久精品一区二区| 草草浮力影院| 亚洲国产一区二区三区网| 国产成人精品一区二区日出白浆| 亚洲天堂成人av在线观看| 少妇人妻陈艳和黑人教练| 国产亚洲精久久久久久无码苍井空| 人妖系列在线免费观看| 久久精品成人一区二区三区| 嫖妓丰满肥熟妇在线精品| 欧美1区二区三区公司| 国产一区二区三区亚洲| 国产成人无码18禁午夜福利p| 国产视频导航| 日本在线免费一区二区三区| 欧美午夜理伦三级在线观看| 一本大道久久东京热无码av| 国产美女a做受大片免费| 人妻少妇精品视频专区二区三区| 97无码免费人妻超级碰碰夜夜| 免费毛片视频网站| 亚洲一区二区三区av天堂| 日韩视频在线观看| av无码精品一区二区三区四区| 亚洲综合原千岁中文字幕| 国产精品18久久久白浆| 国产精品美女一区二区三区 | 男女真实有遮挡xx00动态图| 精品一区二区三区女同免费|