段 輝, 張 凱
(1.陜西工業職業技術學院, 陜西 咸陽 712000; 2.西部現代職業教育研究院, 陜西 咸陽 712000)
進入互聯網時代,各種信息和數據不斷充斥著人們的生活,尤其是隨著5G 時代的到來,大數據、云計算和物聯網等技術迅速發展,數據爆炸成為了新時代的一大顯著特征,如何從堆積如山的數據中快速發現核心問題成為了當下亟需研究的重點之一[1]。各種類型的數據大量涌現,給圖書館的數據存儲和數據應用帶來了沖擊,同時數據中又蘊藏著巨大的價值,為圖書館的業務擴展和服務創新帶來了機遇。在數字文化資源數量激增、數字服務功能拓展和用戶多元需求凸顯的背景下,為用戶提供適用且精準的資源服務也成為了圖書館建設管理的追求目標[2]。
圖書館讀者具有人數眾多、年齡不同、專業方向不同以及興趣偏好廣泛等特點,伴隨大數據、云計算以及移動互聯網等新一代信息技術在圖書館中廣泛應用,圖書館后臺能夠捕捉讀者在館全部閱讀生命周期中的所有閱讀行為數據以及讀者特征[3],包括讀者在利用圖書館文獻資源的過程中會留下的讀者基本信息、入館頻次、借閱歷史、檢索記錄等大量信息。為了更好地為讀者提供相應的服務,可通過分析此類信息提取相應的讀者特征,圖書館需依據不同的讀者特征信息來提供相應的個性化服務。因此,數據的精準提取和高效分析是圖書館提供個性化服務的必要前提[4],為有效解決該問題,本文提出一個可直觀展示讀者特征數據的可視化系統設計方案。文中基于B/S 結構,在工廠模式的基礎上搭建Spring Boot 框架,運用slf4j、Java 以及數據庫等設計個人閱讀信息系統。系統分別對不同年齡讀者借閱量、各類型圖書借閱量、不同年齡借閱占比等數據進行統計,并將其以可視化的方式呈現,進而明確讀者需求,提供精準服務,提升讀者滿意度。多次實驗結果表明,所設計系統能對讀者行為進行有效的數據分析,把握讀者行為趨勢,為讀者打造一個更加個性化的服務體系。
馬波介紹了大數據背景下精準信息推送在移動圖書館中的應用研究[4],陳佳欣開展了基于數據挖掘技術的圖書館讀者借閱行為分析研究。盡管已有高校開始使用讀者行為分析,但還不完善。
工廠模式是常用的一種軟件開發設計模式,這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式[5]。正如它的名字,可以像工廠一樣生產出想要的東西,只要提供原料。工廠模式根據產品是具體產品還是具體工廠,可分為簡單工廠模式和工廠方法模式;根據工廠的抽象程度可分為工廠方法模式和抽象工廠模式[6]。工廠模式通常用于封裝和管理對象的創建,是一種創建型模式,其優勢在于合理利用工廠模式能夠將對象的創建和使用相分離,同時減少類之間的耦合度,提高代碼復用性和擴展性,降低成本[7]。具體原因為:工廠模式具有解耦能力,可將對象的創建和使用進行分離,一個調用者想創建一個對象,只要知道其名稱就可以成功調用所需功能。工廠模式創建的對象可復用,對于創建過程比較復雜且在很多地方都使用到的對象,通過工廠模式可以提高對象創建的代碼的復用性。
工廠模式下的軟件開發功能擴展性高,也更靈活,如果想增加一個產品,只需要擴展一個工廠類即可[8]。使用工廠模式開發的軟件使用成本更低,由于復雜對象通過工廠進行統一管理,所以只需要修改工廠內部的對象創建過程即可維護對象,從而降低成本。
個人閱讀報告單生成系統基于目前應用最廣的B/S結構,采用前后端分離的開發原則,系統整體架構由客戶端、Linux 服務器以及Vertica、MySQL、Oracle 數據庫等組成,如圖1 所示。

圖1 個人閱讀報告單生成系統架構
2.1.1 客戶端
客戶端即基于Web 的通用瀏覽器,用于向Web 服務器提交用戶的請求,并接收和解析由服務器端返回的HTML 文件,瀏覽器和Web 服務器間通過Internet 采用HTTP 協議進行網絡數據傳輸[9]。用戶通過傳遞對應的模板信息即可獲取該模板下的數據展示,保證了系統的靈活性。
2.1.2 服務器
線上服務器采用Linux 操作系統,在個人閱讀報告單生成的工廠模式下往往需要面臨多樣的數據請求,Linux 操作系統相較于Windows 服務器具有更高的穩定性,從而可以保證多個服務高效穩定的執行,同時相對于Web 服務器不需要對硬件有太高的要求[10]。
2.1.3 數據庫
數據庫是整個平臺的核心部分,也是前端數據展示的基礎。本文項目所使用的數據倉庫Vertica 和Oracle主要用于獲取各館的館藏、流通以及讀者信息,將數據做出初步整理后存儲進MySQL 數據庫中,在用戶進行訪問的時候,將MySQL 中整理過的數據根據客戶所選擇的模板進行整理返回,由此提高了報告單渲染的性能,同時降低了服務器的運行成本[11]。
系統主要實現獲取讀者辦證至今所經歷的天數、各年齡段讀者的借閱數量、不同類型圖書的銷量、不同年齡段讀者的借閱占比以及借閱頻次最高的圖書被多少人借閱過等功能,同時將統計出的結果以可視化的方式展示出來[12],系統主要功能如圖2 所示。

