沈志宏 ,趙子豪,2,王華進,劉忠新,胡 川,2,周園春,2
1(中國科學院 計算機網絡信息中心,北京 100190)
2(中國科學院大學,北京 100049)
在大數據時代,隨著各類應用的推廣和使用,數據產生速度越來越快、數據體量越來越大.一方面,數據采集技術的迅猛發展,使得數據的結構更多樣、種類更豐富.數據表現出多元異構的特點,非結構化數據在其中占有較大比重.有研究表明,視頻、音頻、圖片等非結構化數據占據高達90%的比例[1].另一方面,近年來,數據中臺、知識圖譜等數據管理分析技術得到了廣泛的應用.數據中臺要求結構化/非結構化數據能夠在統一的環境中得到良好的治理,以便支持多種應用;知識圖譜,特別是多模態知識圖譜[2],要求對底層結構化/非結構化數據進行融合關聯分析,并支持用戶進行交互式查詢.這些技術均提出了對結構化/非結構化數據進行融合管理和分析的需求.
結構化數據通常具有較為規范、統一的形式.目前,針對結構化數據的管理和分析,已具有成熟的數據模型、查詢語言和管理系統.與結構化數據相比,非結構化數據的管理方式存在著諸多差異,這給高效的結構化/非結構化數據的融合管理和分析帶來了多方面的挑戰.
(1)分離的存儲管理方式,給結構化/非結構化數據的統一管理帶來挑戰.相對于結構化數據,非結構化數據占有更大的空間,出于讀寫效率考慮,非結構化數據往往單獨存在于文件系統,或者對象存儲系統,這使得維護結構化/非結構化數據一致性的難度增大;
(2)差異化的信息獲取方式,給結構化/非結構化數據的統一分析帶來挑戰.相對于結構化數據,非結構化數據內容比較復雜,為了實現高效檢索和分析,往往需要預先引入模式識別、深度學習等方法實現信息抽取和數據挖掘,從而獲取非結構化數據所蘊含的內在信息;
(3)不一致的檢索方式,給結構化/非結構化數據的一致化即席查詢帶來挑戰.與結構化數據具有較為成熟的SQL、類SQL 查詢語言的現狀不同,非結構化數據的信息檢索往往缺乏統一的操作模式和查詢語法,目前采用的多是逐案的個性化方案.
為實現結構化/非結構化數據的融合管理和分析,需要從模型層面出發,設計統一的表示和查詢方法.傳統的關系模型、屬性圖模型不能有效揭示和表示非結構化數據的內在信息.有學者提出將數據和Schema 表示為邊標記圖,以此替代非結構化數據底層類型約束的缺失[3].但該方法僅提出一種為非結構化數據添加Schema 的方法,不能實現對非結構化數據中信息的自由檢索.Li 等人提出從基本屬性、語義特征、底層特征和原始數據等4 個角度定義非結構化數據[4],但這種方法依賴于預定義,并不適用于非結構化數據的交互查詢.近年來,有學者提出在非結構化數據流上抽取RDF 三元組的方法[5],該方法只實現了三元組的抽取,不能支持對非結構化數據內在信息的交互式查詢,且并不具備數據管理系統的基本能力.
另外一種融合管理的路線是將非結構化數據在數據庫中存儲為二進制大對象(binary large object,簡稱BLOB),當應用獲取數據的時候,返回一個二進制數組或者數據流.這種方法在性能和功能上都不令人滿意[6].針對此問題,研究人員提出了一系列非結構化數據管理系統[7?9],這些系統綜合考慮了非結構化數據體積大、結構復雜的特點,設計了合適的存儲模型,一定程度上解決了非結構化數據的存儲和管理問題,但其提供的查詢服務僅基于文件對象本身和元數據,不能提供對非結構化數據內在信息的查詢能力.
由此,本文提出了屬性圖擴展模型及其查詢方法.屬性圖擴展模型在傳統屬性圖的基礎增加了對非結構化數據內在信息的表示能力,以及結構化和非結構化數據之間的互操作能力.在此基礎上,本文繼而提出基于智能屬性圖模型的異構數據智能融合管理系統PandaDB.
本文第1 節給出屬性圖擴展模型和相關概念,包括層疊屬性圖、智能屬性圖、次級屬性等,并提出屬性操作符和查詢語法.第2 節給出PandaDB 的系統設計與具體實現.第3 節通過實驗和案例驗證該系統的效率及可行性.第4 節介紹與本文研究相關的工作.最后,對未來研究可能面臨的挑戰進行展望.
傳統屬性圖模型無法有效表示非結構化屬性,本節提出屬性圖擴展模型,以解決非結構化屬性的有效表示問題;然后介紹針對屬性圖擴展模型的語義操作和查詢語法設計,以支持因引入非結構化屬性及其內在信息所帶來的新的查詢特性.
傳統的屬性圖模型可以形式化表示為G=(V,E,P),其中,G表示全體數據,V表示數據中的實體集合,E表示實體間的關系集合,P表示數據集中實體的屬性集合.
針對圖片、語音、文本這樣的非結構化屬性,屬性圖模型無法有效揭示其蘊含的內在信息(如:某類頂點的photo 屬性蘊含有“車牌號”信息),內在信息通常是離線且具有結構延遲的.
? 離線:將非結構化屬性轉化為結構化、半結構化屬性的信息抽取過程,屬于對數據的預處理;
? 結構延遲:非結構化屬性的內在信息不具備明確定義的結構,而是根據應用的后期需要,從而選擇特定的信息抽取方法,這種結構是不明確的、延遲定義的.
為增強對結構化屬性、非結構化屬性的統一表示能力,本文針對屬性圖模型進行了擴展,提出了層疊屬性圖模型和智能屬性圖模型.
定義1.具備以下特征的屬性圖被稱為層疊屬性圖(cascading property graph).
1)層疊屬性圖Gc可以表示為GC=(V,E,PP,PN),其中,PP是基本屬性(primitive property)集合,PN是內嵌式屬性(nested property)集合;
2)基本屬性的值為文本、數值、二進制數組等基本數據類型;
3)內嵌式屬性的值為另外一個屬性圖.
定義2.具備以下特征的屬性圖被稱為智能屬性圖(intelligent property graph).
1)智能屬性圖GI可以表示為GI=(V,E,PP,O),其中,O為語義操作集合;
2)存在PI?PP,PI為智能屬性集合;
3)O=(S?,Sξ),其中,S?為智能屬性展開操作集合,Sξ為智能屬性語義計算操作集合;
4)對于智能屬性pi∈PI,存在展開操作?∈S?,可滿足pn=?(pi),且pn∈PN,即,將智能屬性pi展開為內嵌式屬性pn;
5)對于智能屬性p1∈PI和p2∈PI,存在語義計算操作ξ∈Sξ,可滿足σ=ξ(p1,p2).對p1和p2兩個智能屬性進行語義計算,得到結果σ.
定義3.內嵌式屬性具有次級屬性(sub-property).
1)對于智能屬性圖GI=(V,E,PP,O),若存在Vi∈V且Vi具有內嵌式屬性,則根據定義1,有,其中,為傳統屬性圖
作為示例,圖1 給出了一個智能屬性圖,圖中存在一個Car 類型的頂點car1,其具有一個智能屬性photo,執行展開操作后,photo 具有兩個次級屬性:photo→plateNumber 和photo→model.
基于定義2,本文定義了針對智能屬性的次級屬性抽取操作符和語義計算操作符.
? 次級屬性抽取操作符:次級屬性抽取操作符“→”用以抽取智能屬性的次級屬性,如針對photo 屬性執行“photo→plateNumber”,即可獲取到photo 中的車牌號;
? 語義計算操作符:傳統屬性圖查詢語言中的謂詞(predicate),只支持對屬性進行比較,如=、>、<、正則匹配等.本文針對智能屬性新增~:,::,:>等拓展謂詞,以表示非結構化屬性之間的相似關系、相似度、包含關系等邏輯(見表1).

