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