• / 19
  • 下載費用:30 金幣  

跨數據庫和文件系統的查詢一體化.pdf

摘要
申請專利號:

CN201380076177.3

申請日:

2013.04.02

公開號:

CN105164673A

公開日:

2015.12.16

當前法律狀態:

撤回

有效性:

無權

法律詳情: 發明專利申請公布后的視為撤回IPC(主分類):G06F 17/30申請公布日:20151216|||專利申請權的轉移IPC(主分類):G06F 17/30登記生效日:20180619變更事項:申請人變更前權利人:慧與發展有限責任合伙企業變更后權利人:安提特軟件有限責任公司變更事項:地址變更前權利人:美國德克薩斯州變更后權利人:美國加利福尼亞州|||專利申請權的轉移IPC(主分類):G06F 17/30登記生效日:20161019變更事項:申請人變更前權利人:惠普發展公司,有限責任合伙企業變更后權利人:慧與發展有限責任合伙企業變更事項:地址變更前權利人:美國德克薩斯州變更后權利人:美國德克薩斯州|||實質審查的生效IPC(主分類):G06F 17/30申請日:20130402|||公開
IPC分類號: G06F17/30 主分類號: G06F17/30
申請人: 惠普發展公司,有限責任合伙企業
發明人: Q·陳; M·許
地址: 美國德克薩斯州
優先權:
專利代理機構: 北京德琦知識產權代理有限公司11018 代理人: 郭艷芳; 康泉
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201380076177.3

授權公告號:

||||||||||||

法律狀態公告日:

2018.12.18|||2018.07.06|||2016.11.09|||2016.01.13|||2015.12.16

法律狀態類型:

發明專利申請公布后的視為撤回|||專利申請權、專利權的轉移|||專利申請權、專利權的轉移|||實質審查的生效|||公開

摘要

公開了跨數據庫和文件系統的查詢一體化。示例性方法可包括對由第一數據庫文件系統管理的數據進行流操作,以供查詢。該方法還可包括對由第二數據庫文件系統管理的數據進行流操作,以供查詢。該方法還可包括將由第一數據庫文件系統管理的流數據與由第二數據庫文件系統管理的流數據拼接。

權利要求書

權利要求書
1.  一種跨數據庫和文件系統的查詢一體化的方法,包括:
對由第一數據庫文件系統管理的數據進行流操作,以供查詢;
對由第二數據庫文件系統管理的數據進行流操作,以供所述查詢;以及
將由所述第一數據庫文件系統管理的流數據與由所述第二數據庫文件系統管理的流數據拼接。

2.  根據權利要求1所述的方法,進一步包括以由所述第一數據庫文件系統和所述第二數據庫文件系統之一支持的格式保存拼接的數據。

3.  根據權利要求1所述的方法,其中對由第一數據庫文件系統管理的數據進行流操作進一步包括:
使用迭代器將Hadoop數據變成流;
利用函數掃描代替表掃描,以生成所述查詢的數據源作為記錄生成函數;以及
延伸函數掃描,以進行非阻塞逐元組輸出。

4.  根據權利要求1所述的方法,進一步包括通過以下操作從Hadoop文件系統(HDFS)訪問關系數據庫(RDB)中的數據:
將Hadoop工作輸入格式設置為數據庫輸入格式(DbInputFormat)類;
為所述DbInputFormat類指定查詢,以從所述RDB提取數據;以及
創建映射器類,以接受數據庫記錄對象作為輸入。

5.  根據權利要求1所述的方法,進一步包括通過以下操作將數據從Hadoop文件系統(HDFS)寫入關系數據庫(RDB):
對數據庫記錄設定Hadoop工作的輸出值類;
設定用于以數據庫輸出格式類存儲數據的表的細節;以及
創建將數據加入數據庫記錄對象并且調用寫入功能以存儲所述數據的減少類。