圖2 系統主要功能
3.1.1 系統框架
基于工廠模式的個人閱讀報告單生成系統是以不同模板為基礎,數據處理流程保持不變,通過調用不同的模板來實現不同需求,從而降低系統冗余度,增強使用體驗。系統框架如圖3 所示。

圖3 基于工廠模式的個人閱讀報告單生成系統框架
3.1.2 定義模板
首先定義模板信息,以兩個模板為例,以不同的編號表示不同的模板,然后定義一個map 集合作為工廠來存放工廠信息,再將其存入到預先定義好的模板中,同時進行錄入操作,從而將模板信息持久化。具體實現方法如下:


3.1.3 配置數據統計
根據個人閱讀報告單生成系統的功能需求,以及不同模板特征來配置不同模板內部的數據統計,具體程序如下:

3.1.4 發起模板請求
用戶根據自己的需求,通過指定的模板編號來獲取對應模板,獲取相應的結果數據,并將其傳遞到前端進行渲染,具體實現方式如下:

3.2.1 讀者個人入館歷程
獲取讀者辦證至今所經歷的天數,通過調用Vertica大數據平臺中的日期比較函數(DATEDIF 函數)求出讀者辦證日期到報告單截止時間所隔的天數,并將天數信息進行返回。通過獲取讀者入館的各個時間段的具體信息分析讀者的入館特點,結合讀者身份、專業等,在讀者入館后提供讀者咨詢、讀者培訓等知識服務。
3.2.2 不同專業段借閱量
獲取各不同專業段讀者的借閱數量,通過對指定時間段下的讀者專業進行統計,使用to_char( )函數調出數據倉庫中讀者的院系信息來判斷讀者的專業,再將統計出的讀者信息與數據倉庫中的流通信息進行關聯,得出當前時間各專業段讀者的借閱數量、圖書分類號、圖書出版時間、出版社、著者等圖書基本信息。
3.2.3 各類型圖書借閱量
獲取不同類型圖書的借閱量并返回相關借閱排名,通過館藏信息表與流通信息表的關聯將不同書目類型進行分組,得出不同類型圖書的借閱總數,并將排名靠前的類型進行截取返回。
3.2.4 不同年齡借閱占比
獲取不同年齡段讀者的借閱量所占百分比,先通過count 函數得出當前時間段下讀者的借閱總數;再通過對該時間段下的讀者年齡進行統計,使用to_char( )函數得出數據倉庫中讀者的出生年份來判斷讀者的年齡維度;然后將統計出的讀者信息與數據倉庫中的流通信息進行關聯,得出當前時間下各年齡段讀者的借閱數量;最后通過round 函數將所有讀者的借閱數除去各年齡段讀者的借閱總數,得出各年齡段讀者的借閱占比。
3.2.5 讀者借閱行為
獲取不同讀者的借閱行為,通過API 接口與圖書館自動化系統關聯獲取讀者的基本信息,如借閱量、預約量、預借量、續借量、超期量、丟書量以及借閱圖書類別等。
操作系統為Microsoft Windows 10,開發環境為IDEA 2021,后端編程語言為Java,前端使用的框架技術為VUE。
本次項目開發主要用Spring Boot 框架進行搭建,使用slf4j 來實現日志的打印輸出,使用Java 語言進行后端開發,實現與前端的數據交互,通過Vertica、MySQL、Oracle 實現數據的獲取以及持久化操作。
通過對讀者閱讀數據的分析,本文系統可以輸出每位讀者專屬的讀者個人閱讀報告,該報告包含每位讀者的閱讀足跡。在讀者個人閱讀報告中,讀者可以看到自己年度圖書借閱相關數據,比如借閱數量、借閱類型、偏好等個性化分析數據,圖書館后臺也會針對讀者的閱讀偏好推送有針對性的推薦訂閱信息,為讀者提供更加貼心的借閱服務。讀者可選擇通過電子郵件、移動圖書館及讀者空間等方式獲取其個人閱讀報告,達到回顧閱讀歷史、梳理閱讀軌跡并完善自身閱讀結構的目的。
對于圖書館而言,通過分析挖掘每個讀者的個性化需求,并在讀者使用圖書館各種業務的時候進行圖書、活動、數字資源推薦等,將用戶分散的各種行為匯聚成有用的線索,進而開展數據挖掘,實現服務、業務決策和創新的科學化,避免缺乏數據支撐的“拍腦袋”式經驗決策。同時,采用分析挖掘技術對圖書館采訪數據庫和流通數據庫的歷史記錄數據進行分析,得到借閱圖書的相關集合,根據這些集合來指導圖書館人員的工作,優化館藏結構,真正實現讀者至上的服務理念。
本文基于B/S 結構,在工廠模式的基礎上采用Spring Boot 框架進行搭建,運用slf4j、Java 以及Vertica、MySQL、Oracle 數據庫等研發了圖書館個人閱讀報告單生成系統,實現讀者及館員對個人或群體閱讀行為數據的查詢。
在圖書館個人閱讀報告單生成系統中,可以對讀者借閱信息進行記錄,并在此基礎上進行個性化分析,進行有針對性的閱讀推薦。讀者通過本文系統生成的個人閱讀賬單不僅可以回顧自己全年的閱讀足跡,了解自身的閱讀習慣,還可以總結自身云閱讀能力及閱讀水平,從而為下一年度閱讀計劃的制定做參考。
對圖書館而言,在讀者個人閱讀賬單中加入的評語及個性化圖標讓閱讀趣味提升,達到了吸引讀者走進圖書館、了解圖書館、參與圖書館活動的閱讀推廣目的,同時更好地宣傳了圖書館的相關服務。