Fig.1 Intelligent property graph model圖1 智能屬性圖模型

Table 1 Semantic computation operators表1 語義計算操作符
在屬性圖模型中,由于內在信息的不可見性,非結構化屬性之間的計算操作支持有限.結合定義1~定義3 中關于非結構化屬性的表述和屬性操作符的特性,智能屬性圖模型可以實現非結構化屬性內在信息的在線獲取,且結構是預定義的.
? 在線:從非結構化屬性中獲取結構化、半結構化信息(即次級屬性)的過程是按需的,無需對非結構化屬性進行專門的預處理;
? 結構預定義:非結構化數據內在信息依賴于schema 層面的定義,而非依賴于信息抽取工具的實現.在底層查詢機制的支持下,可以實現針對非結構化屬性的直接運算.
本文針對智能屬性圖模型,針對標準化Cypher 查詢語言[10]進行擴展,形成CypherPlus 語言.CypherPlus 定義了BLOB 屬性類型,用以表示非結構化屬性的值.CypherPlus 同時引入了BLOB 字面值、次級屬性抽取操作符、語義計算操作符等新特性,從而支持對非結構化屬性的表示和語義操作.
(1)BlobLiteral
用于表示非結構化屬性的字面值,格式如〈schema://path〉,其中,schema 可以為 FILE,HTTP(S),FTP(S),BASE64 等多種類型.如圖2 所示.

