1.建設數字圖書館的必要性
本人調查過一些中學的圖書館,由于受經費、人員素質、館藏及網絡化建設等因素的影響,擁有數字圖書館的并不多。本人認為一個圖書館要現代化發展,必須要有數字圖書館,建設數字圖書館是加快中學信息化步伐的需要,是改變館藏現狀、提高學生綜合素質的需要,是為適應中學教學和研究性課題服務的需要。
建立現代化數字圖書館,技術人員是必不可少的,特別是當前網絡技術發展快速,數字圖書館除了硬件要跟得上,后臺設計也要有強大的支撐。后臺設計,一般使用數據庫,多數圖書館都使用SqlServer,SqlServer7.0就開始有了數據倉庫,而數據倉庫可以說是數據庫的核心部分,下面簡單介紹下基于數據倉庫的讀者服務建設。
2.使用數據倉庫的必要性
隨著當今計算機技術的發展,信息服務已經由客戶自選變成服務端的PUSH服務,基于數據庫的RSS(簡單信息聚合)隨之盛行,數字圖書館也推行RSS服務,可以讓系統自動向讀者的郵箱發送讀者訂閱的相關內容,這種RSS可以用java實現,也可以用xml,先創建一個實例,再創建一個根結點,添加根元素,然后添加主元素,如name、sex等,用save保存即可。
對一個大型圖書館來說,小型的數據庫根本無法容納太多信息,而這其中又有許多是不常用到的,或者說基本上一年才用得上一兩次,把它放在常用數據庫里,或者放在存儲器里,肯定會造成服務端存儲器運行率低,而在客戶端顯示為讀者查詢資料時間延緩,所以把數據放入數據倉庫對一個大型圖書館會比較妥當。
數字圖書館提供個性化服務,參考咨詢,公共圖書館還向政府部門提供決策參考服務,而現成數據庫大多不能完全滿足信息分析的需要,數據倉庫是為了填補這個需要而出現的。
3.關于數據倉庫的簡單介紹
上面所說的這些,也可以由普通數據庫進行,至于為什么用數據倉庫,區別在于數據倉庫的數據結構和快照功能以及信息分析功能。另外,圖書館管理系統的表結構設計剛好也與數據倉庫的相似,如借書證號的唯一,借書證號辦理時間的規律變化,圖書條形碼也是唯一的,圖書入庫時間,讀者ID號,讀書注冊時間等等,都與數據倉庫的數據結構類似。
數據倉庫突出的地方是對海量數據的支持和快速的檢索技術,而且有分析功能,能把大量的數據提煉成一些重要的信息,這是現有一些數據庫無法媲美的。數據倉庫中的數據可以儲存在數組中,這樣有規律的存放,使計算機每一次訪問I/O能訪問到大量的數據,或者說使每一次訪問I/O代價最少。另外,可以在物理層上組織好數據,使一次訪問I/O,能返回最高訪問率的大量記錄。而且數據倉庫帶來的“以數據為基礎的知識”,它實際上是某種信息,而并非現在數據庫所產生的數據,這些由數據倉庫產生的信息,帶有極大的參考性,可以讓圖書館更容易分析讀者的閱讀需求而不用限于現實中的問卷調查,可以不必局限于大眾化的閱讀,更可以使公共圖書館的決策參考服務功能現實化。
3.1 數據倉庫的特性
數據倉庫有四個特性:面向主題性、數據集成性、數據非易失性、隨時間變化性。這四個特性剛好說明,數字圖書館可以建立數據倉庫,因為數據倉庫中的數據是按照一定的主題域進行組織,數據是存放在數組中,而且是高度集成的,具有很強的穩定性,隨時間變化而呈一定規律性的。在以上讀者信息表設計中,ID號是關鍵字,Stim和etime則是關鍵字的時間元素,還有關鍵數據,如果沒有時間元素,那就構不成數據倉庫了,這種以“起始日期到結束日期”就是數據的連續組織,也就是序列數值,所以能夠用數組存儲起來。另外,數據由于其集成性,故訪問速度較快,且具分析作用。
3.2 數據倉庫的工作過程
數據倉庫其實是一個運行過程,它包括數據獲取、數據存儲、數據訪問三個過程,更確切地說應該是數據庫里面的一部分。數據倉庫是基于元數據建設的,而元數據是關于數據的數據,包括數據的數據結構、數據的操作方法和數據與數據之間的關系,元數據為訪問數據倉庫提供了一個信息目錄(informationdirectory),這個目錄全面描述了數據倉庫中都有什么數據、這些數據怎么得到的以及怎么訪問這些數據。
數據倉庫里面的事件是基于“快照”觸發的,每個數據倉庫在其內部都以“快照”的數據結構來作為中心組織的,所謂“快照”是由四個單元組成的:關鍵字;時間單元;關鍵數據;二級數據。引發快照的可以是業務活動,比如每一次新讀者的注入;也可以是規律性的時間推移標志,比如一個月的結束等等。業務活動引起的事件是隨機的,時間推移觸發的事件是有規律性的,可預知的。
4.基于讀者服務的數據倉庫
4.1 建立關于讀者服務的各數據表
在數字圖書館設置讀者服務項目,首先要求在數據庫建立各數據表,包括:讀者信息表(userid,name,sex,usertypeid,stime,etime,remark),userid為關鍵key;讀者類型表(usertypeid,usertypename,stime,etime,remRrk),usertypeid為關鍵key;書目信息表(bookid,title,author,company。indexnumber,stime,etime,remark),bookid為關鍵key;書刊內容表(contentid,contentbody,stime,etime,remark),contentid為關鍵key;書評表(idlbody,usefid,bookid,stime,enme,remark),id為關鍵key;書評內容類型表(contenttypeid,contenttypename,stime,etime,remark),contenttypeid關鍵key。這里面的stime和etime的設計是非常必要的,下面有將會分析到。
4.2 建立上述各類衷的儲存過程
如用SQL語言:
create procedure pr_table_push (@bookid int,@contentid int,@criricismid int) as
select A. indexnumber,A. ride, A. author, A. company, B.contenthody, C. criticism
from book A,content B,crificism
where A. bookid=@bookid,B. contenrid=@contentid,,C.crificismid = @crificismid
return
go
其他各儲存表,均上述代碼相似。
4.3 數據操作過程
首先建數據儲存器,建一個dataset,用來儲存各類表,以便操作,而datatable可具體使用各數據表,datarow則便于進行行的插入與刪除操作。
然后使用SQL查詢語句:
select A.indexnumber, A. ride, A. author, A. company, B.contentbody,C. criticism from book, content B.criticismwhere A. bookid=@bookid,B. contentid=@contentid, C.criticismid= @criricismid
使用數據適配器dataadapter,用executereader()遍歷,并把數據填入datatable,然后把數據裝入dataset,再用databind()進行數據綁定,具體語句這里不再詳述。最后用push mail把用dataset打包的數據發送至讀者郵箱,數據段則顯示為xml形式。
4.4 使用數據倉庫的作用分析
以上述的讀者服務模塊來講,userid是讀者信息表的關鍵字,sfime和etime則是時間單元,name、sex和remark是關鍵數據,usertypeid是二級數據。讀者的每一次借書或還書,都將觸發這個讀者數據的快照。這個時候,這個讀者與圖書館所發生的借書還書欠費等等都會被數據倉庫追蹤到,而且這些讀者歷史記錄是具有連續性的。或者一個月到了,也會觸發數據倉庫的追蹤,這就是“快照”里面的時間單元起作用。其實在數據倉庫里,還有簡要記錄這一功能,簡要記錄代表的是多個事件,是由許多詳細記錄的聚集而創建的。我們可以把讀者(比如領導)數據取值匯總等等,把一段時間的數據收集起來,創建簡要記錄,既可以讓讀者自己獲取所有自己相關的信息,也可以為我們自己圖書館提供一個分析作用,如果一條簡要記錄不夠,可以創建多條簡要記錄,不過這要在服務器上完成,因為這要管理到大量的數據。
許多圖書采購員或參考咨詢員都會抱怨,我根本不知領導的閱讀需求,或者我根本不知某類型讀者的閱讀習慣,我怎么去為他們訂購這些書籍,為他們做參考咨詢服務呢?其實,我們做參考咨詢時,必須對讀者的不同特點作個性化處理,所以與讀者進行對話時,可以進行得個性化些,而且要包括讀者有可用的書籍信息。如:
“您知道我們進購了一些關于廣州經濟研究的書籍嗎?”
“我們剛進了關于廣東省廣州市經濟政策研究……”
“我們對這批書籍進行了一次分析,選出了……,將為您提供……的服務”
這個對話過程只需要幾分鐘,然而卻可以為讀者提供個性化服務做準備。在數據倉庫里,我們會有一個讀入和分析讀者的歷史記錄,然后將這些記錄匯總為信息掃描出來,能在短時間內為參考咨詢員提供一個齊全又有用的讀者信息,也為采購員提供一個購書方向。如果可以定期由我們所設定的程序對讀者數據倉庫進行分析,那我們所需要的就是把數據倉庫分析出來的信息讀懂,因為數據倉庫會把讀者的信息分析出來匯成一個文件,那我們的參考咨詢員或者其他人員或者讀者,所需要耗費的時間將為大大減少。