沈志宏 ,趙子豪,2,王華進(jìn),劉忠新,胡 川,2,周園春,2
1(中國(guó)科學(xué)院 計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)
2(中國(guó)科學(xué)院大學(xué),北京 100049)
在大數(shù)據(jù)時(shí)代,隨著各類(lèi)應(yīng)用的推廣和使用,數(shù)據(jù)產(chǎn)生速度越來(lái)越快、數(shù)據(jù)體量越來(lái)越大.一方面,數(shù)據(jù)采集技術(shù)的迅猛發(fā)展,使得數(shù)據(jù)的結(jié)構(gòu)更多樣、種類(lèi)更豐富.數(shù)據(jù)表現(xiàn)出多元異構(gòu)的特點(diǎn),非結(jié)構(gòu)化數(shù)據(jù)在其中占有較大比重.有研究表明,視頻、音頻、圖片等非結(jié)構(gòu)化數(shù)據(jù)占據(jù)高達(dá)90%的比例[1].另一方面,近年來(lái),數(shù)據(jù)中臺(tái)、知識(shí)圖譜等數(shù)據(jù)管理分析技術(shù)得到了廣泛的應(yīng)用.數(shù)據(jù)中臺(tái)要求結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)能夠在統(tǒng)一的環(huán)境中得到良好的治理,以便支持多種應(yīng)用;知識(shí)圖譜,特別是多模態(tài)知識(shí)圖譜[2],要求對(duì)底層結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行融合關(guān)聯(lián)分析,并支持用戶(hù)進(jìn)行交互式查詢(xún).這些技術(shù)均提出了對(duì)結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行融合管理和分析的需求.
結(jié)構(gòu)化數(shù)據(jù)通常具有較為規(guī)范、統(tǒng)一的形式.目前,針對(duì)結(jié)構(gòu)化數(shù)據(jù)的管理和分析,已具有成熟的數(shù)據(jù)模型、查詢(xún)語(yǔ)言和管理系統(tǒng).與結(jié)構(gòu)化數(shù)據(jù)相比,非結(jié)構(gòu)化數(shù)據(jù)的管理方式存在著諸多差異,這給高效的結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的融合管理和分析帶來(lái)了多方面的挑戰(zhàn).
(1)分離的存儲(chǔ)管理方式,給結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)一管理帶來(lái)挑戰(zhàn).相對(duì)于結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)占有更大的空間,出于讀寫(xiě)效率考慮,非結(jié)構(gòu)化數(shù)據(jù)往往單獨(dú)存在于文件系統(tǒng),或者對(duì)象存儲(chǔ)系統(tǒng),這使得維護(hù)結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)一致性的難度增大;
(2)差異化的信息獲取方式,給結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)一分析帶來(lái)挑戰(zhàn).相對(duì)于結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)內(nèi)容比較復(fù)雜,為了實(shí)現(xiàn)高效檢索和分析,往往需要預(yù)先引入模式識(shí)別、深度學(xué)習(xí)等方法實(shí)現(xiàn)信息抽取和數(shù)據(jù)挖掘,從而獲取非結(jié)構(gòu)化數(shù)據(jù)所蘊(yùn)含的內(nèi)在信息;
(3)不一致的檢索方式,給結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的一致化即席查詢(xún)帶來(lái)挑戰(zhàn).與結(jié)構(gòu)化數(shù)據(jù)具有較為成熟的SQL、類(lèi)SQL 查詢(xún)語(yǔ)言的現(xiàn)狀不同,非結(jié)構(gòu)化數(shù)據(jù)的信息檢索往往缺乏統(tǒng)一的操作模式和查詢(xún)語(yǔ)法,目前采用的多是逐案的個(gè)性化方案.
為實(shí)現(xiàn)結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的融合管理和分析,需要從模型層面出發(fā),設(shè)計(jì)統(tǒng)一的表示和查詢(xún)方法.傳統(tǒng)的關(guān)系模型、屬性圖模型不能有效揭示和表示非結(jié)構(gòu)化數(shù)據(jù)的內(nèi)在信息.有學(xué)者提出將數(shù)據(jù)和Schema 表示為邊標(biāo)記圖,以此替代非結(jié)構(gòu)化數(shù)據(jù)底層類(lèi)型約束的缺失[3].但該方法僅提出一種為非結(jié)構(gòu)化數(shù)據(jù)添加Schema 的方法,不能實(shí)現(xiàn)對(duì)非結(jié)構(gòu)化數(shù)據(jù)中信息的自由檢索.Li 等人提出從基本屬性、語(yǔ)義特征、底層特征和原始數(shù)據(jù)等4 個(gè)角度定義非結(jié)構(gòu)化數(shù)據(jù)[4],但這種方法依賴(lài)于預(yù)定義,并不適用于非結(jié)構(gòu)化數(shù)據(jù)的交互查詢(xún).近年來(lái),有學(xué)者提出在非結(jié)構(gòu)化數(shù)據(jù)流上抽取RDF 三元組的方法[5],該方法只實(shí)現(xiàn)了三元組的抽取,不能支持對(duì)非結(jié)構(gòu)化數(shù)據(jù)內(nèi)在信息的交互式查詢(xún),且并不具備數(shù)據(jù)管理系統(tǒng)的基本能力.
另外一種融合管理的路線是將非結(jié)構(gòu)化數(shù)據(jù)在數(shù)據(jù)庫(kù)中存儲(chǔ)為二進(jìn)制大對(duì)象(binary large object,簡(jiǎn)稱(chēng)BLOB),當(dāng)應(yīng)用獲取數(shù)據(jù)的時(shí)候,返回一個(gè)二進(jìn)制數(shù)組或者數(shù)據(jù)流.這種方法在性能和功能上都不令人滿(mǎn)意[6].針對(duì)此問(wèn)題,研究人員提出了一系列非結(jié)構(gòu)化數(shù)據(jù)管理系統(tǒng)[7?9],這些系統(tǒng)綜合考慮了非結(jié)構(gòu)化數(shù)據(jù)體積大、結(jié)構(gòu)復(fù)雜的特點(diǎn),設(shè)計(jì)了合適的存儲(chǔ)模型,一定程度上解決了非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和管理問(wèn)題,但其提供的查詢(xún)服務(wù)僅基于文件對(duì)象本身和元數(shù)據(jù),不能提供對(duì)非結(jié)構(gòu)化數(shù)據(jù)內(nèi)在信息的查詢(xún)能力.
由此,本文提出了屬性圖擴(kuò)展模型及其查詢(xún)方法.屬性圖擴(kuò)展模型在傳統(tǒng)屬性圖的基礎(chǔ)增加了對(duì)非結(jié)構(gòu)化數(shù)據(jù)內(nèi)在信息的表示能力,以及結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)之間的互操作能力.在此基礎(chǔ)上,本文繼而提出基于智能屬性圖模型的異構(gòu)數(shù)據(jù)智能融合管理系統(tǒng)PandaDB.
本文第1 節(jié)給出屬性圖擴(kuò)展模型和相關(guān)概念,包括層疊屬性圖、智能屬性圖、次級(jí)屬性等,并提出屬性操作符和查詢(xún)語(yǔ)法.第2 節(jié)給出PandaDB 的系統(tǒng)設(shè)計(jì)與具體實(shí)現(xiàn).第3 節(jié)通過(guò)實(shí)驗(yàn)和案例驗(yàn)證該系統(tǒng)的效率及可行性.第4 節(jié)介紹與本文研究相關(guān)的工作.最后,對(duì)未來(lái)研究可能面臨的挑戰(zhàn)進(jìn)行展望.
傳統(tǒng)屬性圖模型無(wú)法有效表示非結(jié)構(gòu)化屬性,本節(jié)提出屬性圖擴(kuò)展模型,以解決非結(jié)構(gòu)化屬性的有效表示問(wèn)題;然后介紹針對(duì)屬性圖擴(kuò)展模型的語(yǔ)義操作和查詢(xún)語(yǔ)法設(shè)計(jì),以支持因引入非結(jié)構(gòu)化屬性及其內(nèi)在信息所帶來(lái)的新的查詢(xún)特性.
傳統(tǒng)的屬性圖模型可以形式化表示為G=(V,E,P),其中,G表示全體數(shù)據(jù),V表示數(shù)據(jù)中的實(shí)體集合,E表示實(shí)體間的關(guān)系集合,P表示數(shù)據(jù)集中實(shí)體的屬性集合.
針對(duì)圖片、語(yǔ)音、文本這樣的非結(jié)構(gòu)化屬性,屬性圖模型無(wú)法有效揭示其蘊(yùn)含的內(nèi)在信息(如:某類(lèi)頂點(diǎn)的photo 屬性蘊(yùn)含有“車(chē)牌號(hào)”信息),內(nèi)在信息通常是離線且具有結(jié)構(gòu)延遲的.
? 離線:將非結(jié)構(gòu)化屬性轉(zhuǎn)化為結(jié)構(gòu)化、半結(jié)構(gòu)化屬性的信息抽取過(guò)程,屬于對(duì)數(shù)據(jù)的預(yù)處理;
? 結(jié)構(gòu)延遲:非結(jié)構(gòu)化屬性的內(nèi)在信息不具備明確定義的結(jié)構(gòu),而是根據(jù)應(yīng)用的后期需要,從而選擇特定的信息抽取方法,這種結(jié)構(gòu)是不明確的、延遲定義的.
為增強(qiáng)對(duì)結(jié)構(gòu)化屬性、非結(jié)構(gòu)化屬性的統(tǒng)一表示能力,本文針對(duì)屬性圖模型進(jìn)行了擴(kuò)展,提出了層疊屬性圖模型和智能屬性圖模型.
定義1.具備以下特征的屬性圖被稱(chēng)為層疊屬性圖(cascading property graph).
1)層疊屬性圖Gc可以表示為GC=(V,E,PP,PN),其中,PP是基本屬性(primitive property)集合,PN是內(nèi)嵌式屬性(nested property)集合;
2)基本屬性的值為文本、數(shù)值、二進(jìn)制數(shù)組等基本數(shù)據(jù)類(lèi)型;
3)內(nèi)嵌式屬性的值為另外一個(gè)屬性圖.
定義2.具備以下特征的屬性圖被稱(chēng)為智能屬性圖(intelligent property graph).
1)智能屬性圖GI可以表示為GI=(V,E,PP,O),其中,O為語(yǔ)義操作集合;
2)存在PI?PP,PI為智能屬性集合;
3)O=(S?,Sξ),其中,S?為智能屬性展開(kāi)操作集合,Sξ為智能屬性語(yǔ)義計(jì)算操作集合;
4)對(duì)于智能屬性pi∈PI,存在展開(kāi)操作?∈S?,可滿(mǎn)足pn=?(pi),且pn∈PN,即,將智能屬性pi展開(kāi)為內(nèi)嵌式屬性pn;
5)對(duì)于智能屬性p1∈PI和p2∈PI,存在語(yǔ)義計(jì)算操作ξ∈Sξ,可滿(mǎn)足σ=ξ(p1,p2).對(duì)p1和p2兩個(gè)智能屬性進(jìn)行語(yǔ)義計(jì)算,得到結(jié)果σ.
定義3.內(nèi)嵌式屬性具有次級(jí)屬性(sub-property).
1)對(duì)于智能屬性圖GI=(V,E,PP,O),若存在Vi∈V且Vi具有內(nèi)嵌式屬性,則根據(jù)定義1,有,其中,為傳統(tǒng)屬性圖
作為示例,圖1 給出了一個(gè)智能屬性圖,圖中存在一個(gè)Car 類(lèi)型的頂點(diǎn)car1,其具有一個(gè)智能屬性photo,執(zhí)行展開(kāi)操作后,photo 具有兩個(gè)次級(jí)屬性:photo→plateNumber 和photo→model.
基于定義2,本文定義了針對(duì)智能屬性的次級(jí)屬性抽取操作符和語(yǔ)義計(jì)算操作符.
? 次級(jí)屬性抽取操作符:次級(jí)屬性抽取操作符“→”用以抽取智能屬性的次級(jí)屬性,如針對(duì)photo 屬性執(zhí)行“photo→plateNumber”,即可獲取到photo 中的車(chē)牌號(hào);
? 語(yǔ)義計(jì)算操作符:傳統(tǒng)屬性圖查詢(xún)語(yǔ)言中的謂詞(predicate),只支持對(duì)屬性進(jìn)行比較,如=、>、<、正則匹配等.本文針對(duì)智能屬性新增~:,::,:>等拓展謂詞,以表示非結(jié)構(gòu)化屬性之間的相似關(guān)系、相似度、包含關(guān)系等邏輯(見(jiàn)表1).
Fig.1 Intelligent property graph model圖1 智能屬性圖模型
Table 1 Semantic computation operators表1 語(yǔ)義計(jì)算操作符
在屬性圖模型中,由于內(nèi)在信息的不可見(jiàn)性,非結(jié)構(gòu)化屬性之間的計(jì)算操作支持有限.結(jié)合定義1~定義3 中關(guān)于非結(jié)構(gòu)化屬性的表述和屬性操作符的特性,智能屬性圖模型可以實(shí)現(xiàn)非結(jié)構(gòu)化屬性?xún)?nèi)在信息的在線獲取,且結(jié)構(gòu)是預(yù)定義的.
? 在線:從非結(jié)構(gòu)化屬性中獲取結(jié)構(gòu)化、半結(jié)構(gòu)化信息(即次級(jí)屬性)的過(guò)程是按需的,無(wú)需對(duì)非結(jié)構(gòu)化屬性進(jìn)行專(zhuān)門(mén)的預(yù)處理;
? 結(jié)構(gòu)預(yù)定義:非結(jié)構(gòu)化數(shù)據(jù)內(nèi)在信息依賴(lài)于schema 層面的定義,而非依賴(lài)于信息抽取工具的實(shí)現(xiàn).在底層查詢(xún)機(jī)制的支持下,可以實(shí)現(xiàn)針對(duì)非結(jié)構(gòu)化屬性的直接運(yùn)算.
本文針對(duì)智能屬性圖模型,針對(duì)標(biāo)準(zhǔn)化Cypher 查詢(xún)語(yǔ)言[10]進(jìn)行擴(kuò)展,形成CypherPlus 語(yǔ)言.CypherPlus 定義了BLOB 屬性類(lèi)型,用以表示非結(jié)構(gòu)化屬性的值.CypherPlus 同時(shí)引入了BLOB 字面值、次級(jí)屬性抽取操作符、語(yǔ)義計(jì)算操作符等新特性,從而支持對(duì)非結(jié)構(gòu)化屬性的表示和語(yǔ)義操作.
(1)BlobLiteral
用于表示非結(jié)構(gòu)化屬性的字面值,格式如〈schema://path〉,其中,schema 可以為 FILE,HTTP(S),FTP(S),BASE64 等多種類(lèi)型.如圖2 所示.
Fig.2 Grammer definition of BlobLiteral圖2 BlobLiteral 語(yǔ)法定義
(2)SubPropertyExtractor
用于表示次級(jí)屬性的抽取操作,如圖3 所示,其中,PropertyKeyName 為次級(jí)屬性的名稱(chēng);
Fig.3 Grammer definition of SubPropertyExtractor圖3 SubPropertyExtractor 語(yǔ)法定義
語(yǔ)義計(jì)算操作符,包括SemanticCompare,SemanticLike,SemanticUnlike,SemanticIn,SemanticContain 等操作符.以SemanticLike 為例,它用以指示兩個(gè)屬性的值是否相似,語(yǔ)法定義如圖4 所示,其中,AlgorithmName 為指定計(jì)算的算法名稱(chēng),Threshold 為閾值,AlgorithmName 和Threshold 為可選項(xiàng),該情況下執(zhí)行引擎則采用默認(rèn)的比較器和閾值.
Fig.4 Grammer definition of SemanticLike圖4 SemanticLike 語(yǔ)法定義
例如,針對(duì)圖1 的數(shù)據(jù)模型,可以查找與車(chē)牌號(hào)為HHMF442 的車(chē)相似的車(chē),查詢(xún)語(yǔ)句如下:
? Q1:match (c1:CAR),(c2:CAR)where c1.photo~:c2.photo and c1→plateNumber=‘HHMF442’ return c2;
? Q2:return ‘Zhihong SHEN’ ::jaro ‘SHEN Zhihong’.
查詢(xún)語(yǔ)句Q2 用以計(jì)算兩個(gè)文本的相似度.
為實(shí)現(xiàn)結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)的融合管理和關(guān)聯(lián)查詢(xún)分析,本文采用智能屬性圖模型,基于Neo4j 開(kāi)源版本,設(shè)計(jì)并實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)智能融合管理系統(tǒng)PandaDB.本部分第2.1 節(jié)介紹PandaDB 的總體架構(gòu),第2.2 節(jié)~第2.5節(jié)分別介紹各模塊的設(shè)計(jì)思路和實(shí)現(xiàn)細(xì)節(jié).
PandaDB 基于智能屬性圖模型組織數(shù)據(jù),底層數(shù)據(jù)被分為圖結(jié)構(gòu)數(shù)據(jù)、結(jié)構(gòu)化屬性數(shù)據(jù)和非結(jié)構(gòu)化屬性數(shù)據(jù)這3 部分.其中,圖結(jié)構(gòu)數(shù)據(jù)指圖的節(jié)點(diǎn)和邊等描述圖結(jié)構(gòu)的數(shù)據(jù);結(jié)構(gòu)化屬性數(shù)據(jù)指數(shù)值、字符串、日期等類(lèi)型的數(shù)據(jù);非結(jié)構(gòu)化屬性數(shù)據(jù)泛指除結(jié)構(gòu)化數(shù)據(jù)之外的數(shù)據(jù),如視頻、音頻、圖片、文檔等.PandaDB 以BLOB對(duì)象的形式存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),并將其表示為實(shí)體(節(jié)點(diǎn))的屬性.根據(jù)上述3 類(lèi)數(shù)據(jù)的應(yīng)用特點(diǎn),PandaDB 設(shè)計(jì)了分布式多元存儲(chǔ)方案.
? 分布式圖數(shù)據(jù)存儲(chǔ):基于傳統(tǒng)的圖數(shù)據(jù)庫(kù)保存圖結(jié)構(gòu)數(shù)據(jù)和屬性數(shù)據(jù),在每個(gè)節(jié)點(diǎn)上保存相同的數(shù)據(jù)副本;
試驗(yàn)所用材料為濰縣蘿卜種子,由山東省濰坊市農(nóng)業(yè)科學(xué)院提供。試驗(yàn)于 2016年在濰坊學(xué)院生物與農(nóng)業(yè)工程學(xué)院種子科學(xué)與工程實(shí)驗(yàn)室進(jìn)行。
? 結(jié)構(gòu)化屬性協(xié)存:基于ElasticSearch,Solr 等外部存儲(chǔ)實(shí)現(xiàn)大規(guī)模結(jié)構(gòu)化屬性數(shù)據(jù)的存儲(chǔ)和索引構(gòu)建;
? BLOB 存儲(chǔ):基于Hbase,Ceph 等存儲(chǔ)系統(tǒng)實(shí)現(xiàn)非結(jié)構(gòu)化屬性數(shù)據(jù)的分布式存儲(chǔ).
PandaDB 總體架構(gòu)如圖5 所示,重要模塊描述如下.
? 存儲(chǔ)引擎:維護(hù)本地的圖結(jié)構(gòu)數(shù)據(jù),調(diào)度外部屬性存儲(chǔ),按需為查詢(xún)引擎提供服務(wù);
? 外部存儲(chǔ):包括基于ElasticSearch 的結(jié)構(gòu)化屬性協(xié)存和基于HBase 的BLOB 存儲(chǔ)兩部分;
? 查詢(xún)引擎:解析并執(zhí)行CypherPlus 查詢(xún);
? AIPM:AI 模型服務(wù)框架,通過(guò)模型和資源管理,實(shí)現(xiàn)AI 模型的靈活部署、高效按需運(yùn)行;同時(shí),有效屏蔽AI 模型之間的依賴(lài).
PandaDB 集群采用了無(wú)主架構(gòu)設(shè)計(jì),圖5 中,PandaNode 是其中的節(jié)點(diǎn),包含查詢(xún)引擎和存儲(chǔ)引擎兩部分.屬性數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在外置分布式存儲(chǔ)工具中,PandaNode 只保存圖結(jié)構(gòu)數(shù)據(jù),通過(guò)屬性存儲(chǔ)接口與外置存儲(chǔ)交互.
Fig.5 Architecture of PandaDB圖5 PandaDB 總體架構(gòu)設(shè)計(jì)
PandaDB 將BLOB 引入了Neo4j 的類(lèi)型系統(tǒng),同時(shí)對(duì)Neo4j 的存儲(chǔ)結(jié)構(gòu)進(jìn)行了改造.存儲(chǔ)結(jié)構(gòu)如圖6 所示,除了Neo4j 保留區(qū),BLOB 的屬性字段同時(shí)記錄了BLOB 的元數(shù)據(jù),包括唯一標(biāo)識(shí)blobid、長(zhǎng)度length 和MIME類(lèi)型.
Fig.6 Design of BLOB storage structure圖6 BLOB 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)
為實(shí)現(xiàn)對(duì)外部BLOB 存儲(chǔ)系統(tǒng)的調(diào)用,PandaDB 中設(shè)計(jì)了BlobValueManager 接口,定義了getById(?)/store(?)/discard(?)等操作方法.作為BlobValueManager 的一個(gè)實(shí)現(xiàn),HBaseBlobValueManager 基于HBase 集群實(shí)現(xiàn)BLOB 數(shù)據(jù)的存取.在該方案中,為支持大規(guī)模BLOB 的存儲(chǔ),HBase 被設(shè)計(jì)成包含N列的寬表,采用blobid/N作為HBase 表的rowkey,blobid%N對(duì)應(yīng)于HBase 的某一列.
為加速BLOB 的讀取,BLOB 的內(nèi)容讀取被封裝為一個(gè)InputStream,在用戶(hù)通過(guò)Bolt 協(xié)議獲取BLOB 內(nèi)容或進(jìn)行語(yǔ)義計(jì)算的時(shí)候,這種流式讀取的機(jī)制提高了運(yùn)行的性能.
多元存儲(chǔ)帶來(lái)了存儲(chǔ)事務(wù)保證的復(fù)雜性,客戶(hù)端在寫(xiě)入數(shù)據(jù)時(shí),將寫(xiě)操作請(qǐng)求發(fā)送到PandaDB 的Leader 節(jié)點(diǎn),然后由Leader 節(jié)點(diǎn)執(zhí)行具體的寫(xiě)入操作.Leader 節(jié)點(diǎn)的具體操作流程如下.
(1)Leader 節(jié)點(diǎn)開(kāi)啟事務(wù),執(zhí)行Cypher 解析,翻譯成具體的執(zhí)行操作;
(2)向BLOB 存儲(chǔ)引擎發(fā)送請(qǐng)求,執(zhí)行BLOB 數(shù)據(jù)的寫(xiě)入操作.若執(zhí)行失敗,則向上回滾,標(biāo)記事務(wù)失敗;
(3)若BLOB 數(shù)據(jù)寫(xiě)入成功,則執(zhí)行圖結(jié)構(gòu)數(shù)據(jù)和結(jié)構(gòu)化屬性數(shù)據(jù)的寫(xiě)入操作;若執(zhí)行失敗,則向上回滾,標(biāo)記事務(wù)失敗;
(4)將結(jié)構(gòu)化屬性數(shù)據(jù)的修改,同步到協(xié)存.若執(zhí)行失敗,則向上回滾,標(biāo)記事務(wù)失敗;
(5)執(zhí)行事務(wù)提交;
(6)關(guān)閉事務(wù),返回操作成功.
PandaDB 查詢(xún)引擎主要實(shí)現(xiàn)查詢(xún)語(yǔ)句的解析、邏輯計(jì)劃的生成與優(yōu)化、物理計(jì)劃的優(yōu)化與執(zhí)行.基于Neo4j,PandaDB 查詢(xún)引擎主要改進(jìn)如下幾個(gè)部分.
(1)解析階段:增強(qiáng)Cypher 語(yǔ)言的解析規(guī)則,支持BLOB 字面常量(BlobLiteral)、BLOB 次級(jí)屬性的抽取操作符(SubPropertyExtractor)以及屬性語(yǔ)義操作符(SemanticComparison);
(2)語(yǔ)法檢查階段:針對(duì)BlobLiteral,SubPropertyExtractor,SemanticComparison 執(zhí)行形式檢查,如發(fā)現(xiàn)非法的BLOB 路徑、非法的語(yǔ)義算子和閾值等;
(3)計(jì)劃優(yōu)化階段:針對(duì)BlobLiteral 的操作進(jìn)行優(yōu)化,針對(duì)大規(guī)模屬性過(guò)濾情形,采用謂詞下推策略等;
(4)計(jì)劃執(zhí)行階段:充分調(diào)度屬性協(xié)存模塊、AIPM 模塊以及BLOB 存儲(chǔ)模塊,實(shí)現(xiàn)高效的屬性?xún)?yōu)先過(guò)濾、BLOB 獲取與語(yǔ)義計(jì)算.圖7 示出了一個(gè)典型的查詢(xún)過(guò)程,該查詢(xún)要求返回所有與photo0 中人臉相似,且age值大于30 的節(jié)點(diǎn).
Fig.7 CypherPlus query process圖7 CypherPlus 查詢(xún)流程
圖8 從查詢(xún)語(yǔ)法、查詢(xún)計(jì)劃、執(zhí)行引擎這3 個(gè)層面示出了PandaDB 查詢(xún)機(jī)制的設(shè)計(jì).解析引擎將查詢(xún)語(yǔ)句中的符號(hào)轉(zhuǎn)化為語(yǔ)義算子,執(zhí)行引擎根據(jù)規(guī)則集選擇AI 模型處理對(duì)應(yīng)的數(shù)據(jù),并將結(jié)果返回.
Fig.8 Query mechanism of intelligent property graph圖8 智能屬性圖查詢(xún)機(jī)制
為加速非結(jié)構(gòu)化數(shù)據(jù)的查詢(xún),PandaDB 實(shí)現(xiàn)了語(yǔ)義索引功能.非結(jié)構(gòu)化數(shù)據(jù)中的信息被認(rèn)為是一種語(yǔ)義信息,如圖片中的人臉、圖片中汽車(chē)的車(chē)牌號(hào)、錄音中所包含的文字信息等.AI 模型從非結(jié)構(gòu)化數(shù)據(jù)中抽取信息的過(guò)程可以看作是數(shù)據(jù)從高維空間到低維空間的映射,在低維空間映射的結(jié)果可以作為數(shù)據(jù)在該場(chǎng)景下的語(yǔ)義索引.
如在人臉比對(duì)查詢(xún)的過(guò)程中,需要比較不同圖片中人臉的相似度,通常的做法是利用人臉識(shí)別模型抽取人臉特征,比較兩個(gè)特征的相似度.在PandaDB 中,以向量形式表示的人臉特征被視為該非結(jié)構(gòu)化在當(dāng)前查詢(xún)場(chǎng)景下的語(yǔ)義索引.系統(tǒng)處理涉及人臉比對(duì)的查詢(xún)時(shí),優(yōu)先檢查是否有對(duì)應(yīng)的語(yǔ)義索引,若該查詢(xún)對(duì)應(yīng)的語(yǔ)義索引存在,則不向AIPM 發(fā)起處理請(qǐng)求,直接比較語(yǔ)義索引得到結(jié)果.
語(yǔ)義索引可以減少查詢(xún)引擎對(duì)AI 服務(wù)的請(qǐng)求次數(shù),從而避免了重復(fù)的數(shù)據(jù)傳輸,有利于提高系統(tǒng)效率.
PandaDB 引入屬性數(shù)據(jù)協(xié)存機(jī)制,用于實(shí)現(xiàn)結(jié)構(gòu)化屬性數(shù)據(jù)的全文索引,提高節(jié)點(diǎn)屬性的過(guò)濾查詢(xún)效率.目前,PandaDB 支持ElasticSearch 作為協(xié)存引擎.
圖9 示出PandaDB 協(xié)存模塊的寫(xiě)入流程,協(xié)存機(jī)制的關(guān)鍵設(shè)計(jì)如下.
(1)屬性數(shù)據(jù)在ElasticSearch 中的存儲(chǔ)結(jié)構(gòu):每個(gè)Neo4j 圖數(shù)據(jù)庫(kù)對(duì)應(yīng)協(xié)存引擎(ElasticSearch)中一個(gè)獨(dú)立的索引,每個(gè)節(jié)點(diǎn)的屬性數(shù)據(jù)和標(biāo)簽數(shù)據(jù)均組織成ElasticSearch 中的一個(gè)文檔,其中,節(jié)點(diǎn)在Neo4j數(shù)據(jù)庫(kù)中的ID 作為文檔的ID,節(jié)點(diǎn)屬性名作為文檔的屬性標(biāo)簽,節(jié)點(diǎn)屬性值作為文檔的屬性數(shù)據(jù),節(jié)點(diǎn)的標(biāo)簽數(shù)據(jù)表示為特殊設(shè)置的屬性標(biāo)簽.數(shù)值、字符串、坐標(biāo)、日期、時(shí)間等結(jié)構(gòu)化屬性數(shù)據(jù)類(lèi)型分別轉(zhuǎn)換為ElasticSearch 中的對(duì)應(yīng)數(shù)據(jù)類(lèi)型;
(2)屬性寫(xiě)入及更新:為了維持Neo4j 數(shù)據(jù)庫(kù)中的本地?cái)?shù)據(jù)和ElasticSearch 中數(shù)據(jù)的一致性,PandaDB 對(duì)Neo4j 中事務(wù)操作執(zhí)行模塊(operations)中的節(jié)點(diǎn)更新部分進(jìn)行了擴(kuò)展,設(shè)計(jì)了ExternalPropertyStore用于存儲(chǔ)在Neo4j 事務(wù)中執(zhí)行的所有操作.當(dāng)Neo4j 數(shù)據(jù)庫(kù)執(zhí)行插入節(jié)點(diǎn)、添加標(biāo)簽、設(shè)置屬性、刪除節(jié)點(diǎn)等操作的同時(shí),也將對(duì)應(yīng)的操作數(shù)據(jù)緩存到ExternalPropertyStore 中,當(dāng)Neo4j 數(shù)據(jù)庫(kù)執(zhí)行事務(wù)提交操作的同時(shí),將緩存的操作數(shù)據(jù)同步到ElasticSearch 中;
(3)屬性過(guò)濾:為了基于協(xié)存實(shí)現(xiàn)節(jié)點(diǎn)屬性過(guò)濾,PandaDB 對(duì)Neo4j 的Cypher 查詢(xún)執(zhí)行計(jì)劃進(jìn)行了改造,將節(jié)點(diǎn)屬性過(guò)濾謂詞下推到協(xié)存管理模塊.根據(jù)謂詞過(guò)濾條件生成ElasticSearch 的檢索請(qǐng)求,最后將命中的文檔(節(jié)點(diǎn))列表返回給查詢(xún)引擎做進(jìn)一步篩選.為了避免大量查詢(xún)結(jié)果增大網(wǎng)絡(luò)傳輸延遲,PandaDB 采用了異步分批的方式傳遞的查詢(xún)結(jié)果.
Fig.9 Write progress of property co-store module in PandaDB圖9 PandaDB 協(xié)存模塊的寫(xiě)入流程
AI 算法集成與調(diào)度主要包括本地算法驅(qū)動(dòng)管理和AI 算法服務(wù)框架.
(1)本地算法驅(qū)動(dòng)管理
為了對(duì)不同的抽取器(SubPropertyExtractor)和語(yǔ)義比較器(SemanticCompartor)進(jìn)行統(tǒng)一管理,PandaDB 制定了驅(qū)動(dòng)管理規(guī)則庫(kù).圖10 是對(duì)規(guī)則庫(kù)中部分內(nèi)容的展示,其中,DogOrCatClassifier 用以抽取寵物類(lèi)型,適用于blob/image 類(lèi)型的屬性;CosineStringSimilarity 用以計(jì)算兩個(gè)文本串的余弦相似度,僅適用于兩個(gè)string 類(lèi)型的屬性.
Fig.10 Extractor and semantic comparator matching rule set圖10 抽取器和語(yǔ)義比較器匹配規(guī)則庫(kù)
(2)AI 算法服務(wù)框架
PandaDB 中的信息抽取能力通過(guò)AI 服務(wù)方式實(shí)現(xiàn),AIPM 為PandaDB 提供AI 服務(wù),它可以屏蔽不同AI模型之間的依賴(lài)沖突問(wèn)題,降低人工智能模型的部署和維護(hù)難度,便于PandaDB 按需擴(kuò)展AI 算子.圖11 給出了AIPM 與系統(tǒng)之間的交互邏輯.系統(tǒng)以HTTP 請(qǐng)求的方式向AIPM 發(fā)出查詢(xún)請(qǐng)求,請(qǐng)求的路徑與AI 算法具有對(duì)應(yīng)關(guān)系,AIPM 接受到查詢(xún)請(qǐng)求,調(diào)用對(duì)應(yīng)的AI 算法處理數(shù)據(jù),以JSON 字符串的形式返回結(jié)果.為了增強(qiáng)AI 算子的可擴(kuò)展性,AIPM 設(shè)計(jì)了統(tǒng)一的集成接口,并要求算子提供對(duì)這些接口的支持.圖12 是AI 模型管理框架的示意圖.
Fig.11 Interaction of PandaDB and AIPM圖11 AIPM 與PandaDB 交互框架
Fig.12 AI model management framework圖12 AI 模型管理框架
為驗(yàn)證模型設(shè)計(jì)及PandaDB 實(shí)現(xiàn)的有效性,本文針對(duì)屬性協(xié)存、分布式方案、非結(jié)構(gòu)化數(shù)據(jù)信息查詢(xún)進(jìn)行了測(cè)試;同時(shí),通過(guò)應(yīng)用案例驗(yàn)證PandaDB 對(duì)結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的融合管理能力.
本測(cè)試驗(yàn)證基于ElasticSearch 屬性協(xié)存方案的性能,對(duì)Neo4j 和引入?yún)f(xié)存方案后的PandaDB 的查詢(xún)性能進(jìn)行對(duì)比,測(cè)試環(huán)境見(jiàn)表2.
Table 2 Information about test environment表2 測(cè)試環(huán)境信息
實(shí)驗(yàn)中使用的Cypher 查詢(xún)語(yǔ)句見(jiàn)表3.實(shí)驗(yàn)中對(duì)每條查詢(xún)語(yǔ)句分別進(jìn)行多次測(cè)試并取執(zhí)行時(shí)間的平均值(如表4、圖13 所示).為避免冷啟動(dòng)帶來(lái)的性能影響,測(cè)試前對(duì)系統(tǒng)進(jìn)行了預(yù)熱.
從測(cè)試結(jié)果可看出:由于采用了ElasticSearch 作為節(jié)點(diǎn)屬性的協(xié)存和索引,在上述查詢(xún)語(yǔ)句執(zhí)行測(cè)試中,PandaDB 占據(jù)明顯優(yōu)勢(shì);尤其在節(jié)點(diǎn)多屬性過(guò)濾查詢(xún)和模糊匹配查詢(xún)中,性能平均提升2 倍~6 倍.
為驗(yàn)證分布式架構(gòu)帶來(lái)的查詢(xún)響應(yīng)能力的提升,本文在物理機(jī)集群上(物理機(jī)配置見(jiàn)表2)部署了PandaDB和Neo4j 單機(jī)版,對(duì)并發(fā)查詢(xún)請(qǐng)求的吞吐率進(jìn)行評(píng)估.因Neo4j 社區(qū)版僅支持單機(jī),故其中PandaDB 部署在3 臺(tái)物理機(jī),Neo4j 部署在一臺(tái)物理機(jī).
本文選擇了圖計(jì)算分析中的常見(jiàn)查詢(xún)作為測(cè)試用例,如計(jì)算節(jié)點(diǎn)出度和入度.將超時(shí)閾值設(shè)定為300s,在滿(mǎn)足90%查詢(xún)不超時(shí)的前提下,Neo4j 的吞吐量為每秒15 次查詢(xún),PandaDB 的吞吐量為每秒40 次查詢(xún).PandaDB的吞吐量接近Neo4j 的3 倍.
Table 3 Query statement in propery co-store test表3 協(xié)存方案驗(yàn)證測(cè)試的查詢(xún)語(yǔ)句
Table 4 Test result for property co-store表4 協(xié)存方案驗(yàn)證測(cè)試結(jié)果
Fig.13 Comparison of query time in co-store圖13 協(xié)存方案查詢(xún)響應(yīng)時(shí)間對(duì)比
為實(shí)現(xiàn)對(duì)非結(jié)構(gòu)化數(shù)據(jù)查詢(xún)的加速,PandaDB 采用了構(gòu)建語(yǔ)義索引的方式,減少數(shù)據(jù)傳輸和調(diào)用AI 服務(wù)的次數(shù).本小節(jié)基于人臉檢測(cè)場(chǎng)景,使用LFW 數(shù)據(jù)集[11]構(gòu)建對(duì)比實(shí)驗(yàn),通過(guò)對(duì)比各種方案下的查詢(xún)耗時(shí),驗(yàn)證語(yǔ)義索引方案的加速效果.
本實(shí)驗(yàn)的任務(wù)目標(biāo)為:從樣本集中找到與目標(biāo)人臉圖片相似度最高的人臉圖片.本實(shí)驗(yàn)共分4 組對(duì)比,各組實(shí)驗(yàn)內(nèi)容及實(shí)驗(yàn)條件細(xì)節(jié)如下.
? NOOP:無(wú)優(yōu)化,PandaDB 向AIPM 發(fā)出圖片相似度對(duì)比請(qǐng)求,逐個(gè)將圖片以BLOB 流的形式發(fā)送給AIPM;AIPM 接收請(qǐng)求后抽取特征,將比對(duì)結(jié)果返回給PandaDB;
? DLOC:數(shù)據(jù)本地化方案,PandaDB 與AIPM 部署在同一臺(tái)服務(wù)器上,減少BLOB 傳輸?shù)木W(wǎng)絡(luò)開(kāi)銷(xiāo);
? AIIDX:AI 服務(wù)緩存方案,PandaDB 向AIPM 請(qǐng)求數(shù)據(jù),AIPM 利用本地緩存的特征數(shù)據(jù)響應(yīng)請(qǐng)求.模仿數(shù)據(jù)流水線工具的實(shí)現(xiàn);
? SEMIDX:語(yǔ)義索引方案,PandaDB 中構(gòu)建非結(jié)構(gòu)化數(shù)據(jù)的語(yǔ)義索引(人臉特征向量),執(zhí)行查詢(xún)時(shí),直接調(diào)用本地索引數(shù)據(jù)比較.
表5 給出了在不同樣本數(shù)下,各方案執(zhí)行同一個(gè)查詢(xún)的耗時(shí).SEMIDX 方案相比于其他方案減少了數(shù)據(jù)傳輸和重復(fù)的數(shù)據(jù)抽取,故理論上該方案在4 個(gè)方案中速度最快.
從表5 中可以看出:在樣本數(shù)相同的條件下,SEMIDX 方案具有最短的查詢(xún)時(shí)間.在樣本數(shù)超過(guò)2 000 的檢索性能對(duì)比中,加速比超過(guò)1 萬(wàn)倍.
Table 5 Comparison of query time under different methods表5 不同方法的查詢(xún)耗時(shí)對(duì)比
學(xué)術(shù)圖譜泛指以學(xué)術(shù)內(nèi)容為主體的領(lǐng)域知識(shí)圖譜,典型應(yīng)用如AMiner[12]和AceKG[13].本文基于KDD2020的參會(huì)人員信息[14]構(gòu)建了一個(gè)小型的學(xué)術(shù)圖譜,其中包含論文、作者、機(jī)構(gòu)等3 類(lèi)節(jié)點(diǎn),根據(jù)論文創(chuàng)作關(guān)系和學(xué)者與機(jī)構(gòu)間的隸屬關(guān)系,將作者照片、論文的PDF 全文等非結(jié)構(gòu)化數(shù)據(jù)作為屬性直接保存在PandaDB 中.
圖14 是 KDD2020 數(shù)據(jù)的可視化展示(基于開(kāi)源項(xiàng)目 InteractiveGraph:https://github.com/grapheco/InteractiveGraph),其中,頭像屬性存儲(chǔ)在PandaDB,且在PandaDB 的基礎(chǔ)上提供了“以圖找圖”的功能,即實(shí)現(xiàn)了基于頭像的快速匹配.
Fig.14 Visualization of KDD2020圖14 KDD2020 數(shù)據(jù)的可視化展示
學(xué)術(shù)圖譜原始數(shù)據(jù)中通常會(huì)出現(xiàn)學(xué)者重名、不同機(jī)構(gòu)的簡(jiǎn)稱(chēng)或縮寫(xiě)相同等情況,因此,圖譜創(chuàng)建過(guò)程中通常面臨實(shí)體消歧問(wèn)題.目前,大多數(shù)實(shí)體消歧方法都以聚類(lèi)為基礎(chǔ),文獻(xiàn)[15?17]使用表層特征值計(jì)算實(shí)體間相似度,但這種方法不能充分利用上下文特征.因?yàn)榛诒韺犹卣鞯姆椒媾R信息不足的問(wèn)題,有學(xué)者嘗試引入外部信息,如WikiPedia 中的信息,將這些知識(shí)資源作為實(shí)體的擴(kuò)展特征,輔助提升聚類(lèi)準(zhǔn)確性,代表工作如文獻(xiàn)[18,19].文獻(xiàn)[20,21]使用圖計(jì)算的方法,充分利用網(wǎng)絡(luò)數(shù)據(jù)的結(jié)構(gòu)信息,但并不具有很好的普適性.近年來(lái),隨著深度學(xué)習(xí)技術(shù)的巨大進(jìn)步,有學(xué)者利用embedding 技術(shù)[22]和神經(jīng)網(wǎng)絡(luò)技術(shù)[23],這類(lèi)方法相比于傳統(tǒng)方法具有更好的效果,但準(zhǔn)確性方面仍不能滿(mǎn)足人們的預(yù)期.本案例基于PandaDB,提出了一種融合結(jié)構(gòu)化屬性和非結(jié)構(gòu)化屬性的消歧方法.如圖15 所示,某學(xué)術(shù)圖譜中有兩個(gè)姓名分別為Park Bill 和Tom Green 的人物節(jié)點(diǎn)以及一個(gè)名為Data Vis 的論文節(jié)點(diǎn),需要判斷T.Green 和Tom Green 是否為同一實(shí)體,從而判斷Park Bill 和Tom Green 之間是否存在合作關(guān)系.由于論文中存在的屬性數(shù)據(jù)不足,消歧很有困難.基于PandaDB 對(duì)非結(jié)構(gòu)化信息抽取及語(yǔ)義比較能力,可以充分利用Tom Green 的照片以及論文作者照片列表,從而達(dá)到消歧目的.圖15 下半部分給出了完成該操作的CypherPlus 語(yǔ)句,其中,<:操作符表示包含關(guān)系,只需要找到對(duì)應(yīng)的節(jié)點(diǎn),判斷n.photo<:p.screenshot成立與否,即可計(jì)算出二者之間是否存在合作關(guān)系.
Fig.15 Diagram of entity disambiguation based on PandaDB圖15 基于PandaDB 實(shí)現(xiàn)實(shí)體消歧示意圖
為實(shí)現(xiàn)數(shù)據(jù)應(yīng)用中的多元異構(gòu)數(shù)據(jù)的統(tǒng)一管理和分析,一種方法是通過(guò)ETL 工具,采用某種統(tǒng)一的形式處理異構(gòu)數(shù)據(jù).但這種方法成本較高,而且數(shù)據(jù)和分析需求的變化會(huì)使原本的ETL 流程失效[24].異構(gòu)數(shù)據(jù)管理可以支持對(duì)多模型數(shù)據(jù)的存儲(chǔ)和統(tǒng)一查詢(xún).學(xué)術(shù)界在上世紀(jì)80 年代就提出了聯(lián)邦數(shù)據(jù)庫(kù)的解決概念,Multibase[25]是其中的代表系統(tǒng).這類(lèi)系統(tǒng)的特點(diǎn)是定義全局schema 和基于映射的查詢(xún)語(yǔ)言,用戶(hù)基于全局schema 查詢(xún),系統(tǒng)將查詢(xún)映射到分區(qū)schema.另一類(lèi)以Spark SQL[26]為代表的系統(tǒng)提供統(tǒng)一的API,允許用戶(hù)以關(guān)系模型使用數(shù)據(jù),在提升效率和簡(jiǎn)化查詢(xún)方面有較好的效果.BigIntegator[27],Forward[28],D4M[29]等系統(tǒng)整合了NoSQL,其中,Forward 以基于json 的數(shù)據(jù)模型組織數(shù)據(jù),D4M 使用關(guān)聯(lián)陣列(associative-array)數(shù)據(jù)模型,這種較為靈活的模型使系統(tǒng)可以在異構(gòu)數(shù)據(jù)上執(zhí)行查詢(xún).
在數(shù)據(jù)管理領(lǐng)域,屬性圖模型[30]是一種常用的管理圖數(shù)據(jù)的數(shù)據(jù)模型,屬性圖中的節(jié)點(diǎn)和關(guān)系都可以被賦予標(biāo)簽和關(guān)聯(lián)任意鍵值對(duì)形式的屬性[31].屬性圖增加了節(jié)點(diǎn)和邊的信息,同時(shí)又沒(méi)有改變圖的整體結(jié)構(gòu).目前,屬性圖模型被圖數(shù)據(jù)庫(kù)業(yè)界廣泛采用[32,33],包括著名的圖數(shù)據(jù)庫(kù)Neo4j[34],Titan[35]等.Neo4j 是目前應(yīng)用較為廣泛的一款開(kāi)源圖數(shù)據(jù)庫(kù),其具有從原生圖數(shù)據(jù)存儲(chǔ)到可視化插件、再到圖數(shù)據(jù)分析插件的豐富生態(tài).JanusGraph[36]是在Titan 基礎(chǔ)上開(kāi)發(fā)的一種基于屬性圖的分布式圖數(shù)據(jù)庫(kù).JanusGraph 采用存儲(chǔ)層和查詢(xún)引擎分離的設(shè)計(jì),可以使用Cassandra 或HBase 作為存儲(chǔ)層.JanusGraph 通過(guò)使用第三方分布式索引庫(kù)ElasticSearch,Solr 和Lucene 實(shí)現(xiàn)檢索功能.其他的圖數(shù)據(jù)庫(kù)還包括:Amazon 的Neptune[37];微軟的Azure CosmosDB[38],TigerGraph[39],OrientDB[40]等.
人工智能技術(shù)已經(jīng)廣泛地應(yīng)用到圖像識(shí)別、語(yǔ)音識(shí)別、機(jī)器翻譯等領(lǐng)域中.為了實(shí)現(xiàn)對(duì)語(yǔ)音、圖片等多種信息的理解,多模態(tài)機(jī)器學(xué)習(xí)的研究嘗試在機(jī)器學(xué)習(xí)的角度整合模型對(duì)非結(jié)構(gòu)化數(shù)據(jù)的理解能力[41,42].人工智能與數(shù)據(jù)庫(kù)的交叉研究一直是學(xué)術(shù)界研究的熱點(diǎn)內(nèi)容.人工智能與數(shù)據(jù)庫(kù)的融合,存在AI4DB(AI for database)和DB4AI(database for AI)兩個(gè)方向[43].AI4DB 旨在通過(guò)AI 技術(shù)提高DB 的效率和能力,如自動(dòng)化數(shù)據(jù)庫(kù)參數(shù)調(diào)優(yōu)[44,45]、基數(shù)估計(jì)[46]、索引推薦[47]、查詢(xún)優(yōu)化[48,49]等.DB4AI 是以數(shù)據(jù)庫(kù)為AI 算法提供數(shù)據(jù)服務(wù),供算法進(jìn)行訓(xùn)練和學(xué)習(xí).例如:借助數(shù)據(jù)庫(kù)的統(tǒng)一SQL 接口,為用戶(hù)提供自定義的函數(shù)協(xié)助構(gòu)建模型;通過(guò)數(shù)據(jù)庫(kù)張量計(jì)算協(xié)助模型訓(xùn)練;通過(guò)持久化AI 模型以重復(fù)使用.
隨著大數(shù)據(jù)時(shí)代的來(lái)臨,海量數(shù)據(jù)的存儲(chǔ)與計(jì)算使得單機(jī)服務(wù)已經(jīng)無(wú)法滿(mǎn)足需求,越來(lái)越多的任務(wù)需要分布式系統(tǒng)支持.保證分布式系統(tǒng)的可靠性和一致性至關(guān)重要.解決這個(gè)問(wèn)題的一個(gè)著名算法是由Lamport 提出的Paxos 算法[50,51].此后,為了適應(yīng)不同的工程環(huán)境,研究人員在Paxos 的基礎(chǔ)上提出了很多新的算法[52].比較著名的有Multi-Paxos[51,53]、Liskov 等人提出的VR(viewstamped replication)算法[54,55]、雅虎公司設(shè)計(jì)的ZAB(Zookeeper’s atomic broadcast)算法[56]、Ongaro 等人提出的Raft 算法[57]等.
本文從結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的融合管理和即席查詢(xún)需求角度出發(fā),分析了目前多元異構(gòu)數(shù)據(jù)融合管理方面統(tǒng)一表示和交互式查詢(xún)等難點(diǎn).在此基礎(chǔ)上,提出了具備對(duì)異構(gòu)數(shù)據(jù)實(shí)現(xiàn)統(tǒng)一表示能力的屬性圖擴(kuò)展模型,并提出了針對(duì)在線查詢(xún)和計(jì)算的屬性操作符與查詢(xún)語(yǔ)法.在第2 節(jié),本文提出了基于智能屬性圖模型的分布式數(shù)據(jù)融合管理系統(tǒng)PandaDB,該系統(tǒng)實(shí)現(xiàn)了結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù)的高效存儲(chǔ)管理,并提供了靈活的AI 算子擴(kuò)展機(jī)制,具備對(duì)多元異構(gòu)數(shù)據(jù)內(nèi)在信息的即席查詢(xún)能力.測(cè)試實(shí)驗(yàn)和案例證明,PandaDB 在大規(guī)模屬性過(guò)濾查詢(xún)和高并發(fā)查詢(xún)響應(yīng)上具備較好的性能表現(xiàn).同時(shí),PandaDB 可應(yīng)用在學(xué)術(shù)圖譜實(shí)體消歧與可視化等多元異構(gòu)數(shù)據(jù)融合管理的場(chǎng)景.
目前,PandaDB 還存在著一些不足.一方面,AIPM 模塊與系統(tǒng)相對(duì)獨(dú)立部署,這種模式降低了系統(tǒng)的耦合性,有利于擴(kuò)展和維護(hù),但面對(duì)大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù)信息查詢(xún)請(qǐng)求時(shí),模塊間信息傳輸?shù)拈_(kāi)銷(xiāo)較大.未來(lái)應(yīng)研究更為合理的AI 功能集成機(jī)制,結(jié)合多元異構(gòu)數(shù)據(jù)即席查詢(xún)的場(chǎng)景特性設(shè)計(jì)任務(wù)調(diào)度方法,提升系統(tǒng)性能;另一方面,從智能屬性中抽取內(nèi)嵌式屬性的操作,目前還缺乏有效的緩存和預(yù)測(cè)機(jī)制,造成即席抽取的過(guò)程延時(shí)較大.PandaDB 將進(jìn)一步結(jié)合應(yīng)用,進(jìn)一步提升系統(tǒng)的性能和穩(wěn)定性,從而提升多元異構(gòu)數(shù)據(jù)融合管理的能力.