Fig.2 Grammer definition of BlobLiteral圖2 BlobLiteral 語法定義
(2)SubPropertyExtractor
用于表示次級屬性的抽取操作,如圖3 所示,其中,PropertyKeyName 為次級屬性的名稱;

Fig.3 Grammer definition of SubPropertyExtractor圖3 SubPropertyExtractor 語法定義
語義計算操作符,包括SemanticCompare,SemanticLike,SemanticUnlike,SemanticIn,SemanticContain 等操作符.以SemanticLike 為例,它用以指示兩個屬性的值是否相似,語法定義如圖4 所示,其中,AlgorithmName 為指定計算的算法名稱,Threshold 為閾值,AlgorithmName 和Threshold 為可選項,該情況下執行引擎則采用默認的比較器和閾值.

Fig.4 Grammer definition of SemanticLike圖4 SemanticLike 語法定義
例如,針對圖1 的數據模型,可以查找與車牌號為HHMF442 的車相似的車,查詢語句如下:
? Q1:match (c1:CAR),(c2:CAR)where c1.photo~:c2.photo and c1→plateNumber=‘HHMF442’ return c2;
? Q2:return ‘Zhihong SHEN’ ::jaro ‘SHEN Zhihong’.
查詢語句Q2 用以計算兩個文本的相似度.
為實現結構化、非結構化數據的融合管理和關聯查詢分析,本文采用智能屬性圖模型,基于Neo4j 開源版本,設計并實現了異構數據智能融合管理系統PandaDB.本部分第2.1 節介紹PandaDB 的總體架構,第2.2 節~第2.5節分別介紹各模塊的設計思路和實現細節.
PandaDB 基于智能屬性圖模型組織數據,底層數據被分為圖結構數據、結構化屬性數據和非結構化屬性數據這3 部分.其中,圖結構數據指圖的節點和邊等描述圖結構的數據;結構化屬性數據指數值、字符串、日期等類型的數據;非結構化屬性數據泛指除結構化數據之外的數據,如視頻、音頻、圖片、文檔等.PandaDB 以BLOB對象的形式存儲非結構化數據,并將其表示為實體(節點)的屬性.根據上述3 類數據的應用特點,PandaDB 設計了分布式多元存儲方案.
? 分布式圖數據存儲:基于傳統的圖數據庫保存圖結構數據和屬性數據,在每個節點上保存相同的數據副本;
試驗所用材料為濰縣蘿卜種子,由山東省濰坊市農業科學院提供。試驗于 2016年在濰坊學院生物與農業工程學院種子科學與工程實驗室進行。
? 結構化屬性協存:基于ElasticSearch,Solr 等外部存儲實現大規模結構化屬性數據的存儲和索引構建;
? BLOB 存儲:基于Hbase,Ceph 等存儲系統實現非結構化屬性數據的分布式存儲.
PandaDB 總體架構如圖5 所示,重要模塊描述如下.
? 存儲引擎:維護本地的圖結構數據,調度外部屬性存儲,按需為查詢引擎提供服務;
? 外部存儲:包括基于ElasticSearch 的結構化屬性協存和基于HBase 的BLOB 存儲兩部分;
? 查詢引擎:解析并執行CypherPlus 查詢;
? AIPM:AI 模型服務框架,通過模型和資源管理,實現AI 模型的靈活部署、高效按需運行;同時,有效屏蔽AI 模型之間的依賴.
PandaDB 集群采用了無主架構設計,圖5 中,PandaNode 是其中的節點,包含查詢引擎和存儲引擎兩部分.屬性數據和非結構化數據存儲在外置分布式存儲工具中,PandaNode 只保存圖結構數據,通過屬性存儲接口與外置存儲交互.

