程傳鵬
(中原工學院,鄭州450007)
基于Trip數據庫的檔案管理系統(tǒng)的設計與實現(xiàn)
程傳鵬
(中原工學院,鄭州450007)
結合Trip數據庫在處理非規(guī)范性文檔方面的優(yōu)勢,設計出了一種基于Trip數據庫的檔案入庫系統(tǒng),實現(xiàn)了紙質檔案的電子存儲,為電子文檔內容的直接檢索做好了前期工作.實驗結果表明,本系統(tǒng)提高了數據存儲空間的利用率.
非規(guī)范性數據;檔案管理;Trip數據庫;文本提取
隨著計算機無紙辦公技術應用的普及,各種格式的電子文件資料大量涌現(xiàn),不僅有文字資料,還有聲音、圖像、動畫、視頻等等[1].這些文檔結構無定、類型各異、規(guī)格不一、長度參差,不能直接轉化成關系數據庫的字段信息,因而不能被傳統(tǒng)的關系型數據庫管理系統(tǒng)有效地處理,大大降低了這些數據的使用價值.據統(tǒng)計,諸如此類的非規(guī)范性數據信息占了互聯(lián)網上數據的80%.傳統(tǒng)的關系型數據庫由于自身的局限性,已經遠遠不能滿足今天非規(guī)范性數據快速增長的需要.為了解決關系數據庫在非規(guī)范性數據處理上的不足,1985年瑞典Paralog公司在皇家工學院的圖書情報檢索專用軟件3RIP基礎上,開發(fā)出了專為處理非規(guī)范性數據的軟件系統(tǒng)Trip系統(tǒng)[1].本文分析了Trip數據庫在處理非規(guī)范性電子文檔上的優(yōu)勢,并在此基礎上,利用Trip數據庫設計出了一種電子文檔管理系統(tǒng).
目前的檔案管理系統(tǒng)大都是基于關系數據庫的,但關系型數據庫是二維平面結構,表的一行表示一個記錄,表的一列代表記錄中的一個字段,一個字段只允許放一個實體.Trip是多維結構的數據庫系統(tǒng),記錄由字段組成,每一個字段容許存放任意多個實體.子字段自動帶有編號,彼此相互獨立.Trip記錄的字段長度不限,設計數據庫字段時不需預定其大小.關系型數據庫的字段長度在設計數據庫時必須設定,裝庫時如果數據內容不夠量,它就不會“省”出沒用完的空間,而數據多于設定值時,超過部分又沒法存進去.Trip是多維結構的數據庫,比較適合于大量不定長數據的存儲.Trip數據庫是面向大數據對象設計開發(fā)的,數據庫文件只由3個文件組成,分別是數據文件baf、檢索詞文件bif和詞根文件vif,因此數據庫的存儲、復制、查詢、維護都很方便.對于數據量以“百萬字節(jié)”計的多媒體信息的存儲而言,Trip是很好的選擇.
此外,Trip可隨時追加新字段.如首次設計數據庫時建立了20個字段,使用一段時間后要增加5個字段,這時只需加上這5個字段即可,已有記錄中的數據照常使用.而關系型數據庫則做不到.Trip是管理存儲各種電子文檔資料的最佳解決方案,它有一種專門存儲二進制數據的字段,不僅能存儲多達200多種不同格式的電子文件,如 Word、PDF、PowerPoint、Excel、Access等[2],而且能自動抽取這些文件之中的文字信息,形成倒排文件,供人們進行全文內容的快速查找.在處理非規(guī)范性數據方面,尤其是當前普遍面臨文、圖、音、視信息等大量多媒體信息管理的情況下,Trip要比關系型數據庫強很多.
檔案數據庫管理,首先要將紙質檔案轉變?yōu)橛嬎銠C能夠存儲的數字化成果,即對所有未數字化的檔案進行掃描,整理其屬性信息,并進行數據存儲,最終為數字化檔案提供安全高效的管理方法,從而取代現(xiàn)有的管理方式[3].檔案管理系統(tǒng)結構如圖1所示.
檔案管理系統(tǒng)主要實現(xiàn)如下4個方面的功能:
(1)檔案掃描.改變了傳統(tǒng)的用掃描儀掃描檔案的方法,采用系統(tǒng)控制高速掃描儀方式進行掃描,既保證了掃描檔案的質量,又顯著提高了工作效率.并且檔案掃描后直接自動存人數據庫內,改變了傳統(tǒng)的人工手動入庫工作量大、速度慢的缺點.
圖1 檔案管理系統(tǒng)結構圖
(2)數據建庫.不同時期的檔案,管理方式不同,因此對其進行分開存儲和管理.為維護數據的實時性,系統(tǒng)提供對數據庫的維護與更新功能.
(3)文本信息提取.對存入數據庫的二進制文件進行文本提取,提取后的文本信息同樣也保存在數據庫里,為后續(xù)的基于電子文檔內容的信息檢索做好前期工作.
(4)用戶管理.通過角色和活動的權限來進行統(tǒng)一的管理.根據業(yè)務分工,將系統(tǒng)的管理權限和角色關聯(lián),即角色的權限只定義和系統(tǒng)模塊相關聯(lián)的權限,通過角色權限的管理,控制用戶對系統(tǒng)的入庫、編輯、查詢、刪除、打印等權限.
Trip的數據庫由記錄組成,記錄又由字段組成.Trip記錄中的字段可容納7種不同類型的信息,包括Phrase、Integer、Number、Text、Date、Time、String.其中,String類型可以存放二進制信息,記錄中字段的個數不限.除正文、字串數據類型外,其他類型字段下分子字段(subfield),正文類型字段下分段落(paragraph),段落之中又分句子(sentence),句子之中又分詞(word).字段中子字段的數量也是沒限制的.
設計數據庫時,可以事先準備好一個數據庫定義文本文件base-name.def,通過 Trip系統(tǒng)提供的import命令,在命令窗里直接生成數據庫結構:
import base=base-name file=base-name.def數據庫定義文件base-name.def的格式如下:
OPTIONS=5
(
FieldName:n PHRASE NOX COM(title),
……
)
其中,F(xiàn)ieldName指的是字段名,最長16個英文字符,后用“:”;n指的是字段號,用數字表示;PHRASE指的是字段類型;NOX指的是不需要倒排,需要倒排時,為空白;COM(title)指的是字段說明,說明性文字放在圓括號內.
本系統(tǒng)中最重要的數據庫有2個:一個是文檔數據庫,一個是用戶數據庫.
與文字數據不同,當一個電子文件存放在Trip數據庫記錄中時,需4個字段來描述.第一個字段定義為PHRASE字段,用來存放文件名;第二個字段定義為String字段,用來存放全部文件內容的信息;第三個字段定義為Integer字段,用來存放文件大小的數值;第四個字段定義為Text字段,用來存放從原格式文件抽取出來的文字內容.
文檔數據庫定義文件base-name.def的格式如下:
OPTIONS=5
(
FILE-NAME:1PHRASE COM(15),
FILE-EXTRACT:2STRING COM(15),F(xiàn)ILE-SIZE:3INTEGER COM(15),
FILE-STRING:4TEXT NOX COM(15)
)
本系統(tǒng)有3類用戶:系統(tǒng)管理員、數據管理員和普通用戶.
系統(tǒng)管理員的用戶名為system,他有最高系統(tǒng)權限,只有他才可創(chuàng)建數據管理員(FM)、用戶經理(UM).系統(tǒng)管理員本身也是FM和UM,有建立數據庫和開設新用戶的權限.FM有權建造數據庫,并授權給用戶或用戶組去訪問該數據庫.只有經他授權的用戶(包括創(chuàng)建文件經理的系統(tǒng)管理員)才能使用他創(chuàng)建的數據庫.UM有權建立新的用戶或用戶組.一個Trip系統(tǒng)可以有不限量的FM或UM.
用戶數據庫定義文件base-name.def的格式如下:
OPTIONS=5
(
USERNAME:1PHRASE COM(name)
RIGHT:2PHRASE COM(right),
ISGROUP:3TEXT COM(group),
BELONGGROUP:4PHRASE
CREATOR:5PHRASE
CREATETIME:6PHRASE
DESCRIPTION:7PHRASE
}
首先,在Visual C++6.0中新建一個MFC AppWizard(exe)項目文件,在AppWizard第一步中選擇基于對話框項,第二項中選擇Active Controls復選框,其他缺省.這樣建立了一個以對話框為主窗口的應用程序.然后,在Resource View中新建對話框,將該對話框的ID改為IDD-SCANNER-DIALOG,將對話框的Caption設置為scanner.
在Visual C++6.0主菜單中單擊【Project】→【Add to Project】→ 【Componentsand Controls】→【Register Active Controls】命令,在對話框中將出現(xiàn)許多控件,在這些控件中選擇Kodak圖像掃描控件,再單擊Insert鍵,即完成添加任務.此時在ClassView中可以看到新添加的CImgScan類,查看類的源文件imgscan.cpp,可深入了解該控件的屬性和使用方法[4].
通過Visual C++6.0的ClassWizard,添加類型為CImgScan的成員變量m-scaner,在對話框上添加“開始掃描”按鈕控件,設置該按鈕控件的ID為IDC-STARTS.然后,在工程中加入如下代碼:
void CScannerDIg:OnStarts()
{
if(!m scaner ScannerAValIabIe())
{
AfxMessageBox(“掃描儀打開失敗”):
exit(0):
)
else if(m-scaner OpenScanner())
{
AfxMessageBox((“掃描儀打開失敗”):
exit(0):
}
else if(m-scaner Sta rtScan())
{
AfxMessageBox((“掃描儀打開失敗”):exit(0):
)
)
Trip產品族提供了一個進程內的組件Tripcom,通過調用Tripcom組件,可以完成對數據庫的添加、刪除、查找等一些基本操作.為了在程序中使用Tripcom組件,首先需要安裝Tripclient組件,并自動完成Tripcom組件的注冊.在APP程序的頭文件中添加語句#import"Tripcom.dll"no-namespace,以引入Tripcom組件,并在在函數BOOL CTheApp Initlnstance()中對COM環(huán)境初始化,語句如下:Colnitialize(NULL).
為了在程序中使用Trip數據庫,需要先連接數據庫,步驟如下:
(1)在 APP頭文件中聲明ITdbSessionPtr ptr-Session;
(2)通過以下的語句來創(chuàng)造會話對象實例:
HRESULT hr= ptrSession.CreateInstance("Tripcom.TdbSession.1");
(3)連接數據庫,語句如下:
ptrSession->Open("username","PassWord","localhost",TDB-LANG-DEFAULT,"",false,"pctdbs",300,30,0,0);
(4)通過定義的引用ITdbSessionPtr&ptrSession,返回會話變量.
要把二進制文件上傳到數據庫,需要用到Copy-FromFileExtractText函數,其語法格式如下:
CopyFromFileExtractText(filename As String,asciifield As String,options As Long,filterargs As String)
其中各參數的意義如下:
filename:文件名,包括路徑;
asciifield:存放所抽取文本的字段名稱;
options:選項;
filterargs:標志,一般為空.
這個函數不僅能上載文件,而且能提取文檔中的文本字符.程序中上載文件的代碼如下:
paramFieldName.bstrVal=L"FILE-STRING";
ptrField=ptrRecord->Field(&paramFieldName);
if(ptrField)
{
ptrField->CopyFromFileExtractText(csFile-FullPath.AllocSysString(),"FILE-EXTRACT",TRIP-RUN-ON-SERVER,"");
}
Trip產品族提供的TripView組件是一種文檔檢索管理組件,它能將220多種不同格式的電子文檔存放在Trip的數據庫之中,同時自動抽取其中的文字內容建立倒排文件,供用戶快速查看,最終顯示出和原有文檔完全相同的視圖.
在程序中實現(xiàn)文檔預覽的步驟如下:
(1)安裝TripView,同時系統(tǒng)自動完成ActiveX控件的注冊;
(2)單擊【Project】->【Add To Project】->【Components And Controls】,打開【Components And Controls Gallery】對話框,如圖2所示;
(3)選擇【Registered ActiveX Controls】文件夾中的【Tripviewer Control】,單擊【Insert】,將TripViewer控件添加到工程中;
圖2 添加TripView控件圖
(4)單擊工具箱上的TripView控件,將此控件添加到對話框上,然后在對話框的.h頭文件中聲明TripView 對象:CTRIPviewer m-TripViewer;
(5)如果要顯示磁盤上的文件,則需要用到View-File方法,代碼如下:
m-TripViewer.ViewFile(FileName)
其中,F(xiàn)ileName指的是包含完整磁盤路徑的文件名.
如果要顯示存放在數據庫字段中的文件,則用如下代碼:
paramFieldName.bstrVal=L"FILE-STRING";
ptrField=ptrRecord->Field(&paramFieldName);
if(ptrField)
{
ptrField->View(long(m-TripViewer.mhWnd),false,"","");
UpdateData(false);
}
為了比較Trip數據庫和關系數據庫在處理電子文檔方面的優(yōu)劣,本文選擇了100份紙質文檔,經過掃描儀掃描后,形成PDF文件,文件大小為45.7MB.分別采用Trip數據庫和目前流行的SQL Server2005關系數據庫對這些PDF文件進行存儲和檢索.分別從二進制文件的存儲、文檔的預覽、電子文檔的信息提取等方面以及存儲空間的利用率、檢索時間指標進行比較,結果如表1所示.
表1 關系數據庫和Trip數據庫的比較
其中存儲空間利用率按如下公式計算:
以不同的關鍵字進行100次檢索,以這些檢索時間的平均值作為平均檢索時間,計算公式如下:
從1表可以看出,雖然二者都能存儲二進制文件,但是關系數據庫不能預覽文檔,也不能提取電子文檔中的文字信息,并且關系數據庫的存儲效率和檢索時間都要劣于Trip數據庫.
本文針對電子文檔的特點,利用Trip數據庫在處理電子文檔上的優(yōu)勢,設計出了一種基于Trip數據庫的的電子文檔管理系統(tǒng).實驗結果表明,采用Trip數據庫來處理電子文檔,不僅能提高存儲空間的利用效率,而且檢索效率也要優(yōu)于傳統(tǒng)的關系數據庫.在以后的工作中,我們將利用Trip所提供的功能,來提取電子文檔中的文本信息,為下一步對電子文檔內容的直接檢索創(chuàng)造條件.
[1] 陳振宇.全文數據庫TRIP在知識管理系統(tǒng)中的應[D].北京:北京郵電大學,2005.
[2] 王偉.TIRP數據庫系統(tǒng)的優(yōu)勢[J].安徽科技,2008(4):50-51.
[3] 王振興,楊敏華,吳勰,等.檔案掃描入庫管理系統(tǒng)設計與實現(xiàn)[J].測繪科,2008,33(2):195-197.
[4] 游明星.VC++6.0中利用圖像掃描控件控制掃描儀[J].電腦編程技巧與維護,2000(10):77-78.
The Design and Implementation of Archives Management System Based on Trip Database
CHENG Chuan-peng
(Zhongyuan Institute of Technology,Zhengzhou 450007,China)
An archives management system based on trip database is designed according to the advantage of trip database on non-normative,the paper archives is transformed into electronic document and stored in the management system.Preliminary works that context of electronic document is retrieved directly is prepared.Test results show that the system improves the efficiency of data storage space utilization.
non-normative data;archives management system;trip database;text extraction
TP391.07
A
10.3969/j.issn.1671-6906.2012.01.011
1671-6906(2012)01-0044-05
2012-02-04
程傳鵬(1977-)男,河南信陽人,講師,碩士.