數據回流、關係型資料庫中的數據訪問方法及系統的製作方法
2023-06-08 13:33:01
數據回流、關係型資料庫中的數據訪問方法及系統的製作方法
【專利摘要】本申請公開了數據回流、關係型資料庫中的數據訪問方法及系統,所述數據回流方法包括:在關係型資料庫中創建第一數據表,所述第一數據表包括名稱欄位及數據內容欄位;確定分布式系統中需要進行數據回流的第二數據表、所述第二數據表的格式及名稱;根據所述第二數據表的格式讀取出所述第二數據表中的所有原始數據,並轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中,並將所述第二數據表的名稱作為該條記錄的名稱寫入到所述第一數據表的名稱欄位中。
【專利說明】數據回流、關係型資料庫中的數據訪問方法及系統
【技術領域】
[0001]本申請涉及數據處理【技術領域】,特別是涉及數據回流、關係型資料庫中的數據訪問方法及系統。
【背景技術】
[0002]網際網路行業產生的數據量非常大,其運算的量一般需要在Hadoop等大型的分布式系統中才能完成,例如,相關的日誌數據、瀏覽數據、用戶數據、交易數據、商品數據等等全部會通過Hadoop完成相關計算。
[0003]Hadoop充分利用集群的威力高速運算和存儲,因此,對大數據量的運算非常有優勢。但是,由於Hadoop處理後的可用數據往往會分散存放在不同的伺服器上,並且一般只提供命令行的方式進行讀取,在用戶訪問和數據獲取方面不是很友好。因此,一般會將Hadoop上對大數據進行處理之後的可用數據進行回流,在回流到關係型資料庫之後,可以方便的做成各種程序接口(API)供調用,然後可視化的方式提供給訪問者。
[0004]傳統的數據回流方法中,每當在Hadoop上產生一個新的數據報表,都會在對應的關係型資料庫中建立同樣表結構(表欄位數目及含義完全一致)的表,然後通過程序將Hadoop上的數據讀出並寫入關係型資料庫的表中,從而達到回流的目的。
[0005]但是,在這種傳統的方式中,由於每產生一張Hadoop的表,都要在關係型資料庫中建立同樣的表,每次都需要走資料庫的建表流程,相對繁瑣和冗長,並且關係型資料庫中每產生一個新的表,都需要編寫相應的代碼以便訪問表中的數據,工作量比較大。
【發明內容】
[0006]本申請提供了數據回流方法及系統,能夠簡化數據回流的流程。本申請還提供了關係型資料庫中的數據訪問方法及系統。
[0007]本申請提供了如下方案:
[0008]一種數據回流方法,包括:
[0009]在關係型資料庫中創建第一數據表,所述第一數據表包括名稱欄位及數據內容欄位;
[0010]確定分布式系統中需要進行數據回流的第二數據表、所述第二數據表的格式及名稱;
[0011]根據所述第二數據表的格式讀取出所述第二數據表中的所有原始數據,並轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;
[0012]將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中,並將所述第二數據表的名稱作為該條記錄的名稱寫入到所述第一數據表的名稱欄位中。
[0013]可選地,所述將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中包括:
[0014]將所述字符串按照指定的格式進行壓縮後,作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中。
[0015]可選地,所述將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中包括:
[0016]按照指定的輸出格式,將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中。
[0017]可選地,所述第一數據表還包括日期欄位;所述方法還包括:
[0018]將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中的同時,將當前日期作為該條記錄的日期寫入到所述第一數據表的日期欄位中。
[0019]可選地,還包括:
[0020]監控所述第一數據表中記錄條數的變化;
[0021]當所述記錄條數達到預置閾值時,為所述第一數據表添加索引欄位,每一條索引對應所述預置閾值條數的記錄。
[0022]一種關係型資料庫中的數據訪問方法,所述關係型資料庫中保存有第一數據表,所述第一數據表包括名稱欄位及數據內容欄位,所述第一數據表中每條記錄的名稱欄位用於保存第二數據表的名稱,數據內容欄位用於保存第二數據表中的所有原始數據,所述原始數據在存入所述數據內容欄位之前被轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;所述方法包括:
[0023]接收查詢請求,根據所述查詢請求與所述第一數據表的名稱欄位的匹配情況,確定目標記錄條目;
[0024]提取所述目標記錄條目的數據內容欄位中的字符串,並按照所述行分隔符及列分隔符對所述字符串進行拆分,還原成與第二數據表對應的二維數組;
[0025]確定所述第二數據表中各欄位的含義;
[0026]按照所述各欄位的含義將所述二維數組輸出為二維數據表文件並返回。
[0027]可選地,所述返回給所述訪問者包括:
[0028]提供所述二維數據表文件的訪問接口供調用;
[0029]或者,
[0030]將所述二維數據表文件輸出到網頁供查看或下載。
[0031]可選地,還包括:
[0032]確定所述第二數據表中各欄位的輸出格式;
[0033]所述按照所述各欄位的含義將所述二維數組輸出為二維數據表文件,返回給所述訪問者包括:
[0034]按照所述各欄位的含義及輸出格式將所述二維數組輸出為二維數據表文件並返回。
[0035]可選地,所述字符串在被存入所述第一數據表的數據內容欄位之前被按照指定的格式壓縮;所述提取所述目標記錄條目的數據內容欄位中的字符串包括:
[0036]提取所述目標記錄條目的數據內容欄位中的數據並根據所述指定的格式進行解壓得到字符串。
[0037]可選地,將所述字符串被按照指定的輸出格式寫入到所述第一數據表的數據內容欄位中,所述提取所述目標記錄條目的數據內容欄位中的字符串包括:
[0038]將所述目標記錄條目的數據內容欄位中的字符串按照所述輸出格式輸出為標準文件。
[0039]可選地,所述第一數據表還包括日期欄位,所述日期欄位用於保存將所述第二數據表回流到所述第一數據表時的日期;所述根據所述查詢請求與所述第一數據表的名稱欄位的匹配情況,確定目標記錄條目包括:
[0040]根據所述查詢請求與所述第一數據表的名稱欄位及日期欄位的匹配情況,確定目標記錄條目。
[0041]一種數據回流系統,包括:
[0042]創建單元,用於在關係型資料庫中創建第一數據表,所述第一數據表包括名稱欄位及數據內容欄位;
[0043]信息獲取單元,用於確定分布式系統中需要進行數據回流的第二數據表、所述第二數據表的格式及名稱;
[0044]數據轉換單元,用於根據所述第二數據表的格式讀取出所述第二數據表中的所有原始數據,並轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;
[0045]數據寫入單元,用於將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中,並將所述第二數據表的名稱作為該條記錄的名稱寫入到所述第一數據表的名稱欄位中。
[0046]—種關係型資料庫中的數據訪問系統,所述關係型資料庫中保存有第一數據表,所述第一數據表包括名稱欄位及數據內容欄位,所述第一數據表中每條記錄的名稱欄位用於保存第二數據表的名稱,數據內容欄位用於保存第二數據表中的所有原始數據,所述原始數據在存入所述數據內容欄位之前被轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;所述系統包括:
[0047]目標記錄條目確定單元,用於接收查詢請求,根據所述查詢請求與所述第一數據表的名稱欄位的匹配情況,確定目標記錄條目;
[0048]拆分單元,用於提取所述目標記錄條目的數據內容欄位中的字符串,並按照所述行分隔符及列分隔符對所述字符串進行拆分,還原成與第二數據表對應的二維數組;
[0049]欄位含義確定單元,用於確定所述第二數據表中各欄位的含義;
[0050]返回單元,用於按照所述各欄位的含義將所述二維數組輸出為二維數據表文件並返回。
[0051]根據本申請提供的具體實施例,本申請公開了以下技術效果:
[0052]通過本申請提供的數據回流方法,只需要在關係型資料庫中建立一張表,可以快速的輸入分布式系統(如Hadoop集群等)上的任何數據表,而不需要每次在Hadoop上產生的數據報表都在關係型資料庫上建立同樣的表單,節省了存儲空間,減少了中間環節。
[0053]另外,在實現過程中,支持各種個性化的配置,可以根據Hadoop上的數據報表的不同來配置各種不同的輸入輸出規則,具有很強的靈活性。
[0054]通過本申請提供的數據訪問方法,可以針對特殊結構的一個數據表形成統一的輸出接口,而不需要針對資料庫中的多個數據表都編寫數據訪問代碼,簡化了實現的流程。
[0055]當然,實施本申請的任一產品並不一定需要同時達到以上所述的所有優點。
【專利附圖】
【附圖說明】
[0056]為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0057]圖1是本申請實施例提供的數據回流方法的流程圖;
[0058]圖2是本申請實施例提供的數據訪問方法的流程圖;
[0059]圖3是本申請實施例提供的數據回流系統的示意圖;
[0060]圖4是本申請實施例提供的數據訪問系統的示意圖。
【具體實施方式】
[0061]下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員所獲得的所有其他實施例,都屬於本申請保護的範圍。
[0062]首先,本申請實施例提供了一種數據回流方法,參見圖1,該方法可以包括以下步驟:
[0063]SlOl:在關係型資料庫中創建第一數據表,所述第一數據表包括名稱欄位及數據內容欄位;
[0064]關係型資料庫可以是MySql、0racle、DB2等。在本申請實施例中,在關係型資料庫中創建第一數據表的操作是在進行具體的數據回流之前進行的。也就是說,與現有技術不同,在資料庫中創建數據表時,不需要考慮Hadoop上的數據表的結構、欄位含義等,而是直接按照預先定義好的結構進行創建即可,並且,不需要針對每個需要回流的數據表都在關係型資料庫中重新創建與之對應的數據表,本申請實施例在關係型資料庫中創建第一數據表的操作只需進行一次即可,Hadoop上產生的所有第二數據表中的數據都可以統一回流到這一張資料庫表中。
[0065]具體在創建該第一數據表時,可以包括名稱(name)欄位及數據內容(content)欄位,其中,名稱欄位用於保存Hadoop中每個第二數據表的名稱,數據內容欄位用於保存Hadoop中每個第二數據表的全部數據。當然,在實際應用中,該第一數據表中還可以有其他的欄位,後續會有相應的介紹。
[0066]S102:確定分布式系統中需要進行數據回流的第二數據表、所述第二數據表的格式及名稱;
[0067]在關係型資料庫中創建了第一數據表之後,就可以針對Hadoop上具體的第二數據表進行數據回流操作。在實際應用中,這裡的第二數據表可以是通過編寫Map/Reduce程序或者HIVE SQL腳本在Hadoop集群上運行(主要進行數據的清洗、運算、統計等,比如說要查看昨天訪問某網站的用戶有多少、成交額是多少等等,需要用交易表、用戶表、日誌表等進行匯總、過濾、計算)產生的數據表(二維表),也可以是Hadoop集群上已經生成好的各種格式的數據表。在實際應用中,Hadoop上的第二數據表一般是有很多個,需要對哪個或者哪些具體的第二數據表進行數據回流需要指定。具體實現時,可以提供一配置界面,由配置人員在配置界面上填寫需要回流的第二數據表的名稱,這樣就可以確定出需要對哪個第二數據表中的數據進行數據回流。
[0068]在確定了需要進行數據回流的第二數據表之後,由於後續的步驟中需要從第二數據表中進行數據讀取,而不同的表格式對應著第二數據表中不同的文件內容格式(例如,有的是用「\n」對文件內容進行分隔,還有的是用「,」,還有的是用空格等等),只有在獲知了一個數據表的表格式,才能正確地從讀取出數據,因此,從第二數據表中讀取數據之前需要獲知第二數據表的表格式。具體的,如果Hadoop上的所有第二數據表都採用相同的表格式,則關於第二數據表的表格式信息可以是預先獲知的,統一按照該表格式從第二數據表中進行數據讀取即可。但實際應用中,Hadoop上的各個第二數據表可能會具有不同的表格式,具體是何種表格式,配置人員是可以知曉的,因此,還可以在前述配置界面中提供第二數據表的表格式配置入口,由配置人員在輸入第二數據表的名稱的同時,輸入第二數據表的表格式,這樣就可以獲知第二數據表的表格式,然後按照該表格式從第二數據表中提取數據即可。
[0069]當然,在前述配置界面中,還可以提供其他的配置入口。例如,輸出格式配置入口,如果配置人員需要指定第二數據表中的數據輸出到第二數據表時採用的輸出格式,則可以通過該入口進行配置,例如,配置為json格式、文本格式、xml格式等等;當然如果配置人員沒有指定輸出格式,則可以採用默認的輸出格式進行輸出,例如,json格式。又如,還可以包括壓縮方式配置入口,為了節省存儲空間,在將第二數據表中的數據保存到第一數據表的數據內容欄位之前,還可以進行壓縮,配置人員可以通過該入口指定具體的壓縮格式,例如zip等。當然,如果配置人員沒有指定,則可以不進行壓縮,或者按照默認的格式進行壓縮7等等。
[0070]S103:根據所述第二數據表的格式讀取出所述第二數據表中的所有原始數據,並轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;
[0071]由於步驟S102中已經獲知了第二數據表的表格式,因此,就可以按照該表格式從該第二數據表中一次性讀取出所有的原始數據。然後,在本申請實施例中,可以將這些原始數據轉換成一個大的字符串。由於第二數據表中也存在行、列的概念,原始數據分布在第二數據表的各行各列中,因此,在轉換的過程中,可以採用逐條逐欄位地追加寫入的方式,同時,根據各個原始數據在第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,這裡的分隔符包括行分隔符及列分隔符。例如,列分隔符採用「,」,行分隔符用「[]」,如,某第二數據表中的原始數據如表I所示:
[0072]表I
[0073]
【權利要求】
1.一種數據回流方法,包括:在關係型資料庫中創建第一數據表,所述第一數據表包括名稱欄位及數據內容欄位;確定分布式系統中需要進行數據回流的第二數據表、所述第二數據表的格式及名稱;根據所述第二數據表的格式讀取出所述第二數據表中的所有原始數據,並轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符; 將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中,並將所述第二數據表的名稱作為該條記錄的名稱寫入到所述第一數據表的名稱欄位中。
2.根據權利要求1所述的方法,所述將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中包括: 將所述字符串按照指定的格式進行壓縮後,作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中。
3.根據權利要求1所述的方法,所述將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中包括: 按照指定的輸出格式,將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中。
4.根據權利要求1所述的方法,所述第一數據表還包括日期欄位;所述方法還包括: 將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中的同時,將當前日期作為該條記錄的日期寫入到所述第一數據表的日期欄位中。
5.根據權利要求1所述的方法,還包括: 監控所述第一數據表中記錄條數的變化; 當所述記錄條數達到預置閾值時,為所述第一數據表添加索引欄位,每一條索引對應所述預置閾值條數的記錄。
6.一種關係型資料庫中的數據訪問方法,所述關係型資料庫中保存有第一數據表,所述第一數據表包括名稱欄位及數據內容欄位,所述第一數據表中每條記錄的名稱欄位用於保存第二數據表的名稱,數據內容欄位用於保存第二數據表中的所有原始數據,所述原始數據在存入所述數據內容欄位之前被轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;所述方法包括: 接收查詢請求,根據所述查詢請求與所述第一數據表的名稱欄位的匹配情況,確定目標記錄條目; 提取所述目標記錄條目的數據內容欄位中的字符串,並按照所述行分隔符及列分隔符對所述字符串進行拆分,還原成與第二數據表對應的二維數組; 確定所述第二數據表中各欄位的含義; 按照所述各欄位的含義將所述二維數組輸出為二維數據表文件並返回。
7.根據權利要求6所述的方法,所述返回給所述訪問者包括: 提供所述二維數據表文件的訪問接口供調用; 或者, 將所述二維數據表文件輸出到網頁供查看或下載。
8.根據權利要求6所述的方法,還包括: 確定所述第二數據表中各欄位的輸出格式; 所述按照所述各欄位的含義將所述二維數組輸出為二維數據表文件,返回給所述訪問者包括: 按照所述各欄位的含義及輸出格式將所述二維數組輸出為二維數據表文件並返回。
9.根據權利要求6所述的方法,所述字符串在被存入所述第一數據表的數據內容欄位之前被按照指定的格式壓縮;所述提取所述目標記錄條目的數據內容欄位中的字符串包括: 提取所述目標記錄條目的數據內容欄位中的數據並根據所述指定的格式進行解壓得到字符串。
10.根據權利要求6所述的方法,將所述字符串被按照指定的輸出格式寫入到所述第一數據表的數據內容欄位中,所述提取所述目標記錄條目的數據內容欄位中的字符串包括: 將所述目標記錄條目的數據內容欄位中的字符串按照所述輸出格式輸出為標準文件。
11.根據權利要求6所述的方法,所述第一數據表還包括日期欄位,所述日期欄位用於保存將所述第二數據表回流到所述第一數據表時的日期;所述根據所述查詢請求與所述第一數據表的名稱欄位的匹配情況,確定目標記錄條目包括: 根據所述查詢請求與所述第一數據表的名稱欄位及日期欄位的匹配情況,確定目標記錄條目。
12.—種數據回流系統,包括: 創建單元,用於在關係型資料庫中創建第一數據表,所述第一數據表包括名稱欄位及數據內容欄位; 信息獲取單元,用於確定分布式系統中需要進行數據回流的第二數據表、所述第二數據表的格式及名稱; 數據轉換單元,用於根據所述第二數據表的格式讀取出所述第二數據表中的所有原始數據,並轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符; 數據寫入單元,用於將所述字符串作為一條記錄的數據內容寫入到所述第一數據表的數據內容欄位中,並將所述第二數據表的名稱作為該條記錄的名稱寫入到所述第一數據表的名稱欄位中。
13.一種關係型資料庫中的數據訪問系統,所述關係型資料庫中保存有第一數據表,所述第一數據表包括名稱欄位及數據內容欄位,所述第一數據表中每條記錄的名稱欄位用於保存第二數據表的名稱,數據內容欄位用於保存第二數據表中的所有原始數據,所述原始數據在存入所述數據內容欄位之前被轉換為字符串,在所述字符串中,根據各個原始數據在所述第二數據表中所處的行與列的不同,利用預置的分隔符進行分隔,所述分隔符包括行分隔符及列分隔符;所述系統包括: 目標記錄條目確定單元,用於接收查詢請求,根據所述查詢請求與所述第一數據表的名稱欄位的匹配情況,確定目標記錄條目; 拆分單元,用於提取所述目標記錄條目的數據內容欄位中的字符串,並按照所述行分隔符及列分隔符對所述字符串進行拆分,還原成與第二數據表對應的二維數組; 欄位含義確定單元,用於確定所述第二數據表中各欄位的含義; 返回單元,用於按照所述各欄位的含義將所述二維數組輸出為二維數據表文件並返回。`
【文檔編號】G06F17/30GK103678339SQ201210328490
【公開日】2014年3月26日 申請日期:2012年9月6日 優先權日:2012年9月6日
【發明者】李慶豐 申請人:阿里巴巴集團控股有限公司