Fig.5 Architecture of PandaDB圖5 PandaDB 總體架構設計
PandaDB 將BLOB 引入了Neo4j 的類型系統,同時對Neo4j 的存儲結構進行了改造.存儲結構如圖6 所示,除了Neo4j 保留區,BLOB 的屬性字段同時記錄了BLOB 的元數據,包括唯一標識blobid、長度length 和MIME類型.

Fig.6 Design of BLOB storage structure圖6 BLOB 存儲結構設計
為實現對外部BLOB 存儲系統的調用,PandaDB 中設計了BlobValueManager 接口,定義了getById(?)/store(?)/discard(?)等操作方法.作為BlobValueManager 的一個實現,HBaseBlobValueManager 基于HBase 集群實現BLOB 數據的存取.在該方案中,為支持大規模BLOB 的存儲,HBase 被設計成包含N列的寬表,采用blobid/N作為HBase 表的rowkey,blobid%N對應于HBase 的某一列.
為加速BLOB 的讀取,BLOB 的內容讀取被封裝為一個InputStream,在用戶通過Bolt 協議獲取BLOB 內容或進行語義計算的時候,這種流式讀取的機制提高了運行的性能.
多元存儲帶來了存儲事務保證的復雜性,客戶端在寫入數據時,將寫操作請求發送到PandaDB 的Leader 節點,然后由Leader 節點執行具體的寫入操作.Leader 節點的具體操作流程如下.
(1)Leader 節點開啟事務,執行Cypher 解析,翻譯成具體的執行操作;
(2)向BLOB 存儲引擎發送請求,執行BLOB 數據的寫入操作.若執行失敗,則向上回滾,標記事務失敗;
(3)若BLOB 數據寫入成功,則執行圖結構數據和結構化屬性數據的寫入操作;若執行失敗,則向上回滾,標記事務失敗;
(4)將結構化屬性數據的修改,同步到協存.若執行失敗,則向上回滾,標記事務失敗;
(5)執行事務提交;
(6)關閉事務,返回操作成功.
PandaDB 查詢引擎主要實現查詢語句的解析、邏輯計劃的生成與優化、物理計劃的優化與執行.基于Neo4j,PandaDB 查詢引擎主要改進如下幾個部分.
(1)解析階段:增強Cypher 語言的解析規則,支持BLOB 字面常量(BlobLiteral)、BLOB 次級屬性的抽取操作符(SubPropertyExtractor)以及屬性語義操作符(SemanticComparison);
(2)語法檢查階段:針對BlobLiteral,SubPropertyExtractor,SemanticComparison 執行形式檢查,如發現非法的BLOB 路徑、非法的語義算子和閾值等;
(3)計劃優化階段:針對BlobLiteral 的操作進行優化,針對大規模屬性過濾情形,采用謂詞下推策略等;
(4)計劃執行階段:充分調度屬性協存模塊、AIPM 模塊以及BLOB 存儲模塊,實現高效的屬性優先過濾、BLOB 獲取與語義計算.圖7 示出了一個典型的查詢過程,該查詢要求返回所有與photo0 中人臉相似,且age值大于30 的節點.