6.  根據權利要求1所述的方法,進一步包括通過以下操作拼接查詢結果并且將所述查詢結果存儲至關系數據庫(RDB):
通過表掃描從所述RDB檢索數據;
通過函數掃描從Hadoop文件系統(HDFS)數據庫檢索數據;
將來自所述RDB和所述HDFS數據庫的檢索數據進行拼接;以及
將拼接的數據寫至所述RDB。

7.  根據權利要求1所述的方法,進一步包括通過以下操作拼接查詢結果并且將所述查詢結果存儲至Hadoop文件系統(HDFS)數據庫:
通過表掃描從所述RDB檢索數據;
通過函數掃描從Hadoop文件系統(HDFS)數據庫檢索數據;
將來自所述RDB和所述HDFS數據庫的檢索數據進行拼接;以及
以所述HDFS所支持的格式保存拼接的數據。

8.  一種跨數據庫和文件系統的查詢一體化的系統,包括查詢引擎,所述查詢引擎存儲在非暫時性計算機可讀介質上并且由處理器可執行,以:
對由第一數據庫文件系統管理的數據進行流操作;
對由第二數據庫文件系統管理的數據進行流操作;以及
將由所述第一數據庫文件系統管理的數據與由所述第二數據庫文件系統管理的數據拼接。

9.  根據權利要求8所述的系統,進一步包括:記錄迭代器(RIR),所述記錄迭代器被配置成從Hadoop文件系統(HDFS)數據庫檢索數據,并且逐記錄地輸出數據處理結果。

10.  根據權利要求9所述的系統,進一步包括用于從所述RIR讀取數據記錄的流源函數(SSF)。

11.  根據權利要求10所述的系統,其中所述RIR用作所述SSF的數據源,并且所述SSF用作查詢的數據源。

12.  根據權利要求8所述的系統,其中所述查詢引擎將關系數據庫(RDB)當作Hadoop數據源和接收器。

13.  根據權利要求8所述的系統,其中所述查詢引擎將Hadoop文件系統(HDFS)數據庫當作關系數據庫(RDB)數據源。

14.  根據權利要求13所述的系統,其中所述查詢引擎將來自所述HDFS數據庫的數據與來自所述RDB的數據拼接。

15.  根據權利要求13所述的系統,其中所述查詢引擎在無需靜態地或動態地物化數據的情況下使用函數掃描來對來自所述HDFS數據庫的數據進行流操作。

說明書

