段 輝, 張 凱
(1.陜西工業(yè)職業(yè)技術(shù)學(xué)院, 陜西 咸陽(yáng) 712000; 2.西部現(xiàn)代職業(yè)教育研究院, 陜西 咸陽(yáng) 712000)
進(jìn)入互聯(lián)網(wǎng)時(shí)代,各種信息和數(shù)據(jù)不斷充斥著人們的生活,尤其是隨著5G 時(shí)代的到來(lái),大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)等技術(shù)迅速發(fā)展,數(shù)據(jù)爆炸成為了新時(shí)代的一大顯著特征,如何從堆積如山的數(shù)據(jù)中快速發(fā)現(xiàn)核心問(wèn)題成為了當(dāng)下亟需研究的重點(diǎn)之一[1]。各種類型的數(shù)據(jù)大量涌現(xiàn),給圖書(shū)館的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)應(yīng)用帶來(lái)了沖擊,同時(shí)數(shù)據(jù)中又蘊(yùn)藏著巨大的價(jià)值,為圖書(shū)館的業(yè)務(wù)擴(kuò)展和服務(wù)創(chuàng)新帶來(lái)了機(jī)遇。在數(shù)字文化資源數(shù)量激增、數(shù)字服務(wù)功能拓展和用戶多元需求凸顯的背景下,為用戶提供適用且精準(zhǔn)的資源服務(wù)也成為了圖書(shū)館建設(shè)管理的追求目標(biāo)[2]。
圖書(shū)館讀者具有人數(shù)眾多、年齡不同、專業(yè)方向不同以及興趣偏好廣泛等特點(diǎn),伴隨大數(shù)據(jù)、云計(jì)算以及移動(dòng)互聯(lián)網(wǎng)等新一代信息技術(shù)在圖書(shū)館中廣泛應(yīng)用,圖書(shū)館后臺(tái)能夠捕捉讀者在館全部閱讀生命周期中的所有閱讀行為數(shù)據(jù)以及讀者特征[3],包括讀者在利用圖書(shū)館文獻(xiàn)資源的過(guò)程中會(huì)留下的讀者基本信息、入館頻次、借閱歷史、檢索記錄等大量信息。為了更好地為讀者提供相應(yīng)的服務(wù),可通過(guò)分析此類信息提取相應(yīng)的讀者特征,圖書(shū)館需依據(jù)不同的讀者特征信息來(lái)提供相應(yīng)的個(gè)性化服務(wù)。因此,數(shù)據(jù)的精準(zhǔn)提取和高效分析是圖書(shū)館提供個(gè)性化服務(wù)的必要前提[4],為有效解決該問(wèn)題,本文提出一個(gè)可直觀展示讀者特征數(shù)據(jù)的可視化系統(tǒng)設(shè)計(jì)方案。文中基于B/S 結(jié)構(gòu),在工廠模式的基礎(chǔ)上搭建Spring Boot 框架,運(yùn)用slf4j、Java 以及數(shù)據(jù)庫(kù)等設(shè)計(jì)個(gè)人閱讀信息系統(tǒng)。系統(tǒng)分別對(duì)不同年齡讀者借閱量、各類型圖書(shū)借閱量、不同年齡借閱占比等數(shù)據(jù)進(jìn)行統(tǒng)計(jì),并將其以可視化的方式呈現(xiàn),進(jìn)而明確讀者需求,提供精準(zhǔn)服務(wù),提升讀者滿意度。多次實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)系統(tǒng)能對(duì)讀者行為進(jìn)行有效的數(shù)據(jù)分析,把握讀者行為趨勢(shì),為讀者打造一個(gè)更加個(gè)性化的服務(wù)體系。
馬波介紹了大數(shù)據(jù)背景下精準(zhǔn)信息推送在移動(dòng)圖書(shū)館中的應(yīng)用研究[4],陳佳欣開(kāi)展了基于數(shù)據(jù)挖掘技術(shù)的圖書(shū)館讀者借閱行為分析研究。盡管已有高校開(kāi)始使用讀者行為分析,但還不完善。
工廠模式是常用的一種軟件開(kāi)發(fā)設(shè)計(jì)模式,這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式[5]。正如它的名字,可以像工廠一樣生產(chǎn)出想要的東西,只要提供原料。工廠模式根據(jù)產(chǎn)品是具體產(chǎn)品還是具體工廠,可分為簡(jiǎn)單工廠模式和工廠方法模式;根據(jù)工廠的抽象程度可分為工廠方法模式和抽象工廠模式[6]。工廠模式通常用于封裝和管理對(duì)象的創(chuàng)建,是一種創(chuàng)建型模式,其優(yōu)勢(shì)在于合理利用工廠模式能夠?qū)?duì)象的創(chuàng)建和使用相分離,同時(shí)減少類之間的耦合度,提高代碼復(fù)用性和擴(kuò)展性,降低成本[7]。具體原因?yàn)椋汗S模式具有解耦能力,可將對(duì)象的創(chuàng)建和使用進(jìn)行分離,一個(gè)調(diào)用者想創(chuàng)建一個(gè)對(duì)象,只要知道其名稱就可以成功調(diào)用所需功能。工廠模式創(chuàng)建的對(duì)象可復(fù)用,對(duì)于創(chuàng)建過(guò)程比較復(fù)雜且在很多地方都使用到的對(duì)象,通過(guò)工廠模式可以提高對(duì)象創(chuàng)建的代碼的復(fù)用性。
工廠模式下的軟件開(kāi)發(fā)功能擴(kuò)展性高,也更靈活,如果想增加一個(gè)產(chǎn)品,只需要擴(kuò)展一個(gè)工廠類即可[8]。使用工廠模式開(kāi)發(fā)的軟件使用成本更低,由于復(fù)雜對(duì)象通過(guò)工廠進(jìn)行統(tǒng)一管理,所以只需要修改工廠內(nèi)部的對(duì)象創(chuàng)建過(guò)程即可維護(hù)對(duì)象,從而降低成本。
個(gè)人閱讀報(bào)告單生成系統(tǒng)基于目前應(yīng)用最廣的B/S結(jié)構(gòu),采用前后端分離的開(kāi)發(fā)原則,系統(tǒng)整體架構(gòu)由客戶端、Linux 服務(wù)器以及Vertica、MySQL、Oracle 數(shù)據(jù)庫(kù)等組成,如圖1 所示。
圖1 個(gè)人閱讀報(bào)告單生成系統(tǒng)架構(gòu)
2.1.1 客戶端
客戶端即基于Web 的通用瀏覽器,用于向Web 服務(wù)器提交用戶的請(qǐng)求,并接收和解析由服務(wù)器端返回的HTML 文件,瀏覽器和Web 服務(wù)器間通過(guò)Internet 采用HTTP 協(xié)議進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸[9]。用戶通過(guò)傳遞對(duì)應(yīng)的模板信息即可獲取該模板下的數(shù)據(jù)展示,保證了系統(tǒng)的靈活性。
2.1.2 服務(wù)器
線上服務(wù)器采用Linux 操作系統(tǒng),在個(gè)人閱讀報(bào)告單生成的工廠模式下往往需要面臨多樣的數(shù)據(jù)請(qǐng)求,Linux 操作系統(tǒng)相較于Windows 服務(wù)器具有更高的穩(wěn)定性,從而可以保證多個(gè)服務(wù)高效穩(wěn)定的執(zhí)行,同時(shí)相對(duì)于Web 服務(wù)器不需要對(duì)硬件有太高的要求[10]。
2.1.3 數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是整個(gè)平臺(tái)的核心部分,也是前端數(shù)據(jù)展示的基礎(chǔ)。本文項(xiàng)目所使用的數(shù)據(jù)倉(cāng)庫(kù)Vertica 和Oracle主要用于獲取各館的館藏、流通以及讀者信息,將數(shù)據(jù)做出初步整理后存儲(chǔ)進(jìn)MySQL 數(shù)據(jù)庫(kù)中,在用戶進(jìn)行訪問(wèn)的時(shí)候,將MySQL 中整理過(guò)的數(shù)據(jù)根據(jù)客戶所選擇的模板進(jìn)行整理返回,由此提高了報(bào)告單渲染的性能,同時(shí)降低了服務(wù)器的運(yùn)行成本[11]。
系統(tǒng)主要實(shí)現(xiàn)獲取讀者辦證至今所經(jīng)歷的天數(shù)、各年齡段讀者的借閱數(shù)量、不同類型圖書(shū)的銷量、不同年齡段讀者的借閱占比以及借閱頻次最高的圖書(shū)被多少人借閱過(guò)等功能,同時(shí)將統(tǒng)計(jì)出的結(jié)果以可視化的方式展示出來(lái)[12],系統(tǒng)主要功能如圖2 所示。
圖2 系統(tǒng)主要功能
3.1.1 系統(tǒng)框架
基于工廠模式的個(gè)人閱讀報(bào)告單生成系統(tǒng)是以不同模板為基礎(chǔ),數(shù)據(jù)處理流程保持不變,通過(guò)調(diào)用不同的模板來(lái)實(shí)現(xiàn)不同需求,從而降低系統(tǒng)冗余度,增強(qiáng)使用體驗(yàn)。系統(tǒng)框架如圖3 所示。
圖3 基于工廠模式的個(gè)人閱讀報(bào)告單生成系統(tǒng)框架
3.1.2 定義模板
首先定義模板信息,以兩個(gè)模板為例,以不同的編號(hào)表示不同的模板,然后定義一個(gè)map 集合作為工廠來(lái)存放工廠信息,再將其存入到預(yù)先定義好的模板中,同時(shí)進(jìn)行錄入操作,從而將模板信息持久化。具體實(shí)現(xiàn)方法如下:
3.1.3 配置數(shù)據(jù)統(tǒng)計(jì)
根據(jù)個(gè)人閱讀報(bào)告單生成系統(tǒng)的功能需求,以及不同模板特征來(lái)配置不同模板內(nèi)部的數(shù)據(jù)統(tǒng)計(jì),具體程序如下:
3.1.4 發(fā)起模板請(qǐng)求
用戶根據(jù)自己的需求,通過(guò)指定的模板編號(hào)來(lái)獲取對(duì)應(yīng)模板,獲取相應(yīng)的結(jié)果數(shù)據(jù),并將其傳遞到前端進(jìn)行渲染,具體實(shí)現(xiàn)方式如下:
3.2.1 讀者個(gè)人入館歷程
獲取讀者辦證至今所經(jīng)歷的天數(shù),通過(guò)調(diào)用Vertica大數(shù)據(jù)平臺(tái)中的日期比較函數(shù)(DATEDIF 函數(shù))求出讀者辦證日期到報(bào)告單截止時(shí)間所隔的天數(shù),并將天數(shù)信息進(jìn)行返回。通過(guò)獲取讀者入館的各個(gè)時(shí)間段的具體信息分析讀者的入館特點(diǎn),結(jié)合讀者身份、專業(yè)等,在讀者入館后提供讀者咨詢、讀者培訓(xùn)等知識(shí)服務(wù)。
3.2.2 不同專業(yè)段借閱量
獲取各不同專業(yè)段讀者的借閱數(shù)量,通過(guò)對(duì)指定時(shí)間段下的讀者專業(yè)進(jìn)行統(tǒng)計(jì),使用to_char( )函數(shù)調(diào)出數(shù)據(jù)倉(cāng)庫(kù)中讀者的院系信息來(lái)判斷讀者的專業(yè),再將統(tǒng)計(jì)出的讀者信息與數(shù)據(jù)倉(cāng)庫(kù)中的流通信息進(jìn)行關(guān)聯(lián),得出當(dāng)前時(shí)間各專業(yè)段讀者的借閱數(shù)量、圖書(shū)分類號(hào)、圖書(shū)出版時(shí)間、出版社、著者等圖書(shū)基本信息。
3.2.3 各類型圖書(shū)借閱量
獲取不同類型圖書(shū)的借閱量并返回相關(guān)借閱排名,通過(guò)館藏信息表與流通信息表的關(guān)聯(lián)將不同書(shū)目類型進(jìn)行分組,得出不同類型圖書(shū)的借閱總數(shù),并將排名靠前的類型進(jìn)行截取返回。
3.2.4 不同年齡借閱占比
獲取不同年齡段讀者的借閱量所占百分比,先通過(guò)count 函數(shù)得出當(dāng)前時(shí)間段下讀者的借閱總數(shù);再通過(guò)對(duì)該時(shí)間段下的讀者年齡進(jìn)行統(tǒng)計(jì),使用to_char( )函數(shù)得出數(shù)據(jù)倉(cāng)庫(kù)中讀者的出生年份來(lái)判斷讀者的年齡維度;然后將統(tǒng)計(jì)出的讀者信息與數(shù)據(jù)倉(cāng)庫(kù)中的流通信息進(jìn)行關(guān)聯(lián),得出當(dāng)前時(shí)間下各年齡段讀者的借閱數(shù)量;最后通過(guò)round 函數(shù)將所有讀者的借閱數(shù)除去各年齡段讀者的借閱總數(shù),得出各年齡段讀者的借閱占比。
3.2.5 讀者借閱行為
獲取不同讀者的借閱行為,通過(guò)API 接口與圖書(shū)館自動(dòng)化系統(tǒng)關(guān)聯(lián)獲取讀者的基本信息,如借閱量、預(yù)約量、預(yù)借量、續(xù)借量、超期量、丟書(shū)量以及借閱圖書(shū)類別等。
操作系統(tǒng)為Microsoft Windows 10,開(kāi)發(fā)環(huán)境為IDEA 2021,后端編程語(yǔ)言為Java,前端使用的框架技術(shù)為VUE。
本次項(xiàng)目開(kāi)發(fā)主要用Spring Boot 框架進(jìn)行搭建,使用slf4j 來(lái)實(shí)現(xiàn)日志的打印輸出,使用Java 語(yǔ)言進(jìn)行后端開(kāi)發(fā),實(shí)現(xiàn)與前端的數(shù)據(jù)交互,通過(guò)Vertica、MySQL、Oracle 實(shí)現(xiàn)數(shù)據(jù)的獲取以及持久化操作。
通過(guò)對(duì)讀者閱讀數(shù)據(jù)的分析,本文系統(tǒng)可以輸出每位讀者專屬的讀者個(gè)人閱讀報(bào)告,該報(bào)告包含每位讀者的閱讀足跡。在讀者個(gè)人閱讀報(bào)告中,讀者可以看到自己年度圖書(shū)借閱相關(guān)數(shù)據(jù),比如借閱數(shù)量、借閱類型、偏好等個(gè)性化分析數(shù)據(jù),圖書(shū)館后臺(tái)也會(huì)針對(duì)讀者的閱讀偏好推送有針對(duì)性的推薦訂閱信息,為讀者提供更加貼心的借閱服務(wù)。讀者可選擇通過(guò)電子郵件、移動(dòng)圖書(shū)館及讀者空間等方式獲取其個(gè)人閱讀報(bào)告,達(dá)到回顧閱讀歷史、梳理閱讀軌跡并完善自身閱讀結(jié)構(gòu)的目的。
對(duì)于圖書(shū)館而言,通過(guò)分析挖掘每個(gè)讀者的個(gè)性化需求,并在讀者使用圖書(shū)館各種業(yè)務(wù)的時(shí)候進(jìn)行圖書(shū)、活動(dòng)、數(shù)字資源推薦等,將用戶分散的各種行為匯聚成有用的線索,進(jìn)而開(kāi)展數(shù)據(jù)挖掘,實(shí)現(xiàn)服務(wù)、業(yè)務(wù)決策和創(chuàng)新的科學(xué)化,避免缺乏數(shù)據(jù)支撐的“拍腦袋”式經(jīng)驗(yàn)決策。同時(shí),采用分析挖掘技術(shù)對(duì)圖書(shū)館采訪數(shù)據(jù)庫(kù)和流通數(shù)據(jù)庫(kù)的歷史記錄數(shù)據(jù)進(jìn)行分析,得到借閱圖書(shū)的相關(guān)集合,根據(jù)這些集合來(lái)指導(dǎo)圖書(shū)館人員的工作,優(yōu)化館藏結(jié)構(gòu),真正實(shí)現(xiàn)讀者至上的服務(wù)理念。
本文基于B/S 結(jié)構(gòu),在工廠模式的基礎(chǔ)上采用Spring Boot 框架進(jìn)行搭建,運(yùn)用slf4j、Java 以及Vertica、MySQL、Oracle 數(shù)據(jù)庫(kù)等研發(fā)了圖書(shū)館個(gè)人閱讀報(bào)告單生成系統(tǒng),實(shí)現(xiàn)讀者及館員對(duì)個(gè)人或群體閱讀行為數(shù)據(jù)的查詢。
在圖書(shū)館個(gè)人閱讀報(bào)告單生成系統(tǒng)中,可以對(duì)讀者借閱信息進(jìn)行記錄,并在此基礎(chǔ)上進(jìn)行個(gè)性化分析,進(jìn)行有針對(duì)性的閱讀推薦。讀者通過(guò)本文系統(tǒng)生成的個(gè)人閱讀賬單不僅可以回顧自己全年的閱讀足跡,了解自身的閱讀習(xí)慣,還可以總結(jié)自身云閱讀能力及閱讀水平,從而為下一年度閱讀計(jì)劃的制定做參考。
對(duì)圖書(shū)館而言,在讀者個(gè)人閱讀賬單中加入的評(píng)語(yǔ)及個(gè)性化圖標(biāo)讓閱讀趣味提升,達(dá)到了吸引讀者走進(jìn)圖書(shū)館、了解圖書(shū)館、參與圖書(shū)館活動(dòng)的閱讀推廣目的,同時(shí)更好地宣傳了圖書(shū)館的相關(guān)服務(wù)。