Fig.7 CypherPlus query process圖7 CypherPlus 查詢流程
圖8 從查詢語法、查詢計劃、執行引擎這3 個層面示出了PandaDB 查詢機制的設計.解析引擎將查詢語句中的符號轉化為語義算子,執行引擎根據規則集選擇AI 模型處理對應的數據,并將結果返回.

Fig.8 Query mechanism of intelligent property graph圖8 智能屬性圖查詢機制
為加速非結構化數據的查詢,PandaDB 實現了語義索引功能.非結構化數據中的信息被認為是一種語義信息,如圖片中的人臉、圖片中汽車的車牌號、錄音中所包含的文字信息等.AI 模型從非結構化數據中抽取信息的過程可以看作是數據從高維空間到低維空間的映射,在低維空間映射的結果可以作為數據在該場景下的語義索引.
如在人臉比對查詢的過程中,需要比較不同圖片中人臉的相似度,通常的做法是利用人臉識別模型抽取人臉特征,比較兩個特征的相似度.在PandaDB 中,以向量形式表示的人臉特征被視為該非結構化在當前查詢場景下的語義索引.系統處理涉及人臉比對的查詢時,優先檢查是否有對應的語義索引,若該查詢對應的語義索引存在,則不向AIPM 發起處理請求,直接比較語義索引得到結果.
語義索引可以減少查詢引擎對AI 服務的請求次數,從而避免了重復的數據傳輸,有利于提高系統效率.
PandaDB 引入屬性數據協存機制,用于實現結構化屬性數據的全文索引,提高節點屬性的過濾查詢效率.目前,PandaDB 支持ElasticSearch 作為協存引擎.
圖9 示出PandaDB 協存模塊的寫入流程,協存機制的關鍵設計如下.
(1)屬性數據在ElasticSearch 中的存儲結構:每個Neo4j 圖數據庫對應協存引擎(ElasticSearch)中一個獨立的索引,每個節點的屬性數據和標簽數據均組織成ElasticSearch 中的一個文檔,其中,節點在Neo4j數據庫中的ID 作為文檔的ID,節點屬性名作為文檔的屬性標簽,節點屬性值作為文檔的屬性數據,節點的標簽數據表示為特殊設置的屬性標簽.數值、字符串、坐標、日期、時間等結構化屬性數據類型分別轉換為ElasticSearch 中的對應數據類型;
(2)屬性寫入及更新:為了維持Neo4j 數據庫中的本地數據和ElasticSearch 中數據的一致性,PandaDB 對Neo4j 中事務操作執行模塊(operations)中的節點更新部分進行了擴展,設計了ExternalPropertyStore用于存儲在Neo4j 事務中執行的所有操作.當Neo4j 數據庫執行插入節點、添加標簽、設置屬性、刪除節點等操作的同時,也將對應的操作數據緩存到ExternalPropertyStore 中,當Neo4j 數據庫執行事務提交操作的同時,將緩存的操作數據同步到ElasticSearch 中;
(3)屬性過濾:為了基于協存實現節點屬性過濾,PandaDB 對Neo4j 的Cypher 查詢執行計劃進行了改造,將節點屬性過濾謂詞下推到協存管理模塊.根據謂詞過濾條件生成ElasticSearch 的檢索請求,最后將命中的文檔(節點)列表返回給查詢引擎做進一步篩選.為了避免大量查詢結果增大網絡傳輸延遲,PandaDB 采用了異步分批的方式傳遞的查詢結果.

Fig.9 Write progress of property co-store module in PandaDB圖9 PandaDB 協存模塊的寫入流程
AI 算法集成與調度主要包括本地算法驅動管理和AI 算法服務框架.
(1)本地算法驅動管理
為了對不同的抽取器(SubPropertyExtractor)和語義比較器(SemanticCompartor)進行統一管理,PandaDB 制定了驅動管理規則庫.圖10 是對規則庫中部分內容的展示,其中,DogOrCatClassifier 用以抽取寵物類型,適用于blob/image 類型的屬性;CosineStringSimilarity 用以計算兩個文本串的余弦相似度,僅適用于兩個string 類型的屬性.