說明書跨數據庫和文件系統的查詢一體化
背景技術
數據庫用于搜集、訪問和管理數據。通常將數據庫組織成支持對數據的處理。例如,數據庫通常用于實現航空公司、汽車租賃和連鎖酒店的預定系統。數據庫通常還用于維持銀行賬戶和其他金融和客戶記錄,在這里僅僅列舉在各種業務中使用數據庫的幾個非限制性示例。
數據庫管理系統(DBMS)可以被實現為限定、創建、查詢以及管理數據庫。示例DBMS包括但不限于PostgreSQL系統。其他商業和專用DBMS也可用。盡管不同的DBMS能夠利用標準接口(例如,SQL標準)對不同的數據庫進行操作,但在不同的DBMS之間數據庫通常不是便攜的。即,一種類型的DBMS往往不能訪問以不同的數據結構或形式存儲的數據。
附圖說明
圖1是對于跨數據庫和文件系統的查詢一體化可實現的示例網絡計算機系統的高級示圖。
圖2是圖示跨數據庫和文件系統的查詢一體化的示例的圖形表示。
圖3是圖示被實現為Hadoop文件系統(HDFS)數據源和數據接收器的關系數據庫(RDB)的示例的圖形表示。
圖4是圖示被實現為關系數據庫(RDB)應用的數據存儲器的Hadoop文件系統(HDFS)數據庫的示例的圖形表示。
圖5是圖示查詢結果的拼接操作以及將其存儲至關系數據庫(RDB)的存儲操作的示例的圖形表示。
圖6是圖示查詢結果的拼接操作以及將其存儲至Hadoop文件系統(HDFS)的存儲操作的示例的圖形表示。
圖7a至圖7c是圖示用于實現跨數據庫和文件系統的查詢一體化的示例操作的流程圖。
具體實施方式
公開了跨數據庫和文件系統的查詢一體化。通過圖示,數據一體化可包括在現有(規則)RDB上運行SQL查詢,該查詢使HDFS數據作為數據源,并且為此查詢引擎使用函數掃描來取代表掃描。數據一體化使HDFS中的數據在由傳統RDB的查詢引擎處理的SQL查詢中進行流操作。以此方式,HDFS變成該查詢的數據源。注意,查詢一體化可在無需首先將來自Hadoop平臺的數據復制/具體化至RDB平臺以進行查詢的情況下出現。因此,查詢一體化表示不同數據庫文件系統的動態的“并排”或平行一體化,并且不同于靜態地合并這些文件系統。
許多業務具有不止一種數據庫(例如,RDB和HDFS二者)。例如,銀行可將現有客戶記錄保持在RDB中用于快速訪問。銀行還可以保持遺產記錄用于在HDFS數據庫中長期存儲。然而,時常需要來自兩種類型的數據庫的數據。例如,當生成一份包括存儲在HDFS數據庫中的歷史交易和存儲在RDB中的當前交易的報告時。
DBMS可能具有至RDB的SQL接口。SQL接口是適于管理相對小規模(在百萬兆字節數量級)的結構數據的成熟平臺。另一個DBMS可具有至HDFS數據庫的關鍵值(非SQL)接口。HDFS是分布的容錯平臺,適用于管理相對大規模(例如,在千萬億字節數量級)的非結構數據。
盡管本文參考RDB和HDFS數據庫描述了示例,但用于跨數據庫和文件系統的查詢一體化的技術可應用于各種不同類型的數據庫結構或格式,以及DBMS。
通常不能直接查詢被存儲在這些不同數據庫結構或格式中的數據。訪問被保持在不同數據庫格式或結構中的數據的嘗試目前涉及性能上的權衡。即,數據首先必須轉換成與查詢引擎被配置成進行操作的數據庫格式相同的數據庫格式。例如,來自HDFS數據庫的元數據、屬性描述以及交易類型數據可被建模為關系,然后被存儲在RDB中,用于由SQL查詢引擎訪問。同樣,RDB中的內容信息(例如,文本、圖像以及語音)可被建模為“大-表”(例如,作為本地Hadoop數據對象),然后被存儲在HDFS數據庫中,用于由Hadoop查詢引擎訪問。盡管大多數的數據類型能夠被轉換成其他格式,然后被加載進不同數據庫類型用于查詢,但這些轉換操作引入了一定水平的靜態物化并且相應地增加了處理和存儲開銷。
本文公開了跨數據庫和文件系統(例如,跨RDB數據庫和HDFS數據庫)的查詢一體化,其在轉換之前不再需要將數據從一種數據庫格式轉換成另一種數據庫格式。使用本文所描述的查詢一體化系統和方法的不同數據庫類型的一體化使 被存儲在任意系統中的數據能夠(例如,經由SQL和/或Hadoop應用)被訪問。本文所描述的查詢一體化系統和方法還支持對以可擴展的有效方式從兩個系統檢索的數據進行可擴展拼接操作。
在示例中,查詢一體化系統包括適于與不同數據庫結構和格式一起工作的查詢引擎。在操作期間,查詢引擎使由第一種類型的數據庫文件系統(例如,RDB)管理的數據進行流操作。查詢引擎還使由第二種類型的數據庫文件系統(例如,HDFS數據庫)管理的數據進行流操作。查詢引擎將由第一種類型數據庫文件系統管理的數據與由第二種類型數據庫文件系統管理的數據拼接。拼接的數據可以被保存在RDB數據庫和/或HDFS數據庫。還可以使用不同類型和/或不同數量的數據庫。
注意,能夠利用現有并行數據庫集群來實現示例查詢一體化系統。即,不必從“底層”建立新的查詢引擎,如本文所描述的,現有查詢引擎可被修改成利用處理查詢的已成熟的特征。例如,查詢引擎能夠被修改成(例如,使用現有表掃描函數)監視RDB數據,被修改成(例如,利用現有函數掃描)檢索HDFS數據,并且使用本文所述的技術拼接這些數據流。
還應注意,本文描述的查詢一體化系統和方法通過處理流文本中的數據來釋放數據檢索。流數據緩解了存儲器限制,并且在處理期間減少了磁盤訪問。另外,查詢引擎不必構建大的臨時表(甚至在查詢之后都可能不需要該表),否則,將不得不在磁盤上產生并且保存。
在繼續之前,應注意,如本文中所使用的術語“包括”意味著,但不限于,“包括”和“至少包括”。術語“基于”意味著“基于”和“至少部分基于”。
圖1是對于跨數據庫和文件系統的查詢一體化可實現的示例計算機系統的高級圖示。系統100可以使用各種計算裝置中的任何計算裝置來實現。每個計算裝置可包括內存、存儲器以及至少足以管理與另一計算裝置的直接或間接(例如,經由網絡)的通信連接的一定數據處理能力。至少一個計算機裝置還配置有足夠的執行本文所描述的計算機代碼的處理能力。
在一個示例中,系統100可以包括由客戶端裝置120訪問的主機110。為了圖示,主機110可以配置為服務器計算機,其具有計算機可讀存儲器115,其中存儲了能夠由處理器執行的程序代碼130。程序代碼130可包括至應用編程設計接口(API)和相關支持基礎設施例如(多個)DBMS和(多個)查詢引擎的接口。但是,應注意,本文所描述的操作可以由駐留在主機110上的程序代碼130來執行,也可以實現另一服務器計算機或多個服務器計算機(和其他類型的計算裝置)。
在示例中,程序代碼130經由計算機網絡140(例如,但不限于,基于云的網絡)訪問多個數據庫類型。數據庫150、155可存儲任意類型的內容或數據,例如信息和/或應用數據。可存儲在數據庫150、155上的內容的類型或量沒有限制。另外,內容可包括未處理的或“原始的”數據,或者可經歷了某種程度的處理的內容。
圖1示出了各自分別由不同的DBMS160、DBMS165管理的兩個數據庫類型150、155。這些數據庫可以物理分布在網絡140中,并且與主機110相關聯地操作。每個數據庫自身可包括物理分布的節點。
為了圖示,數據庫150可以是RDB,并且數據庫155可以是HDFS數據庫。每個數據庫150、155可以物理分布在網絡上,并且每個數據庫150、155可以包括物理分布的節點。DBMS160可以為RDB150中存儲的數據提供SQL接口,并且DBSM165可以為HDFS數據庫165中存儲的數據提供Hadoop接口。然而,應注意,數據庫類型不限于任意特定類型和/或數據庫的數量。
RDB和HDFS數據庫共享某些公共的特征。例如,兩個平臺都使用主機的集群以存儲大的數據組。然而,RDB和HDFS數據庫在數據庫類型上是不同的,每種類型的數據庫最佳地進行工作。HDFS數據庫和HadoopDBMS通常被認為最適合于涉及非結構數據(例如,但不限于,自然語言內容)的任務。RDB和SQLDBMS通常被認為最適合于使用能夠被加載進數據表的結構數據。
為了圖示,RDB150可用于存儲短期數據,例如,客戶在過去的12個月內的銀行交易。RDB能夠對這種類型的數據進行快速訪問,但通常用于存儲更少量的數據。HDFS數據庫155可用于存儲歷史和/或遺產數據,例如客戶在最近12個月以外的銀行交易。HDFS數據庫能夠長期存儲大量數據,但通常訪問和/或處理數據更慢。有時可能會出現需要來自兩種類型數據庫的數據,例如,以生成銀行客戶的最近和歷史的交易報告。注意,使用數據庫不限于銀行業,并且該示例僅是為了例示。
可以(例如,由主機110)執行程序代碼130,以提供跨數據庫和文件系統的查詢一體化。在示例中,查詢一體化系統包括查詢引擎,該查詢引擎是可執行的,以對由第一數據庫文件系統管理的數據進行流操作,并且對由第二數據庫文件系統管理的數據進行流操作。查詢引擎也是可執行的,以將由第一數據庫文件系統管理的數據與由第二數據庫文件系統管理的數據拼接。
查詢引擎的流操作能力可適合于檢索流處理內容中的數據。通過圖示,查詢引擎可將HDFS數據(例如,依據本地關鍵值(KV)API可檢索的大表或依據Hive SQL可檢索的“Hive表”)轉換成有界流,以饋送至SQL查詢。該機制使查詢能夠利用SQL引擎進行運行,而不需要HDFS查詢引擎。流數據可以通過將“函數掃描”延伸為流源函數(SSF)來處理,以降低處理和/或存儲開銷,否則該處理和/或存儲開銷會通過“物化”一個表而產生。如此,HDFS數據可適應任何格式,而不必首先必須被“同化”(例如,物化的關系表)
用于跨數據庫和文件系統的查詢一體化的程序代碼130可由任意適合的計算裝置來執行。在示例中,所討論的程序代碼可以以機器可讀指令(例如,但不限于軟件或固件)來實現。機器可讀指令可被存儲在非暫時性機器可讀介質上,并且可由一個或更多個處理器執行,以執行本文所描述的操作。然而,應注意,僅為了例示的示例操作環境而描述了這些計算裝置,并且這些計算裝置并不意在限制對任意特定系統的實現。
能夠參考圖2和對各種示例功能的以下討論更好地理解用于實現跨數據庫和文件系統的查詢一體化的程序代碼。然而,本文所描述的操作不限于使用任意特定類型的程序代碼的任意具體實現。
圖2是圖示跨數據庫和文件系統的查詢一體化的圖形表示。根據一個示例,在本文中,查詢一體化的示例性實現方式被稱為“拼接數據庫(JointBase)”。拼接數據庫可實現為開放結構,包括系統支持的抽象函數,其能夠被配置成使用各種數據庫引擎(例如,Sequest,PostgreSQL,MySQL,Vertica)、數據源(例如,Hive-表,大表)以及應用(例如,各種映射-減少(Map-Reduce)應用的輸入/輸出格式)。拼接數據庫可用于訪問來自不同數據庫結構(例如,RDBSQL和映射-減少應用)的數據并且用于拼接來自不同數據庫結構的數據。
在一個示例中,拼接數據庫將單獨的服務器集群上的并行數據庫平臺(例如,分布的RDB集群210和分布的Hadoop集群220)與單獨的數據庫節點集成。拼接數據庫提供了用于Hadoop映射-減少應用的抽象RDB連接器230,其在HDFS集群220中實現了映射-減少查詢235,以從RDB240檢索輸入數據并且將輸出數據保存至RDB240。RDB連接器230可適合于容納特定數據庫平臺,并且容納具有特定RDB輸入/輸出格式的應用。
拼接數據庫還可以為從RDB集群210發布的SQL查詢255提供抽象Hadoop連接器250,以通過函數掃描檢索來自Hadoop集群210的輸入數據。Hadoop連接器250可適于容納特定數據庫平臺,并且容納具有特定Hadoop輸入/輸出格式的應用。
另外,拼接數據庫可支持對來自集群210和220的數據的拼接。在一個示例 中,操作開始于從HDFS數據庫260檢索數據,以將SQL查詢255添加在流處理內容中。在一個示例,流是有界的(例如,不是無限的)
數據庫表(其包含位于磁盤上的一組元組)由新的表函數代替,該新的表函數在本文中被稱為流源函數(SSF)。SSF被配置成返回元組序列,以饋送元組,而不必首先在磁盤上存儲查詢。SSF能夠從HDFS數據庫260讀取數據/記錄序列,并且生成元組。在查詢執行期間SSF可被調用多次,每次調用返回一個元組。由現有查詢引擎(例如,PostgreSQL引擎)提供的函數掃描機制可延伸至非阻塞SSF輸出,以連續地逐元組地饋送查詢。
可在兩個級別上支持SSF:函數掃描級和查詢執行者級。通常,包含函數調用信息的數據結構橋接這兩個級。即,函數調用可開始于查詢執行者并且為了交換與函數調用相關的信息而進入/離開SSF。該機制減少了查詢引擎的代碼變化,同時在本文所描述的查詢一體化能力的環境中使查詢引擎的延伸能力最大化。
在一個示例中,SSF可使用HadoopAPI(例如,KVAPI或HiveAPI)從在HDFS集群220中的記錄迭代器(RIR)讀取數據記錄。RIR從HDFS數據庫260中檢索數據,并且逐記錄地輸出數據處理結果。RIR還可以用作RDR集群210中的SSF的數據源。
拼接數據庫接口還可以用于實現跨數據庫和文件系統的查詢一體化。存在幾種方式來實現拼接數據庫接口,以查詢來自其他數據庫格式的數據。例如,可以開發新的查詢引擎以包括拼接數據庫接口。在另一個示例中,可以以另一數據庫格式構建存儲表。然而,這些技術的特征為“同化”另一數據庫類型中的數據。
拼接數據庫實現方式是不同的,不同之處在于并不將一種數據格式“同化”成另一個。相反,拼接數據庫在不同的數據庫格式之間工作時“適應”本地數據。即,拼接數據庫允許現有查詢引擎直接訪問數據(例如,HDFS查詢訪問RDB數據,反之亦然)。如此,無需轉換就可在常駐數據上支持表和函數。另外,所有的標準文件格式都被支持,并且如果需要的話,可以實現定制的文件格式。能夠通過查詢引擎函數掃描來檢索所有數據,而與底層數據結構或格式無關。
為了圖示,將在下面描述跨數據庫和文件系統的示例查詢一體化,首先將RDB實現為HDFS數據源和接收器(圖3),然而將HDFS數據庫實現為RDB數據存儲器(圖4)。
圖3是圖示被實現為Hadoop文件系統(HDFS)數據源和接收器的關系數據庫(RDB)300的圖形表示。Hadoop應用通常經由HDFS查詢320(例如,映射減少)來查詢HDFS數據庫310中的數據。因此,為了使HDFS查詢320訪問RDB 300,可以利用拼接數據庫接口330。
在一個示例中,拼接數據庫接口330使HDFS查詢320能夠通過連接器331、332訪問存儲在RDB300中的數據。例如,SQL連接器用于RDB300中的HDFS查詢320。在Hadoop中,MapReduce、InputFormat以及OutputFormat對象被重寫,并且抽象DbRecordReader和DbRecordWriter可被延伸用于特定應用。
在繼續之前,應理解某些技術。映射減少函數用于將輸入數據集劃分成單獨的塊,然后這些塊可由映射任務來處理。映射的輸出被輸入為減少任務。通常,輸入和輸出都被存儲。映射減少函數處理調度任務、監視任務以及重新執行任何出故障的任務。InputFormat限定如何將數據從文件讀取為映射器(Mapper)實例。OutputFormat限定如何將文件的數據寫入映射器實例。DbRecordReader和DbRecordWriter分別是用于讀取和寫入數據記錄的函數。
連接器331可由拼接數據庫接口330用于從RDB300讀取數據,用于如下HDFS查詢320。首先,工作輸入格式被設置成DbInputFormat類341。DbInputFormat類341與SQL查詢340接合,以從RDB300讀取數據。然后,創建用于接受DbRecord對象以作為至HDFS查詢320的輸入的映射器類。
連接器332可由拼接數據庫接口330用于將數據保存或寫入RDB300,用于以下HDFS查詢320。首先,工作的輸出值類被設置成DbRecord。存儲數據的細節在DbOutputFormat類342中設定。DbOutputFormat類342與SQL查詢340接合,以將數據寫入RDB。然而,創建將數據加入DbRecord對象并且調用寫入方法的減少類,以在RDB300中存儲數據。
在一個示例中,用于讀取/寫入RDB數據的連接器331、332可在Hadoop集群中的多個節點上執行。因此,Hadoop節點和數據庫節點能夠彼此直接通信。直接連接允許數據并行傳輸,提高了處理速度。
圖4是圖示Hadoop文件系統(HDFS)數據庫400作為關系數據庫(RDB)應用的數據存儲器410的圖形表示。RDB應用可以經由SQL查詢420來查詢RDB數據庫410中的數據。因此,為了使SQL查詢420能夠訪問在HDFS數據庫中存儲的數據,SQL查詢420必須訪問HDFS數據庫。
在一個示例中,通過流操作從HDFS數據庫400獲取數據。例示了用于將HDFS數據轉換為流數據的迭代器430。在一個示例中,迭代器430作為函數掃描代替表掃描函數,因此使查詢的數據源是記錄生產函數。函數掃描可延伸至允許(例如,以元組為基礎)的非阻塞輸出。
將HDFS數據饋送(由箭頭431例示)至SQL查詢420可由在SQL查詢的數 據源上的SSF(流源函數)440來執行。SSF可使用HadoopAPI(例如,KVAPI或HiveAPI)從HDFS集群中的記錄迭代器(RIR)中讀取數據記錄,以從HDFS數據庫400中檢索數據并且逐記錄地輸出數據處理結果。
在一個示例中,RIR可以使用HadoopOutputFormat和DbRecordWriter來實現。RIR可在Hadoop集群中的多個節點上運行,使得Hadoop節點和RDB節點彼此直接通信。直接連接允許數據并行傳輸,從而提高了處理速度。
不利用SSF/RIR連接來將查詢結果寫入HDFS數據庫400。相反,SQL查詢結果可保存(由箭頭432圖示)至以下HDFS數據庫400。SQL查詢420在RDB集群中執行,并且從RDB410或HDFS數據庫400或這兩者檢索數據。Hadoop應用使用RDB至Hadoop連接器,以得到SQL查詢420的結果。然后,從查詢結果得到的數據使用由Hadoop平臺支持的機制被保存至HDSF數據庫400(例如,存儲至大表,或者作為Hive表)。
圖3和圖4圖示了訪問和保存跨數據庫和文件系統的查詢一體化的數據。查詢一體化還可以被實現為拼接來自每個數據庫平臺的數據。下面參考圖示了兩個示例情形的圖5和圖6來討論拼接操作。
圖5是圖示查詢結果的拼接操作以及將其存儲至關系數據庫(RDB)500的存儲操作的圖形表示。在此示例中,通過表掃描505檢索來自RDB500的數據。通過函數掃描515檢索來自HDFS數據庫510的數據。JointBase使用在HDFS集群(例如,在Hadoop應用)中實現的拼接函數來拼接來自每個數據庫的數據。然后,得到的數據被寫入RDB500,如圖5中由箭頭520所圖示。
圖6是圖示查詢結果的拼接操作以及將其存儲至Hadoop文件系統(HDFS)數據庫600的存儲操作的圖形表示。在此示例中,來自HDFS數據庫600的數據由表掃描605來檢索。來自RDB610的數據由函數掃描615檢索。JointBase使用在RDB集群(例如,在SQL應用)中實現的拼接函數來拼接來自每個數據庫的數據。然后,得到的數據被寫入HDFS數據庫600,如圖6中由箭頭620所圖示。
在繼續之前,應注意,上述示例僅為了例示而提供,并且并不意在進行限制。可以利用其它設備和/或設備配置來執行本文所描述的操作。
圖7a-圖7c是圖示可用于實現跨數據庫和文件系統的查詢一體化的示例操作的流程圖。這些操作可體現為在一個或多個計算機可讀介質上的邏輯指令。當邏輯指令在處理器上執行時促使通用計算裝置被編程為實現所述操作的專用機器。在一個示例中,可以使用在圖中描述的部件和連接。
在圖7a中,示例操作710包括對由第一數據庫文件系統管理的數據進行流操 作,以供查詢。示例操作720包括對由第二數據庫文件系統管理的數據進行流操作,以供查詢。示例操作730包括將由第一數據庫文件系統管理的流數據與由第二數據庫文件系統管理的流數據拼接。示例操作740包括以由第一數據庫文件系統和第二數據庫文件系統之一支持的格式保存來自第一數據庫和第二數據庫的拼接數據。
在一個示例中,由第一數據庫文件系統管理的流數據的操作710可以包括:通過迭代器將Hadoop數據變成流的示例操作714;由函數掃描代替表掃描以使查詢的數據源是記錄生成函數的示例操作714;以及延伸函數掃描以進行非阻塞逐元組輸出的示例操作716。
為了圖示,圖7b通過以下示例操作示出了拼接查詢結果并將其存儲至RDB:通過表掃描從RDB檢索數據的示例操作750;通過函數掃描從HDFS數據庫檢索數據的示例操作752;將來自RDB和HDFS數據庫的檢索數據進行拼接的示例操作754;以及將拼接數據寫至RDB的示例操作756。
通過進一步圖示,圖7c通過以下示例操作示出了拼接查詢結果并將其存儲至HDFS數據庫:通過表掃描從RDB檢索數據的示例操作760;通過函數掃描從HDFS數據庫檢索數據的示例操作762;將來自RDB和HDFS數據庫的檢索數據進行拼接的示例操作764;以及以HDFS支持的格式保存拼接數據的示例操作766。
提供在圖7a-圖7c中所示并且在本文中描述的操作,以圖示跨數據庫和文件系統的查詢一體化的示例實現。注意,這些操作不限于所示的順序。還可以實現用于跨數據庫和文件系統的查詢一體化的其他操作。
在一個示例中,用于訪問RDB中的來自Hadoop文件系統的操作可包括:將Hadoop工作輸入格式設置成數據庫輸入格式(DbInputFormat)類;向查詢提供DbInputFormat類以從RDB提取數據;以及創建映射器類,以接受數據庫記錄對象作為輸入。
在另一示例中,用于將來自Hadoop文件系統應用的數據寫入RDB的操作可以是:將Hadoop工作的輸出值類設定成數據庫記錄;設定用于在專用數據庫輸出格式類中存儲數據的表的細節;以及創建將數據添加至數據庫記錄對象并且調用寫入方法以存儲數據的減少類。
可以至少部分利用終端用戶接口(例如,基于網絡的接口)來實現跨數據庫和文件系統的查詢一體化。在一個示例中,終端用戶能夠做出預定選擇,并且上述操作在后端裝置上實現以向用戶呈現結果。然后用戶可進行進一步選擇。還應注意,本文所描述的各種操作可以是自動的或部分自動的。
注意,為了圖示而提供了所示的所述的示例并且這些示例并不意在進行限制。還可以設想其他示例。

關 鍵 詞:
數據庫 文件系統 查詢 一體化
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:跨數據庫和文件系統的查詢一體化.pdf
鏈接地址:http://www.rgyfuv.icu/p-6409512.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图