本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種數(shù)據(jù)批處理的方法及設(shè)備。
背景技術(shù):
::隨著信息技術(shù)的發(fā)展,云時(shí)代的來臨,大數(shù)據(jù)也吸引了越來越多的關(guān)注,大數(shù)據(jù)指的是大小超出常規(guī)的數(shù)據(jù)工具獲取、存儲(chǔ)、管理和分析能力的數(shù)據(jù)集,并不是說一定要超過TB值得數(shù)據(jù)集才能算是大數(shù)據(jù)。大數(shù)據(jù)幾乎滲透到國民經(jīng)濟(jì)的所有部門,應(yīng)用領(lǐng)域涉及信息服務(wù)、智慧城市、金融、制造業(yè)、國家安全和科學(xué)研究等。從數(shù)據(jù)計(jì)算響應(yīng)性能角度看,大數(shù)據(jù)處理可分為實(shí)時(shí)/準(zhǔn)實(shí)時(shí)與非實(shí)時(shí)計(jì)算,或者是聯(lián)機(jī)計(jì)算與離線計(jì)算,在一些大型的業(yè)務(wù)處理系統(tǒng)中,為了提高業(yè)務(wù)處理速度,一般需要在多地部署機(jī)房,不同機(jī)房的數(shù)據(jù)庫之間需要保持?jǐn)?shù)據(jù)的同步,大數(shù)據(jù)系統(tǒng)中對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)/準(zhǔn)實(shí)時(shí)同步是一個(gè)困難的課題,目前的大數(shù)據(jù)同步的方法延時(shí)較高、吞吐量較低,且不能接受各種數(shù)據(jù)源。申請(qǐng)內(nèi)容本申請(qǐng)的一個(gè)目的是提供一種數(shù)據(jù)批處理的方法及設(shè)備,解決現(xiàn)有技術(shù)中進(jìn)行大數(shù)據(jù)處理時(shí)的延時(shí)高、低吞吐量,不接受各種數(shù)據(jù)源的問題。根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種數(shù)據(jù)批處理的方法,該方法包括:判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,若小于等于,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù);若大于,將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的所有鍵值下的刪除操作和插入操作分別進(jìn)行批處理。進(jìn)一步地,上述方法中,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,包括:將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式;獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序;按照依賴關(guān)系和對(duì)應(yīng)的依賴順序?qū)⑺鲛D(zhuǎn)換后的待批處理數(shù)據(jù)的多個(gè)事務(wù)進(jìn)行合并,得到一個(gè)或多個(gè)組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理。進(jìn)一步地,所述統(tǒng)一內(nèi)部格式包括:數(shù)據(jù)操作類型、操作地址標(biāo)識(shí)、數(shù)據(jù)所屬的表名、多個(gè)數(shù)據(jù)列,其中,所述數(shù)據(jù)列包括一個(gè)或多個(gè)鍵值。進(jìn)一步地,上述方法中,獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,包括:獲取所述統(tǒng)一內(nèi)部格式中的鍵值,根據(jù)所述鍵值獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序。更進(jìn)一步地,根據(jù)所述鍵值獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系,包括以下至少任一項(xiàng):根據(jù)所述鍵值中的主鍵獲取在同一數(shù)據(jù)表內(nèi)的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)所述鍵值中的外鍵獲取不同數(shù)據(jù)表之間的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)用戶自定義及所述鍵值獲取多個(gè)事務(wù)之間的依賴關(guān)系。進(jìn)一步地,上述方法中,對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,包括:將每個(gè)組合事務(wù)的更新操作進(jìn)行拆分,匯總得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;將匯總的每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理。進(jìn)一步地,將匯總每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理,包括:將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。進(jìn)一步地,將匯總每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理,包括:將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;根據(jù)所述組合事務(wù)內(nèi)的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;根據(jù)所述插入數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。進(jìn)一步地,將匯總的每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理之前或之后,還包括:通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。進(jìn)一步地,將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的所有鍵值下的刪除操作和插入操作分別進(jìn)行批處理,包括:將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式;將所述轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作;獲取所述統(tǒng)一內(nèi)部格式中的鍵值,將屬于同一鍵值下的刪除操作和插入操作進(jìn)行合并;將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。進(jìn)一步地,上述方法中,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理,包括:對(duì)所述合并后的屬于同一鍵值下的刪除操作和插入操作中的第一個(gè)操作和最后一個(gè)操作,進(jìn)行合并的批處理。進(jìn)一步地,對(duì)所述合并后的屬于同一鍵值下的刪除操作和插入操作中的第一個(gè)操作和最后一個(gè)操作,進(jìn)行合并的批處理,包括如下至少一項(xiàng):若第一個(gè)操作為插入操作,且最后一個(gè)操作為刪除操作,則進(jìn)行忽略操作的合并處理;若第一個(gè)操作為插入操作,且最后一個(gè)操作為插入操作時(shí),將僅執(zhí)行最后的操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為刪除操作時(shí),則僅執(zhí)行一次刪除操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為插入操作時(shí),則執(zhí)行刪除所述刪除操作之后,執(zhí)行所述最后一個(gè)操作的合并處理。進(jìn)一步地,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理,包括:根據(jù)合并后的屬于同一鍵值下的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。進(jìn)一步地,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理之前或之后,還包括:通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)所述待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。根據(jù)本申請(qǐng)的另一方面,還提供了一種數(shù)據(jù)批處理的設(shè)備,該設(shè)備包括:判斷裝置,用于判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,第一批處理裝置,用于若小于等于,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù);第二批處理裝置,用于若大于,將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的所有鍵值下的刪除操作和插入操作分別進(jìn)行批處理。進(jìn)一步地,上述設(shè)備中,所述第一批處理裝置包括:第一轉(zhuǎn)換單元,用于將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式;獲取單元,用于獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序;批量處理單元,用于按照依賴關(guān)系和對(duì)應(yīng)的依賴順序?qū)⑺鲛D(zhuǎn)換后的待批處理數(shù)據(jù)的多個(gè)事務(wù)進(jìn)行合并,得到一個(gè)或多個(gè)組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理。進(jìn)一步地,所述統(tǒng)一內(nèi)部格式包括:數(shù)據(jù)操作類型、操作地址標(biāo)識(shí)、數(shù)據(jù)所屬的表名、多個(gè)數(shù)據(jù)列,其中,所述數(shù)據(jù)列包括一個(gè)或多個(gè)鍵值。進(jìn)一步地,所述獲取單元用于:獲取所述統(tǒng)一內(nèi)部格式中的鍵值,根據(jù)所述鍵值獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序。更進(jìn)一步地,所述獲取單元用于以下至少任一項(xiàng):根據(jù)所述鍵值中的主鍵獲取在同一數(shù)據(jù)表內(nèi)的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)所述鍵值中的外鍵獲取不同數(shù)據(jù)表之間的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)用戶自定義及所述鍵值獲取多個(gè)事務(wù)之間的依賴關(guān)系。進(jìn)一步地,所述批量處理單元用于:將每個(gè)組合事務(wù)的更新操作進(jìn)行拆分,匯總得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;將匯總的每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理。進(jìn)一步地,所述批量處理單元用于:將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。進(jìn)一步地,所述批量處理單元用于:將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;根據(jù)所述組合事務(wù)內(nèi)的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;根據(jù)所述插入數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。進(jìn)一步地,所述設(shè)備還包括:第一自定義轉(zhuǎn)換裝置,用于通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。進(jìn)一步地,所述第二批處理裝置包括:第二轉(zhuǎn)換單元,用于將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式;拆分單元,用于將所述轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作;匯總單元,用于獲取所述統(tǒng)一內(nèi)部格式中的鍵值,將屬于同一鍵值下的刪除操作和插入操作進(jìn)行合并;合并的批處理單元,用于將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。進(jìn)一步地,所述合并批處理單元用于:對(duì)所述合并后的屬于同一鍵值下的刪除操作和插入操作中的第一個(gè)操作和最后一個(gè)操作,進(jìn)行合并的批處理。更進(jìn)一步地,所述合并的批處理單元用于如下至少一項(xiàng):若第一個(gè)操作為插入操作,且最后一個(gè)操作為刪除操作,則進(jìn)行忽略操作的合并處理;若第一個(gè)操作為插入操作,且最后一個(gè)操作為插入操作時(shí),將僅執(zhí)行最后的操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為刪除操作時(shí),則僅執(zhí)行一次刪除操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為插入操作時(shí),則執(zhí)行刪除所述刪除操作之后,執(zhí)行所述最后一個(gè)操作的合并處理。進(jìn)一步地,所述合并的批處理單元用于:根據(jù)合并后的屬于同一鍵值下的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。進(jìn)一步地,所述設(shè)備還包括:第二自定義轉(zhuǎn)換裝置,用于通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)所述待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。與現(xiàn)有技術(shù)相比,本申請(qǐng)通過判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,從而根據(jù)不同的場景需求采用不同的數(shù)據(jù)批處理方案,若小于等于,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù),通過對(duì)數(shù)據(jù)的依賴分析、重排等,最大限度的去除數(shù)據(jù)依賴,因此同一個(gè)組合事務(wù)內(nèi)的所有數(shù)據(jù)就可以并發(fā)批處理,大大提高了數(shù)據(jù)處理速度,降低了數(shù)據(jù)處理延時(shí)要求;若大于,則將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理,通過只關(guān)心合并的批處理,省去了中間的操作,這樣減少了操作次數(shù),簡化了操作,提高了吞吐量。進(jìn)一步地,本申請(qǐng)所述的數(shù)據(jù)批處理的方法支持各種數(shù)據(jù)類型,通過提供一種適配器,將每種數(shù)據(jù)源轉(zhuǎn)換為一種中間格式,數(shù)據(jù)格式的統(tǒng)一使得后續(xù)的處理方式只需一種即可,簡化了后續(xù)的設(shè)計(jì);當(dāng)待批處理數(shù)據(jù)的處理延時(shí)要求小于等于預(yù)設(shè)閾值時(shí),獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,根據(jù)建立起來的依賴圖對(duì)多個(gè)事務(wù)進(jìn)行重排,盡可能的消除依賴關(guān)系,即將不存在依賴關(guān)系的事務(wù)進(jìn)行合并成一個(gè)大事務(wù)為組合事務(wù),這樣一個(gè)組合事務(wù)內(nèi)的多個(gè)事務(wù)因沒有依賴關(guān)系,可以進(jìn)行并發(fā)處理,加快數(shù)據(jù)的處理速度。進(jìn)一步地,當(dāng)待批處理數(shù)據(jù)的處理延時(shí)要求大于預(yù)設(shè)閾值時(shí),將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式,將所述轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,通過以鍵(key)值歸類把數(shù)據(jù)對(duì)應(yīng)的每條記錄的變更歷史歸集到一起,將屬于同一key值下的刪除操作和插入操作歸集到一起,簡化了數(shù)據(jù)之間的依賴關(guān)系,便于后續(xù)的數(shù)據(jù)批量處理的進(jìn)行;接著,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理,而批處理是根據(jù)屬于同一個(gè)key值下的匯總內(nèi)的數(shù)據(jù)的第一個(gè)操作和最后一個(gè)操作進(jìn)行合并后的操作標(biāo)記,按照標(biāo)記重新以批量處理的方式進(jìn)行數(shù)據(jù)處理,從而對(duì)數(shù)據(jù)的處理達(dá)到高吞吐的效果。附圖說明通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種數(shù)據(jù)批處理的方法的流程圖;圖2示出根據(jù)本申請(qǐng)的一個(gè)方面的步驟S2的流程示意圖;圖3示出本申請(qǐng)一優(yōu)選實(shí)施例中的根據(jù)依賴關(guān)系建立的依賴圖;圖4示出本申請(qǐng)的一優(yōu)選實(shí)施例中的低延時(shí)同步方案的模塊圖;圖5示出根據(jù)本申請(qǐng)的一個(gè)方面的步驟S3的流程示意圖;圖6示出本申請(qǐng)的一優(yōu)選實(shí)施例中的高吞吐同步方案的模塊圖;圖7示出根據(jù)本申請(qǐng)另一個(gè)方面的一種數(shù)據(jù)批處理的設(shè)備的結(jié)構(gòu)示意圖;圖8示出根據(jù)本申請(qǐng)的另一個(gè)方面的第一批處理裝置的結(jié)構(gòu)示意圖;圖9示出根據(jù)本申請(qǐng)的另一個(gè)方面的第二批處理裝置的結(jié)構(gòu)示意圖。附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。具體實(shí)施方式下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flashRAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種數(shù)據(jù)批處理的方法的流程圖;所述方法包括步驟S1、步驟S2和步驟S3,其中,在步驟S1中,判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,從而根據(jù)不同的場景需求采用不同的數(shù)據(jù)批處理方案,當(dāng)場景需求是對(duì)數(shù)據(jù)實(shí)時(shí)性要求比較高時(shí),即待批處理數(shù)據(jù)的處理延時(shí)要求小于等于預(yù)設(shè)閾值時(shí),采用步驟S2中的批處理方案,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù),通過對(duì)數(shù)據(jù)的依賴分析、重排等,最大限度的去除數(shù)據(jù)依賴,進(jìn)而,在同一個(gè)組合事務(wù)內(nèi)的所有數(shù)據(jù)就可以并發(fā)批處理,大大提高了數(shù)據(jù)處理速度,降低了數(shù)據(jù)處理延時(shí)要求;當(dāng)場景需求是高吞吐量,但能容忍比較高的延時(shí)的場景時(shí),即待批處理數(shù)據(jù)的處理延時(shí)要求大于預(yù)設(shè)閾值時(shí),采用步驟S3中的批處理方案,將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的所有鍵值下的刪除操作和插入操作分別進(jìn)行批處理,從而所有刪除和插入操作在一個(gè)事務(wù)內(nèi)完成,通過只關(guān)心合并的批處理,省去了中間的操作,這樣減少了操作次數(shù),簡化了操作,提高了吞吐量。具體地,在步驟S1中,判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,在此,待批處理數(shù)據(jù)可以為各種數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫的CDC增量文件、CSV文件、XML文件、流數(shù)據(jù)、Hadoop數(shù)據(jù)源、MPP數(shù)據(jù)源、日志等各種結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)以及其他數(shù)據(jù)源,在本申請(qǐng)的一個(gè)優(yōu)選應(yīng)用場景為大數(shù)據(jù)同步系統(tǒng)中,待批處理數(shù)據(jù)為需要同步的數(shù)據(jù),判斷大數(shù)據(jù)同步的延時(shí)要求,判斷延時(shí)要求是否小于或等于預(yù)設(shè)閾值,根據(jù)實(shí)際場景中對(duì)延時(shí)要求的不同選擇不同的批處理方案,達(dá)到大數(shù)據(jù)同步的要求。若小于等于,在步驟S2中,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù);在此,當(dāng)對(duì)待批處理數(shù)據(jù)的處理延時(shí)要求比較低時(shí),即在對(duì)數(shù)據(jù)實(shí)時(shí)性要求比較高的場景中,例如數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫到HBase的同步,需要獲取待批處理數(shù)據(jù)中多個(gè)事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,建立依賴圖,利用該依賴圖將不存在依賴關(guān)系的事務(wù)合并成一個(gè)大事務(wù),即組成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,在此,批處理時(shí)優(yōu)選為對(duì)每個(gè)組合事物進(jìn)行并行處理,能實(shí)現(xiàn)很低的延時(shí)性,同時(shí)比較高的吞吐率。若大于,在步驟S3中,將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的所有鍵值下的刪除操作和插入操作分別進(jìn)行批處理。在此,當(dāng)需要高吞吐量,但能容忍比較高的延時(shí)場景時(shí),例如在數(shù)據(jù)倉庫領(lǐng)域,每天或者每小時(shí)同步一次數(shù)據(jù)到數(shù)據(jù)倉庫(大數(shù)據(jù)平臺(tái)),但是每次同步的數(shù)據(jù)量是巨大的,每次可達(dá)數(shù)TB,此時(shí)選擇步驟S3中的方案是合適的,先將需要同步的數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,根據(jù)鍵值(key字段)歸類將每條數(shù)據(jù)記錄的變更歷史歸集到一起,便于判斷這條數(shù)據(jù)記錄做了哪些修改,修改后的值是什么,從而達(dá)到減少數(shù)據(jù)依賴的目的,對(duì)每個(gè)匯總后的同一鍵值對(duì)應(yīng)的數(shù)據(jù)操作以最終合并的批處理類型進(jìn)行批量處理,靈活地處理覆蓋了所有的操作可能,且只對(duì)第一個(gè)操作和最后一個(gè)操作進(jìn)行分析得到合并的批處理類型,從而進(jìn)行批量處理,省去了中間的操作,減少了操作次數(shù),縮短了數(shù)據(jù)處理時(shí)間及大大提高吞吐量,達(dá)到高吞吐的目的。優(yōu)選地,圖2示出根據(jù)本申請(qǐng)的一個(gè)方面的步驟S2的流程示意圖,所述步驟S2包括:步驟S21、步驟S22和步驟S23,在步驟S21中,將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式,在此,所述待批處理數(shù)據(jù)為輸入數(shù)據(jù),可以為各種數(shù)據(jù)類型的數(shù)據(jù)來自不同的數(shù)據(jù)源,本申請(qǐng)所述的方法提供一種適配器,用于將每種數(shù)據(jù)源轉(zhuǎn)換為一種中間格式,數(shù)據(jù)格式的統(tǒng)一使得后續(xù)的處理方式只需一種即可,簡化了后續(xù)的設(shè)計(jì),比如oralce數(shù)據(jù)庫,通過ogg獲得增量數(shù)據(jù)日志,通過為ogg編寫一個(gè)適配器,使數(shù)據(jù)格式轉(zhuǎn)換成一種中間格式,方便后續(xù)的數(shù)據(jù)處理,如只需要用一份編碼,減少了因數(shù)據(jù)格式不同需要編寫不同類型代碼的操作。在步驟S22中,獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序;在此,根據(jù)依賴判斷規(guī)則對(duì)轉(zhuǎn)換為統(tǒng)一格式后的數(shù)據(jù)的多個(gè)事務(wù)進(jìn)行依賴分析,建立多個(gè)事務(wù)之間的依賴關(guān)系確定的依賴圖,以及對(duì)應(yīng)的依賴順序,如事務(wù)T1、T3依賴事務(wù)T0,按照依賴關(guān)系進(jìn)行排序,得到對(duì)應(yīng)的依賴順序是先是T0,再是T1和T3;在步驟S23中,按照依賴關(guān)系和對(duì)應(yīng)的依賴順序?qū)⑺鲛D(zhuǎn)換后的待批處理數(shù)據(jù)的多個(gè)事務(wù)進(jìn)行合并,得到一個(gè)或多個(gè)組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,根據(jù)建立起來的依賴圖對(duì)多個(gè)事務(wù)進(jìn)行重排,盡可能的消除依賴關(guān)系,即將不存在依賴關(guān)系的事務(wù)進(jìn)行合并成一個(gè)大事務(wù)為組合事務(wù),這樣一個(gè)組合事務(wù)內(nèi)的多個(gè)事務(wù)因沒有依賴關(guān)系,可以進(jìn)行并發(fā)處理,加快數(shù)據(jù)的處理速度,在本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例中,如圖3示出的依賴圖,t1、t3依賴t0,t5依賴t4,t9依賴t6、t8,而t2、t7沒有任何依賴、被依賴,根據(jù)圖3的依賴圖中的依賴關(guān)系可以調(diào)整事務(wù)順序如下:(t0,t2,t4,t6,t7,t8),(t1,t3,t5,t9),把經(jīng)過調(diào)整重排沒有依賴關(guān)系的多個(gè)事務(wù)一起組合成一個(gè)大事務(wù),大事務(wù)之間是有依賴關(guān)系的,按照依賴關(guān)系的先后順序進(jìn)行排序,得到如下的大事務(wù)及依賴順序:(t0,t2,t4,t6,t7,t8)->T0;(t1,t3,t5,t9)->T1,因?yàn)門1中的t1、t3依賴T0中的t0,因此對(duì)應(yīng)的依賴順序是先T0后T1,上述實(shí)施例中,t0,t1……t9表示多個(gè)不同的事務(wù),T0,T1表示由多個(gè)事務(wù)確定的組合事務(wù)。優(yōu)選地,所述統(tǒng)一內(nèi)部格式包括:數(shù)據(jù)操作類型、操作地址標(biāo)識(shí)、數(shù)據(jù)所屬的表名、多個(gè)數(shù)據(jù)列,其中,所述數(shù)據(jù)列包括一個(gè)或多個(gè)鍵值。在此,統(tǒng)一內(nèi)部格式如下:OPTIDTBLFld1Fld2Fld3Fld4…其中,OP表示數(shù)據(jù)操作類型,例如insert/delete/update;TID表示操作ID(操作地址標(biāo)識(shí)),代表該操作帶原數(shù)據(jù)的操作ID,類似oracleSCN;TBL表示數(shù)據(jù)所屬的表名,F(xiàn)ld1、Fld2、Fld3、Fld4……表示數(shù)據(jù)庫表里各列的數(shù)據(jù),數(shù)據(jù)庫每更新一行數(shù)據(jù),都會(huì)記錄這條記錄更新前的數(shù)據(jù)和更新后的數(shù)據(jù),F(xiàn)ld就是表示這些數(shù)據(jù)列,在本申請(qǐng)實(shí)施例中所述數(shù)據(jù)列包括一個(gè)或多個(gè)key值(鍵值),一個(gè)數(shù)據(jù)列最多只有一個(gè)鍵值,而多個(gè)數(shù)據(jù)列可以共同一起組成鍵值組,從而是多個(gè)鍵值。。將各種數(shù)據(jù)源轉(zhuǎn)換成上述形式的統(tǒng)一內(nèi)部格式便于后續(xù)進(jìn)行數(shù)據(jù)批處理時(shí)只需要一份code,簡化了操作。優(yōu)選地,在步驟S22中,獲取所述統(tǒng)一內(nèi)部格式中的鍵值,根據(jù)所述鍵值獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序。在此,根據(jù)依賴判斷規(guī)則確定多個(gè)事務(wù)之間的依賴關(guān)系和對(duì)應(yīng)的依賴順序,在本申請(qǐng)的一優(yōu)選實(shí)施例中,通過獲取統(tǒng)一內(nèi)部格式中的鍵值,根據(jù)鍵值預(yù)設(shè)一個(gè)依賴判斷規(guī)則,進(jìn)而確定轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,其中,所述鍵值包括主鍵、外鍵和用戶自定義的鍵,依賴判斷規(guī)則為利用所述鍵值的方法僅為一舉例,其他現(xiàn)有的或今后可能出現(xiàn)的依賴判斷規(guī)則如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。更優(yōu)選地,在步驟S22中,根據(jù)所述鍵值獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系,包括以下至少任一項(xiàng):根據(jù)所述鍵值中的主鍵獲取在同一數(shù)據(jù)表內(nèi)的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)所述鍵值中的外鍵獲取不同數(shù)據(jù)表之間的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)用戶自定義及所述鍵值獲取多個(gè)事務(wù)之間的依賴關(guān)系。在此,通過主鍵定義表內(nèi)的依賴:表內(nèi)針對(duì)同一key值的多次操作是表內(nèi)依賴的,例如,用戶的銀行賬戶表account,id是key值,則具有相同id的操作是有依賴的,比如用戶Alice賬號(hào)id為1000,所有Alice的賬號(hào)更新是有依賴的,有嚴(yán)格的交易次序,比如賬號(hào)新確定后,必須是先存錢才可以進(jìn)行后續(xù)的其他操作,如再取錢,不能變更順序后先取錢再存錢。通過外鍵關(guān)聯(lián)定義表間依賴,如B表的主鍵是A表的外鍵,則B表主鍵和A表外鍵相同的操作是表間依賴的,根據(jù)外鍵的定義,它一定是來源于一個(gè)表的主鍵的值,因此先有主鍵才能有外鍵,這樣就構(gòu)成了依賴關(guān)系。在一具體實(shí)施例中,表A有2列,用a1和a2表示,其中,a1是key;表B有2列,用b1和b2表示,其中,b1是key,b2是外鍵,對(duì)應(yīng)A表主鍵a1;事務(wù)t0:insertA(1,‘Alice’)t1:insertB(100,1)t2:…t3:updateA(1,‘Alice’)->(1,‘Bob’)通過主鍵和外鍵確定的依賴判斷規(guī)則可獲取到的依賴關(guān)系為:事務(wù)t1通過外鍵依賴事務(wù)t0,事務(wù)t3通過主鍵依賴事務(wù)t0。另外,還可以定義用戶自定義依賴,比如A表的c1字段依賴B表的c1字段,依賴的規(guī)則與通過外鍵關(guān)聯(lián)定義依賴是一樣的,只是通過用戶來執(zhí)行。在本申請(qǐng)中,上述的不同依賴規(guī)則之間是可以單獨(dú)使用也可以一起使用的,互不沖突,通過其中任一種依賴規(guī)則獲取到的依賴關(guān)系,方便后續(xù)的將多個(gè)事務(wù)進(jìn)行分析、重排的過程,得到最大限度地剔除依賴關(guān)系的組合事務(wù)。優(yōu)選地,步驟S23可以包括將每個(gè)組合事務(wù)的更新操作進(jìn)行拆分,匯總得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;將匯總的每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理。在此,本申請(qǐng)所述的數(shù)據(jù)批處理的方法可以進(jìn)行數(shù)據(jù)的批量實(shí)現(xiàn)增刪改,通過事務(wù)管理,生成多個(gè)大事務(wù)(組合事務(wù)),每個(gè)組合事務(wù)內(nèi)部的事務(wù)沒有依賴,把每個(gè)事務(wù)的更新操作(update)分拆成一條delete和一條insert,例如:update([c1,c2,...]->[c1’,c2’,...])=delete([c1,c2,...])+insert([c1’,2’,...],其中,[c1,c2,……]是指原數(shù)據(jù),[c1’,c2’……]是指經(jīng)過更新操作后的數(shù)據(jù)結(jié)果,delete([c1,c2,...])+insert([c1’,2’,...]是指先刪除原有的數(shù)據(jù)記錄,再insert更新后的數(shù)據(jù)結(jié)果,經(jīng)過delete和insert兩個(gè)操作可以處理不規(guī)則的更新操作,滿足多個(gè)事務(wù)中數(shù)據(jù)處理的需求,在每個(gè)組合事務(wù)中將update拆分成一條delete和一條insert后,把所有的delete操作batch起來處理(批量處理),把所有的insert操作batch起來處理,進(jìn)而提高了數(shù)據(jù)的處理速度,批量處理比單條處理性能上有數(shù)量級(jí)提升。更優(yōu)選地,步驟S23可以包括將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。在此,當(dāng)待批處理數(shù)據(jù)的數(shù)據(jù)量小時(shí),直接進(jìn)行delete/insert:DeletefromdstTablewherekeyin(key1,key2,key3,…)InsertintodstTablevalues(f00,f01,f02…)values(f10,f11,f12,…)…上述代碼表示,根據(jù)key找到對(duì)應(yīng)的表中的操作對(duì)象進(jìn)行delete操作,根據(jù)待批處理數(shù)據(jù)的更新操作信息記錄將原數(shù)據(jù)(f00,f01,f02…)進(jìn)行delete后插入更新后的結(jié)果數(shù)據(jù)(f10,f11,f12,…)。當(dāng)待批量處理數(shù)據(jù)的數(shù)據(jù)量小時(shí),直接采用上述的insert和deletebatch方式并發(fā)地執(zhí)行數(shù)據(jù)處理操作,進(jìn)而大幅度地提高了數(shù)據(jù)處理的速度,降低了延時(shí)時(shí)間,在大數(shù)據(jù)同步的場景中,可以實(shí)現(xiàn)低延時(shí)的同步使得達(dá)到實(shí)時(shí)/準(zhǔn)實(shí)時(shí)同步的目的。優(yōu)選地,在步驟S23中,將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;根據(jù)所述組合事務(wù)內(nèi)的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;根據(jù)所述插入數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。在此,當(dāng)待批處理數(shù)據(jù)的數(shù)據(jù)量較大時(shí),先將增量數(shù)據(jù)建成數(shù)據(jù)庫外表insertTable、deleteTable,其中,增量數(shù)據(jù)是數(shù)據(jù)庫更新的時(shí)候,記錄下的更新類型、更新前的原始數(shù)據(jù)、更新后的結(jié)果數(shù)據(jù),一般從數(shù)據(jù)庫日志通過OGG、Shareplex等專業(yè)軟件讀取,把增量數(shù)據(jù)作用在原數(shù)據(jù)上實(shí)現(xiàn)數(shù)據(jù)的同步,例如,編程代碼可以為如下形式:deletefromdstTablewherekeyin(selectkeyfromdeleteTable);insertintotabledstTableselect*frominsertTable當(dāng)數(shù)據(jù)量比較大時(shí),利用外表進(jìn)行處理數(shù)據(jù)的速度要遠(yuǎn)比內(nèi)存中的快,因此,對(duì)于大數(shù)量,采用本申請(qǐng)所述的建立外表的方法進(jìn)行批處理提高了處理數(shù)據(jù)的速度,顯著地降低了延時(shí)時(shí)間。優(yōu)選地,在本申請(qǐng)所述的方法中,在步驟S23之前或之后,還包括:步驟S24,通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。在此,用戶在對(duì)待批處理數(shù)據(jù)進(jìn)行處理的過程中可以做各種數(shù)據(jù)轉(zhuǎn)換,可以通過UDF的方式自定義轉(zhuǎn)換方式,能夠擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,例如,用戶在數(shù)據(jù)同步的過程中,需要對(duì)某些數(shù)據(jù)列做一個(gè)非常復(fù)雜的變換:y=f(x),則用戶只需按照編程接口(api)進(jìn)行編程實(shí)現(xiàn)f(x)函數(shù),使用的時(shí)候:Selectf(x)fromsrc,這樣得到的數(shù)據(jù)即為變換后的數(shù)據(jù)。在本申請(qǐng)的一應(yīng)用場景大數(shù)據(jù)同步的過程中,有些用戶需要對(duì)數(shù)據(jù)做一些轉(zhuǎn)換,本申請(qǐng)所述的方法提供一個(gè)接口,使得用戶可以自己編譯一段小程序就能實(shí)現(xiàn)所需要的功能,根據(jù)需求擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,滿足用戶的特定需求。圖4示出本申請(qǐng)的一優(yōu)選實(shí)施例中的低延時(shí)同步方案的模塊圖;所述低延時(shí)同步方案包括數(shù)據(jù)統(tǒng)一格式模塊(DataFormatUnifier)、事務(wù)處理模塊、數(shù)據(jù)處理模塊(DMLGenerator)和大數(shù)據(jù)平臺(tái)(BigDataPlatform),其中,DataFormatUnifier接收各種數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)庫(RDBMS)、關(guān)系數(shù)據(jù)庫的CDC增量文件(RDBMSCDC)、CSV文件、XML文件、(flatFile)、流數(shù)據(jù)(Stream)、非結(jié)構(gòu)化數(shù)據(jù)和其他數(shù)據(jù)類型,DataFormatUnifier根據(jù)接收到的數(shù)據(jù)源類型將其轉(zhuǎn)換成一種內(nèi)部結(jié)構(gòu)化格式;接著,將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行事務(wù)處理,事務(wù)處理模塊用于事務(wù)依賴分析(TransactionDependencyAnalyzer)、事務(wù)記錄(TransactionRecorder)和事務(wù)合并(TransactionMerger),TransactionDependencyAnalyzer利用依賴判斷規(guī)則建立依賴圖,TransactionRecorder根據(jù)上述建立的依賴圖調(diào)整事務(wù)的順序,TransactionMerger把經(jīng)過調(diào)整順序重排的、沒有依賴關(guān)系的事務(wù)一起組合成一個(gè)大事務(wù),進(jìn)行多個(gè)事務(wù)的合并;需要說明的是,當(dāng)轉(zhuǎn)換后的數(shù)據(jù)沒有事務(wù)信息或者目標(biāo)不需要事務(wù)來保證數(shù)據(jù)的一致性時(shí),事務(wù)處理過程可以略過。經(jīng)過事務(wù)處理后得到合并的大事務(wù),在DMLGenerator中對(duì)合并的大事務(wù)進(jìn)行數(shù)據(jù)處理,包括數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)的批量處理,其中,數(shù)據(jù)轉(zhuǎn)換用于用戶在大數(shù)據(jù)平臺(tái)上做各種數(shù)據(jù)轉(zhuǎn)換,通過UDF的方式自定義轉(zhuǎn)換方式;另外,數(shù)據(jù)的批量處理可以包括批量實(shí)現(xiàn)增刪改,將update分拆成一條delete和一條insert,把同一個(gè)大事務(wù)內(nèi)的所有的delete操作batch起來處理,把所有的insert操作batch起來處理,當(dāng)同步數(shù)據(jù)量小時(shí),直接insert/delete,當(dāng)同步數(shù)據(jù)量大時(shí),利用外表進(jìn)行insert/delete;將insert/delete批量處理后的數(shù)據(jù)同步到大數(shù)據(jù)平臺(tái)上,完成數(shù)據(jù)的同步過程。通過本申請(qǐng)上述低延時(shí)同步方案,有以下的特點(diǎn):能夠支持各種數(shù)據(jù)源,能同時(shí)實(shí)現(xiàn)全量數(shù)據(jù)導(dǎo)入和增量數(shù)據(jù)同步,通過對(duì)數(shù)據(jù)的依賴分析、重排等,最大限度的去除數(shù)據(jù)依賴;另外,通過用戶自定義UDF的方式擴(kuò)展對(duì)數(shù)據(jù)變換方法;通過低延時(shí)同步方案能夠?qū)?shù)據(jù)批量、快速同步到大數(shù)據(jù)平臺(tái)上,實(shí)現(xiàn)低延時(shí)的效果。圖5示出根據(jù)本申請(qǐng)一個(gè)方面的步驟S3的流程示意圖,所述步驟S3包括步驟S31、步驟S32、步驟S33和步驟S34,在步驟S31中,將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式;在此,所述待批處理數(shù)據(jù)為輸入數(shù)據(jù),可以為各種數(shù)據(jù)類型的數(shù)據(jù)來自不同的數(shù)據(jù)源,本申請(qǐng)所述的方法提供一種適配器,用于將每種數(shù)據(jù)源轉(zhuǎn)換為一種中間格式,數(shù)據(jù)格式的統(tǒng)一使得后續(xù)的處理方式只需一種即可,簡化了后續(xù)的設(shè)計(jì),比如oralce數(shù)據(jù)庫,通過ogg獲得增量數(shù)據(jù)日志,通過為ogg編寫一個(gè)適配器,使數(shù)據(jù)格式轉(zhuǎn)換成一種中間格式,方便后續(xù)的數(shù)據(jù)處理,如只需要用一份編碼,減少了因數(shù)據(jù)格式不同需要編寫不同類型代碼的操作。在步驟S32中,將所述轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作;在此,將轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作update分拆成delete和insert,便于根據(jù)第一個(gè)操作和最后一個(gè)操作的操作類型對(duì)數(shù)據(jù)做匯總;在步驟S33中,獲取所述統(tǒng)一內(nèi)部格式中的鍵值,將屬于同一鍵值下的刪除操作和插入操作進(jìn)行匯總;在此,key值是唯一標(biāo)識(shí)記錄的標(biāo)志,通過以key值歸類把數(shù)據(jù)對(duì)應(yīng)的每條記錄的變更歷史歸集到一起,將屬于同一key值下的刪除操作和插入操作歸集到一起,簡化了數(shù)據(jù)之間的依賴關(guān)系,便于后續(xù)的數(shù)據(jù)批量處理的進(jìn)行;在步驟S34中,將匯總后的屬于同一鍵值下的刪除操作和插入操作進(jìn)行合并的批處理。通過前面匯總的結(jié)果將屬于同一個(gè)key值下的刪除操作和插入操作進(jìn)行合并的批處理,在此,合并的批處理是根據(jù)屬于同一個(gè)key值下的匯總內(nèi)的數(shù)據(jù)的第一個(gè)操作和最后一個(gè)操作進(jìn)行合并后的操作標(biāo)記,按照標(biāo)記重新以批量處理的方式進(jìn)行數(shù)據(jù)處理,從而對(duì)數(shù)據(jù)的處理達(dá)到高吞吐的效果。優(yōu)選地,在步驟S34中,對(duì)所述合并后的屬于同一鍵值下的刪除操作和插入操作中的第一個(gè)操作和最后一個(gè)操作,進(jìn)行合并的批處理。在此,根據(jù)第一個(gè)操作可以判斷要操作的數(shù)據(jù)對(duì)象是否已存在,對(duì)第一個(gè)操作和最后一個(gè)操作的合并可知最終數(shù)據(jù)對(duì)象的結(jié)果記錄,只利用第一個(gè)操作和最后一個(gè)操作,省去了中間的操作,減少操作次數(shù)進(jìn)而簡化操作步驟及提高需要用的總的數(shù)據(jù)處理時(shí)間。更優(yōu)選地,在步驟S34中,包括如下至少一項(xiàng):若第一個(gè)操作為插入操作,且最后一個(gè)操作為刪除操作,則進(jìn)行忽略操作的合并處理;若第一個(gè)操作為插入操作,且最后一個(gè)操作為插入操作時(shí),將僅執(zhí)行最后的操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為刪除操作時(shí),則僅執(zhí)行一次刪除操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為插入操作時(shí),則執(zhí)行刪除所述刪除操作之后,執(zhí)行所述最后一個(gè)操作的合并處理。在本申請(qǐng)的一優(yōu)選實(shí)施例中,按照key值將每條數(shù)據(jù)的記錄匯總(group)起來,根據(jù)第一個(gè)操作、最后一個(gè)操作在每個(gè)group內(nèi)做如下表格1所示的操作:第一個(gè)操作最后一個(gè)操作合并后的操作InsertADeleteA’DonothingInsertAInsertA’insertlastrecordA’DeleteADeleteA’deleteADeleteAInsertA’DeleteA,然后再insertA’表1當(dāng)?shù)谝粋€(gè)操作為insert時(shí)說明這個(gè)數(shù)據(jù)對(duì)象是不存在的,而最后一個(gè)操作為delete時(shí),說明該數(shù)據(jù)對(duì)象的操作數(shù)據(jù)最后也不存在,因此從結(jié)果上看,操作之前不存在,操作之后也不存在,相當(dāng)于什么也沒有做(Donothing),例如,原有的數(shù)據(jù)為A和B,insert數(shù)據(jù)C后,再經(jīng)過一系列的update,最后delete數(shù)據(jù)C,則這個(gè)過程中相當(dāng)于數(shù)據(jù)C從來沒有出現(xiàn)過。當(dāng)?shù)谝粋€(gè)操作為insert最后一個(gè)操作也為insert時(shí),合并后的操作相當(dāng)于insertlastrecord,僅執(zhí)行最后一個(gè)操作;當(dāng)?shù)谝粋€(gè)操作為delete,最后一個(gè)操作為delete時(shí),合并后的操作為只執(zhí)行了一次的delete刪除操作;當(dāng)?shù)谝粋€(gè)操作為delete最后一個(gè)操作為insert時(shí),合并的操作為delete本條記錄后,insert最后一條操作的數(shù)據(jù);通過以上四種靈活地合并后的操作處理覆蓋了所有的操作可能,將每個(gè)group內(nèi)做上述四種操作中任一種后,將對(duì)應(yīng)的操作進(jìn)行標(biāo)記,將標(biāo)記后的數(shù)據(jù)重新以批量處理的方式來真正的執(zhí)行,即把所有的delete操作進(jìn)行batch起來批處理,將所有的insert操作進(jìn)行batch起來批處理,提高處理效率,數(shù)據(jù)的多個(gè)中間的操作無需再進(jìn)行batch起來處理,簡化了操作及大幅度地提高了吞吐量,適應(yīng)于高吞吐量的應(yīng)用需求。需要說明的是,對(duì)每個(gè)group做上述合并后的操作標(biāo)記時(shí)也可以在此就直接對(duì)合并后的操作進(jìn)行并發(fā)的批量處理,此時(shí)的效率會(huì)相比于先將合并后的操作進(jìn)行標(biāo)記,再對(duì)標(biāo)記過后的操作進(jìn)行重新以批量處理的方式的執(zhí)行效率低。更優(yōu)選地,在步驟S34中,根據(jù)合并后的屬于同一鍵值下的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。在此,數(shù)據(jù)量較大時(shí),需要建立外表進(jìn)行批處理操作,根據(jù)key值建立數(shù)據(jù)庫外表insertTable、deleteTable,其中,增量數(shù)據(jù)是數(shù)據(jù)庫更新的時(shí)候,記錄下的更新類型、更新前的原始數(shù)據(jù)、更新后的結(jié)果數(shù)據(jù),進(jìn)行批處理的編程代碼可以為如下形式:deletefromdstTablewherekeyin(selectkeyfromdeleteTable);insertintotabledstTableselect*frominsertTable當(dāng)數(shù)據(jù)量比較大時(shí),利用外表進(jìn)行處理數(shù)據(jù)的速度要遠(yuǎn)比內(nèi)存中的快,因此,對(duì)于需要大數(shù)量的高吞吐需求時(shí),采用本申請(qǐng)所述的建立外表的方法進(jìn)行批處理提高了處理數(shù)據(jù)的速度,顯著地降低了延時(shí)時(shí)間。優(yōu)選地,步驟S34之前或之后,還包括:通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)所述待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。在此,用戶在對(duì)待批處理數(shù)據(jù)進(jìn)行處理的過程中可以做各種數(shù)據(jù)轉(zhuǎn)換,可以通過UDF的方式自定義轉(zhuǎn)換方式,能夠擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,在本申請(qǐng)的一應(yīng)用場景大數(shù)據(jù)同步的過程中,有些用戶需要對(duì)數(shù)據(jù)做一些轉(zhuǎn)換,本申請(qǐng)所述的方法提供一個(gè)接口,使得用戶可以自己編譯一段小程序就能實(shí)現(xiàn)所需要的功能,根據(jù)需求擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,滿足用戶的特定需求。圖6示出本申請(qǐng)的一優(yōu)選實(shí)施例中的高吞吐同步方案的模塊圖;所述高吞吐同步方案包括數(shù)據(jù)統(tǒng)一格式模塊(DataFormatUnifier)、匯總模塊(TransactionMerger)、數(shù)據(jù)處理模塊(DMLGenerator)和大數(shù)據(jù)平臺(tái)(BigDataPlatform),其中,DataFormatUnifier接收各種數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)庫(RDBMS)、關(guān)系數(shù)據(jù)庫的CDC增量文件(RDBMSCDC)、CSV文件、XML文件、(flatFile)、流數(shù)據(jù)(Stream)、非結(jié)構(gòu)化數(shù)據(jù)和其他數(shù)據(jù)類型,DataFormatUnifier根據(jù)接收到的數(shù)據(jù)源類型將其轉(zhuǎn)換成一種內(nèi)部結(jié)構(gòu)化格式;接著,將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行數(shù)據(jù)匯總,TransactionMerger支持把連續(xù)的多個(gè)事務(wù)merger到一起,將update拆分成delete和insert,每個(gè)表根據(jù)key值group起來,根據(jù)第一個(gè)操作和最后一個(gè)操作在每個(gè)group內(nèi)標(biāo)記合并后的處理類型,在DMLGenerator中對(duì)標(biāo)記后的合并處理類型進(jìn)行數(shù)據(jù)處理,包括數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)的批量處理,其中,數(shù)據(jù)轉(zhuǎn)換用于用戶在大數(shù)據(jù)平臺(tái)上做各種數(shù)據(jù)轉(zhuǎn)換,通過UDF的方式自定義轉(zhuǎn)換方式;數(shù)據(jù)的批量處理包括批量實(shí)現(xiàn)增刪改,將update分拆成一條delete和一條insert,把同一個(gè)匯總內(nèi)的所有的delete操作batch起來處理,把所有的insert操作batch起來處理,在同步數(shù)據(jù)量大時(shí),利用外表進(jìn)行insert/delete;將insert/delete批量處理后的數(shù)據(jù)同步到大數(shù)據(jù)平臺(tái)上,完成數(shù)據(jù)的同步過程。在此過程中,把delete、insert操作根據(jù)鍵值字段分組,組內(nèi)合并,把所有的delete操作分一組,insert操作分一組,所有的delete通過deletefromtablewherekeyin(selectkeyfromdeleteTable)達(dá)成,所有的insert操作通過insertintotabledstTableselect*frominsertTable達(dá)成,從而不需要判斷各個(gè)事物之間的依賴性。通過本申請(qǐng)上述高吞吐同步方案,有以下的特點(diǎn):能夠支持各種數(shù)據(jù)源,能同時(shí)實(shí)現(xiàn)全量數(shù)據(jù)導(dǎo)入和增量數(shù)據(jù)同步,通過對(duì)數(shù)據(jù)的匯總,省去大量中間操作,提高處理速度;另外,通過用戶自定義UDF的方式擴(kuò)展對(duì)數(shù)據(jù)變換方法;通過高吞吐同步方案能夠滿足大數(shù)據(jù)量的吞吐需求,且快速同步到大數(shù)據(jù)平臺(tái)上。圖7示出根據(jù)本申請(qǐng)另一個(gè)方面的一種數(shù)據(jù)批處理的設(shè)備結(jié)構(gòu)示意圖;所述設(shè)備包括判斷裝置1、第一批處理裝置2和第二批處理裝置3,其中,判斷裝置1用于,判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,從而根據(jù)不同的場景需求采用不同的數(shù)據(jù)批處理方案,當(dāng)場景需求是對(duì)數(shù)據(jù)實(shí)時(shí)性要求比較高時(shí),即待批處理數(shù)據(jù)的處理延時(shí)要求小于等于預(yù)設(shè)閾值時(shí),在第一批處理裝置2中進(jìn)行以下的批處理方案,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù),通過對(duì)數(shù)據(jù)的依賴分析、重排等,最大限度的去除數(shù)據(jù)依賴,進(jìn)而,在同一個(gè)組合事務(wù)內(nèi)的所有數(shù)據(jù)就可以并發(fā)批處理,大大提高了數(shù)據(jù)處理速度,降低了數(shù)據(jù)處理延時(shí)要求;當(dāng)場景需求是高吞吐量,但能容忍比較高的延時(shí)的場景時(shí),即待批處理數(shù)據(jù)的處理延時(shí)要求大于預(yù)設(shè)閾值時(shí),在第二批處理裝置3中進(jìn)行以下的批處理方案,將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行合并,將合并后的所有鍵值下的刪除操作和插入操作分別進(jìn)行批處理,從而所有刪除和插入操作在一個(gè)事務(wù)內(nèi)完成,通過只關(guān)心合并的批處理,省去了中間的操作,這樣減少了操作次數(shù),簡化了操作,提高了吞吐量。具體地,判斷裝置1,用于判斷待批處理數(shù)據(jù)的處理延時(shí)要求是否小于等于預(yù)設(shè)閾值,在此,待批處理數(shù)據(jù)可以為各種數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)庫、關(guān)系數(shù)據(jù)庫的CDC增量文件、CSV文件、XML文件、流數(shù)據(jù)、Hadoop數(shù)據(jù)源、MPP數(shù)據(jù)源、日志等各種結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)以及其他數(shù)據(jù)源,在本申請(qǐng)的一個(gè)優(yōu)選應(yīng)用場景為大數(shù)據(jù)同步系統(tǒng)中,待批處理數(shù)據(jù)為需要同步的數(shù)據(jù),判斷大數(shù)據(jù)同步的延時(shí)要求,判斷延時(shí)要求是否小于或等于預(yù)設(shè)閾值,根據(jù)實(shí)際場景中對(duì)延時(shí)要求的不同選擇不同的批處理方案,達(dá)到大數(shù)據(jù)同步的要求。若小于等于,第一批處理裝置2用于,獲取所述待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,將所述待批處理數(shù)據(jù)中的事務(wù)按所述依賴關(guān)系和依賴順序合并成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,其中,每個(gè)組合事務(wù)包含一個(gè)或多個(gè)沒有依賴關(guān)系的事務(wù);在此,當(dāng)對(duì)待批處理數(shù)據(jù)的處理延時(shí)要求比較低時(shí),即在對(duì)數(shù)據(jù)實(shí)時(shí)性要求比較高的場景中,例如數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫到HBase的同步,需要獲取待批處理數(shù)據(jù)中多個(gè)事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,建立依賴圖,利用該依賴圖將不存在依賴關(guān)系的事務(wù)合并成一個(gè)大事務(wù),即組成組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,在此,批處理時(shí)優(yōu)選為對(duì)每個(gè)組合事物進(jìn)行并行處理,能實(shí)現(xiàn)很低的延時(shí)性,同時(shí)比較高的吞吐率。若大于,第二批處理裝置3,用于將所述待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,將屬于所述待批處理數(shù)據(jù)的同一鍵值下的刪除操作和插入操作進(jìn)行匯總,將匯總后的屬于同一鍵值下的刪除操作和插入操作進(jìn)行合并的批處理。在此,當(dāng)需要高吞吐量,但能容忍比較高的延時(shí)場景時(shí),例如在數(shù)據(jù)倉庫領(lǐng)域,每天或者每小時(shí)同步一次數(shù)據(jù)到數(shù)據(jù)倉庫(大數(shù)據(jù)平臺(tái)),但是每次同步的數(shù)據(jù)量是巨大的,每次可達(dá)數(shù)TB,此時(shí)選擇第二批處理裝置中的數(shù)據(jù)批處理的方案是合適的,先將需要同步的數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作,根據(jù)鍵值(key字段)歸類將每條數(shù)據(jù)記錄的變更歷史歸集到一起,便于判斷這條數(shù)據(jù)記錄做了哪些修改,修改后的值是什么,從而達(dá)到減少數(shù)據(jù)依賴的目的,對(duì)每個(gè)匯總后的同一鍵值對(duì)應(yīng)的數(shù)據(jù)操作以最終合并的批處理類型進(jìn)行批量處理,靈活地處理覆蓋了所有的操作可能,且只對(duì)第一個(gè)操作和最后一個(gè)操作進(jìn)行分析得到合并的批處理類型,從而進(jìn)行批量處理,省去了中間的操作,減少了操作次數(shù),縮短了數(shù)據(jù)處理時(shí)間及大大提高吞吐量,達(dá)到高吞吐的目的。優(yōu)選地,圖8示出根據(jù)本申請(qǐng)的另一個(gè)方面的第一批處理裝置2的結(jié)構(gòu)示意圖,所述第一批處理裝置2包括:第一轉(zhuǎn)換單元21、獲取單元22和批量處理單元23;第一轉(zhuǎn)換單元21將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式,在此,所述待批處理數(shù)據(jù)為輸入數(shù)據(jù),可以為各種數(shù)據(jù)類型的數(shù)據(jù)來自不同的數(shù)據(jù)源,本申請(qǐng)所述的設(shè)備提供一種適配器,用于將每種數(shù)據(jù)源轉(zhuǎn)換為一種中間格式,數(shù)據(jù)格式的統(tǒng)一使得后續(xù)的處理方式只需一種即可,簡化了后續(xù)的設(shè)計(jì),比如oralce數(shù)據(jù)庫,通過ogg獲得增量數(shù)據(jù)日志,通過為ogg編寫一個(gè)適配器,使數(shù)據(jù)格式轉(zhuǎn)換成一種中間格式,方便后續(xù)的數(shù)據(jù)處理,如只需要用一份編碼,減少了因數(shù)據(jù)格式不同需要編寫不同類型代碼的操作。獲取單元22獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序;在此,根據(jù)依賴判斷規(guī)則對(duì)轉(zhuǎn)換為統(tǒng)一格式后的數(shù)據(jù)的多個(gè)事務(wù)進(jìn)行依賴分析,建立多個(gè)事務(wù)之間的依賴關(guān)系確定的依賴圖,以及對(duì)應(yīng)的依賴順序,如事務(wù)T1、T3依賴事務(wù)T0,按照依賴關(guān)系進(jìn)行排序,得到對(duì)應(yīng)的依賴順序是先是T0,再是T1和T3;批量處理單元23按照依賴關(guān)系和對(duì)應(yīng)的依賴順序?qū)⑺鲛D(zhuǎn)換后的待批處理數(shù)據(jù)的多個(gè)事務(wù)進(jìn)行合并,得到一個(gè)或多個(gè)組合事務(wù),對(duì)每個(gè)組合事務(wù)進(jìn)行批處理,根據(jù)建立起來的依賴圖對(duì)多個(gè)事務(wù)進(jìn)行重排,盡可能的消除依賴關(guān)系,即將不存在依賴關(guān)系的事務(wù)進(jìn)行合并成一個(gè)大事務(wù)為組合事務(wù),這樣一個(gè)組合事務(wù)內(nèi)的多個(gè)事務(wù)因沒有依賴關(guān)系,可以進(jìn)行并發(fā)處理,加快數(shù)據(jù)的處理速度,在本申請(qǐng)的一個(gè)優(yōu)選實(shí)施例中,如圖3示出的依賴圖,t1、t3依賴t0,t5依賴t4,t9依賴t6、t8,而t2、t7沒有任何依賴、被依賴,根據(jù)圖3的依賴圖中的依賴關(guān)系可以調(diào)整事務(wù)順序如下:(t0,t2,t4,t6,t7,t8),(t1,t3,t5,t9),把經(jīng)過調(diào)整重排沒有依賴關(guān)系的多個(gè)事務(wù)一起組合成一個(gè)大事務(wù),大事務(wù)之間是有依賴關(guān)系的,按照依賴關(guān)系的先后順序進(jìn)行排序,得到如下的大事務(wù)及依賴順序:(t0,t2,t4,t6,t7,t8)->T0;(t1,t3,t5,t9)->T1,因?yàn)門1中的t1、t3依賴T0中的t0,因此對(duì)應(yīng)的依賴順序是先T0后T1,上述實(shí)施例中,t0,t1……t9表示多個(gè)不同的事務(wù),T0,T1表示由多個(gè)事務(wù)確定的組合事務(wù)。優(yōu)選地,所述統(tǒng)一內(nèi)部格式包括:數(shù)據(jù)操作類型、操作地址標(biāo)識(shí)、數(shù)據(jù)所屬的表名、多個(gè)數(shù)據(jù)列,其中,所述數(shù)據(jù)列包括一個(gè)或多個(gè)鍵值。在此,統(tǒng)一內(nèi)部格式如下:OPTIDTBLFld1Fld2Fld3Fld4…其中,OP表示數(shù)據(jù)操作類型,例如insert/delete/update;TID表示操作ID(操作地址標(biāo)識(shí)),代表該操作帶原數(shù)據(jù)的操作ID,類似oracleSCN;TBL表示數(shù)據(jù)所屬的表名,F(xiàn)ld1、Fld2、Fld3、Fld4……表示數(shù)據(jù)庫表里各列的數(shù)據(jù),數(shù)據(jù)庫每更新一行數(shù)據(jù),都會(huì)記錄這條記錄更新前的數(shù)據(jù)和更新后的數(shù)據(jù),F(xiàn)ld就是表示這些數(shù)據(jù)列,在本申請(qǐng)實(shí)施例中所述數(shù)據(jù)列包括一個(gè)或多個(gè)key值(鍵值),一個(gè)數(shù)據(jù)列最多只有一個(gè)鍵值,而多個(gè)數(shù)據(jù)列可以共同一起組成鍵值組,從而是多個(gè)鍵值。將各種數(shù)據(jù)源轉(zhuǎn)換成上述形式的統(tǒng)一內(nèi)部格式便于后續(xù)進(jìn)行數(shù)據(jù)批處理時(shí)只需要一份code,簡化了操作。優(yōu)選地,獲取單元22用于,獲取所述統(tǒng)一內(nèi)部格式中的鍵值,根據(jù)所述鍵值獲取所述轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序。在此,根據(jù)依賴判斷規(guī)則確定多個(gè)事務(wù)之間的依賴關(guān)系和對(duì)應(yīng)的依賴順序,在本申請(qǐng)的一優(yōu)選實(shí)施例中,通過獲取統(tǒng)一內(nèi)部格式中的鍵值,根據(jù)鍵值預(yù)設(shè)一個(gè)依賴判斷規(guī)則,進(jìn)而確定轉(zhuǎn)換后的待批處理數(shù)據(jù)中的事務(wù)的依賴關(guān)系和對(duì)應(yīng)的依賴順序,其中,所述鍵值包括主鍵、外鍵和用戶自定義的鍵,依賴判斷規(guī)則為利用所述鍵值的方法僅為一舉例,其他現(xiàn)有的或今后可能出現(xiàn)的依賴判斷規(guī)則如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。更優(yōu)選地,獲取單元22用于以下至少任一項(xiàng):根據(jù)所述鍵值中的主鍵獲取在同一數(shù)據(jù)表內(nèi)的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)所述鍵值中的外鍵獲取不同數(shù)據(jù)表之間的多個(gè)事務(wù)之間的依賴關(guān)系;根據(jù)用戶自定義及所述鍵值獲取多個(gè)事務(wù)之間的依賴關(guān)系。在此,通過主鍵定義表內(nèi)的依賴:表內(nèi)針對(duì)同一key值的多次操作是表內(nèi)依賴的,例如,用戶的銀行賬戶表account,id是key值,則具有相同id的操作是有依賴的,比如用戶Alice賬號(hào)id為1000,所有Alice的賬號(hào)更新是有依賴的,有嚴(yán)格的交易次序,比如賬號(hào)新確定后,必須是先存錢才可以進(jìn)行后續(xù)的其他操作,如再取錢,不能變更順序后先取錢再存錢。通過外鍵關(guān)聯(lián)定義表間依賴,如B表的主鍵是A表的外鍵,則B表主鍵和A表外鍵相同的操作是表間依賴的,根據(jù)外鍵的定義,它一定是來源于一個(gè)表的主鍵的值,因此先有主鍵才能有外鍵,這樣就構(gòu)成了依賴關(guān)系。在一具體實(shí)施例中,表A有2列,用a1和a2表示,其中,a1是key;表B有2列,用b1和b2表示,其中,b1是key,b2是外鍵,對(duì)應(yīng)A表主鍵a1;事務(wù)t0:insertA(1,‘Alice’)t1:insertB(100,1)t2:…t3:updateA(1,‘Alice’)->(1,‘Bob’)通過主鍵和外鍵確定的依賴判斷規(guī)則可獲取到的依賴關(guān)系為:事務(wù)t1通過外鍵依賴事務(wù)t0,事務(wù)t3通過主鍵依賴事務(wù)t0。另外,還可以定義用戶自定義依賴,比如A表的c1字段依賴B表的c1字段,依賴的規(guī)則與通過外鍵關(guān)聯(lián)定義依賴是一樣的,只是通過用戶來執(zhí)行。在本申請(qǐng)中,上述的不同依賴規(guī)則之間是可以單獨(dú)使用也可以一起使用的,互不沖突,通過其中任一種依賴規(guī)則獲取到的依賴關(guān)系,方便后續(xù)的將多個(gè)事務(wù)進(jìn)行分析、重排的過程,得到最大限度地剔除依賴關(guān)系的組合事務(wù)。優(yōu)選地,批量處理單元23可以用于,將每個(gè)組合事務(wù)的更新操作進(jìn)行拆分,匯總得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;將匯總的每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行批量處理。在此,本申請(qǐng)所述的數(shù)據(jù)批處理的方法可以進(jìn)行數(shù)據(jù)的批量實(shí)現(xiàn)增刪改,通過事務(wù)管理,生成多個(gè)大事務(wù)(組合事務(wù)),每個(gè)組合事務(wù)內(nèi)部的事務(wù)沒有依賴,把每個(gè)事務(wù)的更新操作(update)分拆成一條delete和一條insert,例如:update([c1,c2,...]->[c1’,c2’,...])=delete([c1,c2,...])+insert([c1’,2’,...],其中,[c1,c2,……]是指原數(shù)據(jù),[c1’,c2’……]是指經(jīng)過更新操作后的數(shù)據(jù)結(jié)果,delete([c1,c2,...])+insert([c1’,2’,...]是指先刪除原有的數(shù)據(jù)記錄,再insert更新后的數(shù)據(jù)結(jié)果,經(jīng)過delete和insert兩個(gè)操作可以處理不規(guī)則的更新操作,滿足多個(gè)事務(wù)中數(shù)據(jù)處理的需求,在每個(gè)組合事務(wù)中將update拆分成一條delete和一條insert后,把所有的delete操作batch起來處理(批量處理),把所有的insert操作batch起來處理,進(jìn)而提高了數(shù)據(jù)的處理速度,批量處理比單條處理性能上有數(shù)量級(jí)提升。更優(yōu)選地,批量處理單元23可以用于:將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作分別進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。在此,當(dāng)待批處理數(shù)據(jù)的數(shù)據(jù)量小時(shí),直接進(jìn)行delete/insert:DeletefromdstTablewherekeyin(key1,key2,key3,…)InsertintodstTablevalues(f00,f01,f02…)values(f10,f11,f12,…)…上述代碼表示,根據(jù)key找到對(duì)應(yīng)的表中的操作對(duì)象進(jìn)行delete操作,根據(jù)待批處理數(shù)據(jù)的更新操作信息記錄將原數(shù)據(jù)(f00,f01,f02…)進(jìn)行delete后插入更新后的結(jié)果數(shù)據(jù)(f10,f11,f12,…)。當(dāng)待批量處理數(shù)據(jù)的數(shù)據(jù)量小時(shí),直接采用上述的insert和deletebatch方式并發(fā)地執(zhí)行數(shù)據(jù)處理操作,進(jìn)而大幅度地提高了數(shù)據(jù)處理的速度,降低了延時(shí)時(shí)間,在大數(shù)據(jù)同步的場景中,可以實(shí)現(xiàn)低延時(shí)的同步使得達(dá)到實(shí)時(shí)/準(zhǔn)實(shí)時(shí)同步的目的。優(yōu)選地,批量處理單元23用于:將每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作進(jìn)行匯總,得到每個(gè)組合事務(wù)內(nèi)的刪除操作和插入操作;根據(jù)所述組合事務(wù)內(nèi)的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的刪除操作進(jìn)行批處理;根據(jù)所述插入數(shù)據(jù)庫外表,對(duì)每個(gè)組合事務(wù)內(nèi)的插入操作進(jìn)行批處理。在此,當(dāng)待批處理數(shù)據(jù)的數(shù)據(jù)量較大時(shí),先將增量數(shù)據(jù)建成數(shù)據(jù)庫外表insertTable、deleteTable,其中,增量數(shù)據(jù)是數(shù)據(jù)庫更新的時(shí)候,記錄下的更新類型、更新前的原始數(shù)據(jù)、更新后的結(jié)果數(shù)據(jù),一般從數(shù)據(jù)庫日志通過OGG、Shareplex等專業(yè)軟件讀取,把增量數(shù)據(jù)作用在原數(shù)據(jù)上實(shí)現(xiàn)數(shù)據(jù)的同步,例如,編程代碼可以為如下形式:deletefromdstTablewherekeyin(selectkeyfromdeleteTable);insertintotabledstTableselect*frominsertTable當(dāng)數(shù)據(jù)量比較大時(shí),利用外表進(jìn)行處理數(shù)據(jù)的速度要遠(yuǎn)比內(nèi)存中的快,因此,對(duì)于大數(shù)量,采用本申請(qǐng)所述的建立外表的方法進(jìn)行批處理提高了處理數(shù)據(jù)的速度,顯著地降低了延時(shí)時(shí)間。優(yōu)選地,在本申請(qǐng)所述的設(shè)備中,所述設(shè)備還包括:第一自定義轉(zhuǎn)換裝置24,用于通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。在此,用戶在對(duì)待批處理數(shù)據(jù)進(jìn)行處理的過程中可以做各種數(shù)據(jù)轉(zhuǎn)換,可以通過UDF的方式自定義轉(zhuǎn)換方式,能夠擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,例如,用戶在數(shù)據(jù)同步的過程中,需要對(duì)某些數(shù)據(jù)列做一個(gè)非常復(fù)雜的變換:y=f(x),則用戶只需按照編程接口(api)進(jìn)行編程實(shí)現(xiàn)f(x)函數(shù),使用的時(shí)候:Selectf(x)fromsrc,這樣得到的數(shù)據(jù)即為變換后的數(shù)據(jù)。在本申請(qǐng)的一應(yīng)用場景大數(shù)據(jù)同步的過程中,有些用戶需要對(duì)數(shù)據(jù)做一些轉(zhuǎn)換,本申請(qǐng)所述的設(shè)備提供一個(gè)接口,使得用戶可以自己編譯一段小程序就能實(shí)現(xiàn)所需要的功能,根據(jù)需求擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,滿足用戶的特定需求。圖4示出本申請(qǐng)的一優(yōu)選實(shí)施例中的低延時(shí)同步方案的模塊圖;所述低延時(shí)同步方案包括數(shù)據(jù)統(tǒng)一格式模塊(DataFormatUnifier)、事務(wù)處理模塊、數(shù)據(jù)處理模塊(DMLGenerator)和大數(shù)據(jù)平臺(tái)(BigDataPlatform),其中,DataFormatUnifier接收各種數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)庫(RDBMS)、關(guān)系數(shù)據(jù)庫的CDC增量文件(RDBMSCDC)、CSV文件、XML文件、(flatFile)、流數(shù)據(jù)(Stream)、非結(jié)構(gòu)化數(shù)據(jù)和其他數(shù)據(jù)類型,DataFormatUnifier根據(jù)接收到的數(shù)據(jù)源類型將其轉(zhuǎn)換成一種內(nèi)部結(jié)構(gòu)化格式;接著,將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行事務(wù)處理,事務(wù)處理模塊用于事務(wù)依賴分析(TransactionDependencyAnalyzer)、事務(wù)記錄(TransactionRecorder)和事務(wù)合并(TransactionMerger),TransactionDependencyAnalyzer利用依賴判斷規(guī)則建立依賴圖,TransactionRecorder根據(jù)上述建立的依賴圖調(diào)整事務(wù)的順序,TransactionMerger把經(jīng)過調(diào)整順序重排的、沒有依賴關(guān)系的事務(wù)一起組合成一個(gè)大事務(wù),進(jìn)行多個(gè)事務(wù)的合并;需要說明的是,當(dāng)轉(zhuǎn)換后的數(shù)據(jù)沒有事務(wù)信息或者目標(biāo)不需要事務(wù)來保證數(shù)據(jù)的一致性時(shí),事務(wù)處理過程可以略過。經(jīng)過事務(wù)處理后得到合并的大事務(wù),在DMLGenerator中對(duì)合并的大事務(wù)進(jìn)行數(shù)據(jù)處理,包括數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)的批量處理,其中,數(shù)據(jù)轉(zhuǎn)換用于用戶在大數(shù)據(jù)平臺(tái)上做各種數(shù)據(jù)轉(zhuǎn)換,通過UDF的方式自定義轉(zhuǎn)換方式;另外,數(shù)據(jù)的批量處理可以包括批量實(shí)現(xiàn)增刪改,將update分拆成一條delete和一條insert,把同一個(gè)大事務(wù)內(nèi)的所有的delete操作batch起來處理,把所有的insert操作batch起來處理,當(dāng)同步數(shù)據(jù)量小時(shí),直接insert/delete,當(dāng)同步數(shù)據(jù)量大時(shí),利用外表進(jìn)行insert/delete;將insert/delete批量處理后的數(shù)據(jù)同步到大數(shù)據(jù)平臺(tái)上,完成數(shù)據(jù)的同步過程。通過本申請(qǐng)上述低延時(shí)同步方案,有以下的特點(diǎn):能夠支持各種數(shù)據(jù)源,能同時(shí)實(shí)現(xiàn)全量數(shù)據(jù)導(dǎo)入和增量數(shù)據(jù)同步,通過對(duì)數(shù)據(jù)的依賴分析、重排等,最大限度的去除數(shù)據(jù)依賴;另外,通過用戶自定義UDF的方式擴(kuò)展對(duì)數(shù)據(jù)變換方法;通過低延時(shí)同步方案能夠?qū)?shù)據(jù)批量、快速同步到大數(shù)據(jù)平臺(tái)上,實(shí)現(xiàn)低延時(shí)的效果。圖9示出根據(jù)本申請(qǐng)另一個(gè)方面的第二批處理裝置的結(jié)構(gòu)示意圖,所述第二批處理裝置包括第二轉(zhuǎn)換單元31、拆分單元32、匯總單元33和合并的批處理單元34;第二轉(zhuǎn)換單元31將所述待批處理數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一內(nèi)部格式;在此,所述待批處理數(shù)據(jù)為輸入數(shù)據(jù),可以為各種數(shù)據(jù)類型的數(shù)據(jù)來自不同的數(shù)據(jù)源,本申請(qǐng)所述的設(shè)備提供一種適配器,用于將每種數(shù)據(jù)源轉(zhuǎn)換為一種中間格式,數(shù)據(jù)格式的統(tǒng)一使得后續(xù)的處理方式只需一種即可,簡化了后續(xù)的設(shè)計(jì),比如oralce數(shù)據(jù)庫,通過ogg獲得增量數(shù)據(jù)日志,通過為ogg編寫一個(gè)適配器,使數(shù)據(jù)格式轉(zhuǎn)換成一種中間格式,方便后續(xù)的數(shù)據(jù)處理,如只需要用一份編碼,減少了因數(shù)據(jù)格式不同需要編寫不同類型代碼的操作。拆分單元32將所述轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作進(jìn)行拆分,得到刪除操作和插入操作;在此,將轉(zhuǎn)換后的待批處理數(shù)據(jù)的更新操作update分拆成delete和insert,便于根據(jù)第一個(gè)操作和最后一個(gè)操作的操作類型對(duì)數(shù)據(jù)做匯總;匯總單元33獲取所述統(tǒng)一內(nèi)部格式中的鍵值,將屬于同一鍵值下的刪除操作和插入操作進(jìn)行匯總;在此,key值是唯一標(biāo)識(shí)記錄的標(biāo)志,通過以key值歸類把數(shù)據(jù)對(duì)應(yīng)的每條記錄的變更歷史歸集到一起,將屬于同一key值下的刪除操作和插入操作歸集到一起,簡化了數(shù)據(jù)之間的依賴關(guān)系,便于后續(xù)的數(shù)據(jù)批量處理的進(jìn)行;合并的批處理單元34將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。通過前面匯總的結(jié)果將屬于同一個(gè)key值下的刪除操作和插入操作進(jìn)行合并的批處理,在此,合并的批處理是根據(jù)屬于同一個(gè)key值下的匯總內(nèi)的數(shù)據(jù)的第一個(gè)操作和最后一個(gè)操作進(jìn)行合并后的操作標(biāo)記,按照標(biāo)記重新以批量處理的方式進(jìn)行數(shù)據(jù)處理,從而對(duì)數(shù)據(jù)的處理達(dá)到高吞吐的效果。優(yōu)選地,合并的批處理單元34用于,對(duì)所述合并后的屬于同一鍵值下的刪除操作和插入操作中的第一個(gè)操作和最后一個(gè)操作,進(jìn)行合并的批處理。在此,根據(jù)第一個(gè)操作可以判斷要操作的數(shù)據(jù)對(duì)象是否已存在,對(duì)第一個(gè)操作和最后一個(gè)操作的合并可知最終數(shù)據(jù)對(duì)象的結(jié)果記錄,只利用第一個(gè)操作和最后一個(gè)操作,省去了中間的操作,減少操作次數(shù)進(jìn)而簡化操作步驟及提高需要用的總的數(shù)據(jù)處理時(shí)間。更優(yōu)選地,合并的批處理單元34用于如下至少一項(xiàng):若第一個(gè)操作為插入操作,且最后一個(gè)操作為刪除操作,則進(jìn)行忽略操作的合并處理;若第一個(gè)操作為插入操作,且最后一個(gè)操作為插入操作時(shí),將僅執(zhí)行最后的操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為刪除操作時(shí),則僅執(zhí)行一次刪除操作的合并處理;若第一個(gè)操作為刪除操作,且最后一個(gè)操作為插入操作時(shí),則執(zhí)行刪除所述刪除操作之后,執(zhí)行所述最后一個(gè)操作的合并處理。在本申請(qǐng)的一優(yōu)選實(shí)施例中,按照key值將每條數(shù)據(jù)的記錄匯總(group)起來,根據(jù)第一個(gè)操作、最后一個(gè)操作在每個(gè)group內(nèi)做如下表格1所示的操作:第一個(gè)操作最后一個(gè)操作合并后的操作InsertADeleteA’DonothingInsertAInsertA’insertlastrecordA’DeleteADeleteA’deleteADeleteAInsertA’DeleteA,然后再insertA’表1當(dāng)?shù)谝粋€(gè)操作為insert時(shí)說明這個(gè)數(shù)據(jù)對(duì)象是不存在的,而最后一個(gè)操作為delete時(shí),說明該數(shù)據(jù)對(duì)象的操作數(shù)據(jù)最后也不存在,因此從結(jié)果上看,操作之前不存在,操作之后也不存在,相當(dāng)于什么也沒有做(Donothing),例如,原有的數(shù)據(jù)為A和B,insert數(shù)據(jù)C后,再經(jīng)過一系列的update,最后delete數(shù)據(jù)C,則這個(gè)過程中相當(dāng)于數(shù)據(jù)C從來沒有出現(xiàn)過。當(dāng)?shù)谝粋€(gè)操作為insert最后一個(gè)操作也為insert時(shí),合并后的操作相當(dāng)于insertlastrecord,僅執(zhí)行最后一個(gè)操作;當(dāng)?shù)谝粋€(gè)操作為delete,最后一個(gè)操作為delete時(shí),合并后的操作為只執(zhí)行了一次的delete刪除操作;當(dāng)?shù)谝粋€(gè)操作為delete最后一個(gè)操作為insert時(shí),合并的操作為delete本條記錄后,insert最后一條操作的數(shù)據(jù);通過以上四種靈活地合并后的操作處理覆蓋了所有的操作可能,將每個(gè)group內(nèi)做上述四種操作中任一種后,將對(duì)應(yīng)的操作進(jìn)行標(biāo)記,將標(biāo)記后的數(shù)據(jù)重新以批量處理的方式來真正的執(zhí)行,即把所有的delete操作進(jìn)行batch起來批處理,將所有的insert操作進(jìn)行batch起來批處理,提高處理效率,數(shù)據(jù)的多個(gè)中間的操作無需再進(jìn)行batch起來處理,簡化了操作及大幅度地提高了吞吐量,適應(yīng)于高吞吐量的應(yīng)用需求。需要說明的是,對(duì)每個(gè)group做上述合并后的操作標(biāo)記時(shí)也可以在此就直接對(duì)合并后的操作進(jìn)行并發(fā)的批量處理,此時(shí)的效率會(huì)相比于先將合并后的操作進(jìn)行標(biāo)記,再對(duì)標(biāo)記過后的操作進(jìn)行重新以批量處理的方式的執(zhí)行效率低。更優(yōu)選地,合并的批處理單元34用于:根據(jù)合并后的屬于同一鍵值下的刪除操作和插入操作分別建立對(duì)應(yīng)待刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表;根據(jù)所述刪除數(shù)據(jù)庫外表和插入數(shù)據(jù)庫外表,將合并后的屬于同一鍵值下的刪除操作和插入操作分別進(jìn)行批處理。在此,數(shù)據(jù)量較大時(shí),需要建立外表進(jìn)行批處理操作,根據(jù)key值建立數(shù)據(jù)庫外表insertTable、deleteTable,其中,增量數(shù)據(jù)是數(shù)據(jù)庫更新的時(shí)候,記錄下的更新類型、更新前的原始數(shù)據(jù)、更新后的結(jié)果數(shù)據(jù),進(jìn)行批處理的編程代碼可以為如下形式:deletefromdstTablewherekeyin(selectkeyfromdeleteTable);insertintotabledstTableselect*frominsertTable當(dāng)數(shù)據(jù)量比較大時(shí),利用外表進(jìn)行處理數(shù)據(jù)的速度要遠(yuǎn)比內(nèi)存中的快,因此,對(duì)于需要大數(shù)量的高吞吐需求時(shí),采用本申請(qǐng)所述的建立外表的方法進(jìn)行批處理提高了處理數(shù)據(jù)的速度,顯著地降低了延時(shí)時(shí)間。優(yōu)選地,所述設(shè)備還包括:第二自定義轉(zhuǎn)換裝置,用于通過編程接口及用戶自定義轉(zhuǎn)換方式對(duì)所述待批處理數(shù)據(jù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。在此,用戶在對(duì)待批處理數(shù)據(jù)進(jìn)行處理的過程中可以做各種數(shù)據(jù)轉(zhuǎn)換,可以通過UDF的方式自定義轉(zhuǎn)換方式,能夠擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,在本申請(qǐng)的一應(yīng)用場景大數(shù)據(jù)同步的過程中,有些用戶需要對(duì)數(shù)據(jù)做一些轉(zhuǎn)換,本申請(qǐng)所述的設(shè)備提供一個(gè)接口,使得用戶可以自己編譯一段小程序就能實(shí)現(xiàn)所需要的功能,根據(jù)需求擴(kuò)展數(shù)據(jù)轉(zhuǎn)換的方法,滿足用戶的特定需求。需要說明的是,本申請(qǐng)所述的設(shè)備中第一自定義轉(zhuǎn)換裝置與第二自定義轉(zhuǎn)換裝置相同或相似。圖6示出本申請(qǐng)的一優(yōu)選實(shí)施例中的高吞吐同步方案的模塊圖;所述高吞吐同步方案包括數(shù)據(jù)統(tǒng)一格式模塊(DataFormatUnifier)、匯總模塊(TransactionMerger)、數(shù)據(jù)處理模塊(DMLGenerator)和大數(shù)據(jù)平臺(tái)(BigDataPlatform),其中,DataFormatUnifier接收各種數(shù)據(jù)源,包括關(guān)系數(shù)據(jù)庫(RDBMS)、關(guān)系數(shù)據(jù)庫的CDC增量文件(RDBMSCDC)、CSV文件、XML文件、(flatFile)、流數(shù)據(jù)(Stream)、非結(jié)構(gòu)化數(shù)據(jù)和其他數(shù)據(jù)類型,DataFormatUnifier根據(jù)接收到的數(shù)據(jù)源類型將其轉(zhuǎn)換成一種內(nèi)部結(jié)構(gòu)化格式;接著,將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行數(shù)據(jù)匯總,TransactionMerger支持把連續(xù)的多個(gè)事務(wù)merger到一起,將update拆分成delete和insert,每個(gè)表根據(jù)key值group起來,根據(jù)第一個(gè)操作和最后一個(gè)操作在每個(gè)group內(nèi)標(biāo)記合并后的處理類型,在DMLGenerator中對(duì)標(biāo)記后的合并處理類型進(jìn)行數(shù)據(jù)處理,包括數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)的批量處理,其中,數(shù)據(jù)轉(zhuǎn)換用于用戶在大數(shù)據(jù)平臺(tái)上做各種數(shù)據(jù)轉(zhuǎn)換,通過UDF的方式自定義轉(zhuǎn)換方式;數(shù)據(jù)的批量處理包括批量實(shí)現(xiàn)增刪改,將update分拆成一條delete和一條insert,把同一個(gè)匯總內(nèi)的所有的delete操作batch起來處理,把所有的insert操作batch起來處理,在同步數(shù)據(jù)量大時(shí),利用外表進(jìn)行insert/delete;將insert/delete批量處理后的數(shù)據(jù)同步到大數(shù)據(jù)平臺(tái)上,完成數(shù)據(jù)的同步過程。在此過程中,把delete、insert操作根據(jù)鍵值字段分組,組內(nèi)合并,把所有的delete操作分一組,insert操作分一組,所有的delete通過deletefromtablewherekeyin(selectkeyfromdeleteTable)達(dá)成,所有的insert操作通過insertintotabledstTableselect*frominsertTable達(dá)成,從而不需要判斷各個(gè)事物之間的依賴性。通過本申請(qǐng)上述高吞吐同步方案,有以下的特點(diǎn):能夠支持各種數(shù)據(jù)源,能同時(shí)實(shí)現(xiàn)全量數(shù)據(jù)導(dǎo)入和增量數(shù)據(jù)同步,通過對(duì)數(shù)據(jù)的匯總,省去大量中間操作,提高處理速度;另外,通過用戶自定義UDF的方式擴(kuò)展對(duì)數(shù)據(jù)變換方法;通過高吞吐同步方案能夠滿足大數(shù)據(jù)量的吞吐需求,且快速同步到大數(shù)據(jù)平臺(tái)上。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專用集成電路(ASIC)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,RAM存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過軟件或者硬件來實(shí)現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3