Fig.10 Extractor and semantic comparator matching rule set圖10 抽取器和語義比較器匹配規則庫
(2)AI 算法服務框架
PandaDB 中的信息抽取能力通過AI 服務方式實現,AIPM 為PandaDB 提供AI 服務,它可以屏蔽不同AI模型之間的依賴沖突問題,降低人工智能模型的部署和維護難度,便于PandaDB 按需擴展AI 算子.圖11 給出了AIPM 與系統之間的交互邏輯.系統以HTTP 請求的方式向AIPM 發出查詢請求,請求的路徑與AI 算法具有對應關系,AIPM 接受到查詢請求,調用對應的AI 算法處理數據,以JSON 字符串的形式返回結果.為了增強AI 算子的可擴展性,AIPM 設計了統一的集成接口,并要求算子提供對這些接口的支持.圖12 是AI 模型管理框架的示意圖.

Fig.11 Interaction of PandaDB and AIPM圖11 AIPM 與PandaDB 交互框架

Fig.12 AI model management framework圖12 AI 模型管理框架
為驗證模型設計及PandaDB 實現的有效性,本文針對屬性協存、分布式方案、非結構化數據信息查詢進行了測試;同時,通過應用案例驗證PandaDB 對結構化和非結構化數據的融合管理能力.
本測試驗證基于ElasticSearch 屬性協存方案的性能,對Neo4j 和引入協存方案后的PandaDB 的查詢性能進行對比,測試環境見表2.

Table 2 Information about test environment表2 測試環境信息
實驗中使用的Cypher 查詢語句見表3.實驗中對每條查詢語句分別進行多次測試并取執行時間的平均值(如表4、圖13 所示).為避免冷啟動帶來的性能影響,測試前對系統進行了預熱.
從測試結果可看出:由于采用了ElasticSearch 作為節點屬性的協存和索引,在上述查詢語句執行測試中,PandaDB 占據明顯優勢;尤其在節點多屬性過濾查詢和模糊匹配查詢中,性能平均提升2 倍~6 倍.
為驗證分布式架構帶來的查詢響應能力的提升,本文在物理機集群上(物理機配置見表2)部署了PandaDB和Neo4j 單機版,對并發查詢請求的吞吐率進行評估.因Neo4j 社區版僅支持單機,故其中PandaDB 部署在3 臺物理機,Neo4j 部署在一臺物理機.
本文選擇了圖計算分析中的常見查詢作為測試用例,如計算節點出度和入度.將超時閾值設定為300s,在滿足90%查詢不超時的前提下,Neo4j 的吞吐量為每秒15 次查詢,PandaDB 的吞吐量為每秒40 次查詢.PandaDB的吞吐量接近Neo4j 的3 倍.

Table 3 Query statement in propery co-store test表3 協存方案驗證測試的查詢語句

Table 4 Test result for property co-store表4 協存方案驗證測試結果

Fig.13 Comparison of query time in co-store圖13 協存方案查詢響應時間對比
為實現對非結構化數據查詢的加速,PandaDB 采用了構建語義索引的方式,減少數據傳輸和調用AI 服務的次數.本小節基于人臉檢測場景,使用LFW 數據集[11]構建對比實驗,通過對比各種方案下的查詢耗時,驗證語義索引方案的加速效果.
本實驗的任務目標為:從樣本集中找到與目標人臉圖片相似度最高的人臉圖片.本實驗共分4 組對比,各組實驗內容及實驗條件細節如下.
? NOOP:無優化,PandaDB 向AIPM 發出圖片相似度對比請求,逐個將圖片以BLOB 流的形式發送給AIPM;AIPM 接收請求后抽取特征,將比對結果返回給PandaDB;
? DLOC:數據本地化方案,PandaDB 與AIPM 部署在同一臺服務器上,減少BLOB 傳輸的網絡開銷;
? AIIDX:AI 服務緩存方案,PandaDB 向AIPM 請求數據,AIPM 利用本地緩存的特征數據響應請求.模仿數據流水線工具的實現;
? SEMIDX:語義索引方案,PandaDB 中構建非結構化數據的語義索引(人臉特征向量),執行查詢時,直接調用本地索引數據比較.
表5 給出了在不同樣本數下,各方案執行同一個查詢的耗時.SEMIDX 方案相比于其他方案減少了數據傳輸和重復的數據抽取,故理論上該方案在4 個方案中速度最快.
從表5 中可以看出:在樣本數相同的條件下,SEMIDX 方案具有最短的查詢時間.在樣本數超過2 000 的檢索性能對比中,加速比超過1 萬倍.

