李金陽(yáng)
(蘇州市吳中區(qū)圖書(shū)館 江蘇蘇州 215128)
在計(jì)算機(jī)科學(xué)中,圖形作為一種特定的數(shù)據(jù)結(jié)構(gòu),用于表達(dá)數(shù)據(jù)之間的復(fù)雜關(guān)系,如社交關(guān)系、組織架構(gòu)、交通信息、網(wǎng)絡(luò)拓?fù)涞鹊?。在圖計(jì)算中,基本的數(shù)據(jù)結(jié)構(gòu)表達(dá)式是:G=(V,E),V=vertex(節(jié)點(diǎn)),E=edge(邊)。圖形結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)一般以節(jié)點(diǎn)和邊來(lái)表現(xiàn),也可以在節(jié)點(diǎn)上增加鍵值對(duì)屬性。圖數(shù)據(jù)庫(kù)是NoSQL(非關(guān)系型數(shù)據(jù)庫(kù))的一種,它應(yīng)用圖形數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)(節(jié)點(diǎn)、屬性和邊)存儲(chǔ)數(shù)據(jù)實(shí)體和相互之間的關(guān)系信息[1]。節(jié)點(diǎn)和邊是圖數(shù)據(jù)庫(kù)模型的基礎(chǔ),節(jié)點(diǎn)通過(guò)邊組織起來(lái),按照相互的關(guān)系組成復(fù)雜的圖結(jié)構(gòu)模型。節(jié)點(diǎn)和邊分別有很多屬性,節(jié)點(diǎn)通常用來(lái)表示實(shí)體,邊具有方向性以及多個(gè)屬性的鍵/值對(duì)(keyvalue pair),其中方向性既可以單向,也可以雙向。圖數(shù)據(jù)庫(kù)具備圖形結(jié)構(gòu)數(shù)據(jù)的原生存儲(chǔ)和遍歷能力,由于圖形數(shù)據(jù)結(jié)構(gòu)關(guān)系變化的多樣性,圖數(shù)據(jù)庫(kù)適合對(duì)數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜的關(guān)聯(lián)關(guān)系、動(dòng)態(tài)關(guān)系變化較快的海量數(shù)據(jù)進(jìn)行存儲(chǔ)和管理,可以對(duì)數(shù)據(jù)關(guān)聯(lián)關(guān)系進(jìn)行快速匹配、遍歷和查找。圖數(shù)據(jù)庫(kù)的基本存儲(chǔ)結(jié)構(gòu)如下:
節(jié)點(diǎn):代表數(shù)據(jù)實(shí)體,如讀者、書(shū)籍、圖書(shū)館等。
屬性:節(jié)點(diǎn)的附屬信息,如讀者的姓名、性別,書(shū)籍的書(shū)名、出版社、ISBN等信息。
邊:表示節(jié)點(diǎn)之間的關(guān)系,如讀者節(jié)點(diǎn)與書(shū)籍節(jié)點(diǎn)的借閱關(guān)系等。
圖1 圖形數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)關(guān)系
數(shù)十年以來(lái),關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)以“表格化結(jié)構(gòu)”的方式對(duì)實(shí)際中的聯(lián)系進(jìn)行建模,對(duì)聚合數(shù)據(jù)進(jìn)行優(yōu)化,在結(jié)構(gòu)化數(shù)據(jù)的處理方面產(chǎn)生了非常重要的作用。但是關(guān)系型數(shù)據(jù)庫(kù)較難適應(yīng)快速的數(shù)據(jù)變化,對(duì)于動(dòng)態(tài)變化的數(shù)據(jù)結(jié)構(gòu)關(guān)系較難管理。在處理“聯(lián)系”的具體問(wèn)題上,任何強(qiáng)聯(lián)系增強(qiáng)都會(huì)導(dǎo)致數(shù)據(jù)庫(kù)連接操作的增加,在這種情況下,關(guān)系型數(shù)據(jù)庫(kù)的連接查詢(xún)方式顯得非?!鞍嘿F”,并且在反向查詢(xún)方面代價(jià)更高。例如,在探究社交網(wǎng)絡(luò)查詢(xún)朋友鏈的關(guān)系時(shí),SQL語(yǔ)句的層級(jí)結(jié)構(gòu)使用了遞歸連接,遞歸問(wèn)題的連表查詢(xún)具有非常高的復(fù)雜度,查詢(xún)效率非常低。以我們的社交關(guān)系為例,它是人與人密集關(guān)聯(lián)的網(wǎng)狀模型,一個(gè)普適性的Schema或切割成無(wú)關(guān)聯(lián)性的聚合數(shù)據(jù)都難以展現(xiàn)它的復(fù)雜度。但假如我們采用“圖建?!钡姆绞?,則可以在現(xiàn)實(shí)世界與模型的數(shù)據(jù)庫(kù)之間建立更貼切的聯(lián)系。通過(guò)“圖建?!钡姆绞?,充滿(mǎn)聯(lián)系的世界不再抽象為幾個(gè)簡(jiǎn)單的表格,而是由節(jié)點(diǎn)、聯(lián)系和屬性組成的關(guān)系圖。因此,圖數(shù)據(jù)庫(kù)更適用于相互之間高度關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),它在處理多數(shù)據(jù)關(guān)系建模、數(shù)據(jù)關(guān)系動(dòng)態(tài)擴(kuò)展、實(shí)時(shí)遍歷數(shù)據(jù)關(guān)系等方面具有諸多優(yōu)點(diǎn),具體為:①可以通過(guò)更貼近現(xiàn)實(shí)關(guān)系的方式進(jìn)行圖數(shù)據(jù)的建模;②通過(guò)圖論的遍歷方式訪問(wèn)圖結(jié)構(gòu)數(shù)據(jù);③在數(shù)據(jù)集增大時(shí),它的性能趨向于保持不變[2];④通過(guò)特殊的查詢(xún)語(yǔ)言可以直接訪問(wèn)數(shù)據(jù)[3];⑤基于圖結(jié)構(gòu)的天生可擴(kuò)展能力,具備更佳的靈活性。
在計(jì)算機(jī)科學(xué)的領(lǐng)域,圖形是最為靈活的數(shù)據(jù)結(jié)構(gòu)之一。圖形數(shù)據(jù)結(jié)構(gòu)的遍歷算法從開(kāi)始節(jié)點(diǎn)出發(fā),通過(guò)與之相連的節(jié)點(diǎn)進(jìn)行查詢(xún)。圖的搜索算法包括廣度優(yōu)先和深度優(yōu)先兩種:
廣度優(yōu)先(breadth first)搜索:是最為簡(jiǎn)單和便捷的圖搜索算法之一,這種查找方法在很多應(yīng)用中都非常有用,也是很多圖形算法的基礎(chǔ)和原型。圖的廣度優(yōu)先遍歷類(lèi)似于樹(shù)的層序遍歷,它的思想是從一個(gè)頂點(diǎn)V0開(kāi)始,輻射狀地優(yōu)先遍歷其周?chē)^廣的區(qū)域。它屬于一種盲目的搜索方法,徹底搜索整個(gè)圖數(shù)據(jù)結(jié)構(gòu),直到找到結(jié)果為止。
深度優(yōu)先(depth first)搜索:圖的深度優(yōu)先搜索和樹(shù)的先序遍歷較為類(lèi)似,它的搜索思想是:從第一個(gè)節(jié)點(diǎn)V0出發(fā),依次從它的各個(gè)未被訪問(wèn)的鄰接點(diǎn)出發(fā)深度優(yōu)先搜索遍歷圖,直至圖中所有和V0有路徑相通的頂點(diǎn)都被訪問(wèn)到。若尚有其他頂點(diǎn)未被訪問(wèn)到,則另選一個(gè)未被訪問(wèn)的頂點(diǎn)作起始點(diǎn),重復(fù)上述過(guò)程,直至圖中所有頂點(diǎn)都被訪問(wèn)到為止。這是一種基于遞歸的搜索過(guò)程。
很多知名的圖數(shù)據(jù)庫(kù)采用原生圖存儲(chǔ),是專(zhuān)門(mén)為存儲(chǔ)、搜索和管理圖而設(shè)計(jì)和優(yōu)化的。這些圖數(shù)據(jù)庫(kù)的圖計(jì)算引擎技術(shù)支持在大數(shù)據(jù)集上使用圖形理論的算法,并對(duì)批處理大規(guī)模數(shù)據(jù)進(jìn)行優(yōu)化。當(dāng)我們把實(shí)體事物關(guān)系構(gòu)建成圖數(shù)據(jù)庫(kù)的實(shí)例模型,很多關(guān)聯(lián)型的用例和數(shù)據(jù)模型采用圖數(shù)據(jù)庫(kù)可以使性能提升一個(gè)甚至幾個(gè)數(shù)量級(jí),而且圖數(shù)據(jù)庫(kù)還能提供非常靈活的數(shù)據(jù)構(gòu)建方式。同樣的模型如果采用關(guān)系型數(shù)據(jù)庫(kù)建模,將造成大量表連接、非空邏輯檢查,同時(shí)關(guān)聯(lián)關(guān)系的連通性增強(qiáng)都將增加數(shù)據(jù)庫(kù)表之間的連接操作,從而帶來(lái)巨大的性能開(kāi)銷(xiāo)。
我們以一個(gè)社交關(guān)系關(guān)注深度查詢(xún)的例子來(lái)比較關(guān)系型數(shù)據(jù)庫(kù)和圖數(shù)據(jù)庫(kù)的查詢(xún)性能(關(guān)系型數(shù)據(jù)庫(kù)采用MySQL,圖數(shù)據(jù)庫(kù)采用Neo4j)。
采用MySQL對(duì)個(gè)人的關(guān)注關(guān)系進(jìn)行建模,結(jié)構(gòu)如下:
圖2 關(guān)系型數(shù)據(jù)庫(kù)社交關(guān)系建模
采用Neo4j對(duì)個(gè)人的關(guān)注關(guān)系進(jìn)行建模,關(guān)聯(lián)結(jié)構(gòu)如下:
圖3 圖數(shù)據(jù)庫(kù)社交關(guān)系建模
當(dāng)查詢(xún)“某人的關(guān)注的關(guān)注”這項(xiàng)深度為2度的內(nèi)容時(shí),采用SQL查詢(xún)代碼將進(jìn)行兩次的JOIN操作,如果查詢(xún)深度為4度以上的關(guān)注關(guān)系時(shí),遞歸的連表查詢(xún)使得時(shí)間和空間復(fù)雜度都非常高,多重JOIN查詢(xún)效率極為低下,查詢(xún)時(shí)間呈指數(shù)級(jí)增加,開(kāi)銷(xiāo)非常大;而如果采用圖數(shù)據(jù)庫(kù)進(jìn)行關(guān)注關(guān)系的查詢(xún),基于路徑遍歷的圖形數(shù)據(jù)結(jié)構(gòu)操作與數(shù)據(jù)本身的關(guān)聯(lián)結(jié)構(gòu)高度一致,隨著查詢(xún)深度的增加,查詢(xún)時(shí)間是線性增長(zhǎng),響應(yīng)時(shí)間表現(xiàn)非常平坦。在超過(guò)3度關(guān)聯(lián)關(guān)系查詢(xún)時(shí),圖數(shù)據(jù)庫(kù)的性能就大幅領(lǐng)先于關(guān)系型數(shù)據(jù)庫(kù)了。在對(duì)100萬(wàn)個(gè)用戶(hù)的數(shù)據(jù)集進(jìn)行查詢(xún)時(shí),兩者性能對(duì)比如下:
表1 關(guān)系型數(shù)據(jù)庫(kù)和圖數(shù)據(jù)庫(kù)深度查詢(xún)性能對(duì)比
從這個(gè)簡(jiǎn)單的例子我們可以看出,在面對(duì)大量且復(fù)雜的數(shù)據(jù)連接查詢(xún)時(shí),圖數(shù)據(jù)庫(kù)展現(xiàn)出非常優(yōu)秀的性能,基于圖形的算法能夠快速遍歷圖中的節(jié)點(diǎn)和關(guān)系。在大數(shù)據(jù)時(shí)代,圖數(shù)據(jù)庫(kù)非常適合特定情況下復(fù)雜海量數(shù)據(jù)的建模和遍歷,具有更好的靈活性和可擴(kuò)展性。
Neo4j是當(dāng)前較為主流和先進(jìn)的原生圖數(shù)據(jù)庫(kù)之一,提供原生的圖數(shù)據(jù)存儲(chǔ)、檢索和處理。它由Neo Technology支持,從2003年開(kāi)始開(kāi)發(fā),1.0版本發(fā)布于2010年,2.0版本發(fā)布于2013年。經(jīng)過(guò)十多年的發(fā)展,Neo4j獲得越來(lái)越高的關(guān)注度,它已經(jīng)從一個(gè)Java領(lǐng)域內(nèi)的圖數(shù)據(jù)庫(kù)逐漸發(fā)展成為適應(yīng)多語(yǔ)言多框架的圖數(shù)據(jù)庫(kù)。Neo4j支持ACID、集群、備份和故障轉(zhuǎn)移,具有較高的可用性和穩(wěn)定性;它具備非常好的直觀性,通過(guò)圖形化的界面表示節(jié)點(diǎn)和關(guān)系;同時(shí)它具備較高的可擴(kuò)展性,能夠承載上億的節(jié)點(diǎn)、關(guān)系和屬性,通過(guò)REST接口或者面向?qū)ο蟮腏AVA API進(jìn)行訪問(wèn)。Neo4j的各個(gè)特性貼合圖形數(shù)據(jù)結(jié)構(gòu),其各部分的內(nèi)容、特點(diǎn)以及數(shù)據(jù)量支撐情況如下:
節(jié)點(diǎn):節(jié)點(diǎn)是主要的數(shù)據(jù)元素;節(jié)點(diǎn)通過(guò)關(guān)系連接到其他節(jié)點(diǎn);節(jié)點(diǎn)可以具有一個(gè)或多個(gè)屬性(存儲(chǔ)為鍵/值對(duì)的屬性);節(jié)點(diǎn)有一個(gè)或多個(gè)標(biāo)簽,用于描述其在圖表中的作用。
關(guān)系:關(guān)系連接兩個(gè)節(jié)點(diǎn);關(guān)系是方向性的;節(jié)點(diǎn)可以有多個(gè)甚至遞歸的關(guān)系;關(guān)系可以有一個(gè)或多個(gè)屬性(即存儲(chǔ)為鍵/值對(duì)的屬性)。
屬性:屬性是命名值,其中名稱(chēng)(或鍵)是字符串;屬性可以被索引和約束;可以從多個(gè)屬性創(chuàng)建復(fù)合索引。
標(biāo)簽:標(biāo)簽用于將節(jié)點(diǎn)分組;一個(gè)節(jié)點(diǎn)可以具有多個(gè)標(biāo)簽;對(duì)標(biāo)簽進(jìn)行索引可以加速在圖中查找節(jié)點(diǎn)。
表2 Neo4j各部分?jǐn)?shù)據(jù)量支撐情況[4]
Neo4j圖數(shù)據(jù)庫(kù)的不同部分(節(jié)點(diǎn)、關(guān)系、屬性、標(biāo)簽)分別保存在不同的存儲(chǔ)文件(store file)中,Neo4j對(duì)這些存儲(chǔ)文件作了專(zhuān)門(mén)的設(shè)計(jì)和優(yōu)化,以提升存儲(chǔ)和訪問(wèn)效率,Neo4j運(yùn)行時(shí)引擎可以對(duì)這些文件格式進(jìn)行高效的查找和遍歷。其中的核心特點(diǎn)之一是Neo4j按照免索引臨近原則存儲(chǔ)數(shù)據(jù),這樣當(dāng)執(zhí)行遍歷時(shí)Neo4j能夠直接跟隨指針連接節(jié)點(diǎn)和關(guān)系,相對(duì)于關(guān)系型數(shù)據(jù)庫(kù)的非免索引鄰近存儲(chǔ),這種類(lèi)型的訪問(wèn)速度會(huì)更加快[5]。
表3 Neo4j主存儲(chǔ)文件及相關(guān)的屬性
在Neo4j中,節(jié)點(diǎn)、關(guān)系和屬性等圖的組成部分都是基于Neo4j內(nèi)部的編號(hào)進(jìn)行訪問(wèn)的,而且這些元素是定長(zhǎng)存儲(chǔ)的。以節(jié)點(diǎn)為例,第1個(gè)字節(jié)是標(biāo)志位,表示“是否正在使用”,接下來(lái)4個(gè)字節(jié)表示關(guān)聯(lián)到該節(jié)點(diǎn)的第一個(gè)關(guān)系,再接下來(lái)的4個(gè)字節(jié)表示該節(jié)點(diǎn)第一個(gè)屬性的編號(hào),其存儲(chǔ)結(jié)構(gòu)如下圖所示:
圖4 Neo4j節(jié)點(diǎn)的存儲(chǔ)結(jié)構(gòu)
這樣設(shè)計(jì)的優(yōu)點(diǎn)在于,知道了某節(jié)點(diǎn)/關(guān)系/屬性的內(nèi)部編號(hào),就能直接算出該編號(hào)在對(duì)應(yīng)文件中的偏移位置,直接進(jìn)行訪問(wèn)。也就是說(shuō)在圖的遍歷過(guò)程中不需要基于索引掃描就可以直接找到該元素。例如,我們要查找內(nèi)部編號(hào)為200的相關(guān)數(shù)據(jù),那么就能夠直接計(jì)算出這一數(shù)據(jù)將會(huì)在節(jié)點(diǎn)存儲(chǔ)文件中從2 800字節(jié)開(kāi)始(14字節(jié) * 節(jié)點(diǎn)編號(hào)200)。通過(guò)這樣的存儲(chǔ)方式,圖數(shù)據(jù)庫(kù)計(jì)算這些數(shù)據(jù)起始位置的時(shí)間復(fù)雜度,將遠(yuǎn)小于搜索一個(gè)函數(shù)的時(shí)間復(fù)雜度。當(dāng)涉及大量數(shù)據(jù)時(shí),這會(huì)帶來(lái)顯著的性能提高,這也是Neo4j具有較高遍歷和檢索性能的原因之一。
Neo4j有基于自身優(yōu)化的圖形搜索算法,也具備一套自身的查詢(xún)語(yǔ)言解析系統(tǒng)。Cypher是幾種用來(lái)描述和查詢(xún)屬性圖的語(yǔ)言之一,也是Neo4j采用的圖數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言。Cypher是一種簡(jiǎn)潔且富有表現(xiàn)力的語(yǔ)言,以精確的方式程序化地描述圖結(jié)構(gòu)。Neo4j使用Cypher對(duì)圖形數(shù)據(jù)進(jìn)行增刪查改(CRUD)操作。在搜索功能中,Cypher語(yǔ)言由start、match、where、return四個(gè)部分組成:
start:在圖中指定一個(gè)或多個(gè)起始節(jié)點(diǎn),可以通過(guò)索引查找獲得,也可以通過(guò)節(jié)點(diǎn)的編號(hào)直接獲得;
match:圖形的匹配模式,也是實(shí)例化的需求部分;
where:提供過(guò)濾模式匹配結(jié)果的條件;
頂崗實(shí)習(xí)是高校人才培養(yǎng)中的重要一環(huán),是學(xué)生在校完成基礎(chǔ)技術(shù)技能的學(xué)習(xí)后,去專(zhuān)業(yè)對(duì)口企業(yè)參與實(shí)際生產(chǎn)過(guò)程,運(yùn)用所學(xué)知識(shí)和技能,完成一定生產(chǎn)任務(wù)的一種實(shí)踐性教學(xué)形式,是培養(yǎng)學(xué)生進(jìn)一步獲得實(shí)踐技能、創(chuàng)新意識(shí)及創(chuàng)業(yè)精神的重要途徑,在整個(gè)高職教育過(guò)程中占有舉足輕重的地位。實(shí)現(xiàn)頂崗實(shí)習(xí)過(guò)程的規(guī)范管理對(duì)提高頂崗實(shí)習(xí)的質(zhì)量和效果有著重要意義。
return:用來(lái)指明在已經(jīng)匹配查詢(xún)的數(shù)據(jù)中,哪些節(jié)點(diǎn)、關(guān)系和屬性是需要返回給客戶(hù)端的。
舉例:從用戶(hù)Tom出發(fā),搜索有同學(xué)關(guān)系(CLASSMATE)的人:
從大量的應(yīng)用案例可以證明,Cypher可用性較高,不僅能實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)SQL語(yǔ)言的相關(guān)功能,還能實(shí)現(xiàn)SQL語(yǔ)言不具備的遍歷查找功能。Neo4j圖數(shù)據(jù)庫(kù)憑借其出色的設(shè)計(jì)思想、高可用的框架、高性能的存儲(chǔ)結(jié)構(gòu)、簡(jiǎn)易靈活的配套語(yǔ)言,在大數(shù)據(jù)時(shí)代的數(shù)據(jù)建模、檢索優(yōu)化、社交網(wǎng)絡(luò)等方面發(fā)揮著越來(lái)越重要的作用。
在關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)建模中,將事物的邏輯結(jié)構(gòu)歸結(jié)為滿(mǎn)足一定條件的二維表中的元素,這種表就稱(chēng)為關(guān)系表,是使用實(shí)體(Entity)對(duì)這類(lèi)事物進(jìn)行抽象的結(jié)果。這樣的模型主要描述的是經(jīng)過(guò)抽象后的實(shí)體之間的關(guān)系,而并非表述自然事物的實(shí)例。圖數(shù)據(jù)庫(kù)的數(shù)據(jù)建模更加貼近自然,它沒(méi)有對(duì)事物進(jìn)行抽象和聚類(lèi),描述的是具體事物和事物之間的聯(lián)系。圖數(shù)據(jù)模型中的節(jié)點(diǎn)對(duì)應(yīng)的就是具體事物實(shí)例。如果要對(duì)事物實(shí)例進(jìn)行聚類(lèi)和抽象,可以使用標(biāo)簽進(jìn)行標(biāo)識(shí),與關(guān)系數(shù)據(jù)模型不一樣的是,關(guān)系數(shù)據(jù)模型中的表是強(qiáng)制性約束的,而圖數(shù)據(jù)模型中的標(biāo)簽是可選擇性的,更具有可擴(kuò)展性和靈活性。因此,圖數(shù)據(jù)建模更適合關(guān)聯(lián)關(guān)系復(fù)雜、不斷演化的、增量式迭代式的應(yīng)用場(chǎng)景和軟件開(kāi)發(fā)實(shí)踐案例。
表4 圖數(shù)據(jù)庫(kù)元素建模功能
我們以圖書(shū)館最基本的業(yè)務(wù)模式來(lái)描述Neo4j圖數(shù)據(jù)庫(kù)的建模過(guò)程,以及圍繞不斷新增的業(yè)務(wù)需求來(lái)不斷迭代完善這個(gè)數(shù)據(jù)模型。
首先構(gòu)建一個(gè)讀者借閱圖書(shū)的模型:
圖5 圖書(shū)館讀者模型圖(1)
然后加入讀者喜好和評(píng)論圖書(shū)功能:
圖6 圖書(shū)館讀者模型圖(2)
示例代碼:
最后加入讀者間的社交功能:
圖7 圖書(shū)館讀者模型圖(3)
示例代碼:
以上是一個(gè)比較簡(jiǎn)單的圖數(shù)據(jù)庫(kù)構(gòu)建示例,我們從最基本的圖書(shū)借閱功能,逐步擴(kuò)展了個(gè)性化表達(dá)、社交網(wǎng)絡(luò)等功能,跟隨圖書(shū)館業(yè)務(wù)的發(fā)展維度,我們還可以對(duì)這個(gè)模型進(jìn)行更多的功能擴(kuò)展,而且可以非常方便地做到。從這個(gè)例子中,我們可以發(fā)現(xiàn):相對(duì)于關(guān)系型數(shù)據(jù)庫(kù)建模,圖數(shù)據(jù)庫(kù)建模的方式更加靈活,它的模型不需要進(jìn)一步的抽象,更貼合現(xiàn)實(shí)的事物關(guān)系,因此更適應(yīng)于迭代式和增量式的開(kāi)發(fā)模式。它可以一個(gè)特性接著一個(gè)特性、一個(gè)用戶(hù)故事接著一個(gè)用戶(hù)故事,不斷加入新的元素來(lái)滿(mǎn)足新的需求,在模型中加入新的事物和連接關(guān)系不會(huì)對(duì)既有的數(shù)據(jù)模型、范式、約束造成影響,從而具有更強(qiáng)的可塑性。在實(shí)際應(yīng)用方面,圖數(shù)據(jù)模型降低了事物對(duì)象模型和關(guān)系表模型之間的翻譯困難,消除了技術(shù)領(lǐng)域和業(yè)務(wù)領(lǐng)域的溝通障礙,使得大家都可以用同樣的模型和思路來(lái)探討業(yè)務(wù)中的核心問(wèn)題,再將其整合到應(yīng)用程序之中。除此以外,圖數(shù)據(jù)模型在關(guān)系網(wǎng)絡(luò)查詢(xún)方面還有關(guān)系型數(shù)據(jù)庫(kù)不具備的性能優(yōu)勢(shì)?;谶@些優(yōu)點(diǎn),圖數(shù)據(jù)庫(kù)在當(dāng)今IT和互聯(lián)網(wǎng)產(chǎn)業(yè)中得到非常廣泛的應(yīng)用,很多知名的大公司如IBM、Microsoft、Walmart、eBay、VOLVO都采用了這一技術(shù)方案。在各行各業(yè)都在擁抱互聯(lián)網(wǎng)的今天,圖書(shū)館行業(yè)也不例外,圖數(shù)據(jù)庫(kù)在圖書(shū)館行業(yè)未來(lái)的發(fā)展和應(yīng)用中有非常多的“用武之地”,我們將在下一節(jié)進(jìn)行闡述。
在線推薦系統(tǒng)是許多電子商務(wù)網(wǎng)站的核心構(gòu)建之一。以當(dāng)前熱門(mén)購(gòu)物網(wǎng)站為例,當(dāng)我們?yōu)g覽若干個(gè)商品或購(gòu)買(mǎi)某件物品之后,網(wǎng)站便會(huì)根據(jù)我們最近這段時(shí)間的瀏覽習(xí)慣和購(gòu)物需求推薦它認(rèn)為值得我們購(gòu)買(mǎi)的物品;在新聞?lì)惥W(wǎng)站或App中,系統(tǒng)也會(huì)針對(duì)我們最近的閱讀偏好推送它認(rèn)為我們想要閱讀的內(nèi)容。目前業(yè)界較為主流的推薦算法包括:基于流行度的推薦算法、基于協(xié)同過(guò)濾的推薦算法、基于內(nèi)容的推薦算法、基于模型的推薦算法等等。圖書(shū)館對(duì)于讀者的圖書(shū)推薦工作,一般圍繞當(dāng)前熱點(diǎn)、編輯推薦、類(lèi)別推薦等方面展開(kāi),這些推薦方法都有很大的局限性。對(duì)于圖書(shū)館而言,只有針對(duì)每位讀者的個(gè)性化需求進(jìn)行智能化推薦的系統(tǒng),才是真正意義上的推薦系統(tǒng)。公共圖書(shū)館的個(gè)性化圖書(shū)推薦系統(tǒng)與商業(yè)購(gòu)書(shū)網(wǎng)站、社交書(shū)評(píng)網(wǎng)站(如豆瓣)有非常大的不同。圖書(shū)館的個(gè)性化智能推薦系統(tǒng)需要滿(mǎn)足兩個(gè)條件:第一是存在信息過(guò)載的問(wèn)題,第二是讀者大部分時(shí)間沒(méi)有明確的需求,因?yàn)槿绻x者有明確的需求,就可以通過(guò)檢索系統(tǒng)找到自己需要的書(shū)籍了。同時(shí),圖書(shū)館對(duì)于讀者個(gè)人資料的掌握往往也較為有限,圖書(shū)館與讀者、讀者與讀者這兩種聯(lián)系都是“弱聯(lián)系”關(guān)系,圖書(shū)館的“生態(tài)環(huán)境”也是弱社交化的交流環(huán)境,圖書(shū)館與讀者、讀者與讀者之間的主要是通過(guò)書(shū)這樣一種介質(zhì)產(chǎn)生關(guān)聯(lián)。在這種情況下,我們可以引入圖數(shù)據(jù)庫(kù),以閱讀內(nèi)容為聯(lián)系節(jié)點(diǎn)構(gòu)建群體閱讀網(wǎng)狀模型,按照“人以群分”的思路對(duì)讀者群體進(jìn)行分類(lèi)集體畫(huà)像,構(gòu)建一種基于圖書(shū)關(guān)聯(lián)的新型網(wǎng)狀結(jié)構(gòu)模型:我們將每一位讀者作為一個(gè)節(jié)點(diǎn),同時(shí)又將他(她)閱讀的每一本書(shū)作為一個(gè)節(jié)點(diǎn),兩者之間的關(guān)系就是閱讀關(guān)系;當(dāng)這本書(shū)被其他讀者借閱時(shí),那么另一位讀者與這本書(shū)又產(chǎn)生了閱讀關(guān)系,讀者與讀者之間是通過(guò)閱讀共同(或相似)的一本書(shū)而產(chǎn)生聯(lián)系的。通過(guò)這種錯(cuò)綜復(fù)雜的閱讀關(guān)系,不同的讀者之間便產(chǎn)生了社交聯(lián)系。這樣,所有的讀者、書(shū)籍、閱讀關(guān)系便構(gòu)成了一張龐大的社交關(guān)系網(wǎng),系統(tǒng)基于相似群體閱讀內(nèi)容的特性,可以為讀者推薦適合他們需要的、個(gè)性化的閱讀內(nèi)容。除此以外,基于圖數(shù)據(jù)庫(kù)的閱讀推薦方法還能很好地解決“冷啟動(dòng)”的問(wèn)題:讀者只要在圖書(shū)館開(kāi)始借書(shū),就可以根據(jù)圖書(shū)的關(guān)聯(lián)特點(diǎn)很快獲得推薦圖書(shū);讀者借的書(shū)越多,推薦的樣本就越豐富,推薦的內(nèi)容就更加趨于合理。
圖書(shū)館作為一個(gè)信息服務(wù)中心,具備各式各樣的自建和外購(gòu)數(shù)據(jù)資源以及與之匹配的各種檢索系統(tǒng)。目前大多數(shù)數(shù)據(jù)資源和檢索系統(tǒng)都構(gòu)建于關(guān)系型數(shù)據(jù)庫(kù)之上,系統(tǒng)根據(jù)用戶(hù)輸入的關(guān)鍵字在數(shù)據(jù)庫(kù)中進(jìn)行查詢(xún),并返回相關(guān)的網(wǎng)頁(yè)、圖片、視頻等資源。如果圖書(shū)館管理的數(shù)據(jù)資源過(guò)多,分散式的信息檢索系統(tǒng)會(huì)給讀者帶來(lái)諸多不便,這樣就需要引入統(tǒng)一資源檢索平臺(tái)對(duì)數(shù)據(jù)資源檢索進(jìn)行管理。統(tǒng)一資源檢索平臺(tái)一般通過(guò)數(shù)據(jù)接口、特定協(xié)議、頁(yè)面分析技術(shù),對(duì)異構(gòu)系統(tǒng)的信息進(jìn)行抓取,然后匯總在一個(gè)頁(yè)面上進(jìn)行展示。但這樣的異構(gòu)系統(tǒng)數(shù)據(jù)資源檢索和管理方式存在諸多不足:第一,僅從視圖層對(duì)信息進(jìn)行了組織和展示,內(nèi)在的邏輯關(guān)系未打通;第二,基于關(guān)鍵詞的檢索具有較大的冗余性,可能把僅僅名字相同而非實(shí)際相關(guān)的內(nèi)容展示出來(lái);第三,這樣抽取的只是零散的數(shù)據(jù)而不是有組織的知識(shí),而當(dāng)前人們不再滿(mǎn)足于簡(jiǎn)單搜索引擎返回的信息,他們更希望獲得符合個(gè)人需求的有實(shí)際價(jià)值的知識(shí)。檢索系統(tǒng)的發(fā)展勢(shì)必要更多地關(guān)注于關(guān)聯(lián)關(guān)系挖掘、關(guān)系存儲(chǔ)、知識(shí)表示和關(guān)系推理等[6]。對(duì)于這種情況和未來(lái)數(shù)據(jù)資源管理的發(fā)展趨勢(shì),圖數(shù)據(jù)庫(kù)的特性支撐它在圖書(shū)館的數(shù)據(jù)管理和檢索優(yōu)化中有更大的作為空間。使用圖數(shù)據(jù)庫(kù)作為數(shù)據(jù)資源管理的構(gòu)建支撐系統(tǒng),基于圖理論對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和檢索結(jié)果反饋,可以更好地對(duì)異構(gòu)系統(tǒng)數(shù)據(jù)的關(guān)聯(lián)關(guān)系進(jìn)行挖掘、分析和推理,展示的結(jié)果內(nèi)容會(huì)更加立體化,也具有更強(qiáng)的延伸性。這種構(gòu)建過(guò)程可以圍繞某個(gè)行業(yè)領(lǐng)域、熱點(diǎn)事件、討論話題等單元內(nèi)容展開(kāi),首先對(duì)基礎(chǔ)數(shù)據(jù)內(nèi)容進(jìn)行采集和預(yù)處理,將信息內(nèi)容、信息來(lái)源、信息來(lái)源間的關(guān)系轉(zhuǎn)換成存儲(chǔ)的節(jié)點(diǎn)和關(guān)系的屬性,構(gòu)建這個(gè)單元板塊的數(shù)據(jù)資源圖譜,并根據(jù)數(shù)據(jù)內(nèi)容的特點(diǎn)構(gòu)建索引,提升資源管理效率。對(duì)于用戶(hù)的檢索請(qǐng)求,系統(tǒng)通過(guò)算法智能對(duì)檢索結(jié)果進(jìn)行加權(quán)反饋,對(duì)內(nèi)容進(jìn)行自動(dòng)的優(yōu)先級(jí)優(yōu)化,而不是像大雜燴一樣呈現(xiàn);另外,還可以根據(jù)圖模型的特性,在反饋結(jié)果中展示出源數(shù)據(jù)到最后整合數(shù)據(jù)的整個(gè)數(shù)據(jù)生成鏈路,方便用戶(hù)對(duì)數(shù)據(jù)關(guān)聯(lián)關(guān)系進(jìn)行更細(xì)粒度的分析。
美國(guó)建筑學(xué)家沃爾曼(Richard Saul Wurman)于1975年首次提出信息構(gòu)建, 將其定義為“組織數(shù)據(jù)的模式,使復(fù)雜信息清晰化”,并且提出了信息構(gòu)建的五項(xiàng)規(guī)則[7]。目前普遍認(rèn)為信息構(gòu)建是以合理的方式對(duì)信息進(jìn)行組織,是信息技術(shù)管理和資源管理的核心。對(duì)于圖書(shū)館而言,有學(xué)者提出以信息構(gòu)建的四大核心系統(tǒng)為評(píng)價(jià)參考,以信息構(gòu)建的五項(xiàng)原則為標(biāo)準(zhǔn),對(duì)數(shù)字圖書(shū)館的評(píng)價(jià)指標(biāo)體系進(jìn)行構(gòu)建[8]。知識(shí)構(gòu)建是在信息構(gòu)建基礎(chǔ)上的信息組織形式,是信息資源鏈更高級(jí)的組合和服務(wù),使信息更加清晰化和便于理解。在圖書(shū)館中,對(duì)于知識(shí)和信息的管理需要對(duì)大量信息進(jìn)行收集,將收集的信息按照不同的門(mén)類(lèi)和需求進(jìn)行組織和存儲(chǔ),不斷對(duì)顯性知識(shí)和隱性知識(shí)進(jìn)行挖掘,對(duì)知識(shí)之間的關(guān)系進(jìn)行揭示,方便人們獲取所需知識(shí)資源。知識(shí)地圖是知識(shí)構(gòu)建過(guò)程中常用的管理方式,被普遍認(rèn)為是一個(gè)具備知識(shí)導(dǎo)航和管理功能的信息圖,使得資源信息按照一定規(guī)律組織在一起,能夠有效展示信息和知識(shí)在圖中的存儲(chǔ)和分布情況,并提供明確的訪問(wèn)途徑。知識(shí)地圖還能顯示出知識(shí)點(diǎn)之間、知識(shí)點(diǎn)與個(gè)人或組織之間的相互聯(lián)系,進(jìn)而能夠清晰向用戶(hù)展示各知識(shí)、條目的關(guān)系,獲取相應(yīng)的知識(shí)內(nèi)容,并借助可視化、形象化的手段對(duì)知識(shí)信息進(jìn)行查詢(xún)。對(duì)于知識(shí)地圖和倉(cāng)庫(kù)一般采用關(guān)系型數(shù)據(jù)庫(kù)或RDF描述語(yǔ)言進(jìn)行構(gòu)建,關(guān)系型數(shù)據(jù)庫(kù)可以對(duì)知識(shí)內(nèi)容進(jìn)行抽象和快速查詢(xún),但在關(guān)聯(lián)關(guān)系方面存在不足;RDF描述語(yǔ)言基于XML可以表達(dá)數(shù)據(jù)和數(shù)據(jù)之間的語(yǔ)義關(guān)系,但它在本質(zhì)上是一種簡(jiǎn)單本體語(yǔ)言,缺乏統(tǒng)一管理和版本控制,在海量數(shù)據(jù)構(gòu)建和檢索方面也存在短板。圖數(shù)據(jù)庫(kù)在圖書(shū)館知識(shí)倉(cāng)庫(kù)構(gòu)建和語(yǔ)義關(guān)聯(lián)方面則具備更多優(yōu)勢(shì),文本知識(shí)結(jié)構(gòu)中的知識(shí)元是知識(shí)結(jié)構(gòu)體系中最小的單位,可以使用圖數(shù)據(jù)庫(kù)的節(jié)點(diǎn)進(jìn)行記錄;知識(shí)之間的關(guān)聯(lián)、要素之間的聯(lián)系,可以使用圖數(shù)據(jù)庫(kù)的關(guān)系進(jìn)行表達(dá),進(jìn)而建立知識(shí)與信息之間、知識(shí)與持有者之間、知識(shí)與用戶(hù)之間的各種聯(lián)系;再基于圖數(shù)據(jù)庫(kù)優(yōu)秀的檢索性能,可以為用戶(hù)沿著知識(shí)分布圖或樹(shù),快速地找到位置并將結(jié)果進(jìn)行反饋。除此以外,系統(tǒng)還可以憑借圖數(shù)據(jù)庫(kù)的特性對(duì)隱性知識(shí)進(jìn)行挖掘、捕獲和組織。
圖書(shū)館信息治理:隨著圖書(shū)館業(yè)務(wù)體系的不斷發(fā)展,基于總分館服務(wù)模式的外延也在不斷地拓展,除過(guò)去的傳統(tǒng)分館外,各類(lèi)載體都加入了圖書(shū)館的服務(wù)體系,再加上硬件、軟件、網(wǎng)絡(luò)服務(wù)設(shè)備的擴(kuò)容,各類(lèi)型數(shù)據(jù)中心的建設(shè)、虛擬化服務(wù)的實(shí)施、整體拓?fù)浣Y(jié)構(gòu)也變得越來(lái)越復(fù)雜,這也給圖書(shū)館的信息治理工作帶來(lái)了更大的工作量和難度。圖數(shù)據(jù)庫(kù)在網(wǎng)絡(luò)和數(shù)據(jù)中心管理方面已有成功應(yīng)用案例,在基礎(chǔ)架構(gòu)、網(wǎng)絡(luò)規(guī)劃、路由分布、服務(wù)質(zhì)量映射以及網(wǎng)絡(luò)影響分析等諸多方面可以發(fā)揮作用。例如,對(duì)圖書(shū)館的通信體系進(jìn)行圖建模,將各種硬件設(shè)備、軟件、數(shù)據(jù)中心等實(shí)體以圖數(shù)據(jù)庫(kù)節(jié)點(diǎn)的方式進(jìn)行映射,將各種實(shí)體之間的聯(lián)系以圖數(shù)據(jù)庫(kù)關(guān)系的方式進(jìn)行表示,可以較為全面和準(zhǔn)確地展示出圖書(shū)館通信體系的整體拓?fù)浣Y(jié)構(gòu)、數(shù)據(jù)鏈接路徑、路由節(jié)點(diǎn)以及網(wǎng)絡(luò)流量等各方面的信息,還可以協(xié)助做好信息治理中的問(wèn)題診斷和原因分析,在信息安全方面發(fā)揮較大的作用。
圖書(shū)館標(biāo)簽系統(tǒng):標(biāo)簽系統(tǒng)在圖書(shū)館中是一個(gè)廣義的概念,一方面是物理上的標(biāo)簽,如RFID電子標(biāo)簽,另一方面是對(duì)資源屬性進(jìn)行標(biāo)識(shí)的標(biāo)簽,這種標(biāo)簽既可來(lái)自原生出版方或圖書(shū)館采編工作方,也可以來(lái)自用戶(hù)對(duì)感興趣的內(nèi)容和資源進(jìn)行的標(biāo)注,還可以來(lái)自人工智能技術(shù)等對(duì)資源進(jìn)行的標(biāo)識(shí)和分類(lèi)。用戶(hù)、各種類(lèi)型的標(biāo)簽、資源三者間呈網(wǎng)狀關(guān)系,是標(biāo)簽系統(tǒng)最重要的三種元素。標(biāo)簽系統(tǒng)是聯(lián)系資源和用戶(hù)的紐帶,對(duì)于圖書(shū)館資源管理和讀者服務(wù)具有重要意義?;跇?biāo)簽系統(tǒng)的圖結(jié)構(gòu),圖數(shù)據(jù)庫(kù)相較于關(guān)系型數(shù)據(jù)庫(kù)具有更多的優(yōu)勢(shì):面對(duì)標(biāo)簽系統(tǒng)的超大數(shù)據(jù)集以及復(fù)雜的連接結(jié)構(gòu),圖數(shù)據(jù)庫(kù)都展現(xiàn)出了更好的契合度,而且具有更豐富的表現(xiàn)形式。資源、標(biāo)簽、用戶(hù)在圖數(shù)據(jù)庫(kù)模型中可以以節(jié)點(diǎn)進(jìn)行標(biāo)識(shí),相互之間的關(guān)聯(lián)可以用關(guān)系進(jìn)行標(biāo)識(shí)。標(biāo)簽系統(tǒng)在圖數(shù)據(jù)庫(kù)建模的基礎(chǔ)上可以展示出直觀的聚類(lèi)關(guān)系,通過(guò)上下文環(huán)境的語(yǔ)義和相似度算法能運(yùn)用在檢索系統(tǒng)、推薦系統(tǒng)等領(lǐng)域。
用戶(hù)行為分析:用戶(hù)行為分析是圖書(shū)館面對(duì)不斷變化的讀者需求,準(zhǔn)確了解讀者個(gè)人偏好、使用習(xí)慣、閱讀特征的重要手段,并且在分析的過(guò)程中不斷揭示讀者個(gè)人和群體的行為規(guī)律,對(duì)于資源購(gòu)買(mǎi)、內(nèi)容推薦、需求引導(dǎo)、預(yù)測(cè)用戶(hù)行為、改進(jìn)服務(wù)措施等方面具有重要意義。在大數(shù)據(jù)時(shí)代,用戶(hù)行為更加復(fù)雜化和多元化,通過(guò)各種手段和方法采集的數(shù)據(jù)具有網(wǎng)狀和交叉特點(diǎn),各種用戶(hù)、行為和終端之間又有很大的關(guān)聯(lián)性,這些特征都適合引入圖模型,將圖數(shù)據(jù)庫(kù)作為后臺(tái)的行為數(shù)據(jù)存儲(chǔ)工具。在圖數(shù)據(jù)庫(kù)中,可以將用戶(hù)、終端、資源、介質(zhì)作為節(jié)點(diǎn)進(jìn)行標(biāo)識(shí),將行為作為關(guān)系進(jìn)行標(biāo)識(shí),這些節(jié)點(diǎn)產(chǎn)生聯(lián)系,根據(jù)時(shí)間、坐標(biāo)等屬性描述出用戶(hù)行為軌跡;通過(guò)圖模型聚類(lèi)信息我們還可以清晰地看出群體行為聚集和流量情況,有利于對(duì)圖書(shū)館各方面存在的問(wèn)題進(jìn)行針對(duì)性的解決,也有利于對(duì)不同用戶(hù)群體的差異化特征進(jìn)行分析,針對(duì)不同的對(duì)象和應(yīng)用場(chǎng)景提出具有指導(dǎo)性的服務(wù)建議,從而提升圖書(shū)館的整體服務(wù)質(zhì)量。
隨著相關(guān)理論研究的逐漸深入,圖數(shù)據(jù)庫(kù)技術(shù)從實(shí)驗(yàn)室走出來(lái)得到越來(lái)越廣泛的重視和應(yīng)用。圖數(shù)據(jù)庫(kù)在某些方面具備關(guān)系型數(shù)據(jù)庫(kù)不具備的優(yōu)勢(shì),但在數(shù)據(jù)完整性、可維護(hù)性等方面也存在很多挑戰(zhàn),整體來(lái)說(shuō)圖數(shù)據(jù)庫(kù)技術(shù)處于發(fā)展的初期,還有不斷擴(kuò)展的空間。在大數(shù)據(jù)環(huán)境下,以數(shù)據(jù)和關(guān)系為中心的圖結(jié)構(gòu)模型在圖書(shū)館中將越來(lái)越常見(jiàn),期待能夠繼續(xù)加強(qiáng)圖數(shù)據(jù)庫(kù)在圖書(shū)館行業(yè)的應(yīng)用研究,未來(lái)有更多的實(shí)用性工具和產(chǎn)品落地,推動(dòng)圖書(shū)館信息和數(shù)據(jù)服務(wù)能力得到更好的發(fā)展。