亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于查詢語(yǔ)言轉(zhuǎn)換的多源數(shù)據(jù)統(tǒng)一訪問(wèn)框架①

        2021-10-11 06:46:20李躍鵬溫亮明黎建輝
        關(guān)鍵詞:提供者數(shù)據(jù)模型數(shù)據(jù)源

        李躍鵬,溫亮明,黎建輝

        1(中國(guó)科學(xué)院 計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)

        2(中國(guó)科學(xué)院大學(xué),北京 100049)

        1 引言

        大數(shù)據(jù)應(yīng)用系統(tǒng)是由多種數(shù)據(jù)處理工具構(gòu)成的集成性系統(tǒng),其數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)存儲(chǔ)位置、數(shù)據(jù)管理與分析工具等均具有多樣化特點(diǎn)[1,2].例如在電商系統(tǒng)中,通過(guò)關(guān)系數(shù)據(jù)庫(kù)管理用戶交易數(shù)據(jù),商品數(shù)據(jù)存儲(chǔ)于文檔數(shù)據(jù)庫(kù);為加快系統(tǒng)響應(yīng)速度,通過(guò)Key-Value 數(shù)據(jù)庫(kù)緩存高頻率訪問(wèn)數(shù)據(jù);統(tǒng)計(jì)報(bào)表使用流處理工具、SQL 查詢引擎等進(jìn)行歷史數(shù)據(jù)統(tǒng)計(jì)分析.在科學(xué)大數(shù)據(jù)管理領(lǐng)域,科研項(xiàng)目通過(guò)領(lǐng)域關(guān)系型數(shù)據(jù)庫(kù)管理從傳感器、遙感衛(wèi)星等科學(xué)裝置獲得的實(shí)驗(yàn)數(shù)據(jù);使用領(lǐng)域非結(jié)構(gòu)化數(shù)據(jù)庫(kù)進(jìn)行高能物理對(duì)撞機(jī)事件數(shù)據(jù)的存儲(chǔ)與索引;通過(guò)圖數(shù)據(jù)庫(kù)管理物種、基因組等知識(shí)圖譜數(shù)據(jù);借助領(lǐng)域數(shù)據(jù)分析工具對(duì)各類實(shí)驗(yàn)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)與交叉分析,進(jìn)而得出實(shí)驗(yàn)結(jié)論[3].大數(shù)據(jù)集成系統(tǒng)使用的數(shù)據(jù)處理工具分為兩類:數(shù)據(jù)提供者使用標(biāo)準(zhǔn)查詢語(yǔ)言、WebService 等接口方式提供數(shù)據(jù)庫(kù)、開放平臺(tái)等基礎(chǔ)數(shù)據(jù)管理服務(wù);數(shù)據(jù)消費(fèi)者調(diào)用多個(gè)數(shù)據(jù)提供者接口獲取數(shù)據(jù),并通過(guò)標(biāo)準(zhǔn)查詢語(yǔ)言、WebService 等接口對(duì)多源異構(gòu)數(shù)據(jù)進(jìn)行查詢、統(tǒng)計(jì)、分析、展示等操作,如SQL 查詢引擎、數(shù)據(jù)倉(cāng)庫(kù)、管理系統(tǒng)等.數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者之間的數(shù)據(jù)訪問(wèn)方式具有以下特點(diǎn):

        (1)數(shù)據(jù)訪問(wèn)接口各異:數(shù)據(jù)提供者接口需經(jīng)轉(zhuǎn)換才能符合數(shù)據(jù)消費(fèi)者的接口格式要求.比如報(bào)表系統(tǒng)中,數(shù)據(jù)消費(fèi)者使用SQL 語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì),然而數(shù)據(jù)提供者的服務(wù)接口為文檔查詢、WebService 以及文件等形式.

        (2)數(shù)據(jù)訪問(wèn)模式多樣:數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者之間是多對(duì)多數(shù)據(jù)訪問(wèn)方式.例如數(shù)據(jù)倉(cāng)庫(kù)使用SQL語(yǔ)言對(duì)多個(gè)異構(gòu)數(shù)據(jù)源進(jìn)行分析;而異構(gòu)數(shù)據(jù)源除了為數(shù)據(jù)倉(cāng)庫(kù)提供服務(wù),還會(huì)被多個(gè)部門或外部應(yīng)用系統(tǒng)消費(fèi).

        (3)松耦合方式集成:數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者獨(dú)立運(yùn)行、部署與迭代更新.例如作為數(shù)據(jù)提供者,存儲(chǔ)用戶、業(yè)務(wù)與實(shí)驗(yàn)等數(shù)據(jù)的數(shù)據(jù)庫(kù)會(huì)根據(jù)技術(shù)、場(chǎng)景等因素進(jìn)行更新,然而數(shù)據(jù)消費(fèi)者的訪問(wèn)接口卻并不改變;相反,數(shù)據(jù)消費(fèi)者會(huì)根據(jù)業(yè)務(wù)、性能等需要調(diào)整數(shù)據(jù)消費(fèi)者的數(shù)據(jù)訪問(wèn)接口.

        基于以上數(shù)據(jù)訪問(wèn)特點(diǎn),要實(shí)現(xiàn)數(shù)據(jù)提供者接口與消費(fèi)者接口的交互協(xié)作,集成系統(tǒng)必須提供一個(gè)接口適配器以滿足雙方需要,目前已有研究特定應(yīng)用場(chǎng)景接口適配器的相關(guān)工作.隨著數(shù)據(jù)提供者與數(shù)據(jù)消費(fèi)者工具的更新變化,這種針對(duì)特定應(yīng)用場(chǎng)景的一對(duì)一型接口適配器勢(shì)必難以適應(yīng)數(shù)據(jù)遷移與工具迭代更新需要,因此我們提出了一種基于查詢語(yǔ)言轉(zhuǎn)換的多源數(shù)據(jù)統(tǒng)一訪問(wèn)框架,通過(guò)引入中間數(shù)據(jù)模型和雙端適配器將數(shù)據(jù)訪問(wèn)接口API 與實(shí)際數(shù)據(jù)模型相分離,使得集成系統(tǒng)具有更好的靈活性和擴(kuò)展性.

        2 相關(guān)工作

        接口適配器以數(shù)據(jù)消費(fèi)者數(shù)據(jù)模型或數(shù)據(jù)提供者數(shù)據(jù)模型作為中間數(shù)據(jù)模型.首先將數(shù)據(jù)提供者或數(shù)據(jù)消費(fèi)者的Schema 映射為中間數(shù)據(jù)模型,然后通過(guò)數(shù)據(jù)轉(zhuǎn)換或查詢語(yǔ)言轉(zhuǎn)換方式完成接口適配轉(zhuǎn)換.數(shù)據(jù)轉(zhuǎn)換適配器將數(shù)據(jù)提供者所持有數(shù)據(jù)動(dòng)態(tài)或一次性轉(zhuǎn)換為消費(fèi)者可識(shí)別的數(shù)據(jù)格式進(jìn)行存儲(chǔ)或處理;查詢語(yǔ)言轉(zhuǎn)換適配器將數(shù)據(jù)消費(fèi)者端的查詢語(yǔ)言轉(zhuǎn)換為數(shù)據(jù)提供者端的查詢語(yǔ)言.

        根據(jù)數(shù)據(jù)消費(fèi)者對(duì)數(shù)據(jù)提供者的訪問(wèn)方式,數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者的接口適配方式分為一對(duì)一適配、多對(duì)一適配以及多對(duì)多適配3 種(如圖1(a)至圖1(c)所示).

        (1)一對(duì)一適配:采用查詢語(yǔ)言轉(zhuǎn)換方式將數(shù)據(jù)消費(fèi)者接口轉(zhuǎn)換為數(shù)據(jù)提供者查詢語(yǔ)言.例如文獻(xiàn)Sql2Saprql (RETRO)[4]、Sparql2Sql (D2RQ)[5]、Cypher2sql (Cytosm)[6]等提出了將不同查詢語(yǔ)言轉(zhuǎn)換為SQL 查詢語(yǔ)句或?qū)QL 查詢語(yǔ)句轉(zhuǎn)換為其它查詢語(yǔ)言的方法.

        (2)多對(duì)一適配:以消費(fèi)者數(shù)據(jù)模型為中間數(shù)據(jù)模型,數(shù)據(jù)提供者向統(tǒng)一模型動(dòng)態(tài)提供適配數(shù)據(jù).例如SparkSQL[7],Presto[8]、Impala[9]等SQL 查詢引擎適配器將關(guān)系數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、CSV 文件、JSON 文件等數(shù)據(jù)源動(dòng)態(tài)轉(zhuǎn)換為臨時(shí)關(guān)系表來(lái)實(shí)現(xiàn)SQL 統(tǒng)一查詢.Gradoop 適配器將異構(gòu)數(shù)據(jù)動(dòng)態(tài)轉(zhuǎn)換為屬性圖模型的節(jié)點(diǎn)和邊來(lái)實(shí)現(xiàn)Cypher 語(yǔ)言統(tǒng)一查詢[10].

        (3)多對(duì)多適配:為數(shù)據(jù)提供者和數(shù)據(jù)消費(fèi)者提供接口適配.例如Polystore[11]要求系統(tǒng)支持多種全局?jǐn)?shù)據(jù)模型與本地?cái)?shù)據(jù)模型之間的轉(zhuǎn)換,通過(guò)數(shù)據(jù)提供者與數(shù)據(jù)消費(fèi)之間的成對(duì)查詢語(yǔ)言轉(zhuǎn)換適配器為上層應(yīng)用提供多樣化數(shù)據(jù)查詢接口.

        以數(shù)據(jù)訪問(wèn)接口適配方法存在的問(wèn)題是中間數(shù)據(jù)模型與查詢語(yǔ)言模型綁定,使得接口適配器只在單個(gè)數(shù)據(jù)提供者與數(shù)據(jù)消費(fèi)者之間產(chǎn)生效用.對(duì)于數(shù)據(jù)轉(zhuǎn)換適配器,當(dāng)多個(gè)數(shù)據(jù)消費(fèi)者的數(shù)據(jù)模型不同時(shí),數(shù)據(jù)提供者必須向數(shù)據(jù)消費(fèi)者提供不同的適配數(shù)據(jù).對(duì)于查詢語(yǔ)言轉(zhuǎn)換適配器,多對(duì)多訪問(wèn)同樣必須采用case by case 方式實(shí)現(xiàn)成對(duì)查詢語(yǔ)言轉(zhuǎn)換.當(dāng)系統(tǒng)中存在n個(gè)異構(gòu)數(shù)據(jù)提供者和n個(gè)數(shù)據(jù)消費(fèi)者時(shí),要支持多對(duì)多訪問(wèn)就必須開發(fā)n!個(gè)適配器,如果新增一個(gè)異構(gòu)數(shù)據(jù)提供者則需要實(shí)現(xiàn)2n個(gè)轉(zhuǎn)換器,從而影響系統(tǒng)對(duì)新數(shù)據(jù)源的擴(kuò)展性.因此,本文嘗試探索提出一種雙適配器數(shù)據(jù)統(tǒng)一訪問(wèn)框架(如圖1(d)所示),通過(guò)數(shù)據(jù)提供者與數(shù)據(jù)消費(fèi)者兩端適配器將查詢語(yǔ)言與數(shù)據(jù)模型分離,從而對(duì)新數(shù)據(jù)提供者與數(shù)據(jù)消費(fèi)者的支持只要按需實(shí)現(xiàn)一個(gè)適配器即可.

        圖1 數(shù)據(jù)提供者與消費(fèi)者接口適配方式

        3 框架設(shè)計(jì)

        雙Adapter 數(shù)據(jù)統(tǒng)一訪問(wèn)框架BAF4DUA 將多個(gè)異構(gòu)數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者接口進(jìn)行適配,為上層應(yīng)用提供多樣化的數(shù)據(jù)服務(wù)接口.該框架使用中間模型統(tǒng)一表示數(shù)據(jù)提供者所持有數(shù)據(jù),中間查詢計(jì)劃統(tǒng)一表示消費(fèi)者與提供者查詢語(yǔ)言的語(yǔ)義;數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者兩端分別與中間模型進(jìn)行接口適配,將數(shù)據(jù)訪問(wèn)接口與數(shù)據(jù)模型分離,從而支持消費(fèi)者與提供者多對(duì)多數(shù)據(jù)訪問(wèn),提高系統(tǒng)的靈活性與擴(kuò)展性.

        如圖2所示,雙Adapter 數(shù)據(jù)統(tǒng)一訪問(wèn)框架由數(shù)據(jù)消費(fèi)端Adapter、中間數(shù)據(jù)模型、中間查詢計(jì)劃、數(shù)據(jù)提供者端Adapter 以及數(shù)據(jù)映射5 部分構(gòu)成.

        圖2 雙Adapter 數(shù)據(jù)統(tǒng)一訪問(wèn)框架

        (1)數(shù)據(jù)消費(fèi)者端Adapter是系統(tǒng)數(shù)據(jù)訪問(wèn)請(qǐng)求的編碼器.它將消費(fèi)者查詢語(yǔ)句涉及的目標(biāo)數(shù)據(jù)與中間數(shù)據(jù)模型進(jìn)行映射,同時(shí)將查詢語(yǔ)句的語(yǔ)義編碼為中間查詢計(jì)劃.根據(jù)系統(tǒng)設(shè)計(jì)需要,數(shù)據(jù)消費(fèi)者端Adapter還需對(duì)查詢結(jié)果進(jìn)行格式轉(zhuǎn)換以滿足消費(fèi)者應(yīng)用需求.

        (2)數(shù)據(jù)提供者端Adapter是系統(tǒng)數(shù)據(jù)訪問(wèn)請(qǐng)求的解碼器,它將中間查詢計(jì)劃解碼為數(shù)據(jù)提供者可識(shí)別的查詢語(yǔ)句,實(shí)現(xiàn)中間數(shù)據(jù)模型與數(shù)據(jù)提供者的數(shù)據(jù)映射.根據(jù)系統(tǒng)設(shè)計(jì)需要,數(shù)據(jù)提供者端Adapter 還需要將查詢結(jié)果轉(zhuǎn)換統(tǒng)一數(shù)據(jù)格式.

        (3)中間數(shù)據(jù)模型為系統(tǒng)多源異構(gòu)數(shù)據(jù)提供統(tǒng)一語(yǔ)義視圖,它定義數(shù)據(jù)的統(tǒng)一表示方式,記錄中間模型的元素構(gòu)成與數(shù)據(jù)持有者的映射關(guān)系,支持?jǐn)?shù)據(jù)的增、刪、改、查、合并等操作.根據(jù)系統(tǒng)設(shè)計(jì)需要,中間數(shù)據(jù)模型還需定義通用數(shù)據(jù)格式以供數(shù)據(jù)消費(fèi)者與數(shù)據(jù)提供者之間進(jìn)行查詢結(jié)果轉(zhuǎn)換.

        (4)中間查詢計(jì)劃將數(shù)據(jù)提供者和數(shù)據(jù)消費(fèi)者接口對(duì)數(shù)據(jù)的操作進(jìn)行抽象化處理,定義系統(tǒng)支持的運(yùn)算類型,實(shí)現(xiàn)數(shù)據(jù)提供者與數(shù)據(jù)消費(fèi)者查詢操作與中間查詢計(jì)劃運(yùn)算的相互轉(zhuǎn)換.由于不同數(shù)據(jù)提供者和數(shù)據(jù)消費(fèi)者對(duì)數(shù)據(jù)運(yùn)算操作的支持程度不同,根據(jù)系統(tǒng)設(shè)計(jì)需要,還必須對(duì)不支持的數(shù)據(jù)操作進(jìn)行補(bǔ)償運(yùn)算.

        (5)數(shù)據(jù)映射將數(shù)據(jù)提供者所持有數(shù)據(jù)與中間數(shù)據(jù)模型進(jìn)行映射,在映射過(guò)程中數(shù)據(jù)提供者根據(jù)中間數(shù)據(jù)模型的定義,將其所持有的數(shù)據(jù)按照映射規(guī)范向中間數(shù)據(jù)模型注冊(cè).在此過(guò)程中,數(shù)據(jù)映射規(guī)范需要適量增加或減少原有數(shù)據(jù)的限制以滿足中間數(shù)據(jù)模型的定義.

        4 框架實(shí)現(xiàn)

        為了驗(yàn)證BAF4DUA 框架在實(shí)際系統(tǒng)中的應(yīng)用,本文實(shí)現(xiàn)了一個(gè)多對(duì)多數(shù)據(jù)統(tǒng)一訪問(wèn)系統(tǒng),其中數(shù)據(jù)消費(fèi)者接口為標(biāo)準(zhǔn)查詢語(yǔ)言,數(shù)據(jù)提供者接口為常用數(shù)據(jù)庫(kù).該系統(tǒng)中間數(shù)據(jù)模型使用實(shí)體與關(guān)系對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一表述,數(shù)據(jù)映射將數(shù)據(jù)庫(kù)、WebService 等查詢接口的數(shù)據(jù)對(duì)象映射為中間數(shù)據(jù)模型元素.中間查詢計(jì)劃選擇四類運(yùn)算形式化描述查詢語(yǔ)句的語(yǔ)義信息,消費(fèi)者與提供者Adapter 將各自接口與中間數(shù)據(jù)模型和中間查詢計(jì)劃進(jìn)行適配.目前系統(tǒng)支持通過(guò)SQL、Cypher、MongoDB 等查詢語(yǔ)言接口對(duì)不同數(shù)據(jù)提供者進(jìn)行數(shù)據(jù)訪問(wèn),在不影響系統(tǒng)其它組成部分的情況下,可實(shí)現(xiàn)數(shù)據(jù)庫(kù)遷移、緩存、統(tǒng)一管理等應(yīng)用需求.

        4.1 中間數(shù)據(jù)模型與數(shù)據(jù)映射

        中間數(shù)據(jù)模型對(duì)集成系統(tǒng)中的異構(gòu)數(shù)據(jù)采用統(tǒng)一方式進(jìn)行語(yǔ)義描述,系統(tǒng)數(shù)據(jù)用實(shí)體(Entity)與關(guān)系(Relation)兩個(gè)概念對(duì)常見數(shù)據(jù)源進(jìn)行描述[12].實(shí)體為具有相似意義的數(shù)據(jù)集合,實(shí)體元素的具體數(shù)據(jù)格式不限,既包括結(jié)構(gòu)化形式的表數(shù)據(jù),也包括非結(jié)構(gòu)化形式的文檔數(shù)據(jù);關(guān)系為實(shí)體間的語(yǔ)義關(guān)聯(lián),可通過(guò)多種方式進(jìn)行表示,關(guān)系表示形式包括實(shí)體條件表達(dá)式或存儲(chǔ)的關(guān)系數(shù)據(jù).中間數(shù)據(jù)模型的形式化表示如下:

        其中,E表示實(shí)體集合,R∈(E×E)表示關(guān)系集合,S表示數(shù)據(jù)源集合,L表示用于實(shí)體與關(guān)系標(biāo)識(shí)的標(biāo)簽集合,K表示L、S與E、R之間的映射關(guān)系,ρ表示S與R之間的數(shù)據(jù)映射方式.

        異構(gòu)數(shù)據(jù)源S包括兩種形式:一是以標(biāo)準(zhǔn)查詢語(yǔ)言為訪問(wèn)接口的數(shù)據(jù)庫(kù)管理工具,如關(guān)系數(shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)以及圖數(shù)據(jù)庫(kù)等;二是其它非標(biāo)準(zhǔn)化數(shù)據(jù)訪問(wèn)接口,如WebService、Shell 命令以及文件系統(tǒng)等.S中的每個(gè)元素必須包含連接訪問(wèn)該數(shù)據(jù)源的所有參數(shù),如連接字符串、URL 以及用戶名密碼等.

        映射關(guān)系K由兩部分構(gòu)成:標(biāo)簽映射Kl:(E∪R)→L表示標(biāo)簽與ER 元素之間的映射關(guān)系,即實(shí)體集合與關(guān)系由一個(gè)標(biāo)簽唯一標(biāo)識(shí);數(shù)據(jù)映射Ks:(E∪R)→(S∪ρ)表示數(shù)據(jù)源與Entity、Relation 元素之間的映射關(guān)系,即Entity 與Relation 由數(shù)據(jù)源與數(shù)據(jù)映射方式構(gòu)成.

        針對(duì)不同數(shù)據(jù)源,數(shù)據(jù)映射方式ρ采用多種方法將異構(gòu)數(shù)據(jù)源映射為Entity和Relation 元素.對(duì)于提供標(biāo)準(zhǔn)查詢語(yǔ)言接口的數(shù)據(jù)源,可使用通用的數(shù)據(jù)映射規(guī)范自動(dòng)將數(shù)據(jù)源映射到中間數(shù)據(jù)模型.如表1所示,將關(guān)系模型數(shù)據(jù)中的Table 映射為中間數(shù)據(jù)模型的Entity 元素,將“外鍵”或?qū)傩韵嚓P(guān)的邏輯表達(dá)式映射為中間數(shù)據(jù)模型中的Relation 元素;將文檔模型數(shù)據(jù)源中的Collection 映射為中間數(shù)據(jù)模型的Entity,將文檔的DBref 或?qū)傩缘倪壿嫳磉_(dá)式映射為中間數(shù)據(jù)模型的Relation;將屬性圖模型數(shù)據(jù)源中具有相同Label的節(jié)點(diǎn)集合映射為Entity,而將具有同樣Label的邊集合映射為Relation.

        表1 數(shù)據(jù)映射關(guān)系

        對(duì)于無(wú)標(biāo)準(zhǔn)查詢語(yǔ)言接口的數(shù)據(jù)提供者,需要根據(jù)數(shù)據(jù)提供者的數(shù)據(jù)訪問(wèn)接口特點(diǎn)自定義數(shù)據(jù)源與中間數(shù)據(jù)模型的映射方式.例如WebService 接口與中間數(shù)據(jù)模型的映射需要根據(jù)服務(wù)URL、Token 以及業(yè)務(wù)參數(shù)等與實(shí)體、關(guān)系進(jìn)行映射.

        4.2 中間查詢計(jì)劃

        查詢計(jì)劃是對(duì)查詢語(yǔ)句所表達(dá)語(yǔ)義的形式化描述,它是一個(gè)節(jié)點(diǎn)為數(shù)據(jù)模型運(yùn)算的樹形結(jié)構(gòu).中間查詢計(jì)劃p:umsrc→umtarget描述了從數(shù)據(jù)umsrc向查詢目標(biāo)數(shù)據(jù)umtarget轉(zhuǎn)換的運(yùn)算過(guò)程,它代表了查詢語(yǔ)句的查詢目標(biāo),系統(tǒng)支持的運(yùn)算類型越多,執(zhí)行計(jì)劃能夠支持的查詢功能越豐富.在實(shí)現(xiàn)過(guò)程中,我們選擇了4 類中間數(shù)據(jù)模型運(yùn)算作為中間查詢計(jì)劃的基礎(chǔ)組成部分:

        (1)scan(umsrc,umtarget,item)運(yùn)算對(duì)參加運(yùn)算的中間數(shù)據(jù)模型中實(shí)體與關(guān)系進(jìn)行選擇.其中item指umsrc中的實(shí)體或關(guān)系元素,scan運(yùn)算將umsrc中的item元素加入umtarget.如果item類型為Relation,scan運(yùn)算同時(shí)將與該Relation 關(guān)聯(lián)的Entity 添加到umtarget.

        (2)filter(umtarget,item,cond,type)運(yùn)算對(duì)umtarget中Entity 或Relation 集合內(nèi)數(shù)據(jù)對(duì)象進(jìn)行條件約束.其中item指umtarget中的實(shí)體或關(guān)系元素,cond為item中數(shù)據(jù)對(duì)象滿足的邏輯表達(dá)式條件,type為過(guò)濾運(yùn)算類型.根據(jù)不同過(guò)濾運(yùn)算類型,filter運(yùn)算采用不同形式過(guò)濾umtarget中的數(shù)據(jù).

        (3)link(umsrc,umtarget,item1,item2)運(yùn)算在Entity 元素item1與item2之間建立一個(gè)關(guān)系加入umtarget中.建立Relation的方式有兩種:一是通過(guò)item1與item2之間的邏輯表達(dá)式創(chuàng)建一個(gè)臨時(shí)Relation;二是從umsrc選擇與item1、item2對(duì)應(yīng)的Relation 加入umtarget.

        (4)project(umtarget,cond)運(yùn)算根據(jù)cond條件選擇umtarget中的元素或元素內(nèi)容保留參與后續(xù)運(yùn)算.cond條件包括兩類:umtarget中Entity 或Relation 元素;Entity或Relation 數(shù)據(jù)的屬性、列等子元素.

        4.3 消費(fèi)者端Adapter 與數(shù)據(jù)提供者端Adapter

        BAF4DUA 架構(gòu)中適配器對(duì)數(shù)據(jù)消費(fèi)者和數(shù)據(jù)提供者的數(shù)據(jù)查詢接口進(jìn)行轉(zhuǎn)換翻譯:第1 步,數(shù)據(jù)消費(fèi)者端Adapter 將數(shù)據(jù)消費(fèi)者查詢語(yǔ)句編碼為中間查詢計(jì)劃統(tǒng)一表示;第2 步,數(shù)據(jù)提供者端Adapter 將中間查詢計(jì)劃解碼為數(shù)據(jù)提供者可識(shí)別的查詢語(yǔ)句.通過(guò)中間查詢計(jì)劃對(duì)查詢語(yǔ)句的統(tǒng)一形式化表示,BAF4DUA框架將查詢語(yǔ)言接口與數(shù)據(jù)模型解耦.

        查詢語(yǔ)句在數(shù)據(jù)源執(zhí)行過(guò)程中會(huì)解析節(jié)點(diǎn)為數(shù)據(jù)模型運(yùn)算的邏輯查詢計(jì)劃樹,數(shù)據(jù)源執(zhí)行引擎遍歷查詢計(jì)劃樹依序執(zhí)行運(yùn)算節(jié)點(diǎn).數(shù)據(jù)消費(fèi)者端Adapter對(duì)查詢語(yǔ)句的語(yǔ)義編碼過(guò)程需實(shí)現(xiàn)中間查詢計(jì)劃與邏輯查詢計(jì)劃、中間數(shù)據(jù)模型與數(shù)據(jù)源的運(yùn)算映射兩部分內(nèi)容:

        (1)數(shù)據(jù)映射:主要過(guò)程是解析數(shù)據(jù)消費(fèi)者請(qǐng)求的查詢語(yǔ)句,獲取查詢語(yǔ)句的目標(biāo)數(shù)據(jù)對(duì)象,根據(jù)數(shù)據(jù)映射方式ρ獲取目標(biāo)數(shù)據(jù)對(duì)象與中間數(shù)據(jù)模型Entity和Relation的對(duì)應(yīng)關(guān)系,收集相應(yīng)的數(shù)據(jù)作為后續(xù)運(yùn)算參數(shù).

        (2)運(yùn)算映射:主要過(guò)程是將數(shù)據(jù)消費(fèi)者查詢語(yǔ)句解析為邏輯查詢計(jì)劃樹并自底向上遍歷,根據(jù)根節(jié)點(diǎn)到當(dāng)前運(yùn)算節(jié)點(diǎn)路徑計(jì)算邏輯查詢計(jì)劃樹中的每個(gè)運(yùn)算節(jié)點(diǎn)所處的狀態(tài)并據(jù)此確定后續(xù)運(yùn)算映射.邏輯查詢計(jì)劃樹的運(yùn)算節(jié)點(diǎn)與中間執(zhí)行計(jì)劃運(yùn)算節(jié)點(diǎn)之間存在一對(duì)一、一對(duì)多、多對(duì)一以及多對(duì)多關(guān)系,根據(jù)運(yùn)算映射關(guān)系生成中間執(zhí)行計(jì)劃的運(yùn)算節(jié)點(diǎn)以及中間執(zhí)行計(jì)劃樹.

        與數(shù)據(jù)消費(fèi)者端對(duì)查詢語(yǔ)句的編碼過(guò)程相反,數(shù)據(jù)提供者端Adapter對(duì)中間執(zhí)行計(jì)劃樹解碼操作,生成數(shù)據(jù)提供者查詢語(yǔ)言接口的邏輯查詢計(jì)劃樹.解碼過(guò)程根據(jù)數(shù)據(jù)映射方式ρ從中間執(zhí)行計(jì)劃運(yùn)算節(jié)點(diǎn)的參數(shù)中抽取出數(shù)據(jù)源的操作對(duì)象,實(shí)現(xiàn)中間數(shù)據(jù)模型與數(shù)據(jù)源的有效映射.根據(jù)中間執(zhí)行計(jì)劃運(yùn)算節(jié)點(diǎn)與邏輯查詢計(jì)劃運(yùn)算節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系生成邏輯查詢計(jì)劃樹,進(jìn)而生成目標(biāo)查詢語(yǔ)句提交給數(shù)據(jù)提供者執(zhí)行.

        5 案例示范

        5.1 BAF4DUA 案例工具實(shí)現(xiàn)

        根據(jù)第4 節(jié)提出的BAF4DUA 框架實(shí)現(xiàn)方案,本文實(shí)現(xiàn)了一個(gè)支持關(guān)系模型、屬性圖模型和文檔模型與中間數(shù)據(jù)模型的相互映射,以及SQL、Cypher、Mongo 命令3 種查詢語(yǔ)言的相互轉(zhuǎn)換的案例工具.

        如圖3所示,BAF4DUA 案例工具的具體實(shí)現(xiàn)主要包括10 個(gè)類.UnifiedDataModel 類為Entity 與Relation 組成的圖數(shù)據(jù)結(jié)構(gòu),在使用BAF4DUA 案例工具之前需根據(jù)數(shù)據(jù)提供者的數(shù)據(jù)進(jìn)行初始化,通過(guò)UnifiedDataModel 類,查詢語(yǔ)言轉(zhuǎn)換過(guò)程中可以確定中間查詢計(jì)劃、數(shù)據(jù)提供者查詢對(duì)象、數(shù)據(jù)消費(fèi)者查詢對(duì)象之間的映射關(guān)系.接口類Encoder 與Decoder 包含查詢語(yǔ)言與中間查詢計(jì)劃UnifiedQueryPlan 進(jìn)行轉(zhuǎn)換的encode與decode函數(shù).SqlEncoder、CypherEncoder以及MongoEncoder為Encoder 接口類的具體實(shí)現(xiàn),其中SqlEncoder 首先利用Apache Calcite[13]將SQL 語(yǔ)句解析為SQL 查詢計(jì)劃,然后通過(guò)遍歷SQL 查詢計(jì)劃將SQL 查詢計(jì)劃中的JOIN、FILTER 運(yùn)算以及表達(dá)式轉(zhuǎn)換為UnifiedQueryPlan 中對(duì)應(yīng)運(yùn)算Operator.類似的,我們使用開源工具Cytosm[14]以及Mongo-Shell-Like-Query[15]分別將Cypher 與Mongo 命令分別解析成相應(yīng)的查詢計(jì)劃,根據(jù)4.3 節(jié)所述遍歷該查詢計(jì)劃生成對(duì)應(yīng)的UnifiedQueryPlan對(duì)象.SqlDecoder、Cypher-Decoder 以及MongoDecoder為Decoder 接口類的具體實(shí)現(xiàn).其中SqlDecoder 假設(shè)最終生成的SQL 語(yǔ)句模式為:

        圖3 BAF4DUA 案例工具類

        SELECT <RESULT>

        FROM <TABLES>

        WHERE <CONDITION>

        根據(jù)UnifiedQueryPlan 類的Entities 與Relations成員生成SQL 語(yǔ)句的SELECT 與FROM 元素;通過(guò)解析查詢計(jì)劃中的運(yùn)算Operator 生成SQL 語(yǔ)句的WHERE條件對(duì)結(jié)果進(jìn)行過(guò)濾;類似的,CypherDecoder 主要針對(duì)如下Cypher 句式:

        MATCH <ENTITY>

        MATCH <RELATION>

        WHERE <CONDITION>

        RETURN <RESULT>

        根據(jù)中間查詢計(jì)劃UnifiedQueryPlan 生成句式的各部分的內(nèi)容;MongoDecoder 則將UnifiedQueryPlan中的Operator 運(yùn)算統(tǒng)一組合成一個(gè)Pipeline,將Scan、Filter、Link 以及Project 四類運(yùn)算轉(zhuǎn)換為Mongo 命令Pipeline 中的JSON 運(yùn)算對(duì)象,最后將整個(gè)Pipeline對(duì)象序列化為Mongo Shell 命令語(yǔ)句.

        需要指出的是,本文中案例工具的實(shí)現(xiàn)方式存在一定的局限性,尤其是Decoder 部分的實(shí)現(xiàn)還有很大的提升空間.例如本文使用了固定的查詢語(yǔ)句模式,根據(jù)中間查詢計(jì)劃分別轉(zhuǎn)換為固定句式中的組成部分,而不是將中間查詢計(jì)劃直接轉(zhuǎn)換為數(shù)據(jù)提供者查詢語(yǔ)句對(duì)應(yīng)的查詢計(jì)劃.除此之外,本文的案例沒(méi)有對(duì)聚合查詢、多語(yǔ)句查詢等操作進(jìn)行處理.

        5.2 查詢語(yǔ)言轉(zhuǎn)換性能

        為了驗(yàn)證查詢語(yǔ)言轉(zhuǎn)換對(duì)查詢性能的影響,我們將生成的1 GB TPCH[16]數(shù)據(jù)導(dǎo)入關(guān)系型數(shù)據(jù)庫(kù)MySQL、圖數(shù)據(jù)庫(kù)Neo4j 以及文檔型數(shù)據(jù)庫(kù)MongoDB 中,對(duì)TPCH 基準(zhǔn)測(cè)試中單表查詢語(yǔ)句Q1 與多表查詢語(yǔ)句Q2的查詢語(yǔ)言轉(zhuǎn)換與數(shù)據(jù)查詢時(shí)間進(jìn)行了統(tǒng)計(jì),其中MySQL、Neo4j和MongoDB 數(shù)據(jù)庫(kù)的運(yùn)行環(huán)境如表2所示,查詢時(shí)間結(jié)果如表3所示.在數(shù)據(jù)導(dǎo)入過(guò)程中,TPCH 數(shù)據(jù)集的8 個(gè)文件分別導(dǎo)出為MongoDB的8 個(gè)Collection 以及Neo4j的8 類節(jié)點(diǎn).根據(jù)TPCH提供的ER 模型,我們?cè)贜eo4j 中創(chuàng)建了節(jié)點(diǎn)之間的邊.需要說(shuō)明的是,TPCH 數(shù)據(jù)集的不同導(dǎo)入方式以及索引會(huì)對(duì)后續(xù)查詢時(shí)間產(chǎn)生一定影響.

        表2 數(shù)據(jù)庫(kù)運(yùn)行環(huán)境

        表3 查詢語(yǔ)言轉(zhuǎn)換與數(shù)據(jù)查詢時(shí)間(ms)

        由表3可知,查詢語(yǔ)言轉(zhuǎn)換時(shí)間在70 ms 內(nèi),相對(duì)于數(shù)據(jù)查詢時(shí)間占比最高不大于1%,并且隨著數(shù)據(jù)量的增加查詢語(yǔ)言轉(zhuǎn)換的時(shí)間占比會(huì)越來(lái)越少.由于Mongo 命令的解碼過(guò)程使用了第三方的JSON 轉(zhuǎn)換工具,因此中間查詢計(jì)劃解碼為MongoDB 接口的時(shí)間要比其它接口的解碼時(shí)間更多,故而查詢語(yǔ)言的編碼時(shí)間均在10 ms 以下.總體而言,在提高開發(fā)效率與系統(tǒng)擴(kuò)展性、滿足數(shù)據(jù)統(tǒng)一訪問(wèn)的前提下,查詢語(yǔ)言轉(zhuǎn)換帶來(lái)的查詢性能損失在可接受范圍之內(nèi).

        5.3 查詢語(yǔ)言轉(zhuǎn)換應(yīng)用案例

        案例1.數(shù)據(jù)庫(kù)緩存:為提高系統(tǒng)的響應(yīng)速度,應(yīng)用系統(tǒng)通常采用主數(shù)據(jù)庫(kù)與緩存數(shù)據(jù)庫(kù)相結(jié)合的方式管理業(yè)務(wù)數(shù)據(jù),例如使用Redis對(duì)用戶信息進(jìn)行緩存.此時(shí)系統(tǒng)開發(fā)需同時(shí)使用SQL 與Redis 語(yǔ)言進(jìn)行數(shù)據(jù)查詢,如果能夠?qū)QL、Mongo 命令以及Cypher 編碼為中間查詢計(jì)劃,同時(shí)將中間查詢計(jì)劃解碼為Redis 查詢語(yǔ)句,那么系統(tǒng)就可以為不同主數(shù)據(jù)庫(kù)增加緩存功能,并且保持系統(tǒng)開發(fā)的接口統(tǒng)一性.

        為實(shí)現(xiàn)以上目標(biāo),系統(tǒng)需要一個(gè)數(shù)據(jù)提供者端Adapter 將中間查詢計(jì)劃轉(zhuǎn)換為Redis 查詢語(yǔ)言.其中數(shù)據(jù)映射將Redis 數(shù)據(jù)庫(kù)中具有一定模式的Key 定義為中間數(shù)據(jù)模型的Entity;Entity的屬性值與Key 值相對(duì)應(yīng);Relation 則根據(jù)用戶定義表達(dá)式進(jìn)行Entity的關(guān)聯(lián).中間查詢計(jì)劃與Redis的具體運(yùn)算映射方式如表4所示.

        表4 中間查詢計(jì)劃與Redis 運(yùn)算映射

        以客戶Customer 數(shù)據(jù)為例,假設(shè)客戶數(shù)據(jù)在Redis中Key的存儲(chǔ)模式為<Cust_ID_USERNAME_NATION,customer_object_hash>,那么Customer 實(shí)體定義為以字符串“Cust”開頭的Key,實(shí)體屬性ID、USERNAME、NATION的值分別對(duì)應(yīng)以“_”進(jìn)行分割的每個(gè)值.如圖4所示,假設(shè)系統(tǒng)要查詢“李”姓中國(guó)籍客戶,那么使用SQL、Cypher 以及MongoDB 命令進(jìn)行查詢時(shí)會(huì)首先編碼為中間查詢計(jì)劃,然后再轉(zhuǎn)換為Redis查詢語(yǔ)句,最后實(shí)現(xiàn)Redis對(duì)3 類主數(shù)據(jù)庫(kù)的緩存.

        圖4 Redis 查詢語(yǔ)言轉(zhuǎn)換案例

        案例2.數(shù)據(jù)統(tǒng)一管理:科學(xué)數(shù)據(jù)管理系統(tǒng)通常會(huì)查詢多個(gè)數(shù)據(jù)源,甚至?xí){(diào)用不同學(xué)科的數(shù)據(jù)源來(lái)驗(yàn)證假設(shè)的真?zhèn)?國(guó)家重點(diǎn)研發(fā)計(jì)劃“科學(xué)大數(shù)據(jù)管理系統(tǒng)”項(xiàng)目為用戶提供包括天文、高能物理和微生物3 種異構(gòu)數(shù)據(jù)在內(nèi)的多元異構(gòu)數(shù)據(jù)的統(tǒng)一訪問(wèn)接口.以高能物理數(shù)據(jù)處理系統(tǒng)EventDB[17]為例,它通過(guò)分布式存儲(chǔ)與數(shù)據(jù)索引,能夠?qū)Ω吣芪锢韺?shí)驗(yàn)中產(chǎn)生的EB級(jí)事例進(jìn)行存儲(chǔ)與查詢.EventDB的接口形式為特定命令,如有以下查詢命令:time=178789800~178807800&detID=1&channel=12&pulse=0~255&eventType=0,其含義為查詢2017年8月31日15:50:00 至2017年8月31日20:50:00 之間5 小時(shí)內(nèi)1 號(hào)探測(cè)器、12 號(hào)通道、0 號(hào)事件的脈沖跨度的變化情況.

        數(shù)據(jù)提供者Adapter的數(shù)據(jù)映射需根據(jù)科研用戶的查詢需求和習(xí)慣,根據(jù)實(shí)驗(yàn)因素與中間模型進(jìn)行映射.例如相同特征的事例映射與Entity 集合對(duì)應(yīng);實(shí)體屬性為EventDB 中事例的相關(guān)數(shù)據(jù)值;Relation 根據(jù)自定義表達(dá)式進(jìn)行Entity 關(guān)聯(lián).中間查詢計(jì)劃與EventDB命令的映射如表5所示.

        表5 中間查詢計(jì)劃與EventDB 運(yùn)算映射

        假設(shè)用戶習(xí)慣按照探測(cè)器進(jìn)行事例查詢,EventDB中的探測(cè)器編號(hào)為n的事例與Entity 映射,事例的time、detID、channel、pulse 與eventType 等屬性為Entity的屬性值.如圖5所示,如果要查詢3 號(hào)探測(cè)器在2017年8月31日15:50:00 至2017年8月31日20:50:00 之間內(nèi)的所有脈沖變化,那么SQL、Cypher、MongoDB的查詢語(yǔ)句可根據(jù)以上映射關(guān)系首先編碼為中間查詢計(jì)劃,然后轉(zhuǎn)換為EventDB 查詢命令.

        圖5 EventDB 查詢語(yǔ)言轉(zhuǎn)換案例

        6 結(jié)論與展望

        在大數(shù)據(jù)時(shí)代,集成系統(tǒng)使用多樣化工具對(duì)內(nèi)外部數(shù)據(jù)進(jìn)行統(tǒng)一管理分析,這增加了系統(tǒng)開發(fā)、數(shù)據(jù)管理工具更新遷移以及數(shù)據(jù)統(tǒng)一管理等任務(wù)的接口適配成本.本文提出了一種基于查詢語(yǔ)言轉(zhuǎn)換的多源數(shù)據(jù)統(tǒng)一訪問(wèn)框架BAF4DUA,該框架特色之處在于采用了雙Adapter 模式:數(shù)據(jù)消費(fèi)者Adapter 先將消費(fèi)者數(shù)據(jù)訪問(wèn)接口語(yǔ)言轉(zhuǎn)換為中間數(shù)據(jù)模型的查詢計(jì)劃,而后通過(guò)數(shù)據(jù)提供者端Adapter 將中間查詢計(jì)劃轉(zhuǎn)換為數(shù)據(jù)提供者的數(shù)據(jù)訪問(wèn)接口.通過(guò)BAF4DUA 框架,可實(shí)現(xiàn)數(shù)據(jù)消費(fèi)者的查詢語(yǔ)言接口與數(shù)據(jù)源的數(shù)據(jù)模型相分離,數(shù)據(jù)消費(fèi)者和數(shù)據(jù)提供者可采用即插即用的方式增加或更新相應(yīng)的Adapter,增加了系統(tǒng)的靈活性與擴(kuò)展性,更符合集成系統(tǒng)多對(duì)多數(shù)據(jù)訪問(wèn)的特點(diǎn).

        本文所提BAF4DUA 框架的局限性在于僅考慮了單一使用場(chǎng)景下的數(shù)據(jù)查詢操作,還需要進(jìn)一步完善以適應(yīng)更復(fù)雜的數(shù)據(jù)統(tǒng)一訪問(wèn)應(yīng)用場(chǎng)景.后續(xù)研究可從以下幾個(gè)方面進(jìn)一步拓展:(1)設(shè)計(jì)與實(shí)現(xiàn)支持具備count、sum 等更豐富功能的查詢運(yùn)算類型;(2)設(shè)計(jì)與實(shí)現(xiàn)查詢數(shù)據(jù)位于不同數(shù)據(jù)庫(kù)場(chǎng)景下的數(shù)據(jù)處理方案;(3)設(shè)計(jì)與實(shí)現(xiàn)智能化數(shù)據(jù)統(tǒng)一插入存儲(chǔ)方案.

        猜你喜歡
        提供者數(shù)據(jù)模型數(shù)據(jù)源
        網(wǎng)絡(luò)交易平臺(tái)提供者的法律地位與民事責(zé)任分析
        法制博覽(2020年2期)2020-04-29 06:45:18
        基于隱私度和穩(wěn)定度的D2D數(shù)據(jù)共享伙伴選擇機(jī)制
        面板數(shù)據(jù)模型截面相關(guān)檢驗(yàn)方法綜述
        Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
        加熱爐爐內(nèi)跟蹤數(shù)據(jù)模型優(yōu)化
        基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
        網(wǎng)絡(luò)言論自由的行政法規(guī)制研究
        基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
        做商用車行業(yè)新材料應(yīng)用解決方案的提供者——訪同元集團(tuán)副總裁趙延?xùn)|
        專用汽車(2015年12期)2015-03-01 04:12:07
        分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢?cè)O(shè)計(jì)與實(shí)現(xiàn)
        亚洲精品久久久久久| 亚洲一区精品在线中文字幕| 98色婷婷在线| 久久av高潮av无码av喷吹| 无码午夜剧场| 一本色道久久88综合亚精品| 久久天堂精品一区二区三区四区| 色偷偷偷久久伊人大杳蕉| 国产欧美日韩专区| 亚洲一区二区av偷偷| 精品国产日韩一区2区3区| 亚洲av无码专区在线播放| 久青草国产在线观看| 狼人av在线免费观看| 在线观看亚洲第一黄片| 特级无码毛片免费视频尤物| 亚洲欧洲精品国产二码| 亚洲免费av第一区第二区| 成年女人免费v片| 深夜福利小视频在线观看| 亚洲公开免费在线视频| 亚洲国产成人av毛片大全| 亚洲av无码国产综合专区| 国产看黄网站又黄又爽又色| 亚洲AV日韩AV高潮喷潮无码 | 风流老熟女一区二区三区| 中文字幕第一页亚洲| 国产女主播视频一区二区三区| 一区二区三区国产免费视频| 品色永久免费| 国内精品福利在线视频| 91国产自拍精品视频| 国产肉体xxxx裸体137大胆| 亚欧AV无码乱码在线观看性色| 国产天堂av手机在线| 91丝袜美腿亚洲一区二区| 国产男女猛烈视频在线观看| 久久精品国产72国产精福利| 少妇人妻无奈的跪趴翘起| 少妇厨房愉情理伦bd在线观看| 日本欧美在线播放|