Table 5 Comparison of query time under different methods表5 不同方法的查詢耗時對比
學術圖譜泛指以學術內容為主體的領域知識圖譜,典型應用如AMiner[12]和AceKG[13].本文基于KDD2020的參會人員信息[14]構建了一個小型的學術圖譜,其中包含論文、作者、機構等3 類節點,根據論文創作關系和學者與機構間的隸屬關系,將作者照片、論文的PDF 全文等非結構化數據作為屬性直接保存在PandaDB 中.
圖14 是 KDD2020 數據的可視化展示(基于開源項目 InteractiveGraph:https://github.com/grapheco/InteractiveGraph),其中,頭像屬性存儲在PandaDB,且在PandaDB 的基礎上提供了“以圖找圖”的功能,即實現了基于頭像的快速匹配.

Fig.14 Visualization of KDD2020圖14 KDD2020 數據的可視化展示
學術圖譜原始數據中通常會出現學者重名、不同機構的簡稱或縮寫相同等情況,因此,圖譜創建過程中通常面臨實體消歧問題.目前,大多數實體消歧方法都以聚類為基礎,文獻[15?17]使用表層特征值計算實體間相似度,但這種方法不能充分利用上下文特征.因為基于表層特征的方法面臨信息不足的問題,有學者嘗試引入外部信息,如WikiPedia 中的信息,將這些知識資源作為實體的擴展特征,輔助提升聚類準確性,代表工作如文獻[18,19].文獻[20,21]使用圖計算的方法,充分利用網絡數據的結構信息,但并不具有很好的普適性.近年來,隨著深度學習技術的巨大進步,有學者利用embedding 技術[22]和神經網絡技術[23],這類方法相比于傳統方法具有更好的效果,但準確性方面仍不能滿足人們的預期.本案例基于PandaDB,提出了一種融合結構化屬性和非結構化屬性的消歧方法.如圖15 所示,某學術圖譜中有兩個姓名分別為Park Bill 和Tom Green 的人物節點以及一個名為Data Vis 的論文節點,需要判斷T.Green 和Tom Green 是否為同一實體,從而判斷Park Bill 和Tom Green 之間是否存在合作關系.由于論文中存在的屬性數據不足,消歧很有困難.基于PandaDB 對非結構化信息抽取及語義比較能力,可以充分利用Tom Green 的照片以及論文作者照片列表,從而達到消歧目的.圖15 下半部分給出了完成該操作的CypherPlus 語句,其中,<:操作符表示包含關系,只需要找到對應的節點,判斷n.photo<:p.screenshot成立與否,即可計算出二者之間是否存在合作關系.

Fig.15 Diagram of entity disambiguation based on PandaDB圖15 基于PandaDB 實現實體消歧示意圖
為實現數據應用中的多元異構數據的統一管理和分析,一種方法是通過ETL 工具,采用某種統一的形式處理異構數據.但這種方法成本較高,而且數據和分析需求的變化會使原本的ETL 流程失效[24].異構數據管理可以支持對多模型數據的存儲和統一查詢.學術界在上世紀80 年代就提出了聯邦數據庫的解決概念,Multibase[25]是其中的代表系統.這類系統的特點是定義全局schema 和基于映射的查詢語言,用戶基于全局schema 查詢,系統將查詢映射到分區schema.另一類以Spark SQL[26]為代表的系統提供統一的API,允許用戶以關系模型使用數據,在提升效率和簡化查詢方面有較好的效果.BigIntegator[27],Forward[28],D4M[29]等系統整合了NoSQL,其中,Forward 以基于json 的數據模型組織數據,D4M 使用關聯陣列(associative-array)數據模型,這種較為靈活的模型使系統可以在異構數據上執行查詢.
在數據管理領域,屬性圖模型[30]是一種常用的管理圖數據的數據模型,屬性圖中的節點和關系都可以被賦予標簽和關聯任意鍵值對形式的屬性[31].屬性圖增加了節點和邊的信息,同時又沒有改變圖的整體結構.目前,屬性圖模型被圖數據庫業界廣泛采用[32,33],包括著名的圖數據庫Neo4j[34],Titan[35]等.Neo4j 是目前應用較為廣泛的一款開源圖數據庫,其具有從原生圖數據存儲到可視化插件、再到圖數據分析插件的豐富生態.JanusGraph[36]是在Titan 基礎上開發的一種基于屬性圖的分布式圖數據庫.JanusGraph 采用存儲層和查詢引擎分離的設計,可以使用Cassandra 或HBase 作為存儲層.JanusGraph 通過使用第三方分布式索引庫ElasticSearch,Solr 和Lucene 實現檢索功能.其他的圖數據庫還包括:Amazon 的Neptune[37];微軟的Azure CosmosDB[38],TigerGraph[39],OrientDB[40]等.
人工智能技術已經廣泛地應用到圖像識別、語音識別、機器翻譯等領域中.為了實現對語音、圖片等多種信息的理解,多模態機器學習的研究嘗試在機器學習的角度整合模型對非結構化數據的理解能力[41,42].人工智能與數據庫的交叉研究一直是學術界研究的熱點內容.人工智能與數據庫的融合,存在AI4DB(AI for database)和DB4AI(database for AI)兩個方向[43].AI4DB 旨在通過AI 技術提高DB 的效率和能力,如自動化數據庫參數調優[44,45]、基數估計[46]、索引推薦[47]、查詢優化[48,49]等.DB4AI 是以數據庫為AI 算法提供數據服務,供算法進行訓練和學習.例如:借助數據庫的統一SQL 接口,為用戶提供自定義的函數協助構建模型;通過數據庫張量計算協助模型訓練;通過持久化AI 模型以重復使用.
隨著大數據時代的來臨,海量數據的存儲與計算使得單機服務已經無法滿足需求,越來越多的任務需要分布式系統支持.保證分布式系統的可靠性和一致性至關重要.解決這個問題的一個著名算法是由Lamport 提出的Paxos 算法[50,51].此后,為了適應不同的工程環境,研究人員在Paxos 的基礎上提出了很多新的算法[52].比較著名的有Multi-Paxos[51,53]、Liskov 等人提出的VR(viewstamped replication)算法[54,55]、雅虎公司設計的ZAB(Zookeeper’s atomic broadcast)算法[56]、Ongaro 等人提出的Raft 算法[57]等.
本文從結構化/非結構化數據的融合管理和即席查詢需求角度出發,分析了目前多元異構數據融合管理方面統一表示和交互式查詢等難點.在此基礎上,提出了具備對異構數據實現統一表示能力的屬性圖擴展模型,并提出了針對在線查詢和計算的屬性操作符與查詢語法.在第2 節,本文提出了基于智能屬性圖模型的分布式數據融合管理系統PandaDB,該系統實現了結構化/非結構化數據的高效存儲管理,并提供了靈活的AI 算子擴展機制,具備對多元異構數據內在信息的即席查詢能力.測試實驗和案例證明,PandaDB 在大規模屬性過濾查詢和高并發查詢響應上具備較好的性能表現.同時,PandaDB 可應用在學術圖譜實體消歧與可視化等多元異構數據融合管理的場景.
目前,PandaDB 還存在著一些不足.一方面,AIPM 模塊與系統相對獨立部署,這種模式降低了系統的耦合性,有利于擴展和維護,但面對大規模的非結構化數據信息查詢請求時,模塊間信息傳輸的開銷較大.未來應研究更為合理的AI 功能集成機制,結合多元異構數據即席查詢的場景特性設計任務調度方法,提升系統性能;另一方面,從智能屬性中抽取內嵌式屬性的操作,目前還缺乏有效的緩存和預測機制,造成即席抽取的過程延時較大.PandaDB 將進一步結合應用,進一步提升系統的性能和穩定性,從而提升多元異構數據融合管理的能力.