基于局部更新軟件的數據處理方法及裝置的制造方法
【專利摘要】本發明公開了一種基于局部更新軟件的數據處理方法及裝置。其中,該方法包括:從消息隊列中讀取關系型數據庫的增量數據;獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵;從各個數據文件的索引中,查找與主鍵匹配的目標索引;在查找到目標索引的情況下,在確定目標索引所對應的目標數據文件之后,利用增量數據更新目標數據文件,得到增量數據文件,其中,數據文件包括目標數據文件。本發明解決了impala對級別較大的數據量無法進行新增、修改或者刪除的局部更新的技術問題。
【專利說明】
基于局部更新軟件的數據處理方法及裝置
技術領域
[0001]本發明涉及數據處理領域,具體而言,涉及一種基于局部更新軟件的數據處理方法及裝置。【背景技術】
[0002]圖1是根據現有技術的一種查詢系統的示意圖,如圖1所示,Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL(Structed Query Language,結構化查詢語言)語義,能查詢存儲在Hadoop的HDFS(Hadoop Distributed File System,分布式文件系統)和 HBase(Hadoop Database,分布式的面向列的開源數據庫)中的PB(petabyte,計算機中較高級的存儲單位)級大數據。數據存儲格式采用parquet(面向分析型業務的列式存儲格式), 它的最大特點也是最大賣點就是它的快速。圖1中的Command-line shell為命令行界面; HUE/Thrift/ODBC/JDBC其中的HUE是一個開源的Apache Hadoop UI系統,Thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發,ODBC是Open Database Connectivity的縮寫,譯為開放數據庫連接,JDBC是JavaData Base Connectivity的縮寫,S卩java數據庫連接;Hive Metastore是模塊代碼分析結構,HDFS NN中的HDFS是Hadoop Distributed File System的縮寫,譯為分布式文件系統;State Store是一個數據存儲區,Impalad也即為上述的Impala,SQLParser為語法解釋器,Query Optimizeer為查詢優化器;Query Planner為查詢計劃器;Query Coordinator查詢協調器;Query Exec Engine為查詢執行引擎;Hadoop Storage為Hadoop的存儲模塊,(e ? g ? HDFS,HBase)即為該Hadoop的存儲模塊可以為HDFS或者HBase。
[0003]對于做大數據的數據交互查詢,數據從關系型數據庫導入,每次做數據的交互查詢需要從關系型數據庫加載全量數據,正常情況下,歷史庫、交易庫數據量都非常大,一般是GB(gigabyte,千兆字節)級別、甚至是PB(petabyte,計算機中較高級的存儲單位)級別, 對于歷史數據多,每天增量數據也多的情況下,將數據從關系數據庫加載全量數據不太現實,且耗時較長,難以忍受。目前impala數據加載普遍采用的實現方式是每次全量從歷史庫、交易庫加載數據到impala,以滿足數據查詢需求。而加載增量數據僅可以處理插入操作,不能處理刪除和修改操作。
[0004]針對上述的impala對級別較大的數據量無法進行新增、修改或者刪除的局部更新的問題,目前尚未提出有效的解決方案。
【發明內容】
[0005]本發明實施例提供了一種基于局部更新軟件的數據處理方法及裝置,以至少解決 impala對級別較大的數據量無法進行新增、修改或者刪除的局部更新的技術問題。
[0006]根據本發明實施例的一方面,提供了一種基于局部更新軟件的數據處理方法,該方法包括:從消息隊列中讀取關系型數據庫的增量數據;獲取查詢數據庫中的各個數據文件的索引和所述增量數據的主鍵;從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引;在查找到所述目標索引的情況下,在確定所述目標索引所對應的目標數據文件之后,利用所述增量數據更新所述目標數據文件,得到增量數據文件,其中,所述數據文件包括所述目標數據文件。
[0007]進一步地,在查找與所述主鍵匹配的目標索引之后,所述方法還包括:在未查找到所述目標索引的情況下,新建目標數據文件;利用所述增量數據更新所述目標數據文件,得到增量數據文件。
[0008]進一步地,在得到增量數據文件之后,所述方法包括:獲取所述查詢數據庫的存儲單元的預設文件數據容量,其中,所述存儲單元用于存儲所述增量數據文件;根據所述預設文件數據容量和所述增量數據文件的文件數據容量的對比結果,對所述增量數據文件進行調整,得到調整后的增量數據文件。
[0009]進一步地,根據所述預設文件數據容量和所述增量數據文件的文件數據容量的對比結果,對所述增量數據文件進行調整,得到調整后的增量數據文件包括:若所述增量數據文件的文件數據容量大于所述存儲單元的預設文件數據容量,則根據所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排序,根據所述排序的結果將所述增量數據文件拆分成一個或多個所述預設文件數據容量的數據文件和一個拆分文件,其中,所述拆分文件的數據容量小于等于所述預設文件數據容量,所述數據文件和所述拆分文件中包括多個所述記錄項,每個所述索引與各個所述記錄項一一對應。
[0010]進一步地,根據所述預設文件數據容量和所述增量數據文件的文件數據容量的對比結果,對所述增量數據文件進行調整,得到調整后的增量數據文件包括:若所述增量數據文件的文件數據容量小于所述存儲單元的預設文件數據容量,則根據所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排序,根據所述排序的結果將多個所述增量數據文件聚變成一個或多個所述預設文件數據容量的數據文件和一個聚變子文件,其中,所述聚變子文件的數據容量小于等于所述預設文件數據容量,所述數據文件和所述聚變子文件包括多個所述記錄項,每個所述索引與所述各個記錄項一一對應。
[0011]進一步地,從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引包括: 判斷所述各個數據文件的索引的范圍是否包括所述增量數據文件的主鍵;若存在數據文件的所述索引的范圍包括所述主鍵,則將所述索引確定為所述目標索引。
[0012]進一步地,利用所述增量數據更新所述目標數據文件包括:根據所述目標數據文件的文件名確定與所述目標數據文件對應的臨時文件;將所述增量數據保存到所述目標數據文件對應的臨時文件中;將所述臨時文件與所述目標數據文件合并。
[0013]進一步地,所述增量數據為多個,所述方法還包括:在將所述增量數據保存到所述目標數據文件對應的臨時文件中的同時,并行將所述臨時文件與所述目標數據文件合并。
[0014]進一步地,在從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引之前,所述方法包括:獲取分區字段,將所述數據文件按照所述分區字段進行分區,得到多個分區數據文件;從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引包括:在所述分區數據文件的索引中查找與所述主鍵對應的所述索引。
[0015]進一步地,所述增量數據為用于對所述關系型數據庫進行插入、修改或刪除操作的數據,所述查詢數據庫為Impala數據庫。
[0016]根據本發明實施例的另一方面,還提供了一種基于局部更新軟件的數據處理裝置,該裝置包括:讀取單元,用于從消息隊列中讀取關系型數據庫的增量數據;第一獲取單元,用于獲取查詢數據庫中的各個數據文件的索引和所述增量數據的主鍵;查找單元,用于從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引;第一更新單元,用于在查找到所述目標索引的情況下,在確定所述目標索引所對應的目標數據文件之后,利用所述增量數據更新所述目標數據文件,得到增量數據文件,其中,所述數據文件包括所述目標數據文件。
[0017]進一步地,所述裝置還包括:新建單元,用于在查找與所述主鍵匹配的目標索引之后,在未查找到所述目標索引的情況下,新建目標數據文件;第二更新單元,用于利用所述增量數據更新所述目標數據文件,得到增量數據文件。[〇〇18]進一步地,所述裝置包括:第二獲取單元,用于在得到增量數據文件之后,獲取所述查詢數據庫的存儲單元的預設文件數據容量,其中,所述存儲單元用于存儲所述增量數據文件;調整單元,用于根據所述預設文件數據容量和所述增量數據文件的文件數據容量的對比結果,對所述增量數據文件進行調整,得到調整后的增量數據文件。
[0019]進一步地,所述調整單元包括:裂變模塊,用于若所述增量數據文件的文件數據容量大于所述存儲單元的預設文件數據容量,則根據所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排序,根據所述排序的結果將所述增量數據文件拆分成一個或多個所述預設文件數據容量的數據文件和一個拆分文件,其中,所述拆分文件的數據容量小于等于所述預設文件數據容量,所述數據文件和所述拆分文件中包括多個所述記錄項,每個所述索引與各個所述記錄項--對應。
[0020]進一步地,所述調整單元包括:聚變模塊,用于若所述增量數據文件的文件數據容量小于所述存儲單元的預設文件數據容量,則根據所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排序,根據所述排序的結果將多個所述增量數據文件聚變成一個或多個所述預設文件數據容量的數據文件和一個聚變子文件,其中,所述聚變子文件的數據容量小于等于所述預設文件數據容量,所述數據文件和所述聚變子文件包括多個所述記錄項,每個所述索引與所述各個記錄項--對應。
[0021]進一步地,所述查找單元包括:判斷模塊,用于判斷所述各個數據文件的索引的范圍是否包括所述增量數據文件的主鍵;第一確定模塊,用于若存在數據文件的所述索引的范圍包括所述主鍵,則將所述索引確定為所述目標索引。
[0022]進一步地,所述第一更新單元或者所述第二更新單元包括:第二確定模塊,用于根據所述目標數據文件的文件名確定與所述目標數據文件對應的臨時文件;保存模塊,用于將所述增量數據保存到所述目標數據文件對應的臨時文件中;合并模塊,用于將所述臨時文件與所述目標數據文件合并。
[0023]進一步地,所述增量數據為多個,所述裝置還包括:并行單元,用于在將所述增量數據保存到所述目標數據文件對應的臨時文件中的同時,并行將所述臨時文件與所述目標數據文件合并。
[0024]進一步地,所述裝置包括:第三獲取單元,用于在從所述各個數據文件的索引中, 查找與所述主鍵匹配的目標索引之前,獲取分區字段,將所述數據文件按照所述分區字段進行分區,得到多個分區數據文件;所述查找單元包括:查找模塊,用于在所述分區數據文件的索引中查找與所述主鍵對應的所述索引。
[0025]進一步地,所述增量數據為用于對所述關系型數據庫進行插入、修改或刪除操作的數據,所述查詢數據庫為Impala數據庫。
[0026]在本發明實施例中,在讀取關系型數據庫的增量數據之后,獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵,然后從索引中查找與主鍵匹配的目標索引,在查找到該目標索引的情況下,再通過該目標索引確定與之對應的目標數據文件,然后利用增量數據更新目標數據文件,得到增量數據文件。通過上述實施例,在關系型數據庫中產生增量數據時,通過預先創建的索引(包括索引和主鍵),可以查找到與增量數據對應的目標數據文件,并使用該增量數據更新目標數據文件,無需將產生變化的全量數據全部重新導入查詢數據庫,從而實現了快速利用增量數據局部更新查詢數據庫的數據文件的效果,并能夠利用查詢數據庫分析處理關系型數據庫的新增、修改或刪除的增量數據,進而解決了 impala對級別較大的數據量無法進行新增、修改或者刪除的局部更新的技術問題。【附圖說明】
[0027]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0028]圖1是根據現有技術的一種查詢系統的示意圖;
[0029]圖2是根據本發明實施例的一種基于局部更新軟件的數據處理方法的流程圖;
[0030]圖3是根據本發明實施例的一種可選的基于局部更新軟件的數據處理方法的原理圖;
[0031]圖4是根據本發明實施例的另一種可選的基于局部更新軟件的數據處理方法的原理圖;以及
[0032]圖5是根據本發明實施例的一種基于局部更新軟件的數據處理裝置的示意圖。 【具體實施方式】
[0033]為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。[〇〇34]需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
[0035]根據本發明實施例,提供了一種基于局部更新軟件的數據處理方法的實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。
[0036]圖2是根據本發明實施例的一種基于局部更新軟件的數據處理方法的流程圖,如圖2所示,該方法包括如下步驟:[〇〇37]步驟S202,從消息隊列中讀取關系型數據庫的增量數據。
[0038]步驟S204,獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵。[〇〇39]步驟S206,從各個數據文件的索引中,查找與主鍵匹配的目標索引。
[0040]步驟S208,在查找到目標索引的情況下,在確定目標索引所對應的目標數據文件之后,利用增量數據更新目標數據文件,得到增量數據文件,其中,數據文件包括目標數據文件。
[0041]采用本發明,在讀取關系型數據庫的增量數據之后,獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵,然后從索引中查找與主鍵匹配的目標索引,在查找到該目標索引的情況下,再通過該目標索引確定與之對應的目標數據文件,然后利用增量數據更新目標數據文件,得到增量數據文件。通過上述實施例,在關系型數據庫中產生增量數據時,通過預先創建的索引(包括索引和主鍵),可以查找到與增量數據對應的目標數據文件, 并使用該增量數據更新目標數據文件,無需將產生變化的全量數據全部重新導入查詢數據庫,從而實現了快速利用增量數據局部更新查詢數據庫的數據文件的效果,并能夠利用查詢數據庫分析處理關系型數據庫的新增、修改或刪除的增量數據,進而解決了 impala對級別較大的數據量無法進行新增、修改或者刪除的局部更新的技術問題。
[0042]可選地,增量數據為用于對關系型數據庫進行插入、修改或刪除操作的數據,查詢數據庫為Impala數據庫。
[0043]具體地,上述實施例中的增量數據可以為用于對關系型數據庫中的數據進行新增、修改或者刪除處理的數據,在從消息隊列中讀取關系型數據庫的增量數據之前,可以通過關系型數據庫中的觸發器獲取增量數據,或者通過事務日志的形式記錄增量數據,然后將該增量數據傳入KAFKA中,其中,KAFKA為一種高吞吐量的分布式發布訂閱消息系統,然后查詢數據庫再從KAFKA中獲取該增量數據;在查詢數據庫(如,impala)的hdfs(即上述的 HDFS)中存儲有多個數據文件,每個數據文件都對應一個索引(即索引),每個增量數據也對應一個索引(即主鍵),根據主鍵可以在索引中找到與該主鍵相匹配的索引作為目標索引, 其中,索引是用于描述每個數據文件包括哪些數據。
[0044]進一步可選的,每個數據文件可以與hdfs塊大小接近一致,數據文件與hdfs塊大小接近一致可以使查詢數據庫的交互查詢更加高效,即更加能提高查詢數據庫(如impala) 的數據加載效率,減少數據在網絡上的傳輸,提高并行度。在利用增量數據更新目標數據文件,得到增量數據文件之后,該方法還可以包括刷新目標索引的內容。[〇〇45]通過上述實施例,實現了在基本數據已導入查詢數據庫(如,impala)的情況下,提供新增、修改、刪除的數據增量可以同步到查詢數據庫中,并且這個同步過程耗時短的效果。
[0046]可選地,在查找與主鍵匹配的目標索引之后,該方法還包括:在未查找到目標索引的情況下,新建目標數據文件;利用增量數據更新目標數據文件,得到增量數據文件。
[0047]在上述實施例中,在從消息隊列中讀取關系型數據庫的增量數據之后,獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵,從各個數據文件的索引中,查找與主鍵匹配的目標索引,在未查找到目標索引的情況下,新建目標數據文件;利用增量數據更新目標數據文件,得到增量數據文件。通過上述實施例,當未查找到該目標索引時新建目標數據文件,對該新建的目標數據文件進行更新,以實現對增量數據文件的靈活處理,以適應不同的實際情況。
[0048]具體地,無論是否查找到目標索引,該增量數據都能夠成功的更新目標數據文件。 其中,更新可以包括合并的過程。
[0049]可選地,在得到增量數據文件之后,該方法包括:獲取查詢數據庫的存儲單元的預設文件數據容量,其中,存儲單元用于存儲增量數據文件;根據預設文件數據容量和增量數據文件的文件數據容量的對比結果,對增量數據文件進行調整,得到調整后的增量數據文件。
[0050]在上述實施例中,查詢數據庫可以為impala,存儲單元可以是hdfs塊,在獲取查詢數據庫的存儲單元的預設文件數據容量之后,可以根據該預設文件數據容量與增量數據文件的文件數據容量的對比結果,來進一步的調整增量數據文件的大小。通過上述實施例,可以實現將增量數據文件合理的分塊存儲于查詢數據庫中的存儲模塊中,并使得該調整后的增量數據文件能夠進行高效的交互查詢。
[0051]具體地,在做索引(包括目標索引)和數據文件整理時,當發現數據文件(如增量數據文件)過大,做數據文件的裂變處理。當有多個小的數據文件時,做數據文件的聚變處理, 并更新索引。
[0052]可選地,根據預設文件數據容量和增量數據文件的文件數據容量的對比結果,對增量數據文件進行調整,得到調整后的增量數據文件包括:若增量數據文件的文件數據容量大于存儲單元的預設文件數據容量,則根據增量數據文件的索引將增量數據文件中存儲的各個記錄項進行排序,根據排序的結果將增量數據文件拆分成一個或多個預設文件數據容量的數據文件和一個拆分文件,其中,拆分文件的數據容量小于等于預設文件數據容量, 數據文件和拆分文件中包括多個記錄項,每個索引與各個記錄項一一對應。[〇〇53]在上述實施例中,對比結果顯示增量數據文件的文件數據容量大于存儲單元的預設文件數據容量,那么將增量數據文件中的各個記錄項按照該記錄項對應的索引進行排序,可以選取排序在預設范圍內的索引對應的多個記錄項作為一個數據文件,該數據文件的數據容量可以等于預設文件數據容量,并將該數據文件從原來的增量數據文件中拆分出來(即裂變),拆分出來后剩余的記錄項可以作為上述的拆分文件,然后可以更新經過拆分后的數據文件和拆分文件對應的索引。通過上述實施例,可以實現將較大的增量數據文件有效的進行拆分的效果。
[0054]可選地,根據預設文件數據容量和增量數據文件的文件數據容量的對比結果,對增量數據文件進行調整,得到調整后的增量數據文件包括:若增量數據文件的文件數據容量小于存儲單元的預設文件數據容量,則根據增量數據文件的索引將增量數據文件中存儲的各個記錄項進行排序,根據排序的結果將多個增量數據文件聚變成一個或多個預設文件數據容量的數據文件和一個聚變子文件,其中,聚變子文件的數據容量小于等于預設文件數據容量,數據文件和聚變子文件包括多個記錄項,每個索引與各個記錄項一一對應。
[0055]具體地,上述的數據文件的裂變過程相當于拆分處理的過程,裂變過程是根據數據內容(即多個記錄項)進行排序,按照hdfs塊大小(即上述的預設文件數據容量)劃分數據內容,將這些數據內容保存為數據文件。
[0056]在上述實施例中,當對比結果顯示增量數據文件的文件數據容量小于存儲單元的預設文件數據容量,那么也可以將增量數據文件中的各個記錄項按照該記錄項對應的索引進行排序,可以選取多個增量數據文件中排序在預設范圍內的索引對應的多個記錄項合并 (即聚變),作為一個數據文件,該數據文件的數據容量可以等于預設文件數據容量,并將原來的多個增量數據文件中剩下的記錄項合并,作為聚變子文件,然后可以更新經過合并后的數據文件和聚變子文件對應的索引。通過上述實施例,可以實現將較大的增量數據文件有效的進行合并的效果。
[0057]具體地,上述實施例中的聚變過程可以理解為是多個小數據容量的數據文件的合并的過程,先對這些小數據文件進行合并排序,當到達hdfs塊大小(即上述的預設文件數據容量)即生成一個數據文件,由于數據文件與內容關系發生變化,則需要更新索引。[〇〇58]可選地,從各個數據文件的索引中,查找與主鍵匹配的目標索引包括:判斷各個數據文件的索引的范圍是否包括增量數據文件的主鍵;若存在數據文件的索引的范圍包括主鍵,則將索引確定為目標索引。[〇〇59]在上述實施例中,在查找與主鍵匹配的目標索引的過程可以理解為,在各個數據文件的索引的范圍若包括增量數據文件的主鍵,則確定該索引為目標索引。通過上述實施例,可以高效的通過主鍵和索引獲取到目標索引。
[0060]具體地,若第一數據文件的索引的范圍為1-9999,第二數據文件的索引的范圍為 1000-19999,增量數據的主鍵為1-100,那么第一數據文件的索引的范圍包括主鍵,則將該第一數據文件的索引的范圍確定為目標索引。[0061 ]可選地,利用增量數據更新目標數據文件包括:根據目標數據文件的文件名確定與目標數據文件對應的臨時文件;將增量數據保存到目標數據文件對應的臨時文件中;將臨時文件與目標數據文件合并。
[0062]在上述實施例中,在更新目標數據文件時,可以先根據增量數據的主鍵查找到與該主鍵匹配的目標索引,根據該目標索引找到對應的目標數據文件,并根據該目標文件的文件名確定具有相同文件名的臨時文件,該臨時文件與該目標文件相對應,可以先將該增量數據存儲到該臨時文件中,并定時將該臨時文件與目標數據文件進行合并,以達到利用臨時文件中的增量數據更新目標數據文件的效果。
[0063]可選地,增量數據為多個,該方法還包括:在將增量數據保存到目標數據文件對應的臨時文件中的同時,并行將臨時文件與目標數據文件合并。
[0064]在上述實施例中,并行執行將增量數據保存到目標數據文件對應的臨時文件中的環節、以及將臨時文件與目標數據文件合并環節,可以實現提高數據處理效率的效果。
[0065]具體地,整個數據加載過程包括兩個環節,inclog Save環節和inclog Flush環-K-
[0066]其中,Inclog Save環節的主要功能是接收增量數據,該增量數據可以是插入、修改、刪除,接收到增量數據根據索引(即主鍵),存儲到的數據文件對應的臨時文件中,這樣的臨時文件我們稱為inclog,并更新索引。[0〇67] Inclog Flush主要功能是將臨時文件inclog與這個文件對應的數據文件parquet 做合并,包括新增、刪除、修改。
[0068]進一步可選地,為了提高兩個環節的并行度,可以采用兩個大目錄,每個處理環節獨占其中一個目錄。當有空閑目錄時,獨占狀態可以釋放,并占用另一個空閑目錄,目的是釋放獨占的目錄以備另一處理環節占用,其中,目錄可以理解為操作系統文件。
[0069]為了提高檢索效率,還可以將數據文件按照某個分區字段進行分區,分區過程不需要impala參與,其中,分區字段可以為男、女,或者可以為省會等字段,分區的過程可以理解為將數據文件進行拆分的過程。
[0070]可選地,在從各個數據文件的索引中,查找與主鍵匹配的目標索引之前,該方法包括:獲取分區字段,將數據文件按照分區字段進行分區,得到多個分區數據文件;從各個數據文件的索引中,查找與主鍵匹配的目標索引包括:在分區數據文件的索引中查找與主鍵對應的索引。
[0071]在上述的實施例中,可以先獲取分區字段,將數據文件按照分區字段進行分區,得到多個分區數據文件,然后在分區數據文件的索引中查找與主鍵對應的索引。通過上述實施例,可以提尚查找的效率。[0〇72]具體地,Impala的底層存儲可以直接采用hbase,能解決數據局部更新的問題,但是帶來更加嚴重的影響數據的交互查詢效率。因為impala是調用hbase的接口去查詢數據, 查詢效率低;另外,Impala本身提供分區功能,但是在進行分區時,數據是需要準備好的,不能對數據文件進行修改。
[0073]下面結合圖3和圖4對上述的基于局部更新軟件的數據處理方法做詳細的介紹。
[0074]如圖3所示,首先進行數據接收服務,具體可以為到KAFKA中的消息隊列中讀取關系型數據庫的增量數據,然后利用該增量數據對查詢數據庫中的數據文件進行具備更新, 在進行局部更新時,可以先根據該增量數據的主鍵查找到與該主鍵相匹配的數據文件的索引,將該查找到的索引確定為目標索引,根據目標索引找到待更新的目標數據文件,將增量數據存儲在與該目標數據文件對應的位于本地的臨時文件中,并將相關的目標索引存儲于元數據中,其中,本地還存儲有事務日志文件,然后在一段預設時間段后,將該臨時文件中的增量數據和目標數據文件進行合并,以利用該增量數據更新目標數據文件,得到增量數據文件,在進行局部更新之后,可以將該增量數據文件進行聚變或者裂變,得到多個大小接近hdfs塊大小的列式文件,然后將該列式文件存儲于hdfs中。
[0075]如圖4所示,關系型數據庫的整理數據可以記錄于事務日志文件中,通過索引元數據的列表可以得到各個數據文件(如圖4所示的文件所在列中的列式文件1和列式文件2)的索引(如索引范圍所在列中的1-9999和10000-19999),其中,列式文件1對應的索引范圍為 1-9999,列式文件2對應的索引范圍為10000-19999,如圖4右邊所示的列式文件1、列式文件 2以及列式文件3為裂變和聚變處理之后的數據文件。
[0076]根據本發明實施例的另一方面,還提供了一種基于局部更新軟件的數據處理裝置,圖5是根據本發明實施例的一種基于局部更新軟件的數據處理裝置的示意圖,如圖5所示,該裝置包括:讀取單元52、第一獲取單元54、查找單元56以及第一更新單元58。
[0077]其中,讀取單元52,用于從消息隊列中讀取關系型數據庫的增量數據。
[0078]第一獲取單元54,用于獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵。[〇〇79]查找單元56,用于從各個數據文件的索引中,查找與主鍵匹配的目標索引。
[0080]第一更新單元58,用于在查找到目標索引的情況下,在確定目標索引所對應的目標數據文件之后,利用增量數據更新目標數據文件,得到增量數據文件,其中,數據文件包括目標數據文件。
[0081]可選地,增量數據為用于對關系型數據庫進行插入、修改或刪除操作的數據,查詢數據庫為Impala數據庫。
[0082]采用本發明,在讀取關系型數據庫的增量數據之后,獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵,然后從索引中查找與主鍵匹配的目標索引,在查找到該目標索引的情況下,再通過該目標索引確定與之對應的目標數據文件,然后利用增量數據更新目標數據文件,得到增量數據文件。通過上述實施例,在關系型數據庫中產生增量數據時,通過預先創建的索引(包括索引和主鍵),可以查找到與增量數據對應的目標數據文件, 并使用該增量數據更新目標數據文件,無需將產生變化的全量數據全部重新導入查詢數據庫,從而實現了快速利用增量數據局部更新查詢數據庫的數據文件的效果,并能夠利用查詢數據庫分析處理關系型數據庫的新增、修改或刪除的增量數據,進而解決了 impala對級別較大的數據量無法進行新增、修改或者刪除的局部更新的技術問題。
[0083]可選地,該裝置還包括:新建單元,用于在查找與主鍵匹配的目標索引之后,在未查找到目標索引的情況下,新建目標數據文件;第二更新單元,用于利用增量數據更新目標數據文件,得到增量數據文件。
[0084]在上述實施例中,在從消息隊列中讀取關系型數據庫的增量數據之后,獲取查詢數據庫中的各個數據文件的索引和增量數據的主鍵,從各個數據文件的索引中,查找與主鍵匹配的目標索引,在未查找到目標索引的情況下,新建目標數據文件;利用增量數據更新目標數據文件,得到增量數據文件。通過上述實施例,當未查找到該目標索引時新建目標數據文件,對該新建的目標數據文件進行更新,以實現對增量數據文件的靈活處理,以適應不同的實際情況。
[0085]可選地,該裝置包括:第二獲取單元,用于在得到增量數據文件之后,獲取查詢數據庫的存儲單元的預設文件數據容量,其中,存儲單元用于存儲增量數據文件;調整單元, 用于根據預設文件數據容量和增量數據文件的文件數據容量的對比結果,對增量數據文件進行調整,得到調整后的增量數據文件。[〇〇86] 在上述實施例中,查詢數據庫可以為impala,存儲單元可以是hdfs塊,在獲取查詢數據庫的存儲單元的預設文件數據容量之后,可以根據該預設文件數據容量與增量數據文件的文件數據容量的對比結果,來進一步的調整增量數據文件的大小。通過上述實施例,可以實現將增量數據文件合理的分塊存儲于查詢數據庫中的存儲模塊中,并使得該調整后的增量數據文件能夠進行高效的交互查詢。[〇〇87]可選地,調整單元包括:裂變模塊,用于若增量數據文件的文件數據容量大于存儲單元的預設文件數據容量,則根據增量數據文件的索引將增量數據文件中存儲的各個記錄項進行排序,根據排序的結果將增量數據文件拆分成一個或多個預設文件數據容量的數據文件和一個拆分文件,其中,拆分文件的數據容量小于等于預設文件數據容量,數據文件和拆分文件中包括多個記錄項,每個索引與各個記錄項---對應。
[0088]在上述實施例中,對比結果顯示增量數據文件的文件數據容量大于存儲單元的預設文件數據容量,那么將增量數據文件中的各個記錄項按照該記錄項對應的索引進行排序,可以選取排序在預設范圍內的索引對應的多個記錄項作為一個數據文件,該數據文件的數據容量可以等于預設文件數據容量,并將該數據文件從原來的增量數據文件中拆分出來(即裂變),拆分出來后剩余的記錄項可以作為上述的拆分文件,然后可以更新經過拆分后的數據文件和拆分文件對應的索引。通過上述實施例,可以實現將較大的增量數據文件有效的進行拆分的效果。
[0089]可選地,調整單元包括:聚變模塊,用于若增量數據文件的文件數據容量小于存儲單元的預設文件數據容量,則根據增量數據文件的索引將增量數據文件中存儲的各個記錄項進行排序,根據排序的結果將多個增量數據文件聚變成一個或多個預設文件數據容量的數據文件和一個聚變子文件,其中,聚變子文件的數據容量小于等于預設文件數據容量,數據文件和聚變子文件包括多個記錄項,每個索引與各個記錄項--對應。
[0090]在上述實施例中,當對比結果顯示增量數據文件的文件數據容量小于存儲單元的預設文件數據容量,那么也可以將增量數據文件中的各個記錄項按照該記錄項對應的索引進行排序,可以選取多個增量數據文件中排序在預設范圍內的索引對應的多個記錄項合并 (即聚變),作為一個數據文件,該數據文件的數據容量可以等于預設文件數據容量,并將原來的多個增量數據文件中剩下的記錄項合并,作為聚變子文件,然后可以更新經過合并后的數據文件和聚變子文件對應的索引。通過上述實施例,可以實現將較大的增量數據文件有效的進行合并的效果。
[0091]可選地,查找單元包括:判斷模塊,用于判斷各個數據文件的索引的范圍是否包括增量數據文件的主鍵;第一確定模塊,用于若存在數據文件的索引的范圍包括主鍵,則將索引確定為目標索引。
[0092]在上述實施例中,在查找與主鍵匹配的目標索引的過程可以理解為,在各個數據文件的索引的范圍若包括增量數據文件的主鍵,則確定該索引為目標索引。通過上述實施例,可以高效的通過主鍵和索引獲取到目標索引。
[0093]可選地,第一更新單元或者第二更新單元包括:第二確定模塊,用于根據目標數據文件的文件名確定與目標數據文件對應的臨時文件;保存模塊,用于將增量數據保存到目標數據文件對應的臨時文件中;合并模塊,用于將臨時文件與目標數據文件合并。
[0094]在上述實施例中,在更新目標數據文件時,可以先根據增量數據的主鍵查找到與該主鍵匹配的目標索引,根據該目標索引找到對應的目標數據文件,并根據該目標文件的文件名確定具有相同文件名的臨時文件,該臨時文件與該目標文件相對應,可以先將該增量數據存儲到該臨時文件中,并定時將該臨時文件與目標數據文件進行合并,以達到利用臨時文件中的增量數據更新目標數據文件的效果。
[0095]可選地,增量數據為多個,裝置還包括:并行單元,用于在將增量數據保存到目標數據文件對應的臨時文件中的同時,并行將臨時文件與目標數據文件合并。
[0096]在上述實施例中,并行執行將增量數據保存到目標數據文件對應的臨時文件中的環節、以及將臨時文件與目標數據文件合并環節,可以實現提高數據處理效率的效果。
[0097]可選地,裝置包括:第三獲取單元,用于在從各個數據文件的索引中,查找與主鍵匹配的目標索引之前,獲取分區字段,將數據文件按照分區字段進行分區,得到多個分區數據文件;查找單元包括:查找模塊,用于在分區數據文件的索引中查找與主鍵對應的索引。
[0098]在上述的實施例中,可以先獲取分區字段,將數據文件按照分區字段進行分區,得到多個分區數據文件,然后在分區數據文件的索引中查找與主鍵對應的索引。通過上述實施例,可以提尚查找的效率。
[0099]上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
[0100]在本發明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
[0101]在本申請所提供的幾個實施例中,應該理解到,所揭露的技術內容,可通過其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如單元的劃分,可以為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接, 可以是電性或其它的形式。
[0102]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
[0103]另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。[〇1〇4]所述集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可為個人計算機、服務器或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、只讀存儲器(R0M,Read-0nly Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0105]以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
【主權項】
1.一種基于局部更新軟件的數據處理方法,其特征在于,包括:從消息隊列中讀取關系型數據庫的增量數據;獲取查詢數據庫中的各個數據文件的索引和所述增量數據的主鍵;從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引;在查找到所述目標索引的情況下,在確定所述目標索引所對應的目標數據文件之后, 利用所述增量數據更新所述目標數據文件,得到增量數據文件,其中,所述數據文件包括所述目標數據文件。2.根據權利要求1所述的方法,其特征在于,在查找與所述主鍵匹配的目標索引之后, 所述方法還包括:在未查找到所述目標索引的情況下,新建目標數據文件;利用所述增量數據更新所述目標數據文件,得到增量數據文件。3.根據權利要求1所述的方法,其特征在于,在得到增量數據文件之后,所述方法包括: 獲取所述查詢數據庫的存儲單元的預設文件數據容量,其中,所述存儲單元用于存儲所述增量數據文件;根據所述預設文件數據容量和所述增量數據文件的文件數據容量的對比結果,對所述 增量數據文件進行調整,得到調整后的增量數據文件。4.根據權利要求3所述的方法,其特征在于,根據所述預設文件數據容量和所述增量數 據文件的文件數據容量的對比結果,對所述增量數據文件進行調整,得到調整后的增量數 據文件包括:若所述增量數據文件的文件數據容量大于所述存儲單元的預設文件數據容量,則根據 所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排序,根據所述排 序的結果將所述增量數據文件拆分成一個或多個所述預設文件數據容量的數據文件和一 個拆分文件,其中,所述拆分文件的數據容量小于等于所述預設文件數據容量,所述數據文 件和所述拆分文件中包括多個所述記錄項,每個所述索引與各個所述記錄項一一對應。5.根據權利要求3所述的方法,其特征在于,根據所述預設文件數據容量和所述增量數 據文件的文件數據容量的對比結果,對所述增量數據文件進行調整,得到調整后的增量數 據文件包括:若所述增量數據文件的文件數據容量小于所述存儲單元的預設文件數據容量,則根據 所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排序,根據所述排 序的結果將多個所述增量數據文件聚變成一個或多個所述預設文件數據容量的數據文件 和一個聚變子文件,其中,所述聚變子文件的數據容量小于等于所述預設文件數據容量,所 述數據文件和所述聚變子文件包括多個所述記錄項,每個所述索引與所述各個記錄項一一 對應。6.根據權利要求1所述的方法,其特征在于,從所述各個數據文件的索引中,查找與所 述主鍵匹配的目標索引包括:判斷所述各個數據文件的索引的范圍是否包括所述增量數據文件的主鍵;若存在數據文件的所述索引的范圍包括所述主鍵,則將所述索引確定為所述目標索 引。7.根據權利要求1或2所述的方法,其特征在于,利用所述增量數據更新所述目標數據文件包括:根據所述目標數據文件的文件名確定與所述目標數據文件對應的臨時文件;將所述增量數據保存到所述目標數據文件對應的臨時文件中;將所述臨時文件與所述目標數據文件合并。8.根據權利要求7所述的方法,其特征在于,所述增量數據為多個,所述方法還包括: 在將所述增量數據保存到所述目標數據文件對應的臨時文件中的同時,并行將所述臨時文件與所述目標數據文件合并。9.根據權利要求8所述的方法,其特征在于,在從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引之前,所述方法包 括:獲取分區字段,將所述數據文件按照所述分區字段進行分區,得到多個分區數據文件; 從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引包括:在所述分區數 據文件的索引中查找與所述主鍵對應的所述索引。10.根據權利要求1所述的方法,其特征在于,所述增量數據為用于對所述關系型數據 庫進行插入、修改或刪除操作的數據,所述查詢數據庫為Impala數據庫。11.一種基于局部更新軟件的數據處理裝置,其特征在于,包括:讀取單元,用于從消息隊列中讀取關系型數據庫的增量數據;第一獲取單元,用于獲取查詢數據庫中的各個數據文件的索引和所述增量數據的主 鍵;查找單元,用于從所述各個數據文件的索引中,查找與所述主鍵匹配的目標索引; 第一更新單元,用于在查找到所述目標索引的情況下,在確定所述目標索引所對應的 目標數據文件之后,利用所述增量數據更新所述目標數據文件,得到增量數據文件,其中,所述數據文件包括所述目標數據文件。12.根據權利要求11所述的裝置,其特征在于,所述裝置還包括:新建單元,用于在查找與所述主鍵匹配的目標索引之后,在未查找到所述目標索引的 情況下,新建目標數據文件;第二更新單元,用于利用所述增量數據更新所述目標數據文件,得到增量數據文件。13.根據權利要求11所述的裝置,其特征在于,所述裝置包括:第二獲取單元,用于在得到增量數據文件之后,獲取所述查詢數據庫的存儲單元的預 設文件數據容量,其中,所述存儲單元用于存儲所述增量數據文件;調整單元,用于根據所述預設文件數據容量和所述增量數據文件的文件數據容量的對 比結果,對所述增量數據文件進行調整,得到調整后的增量數據文件。14.根據權利要求13所述的裝置,其特征在于,所述調整單元包括:裂變模塊,用于若所述增量數據文件的文件數據容量大于所述存儲單元的預設文件數 據容量,則根據所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排 序,根據所述排序的結果將所述增量數據文件拆分成一個或多個所述預設文件數據容量的 數據文件和一個拆分文件,其中,所述拆分文件的數據容量小于等于所述預設文件數據容 量,所述數據文件和所述拆分文件中包括多個所述記錄項,每個所述索引與各個所述記錄 項——對應。15.根據權利要求13所述的裝置,其特征在于,所述調整單元包括:聚變模塊,用于若所述增量數據文件的文件數據容量小于所述存儲單元的預設文件數 據容量,則根據所述增量數據文件的索引將所述增量數據文件中存儲的各個記錄項進行排 序,根據所述排序的結果將多個所述增量數據文件聚變成一個或多個所述預設文件數據容 量的數據文件和一個聚變子文件,其中,所述聚變子文件的數據容量小于等于所述預設文 件數據容量,所述數據文件和所述聚變子文件包括多個所述記錄項,每個所述索引與所述 各個記錄項--對應。16.根據權利要求11所述的裝置,其特征在于,所述查找單元包括:判斷模塊,用于判斷所述各個數據文件的索引的范圍是否包括所述增量數據文件的主 鍵;第一確定模塊,用于若存在數據文件的所述索引的范圍包括所述主鍵,則將所述索引 確定為所述目標索引。17.根據權利要求11或12所述的裝置,其特征在于,所述第一更新單元或者所述第二更 新單元包括:第二確定模塊,用于根據所述目標數據文件的文件名確定與所述目標數據文件對應的 臨時文件;保存模塊,用于將所述增量數據保存到所述目標數據文件對應的臨時文件中;合并模塊,用于將所述臨時文件與所述目標數據文件合并。18.根據權利要求17所述的裝置,其特征在于,所述增量數據為多個,所述裝置還包括:并行單元,用于在將所述增量數據保存到所述目標數據文件對應的臨時文件中的同時,并行將所述臨時文件與所述目標數據文件合并。19.根據權利要求18所述的裝置,其特征在于,所述裝置包括:第三獲取單元,用于在從所述各個數據文件的索引中,查找與所述主鍵 匹配的目標索引之前,獲取分區字段,將所述數據文件按照所述分區字段進行分區,得到多 個分區數據文件;所述查找單元包括:查找模塊,用于在所述分區數據文件的索引中查找與所述主鍵對 應的所述索引。20.根據權利要求11所述的裝置,其特征在于,所述增量數據為用于對所述關系型數據 庫進行插入、修改或刪除操作的數據,所述查詢數據庫為Impala數據庫。
【文檔編號】G06F17/30GK105956123SQ201610297050
【公開日】2016年9月21日
【申請日】2016年5月3日
【發明人】李銀苗
【申請人】無錫雅座在線科技發展有限公司