專利名稱:大數(shù)據(jù)量批處理系統(tǒng)和大數(shù)據(jù)量批處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種大數(shù)據(jù)量批處理系統(tǒng)和一種大數(shù)據(jù)量批處理方法。
背景技術(shù):
目前大型的聯(lián)機(jī)事務(wù)處理系統(tǒng)(OLTP)中,衡量其系統(tǒng)性能好壞的指標(biāo),往往是一些關(guān)鍵核心算法在大數(shù)據(jù)量應(yīng)用場(chǎng)景下的處理速度,而處理速度的快慢直接影響整個(gè)系統(tǒng)的性能。一個(gè)大型的信息化系統(tǒng),往往都有一些自己比較復(fù)雜業(yè)務(wù)處理邏輯、業(yè)務(wù)處理算法,當(dāng)這些復(fù)雜的業(yè)務(wù)處理在小數(shù)據(jù)量應(yīng)用場(chǎng)景下效率問(wèn)題往往都被忽視,因?yàn)檫@種場(chǎng)景下系統(tǒng)響應(yīng)速度是比較快的,而在大數(shù)據(jù)量情況下可能就會(huì)出現(xiàn)系統(tǒng)處理性能的瓶頸,長(zhǎng)時(shí)間無(wú)響應(yīng)或者直接宕機(jī)等嚴(yán)重情況,那么其中比較共性和核心的問(wèn)題就是第一,如果數(shù)據(jù)量過(guò)大,程序一次性讀到內(nèi)存中可能造成系統(tǒng)內(nèi)存溢出;第二,如果不是一次性讀取數(shù)據(jù)到內(nèi)存中,循環(huán)讀取一條一條數(shù)據(jù)在進(jìn)行處理,則算法由批處理變成了循環(huán)單個(gè)處理,也必定大大影響系統(tǒng)的性能。對(duì)此,現(xiàn)有技術(shù)使用后臺(tái)分頁(yè)技術(shù)來(lái)解決這樣的問(wèn)題?,F(xiàn)有的分頁(yè)技術(shù)都是在數(shù)據(jù)庫(kù)端實(shí)現(xiàn)分頁(yè)技術(shù),一種是直接利用SQL語(yǔ)句來(lái)進(jìn)行分頁(yè),例如第一次取第1-50條記錄,第二次取第51-100條記錄等等依次類推,這種方式雖然達(dá)到了每次讀取有限的記錄加載到內(nèi)存中,但是數(shù)據(jù)庫(kù)端的壓力依然很大,因?yàn)槊看蜸QL語(yǔ)句的查詢都是對(duì)結(jié)果集全紀(jì)錄的掃描,處理速度并沒有優(yōu)化;另外一種是通過(guò)代碼來(lái)實(shí)現(xiàn)分頁(yè),例如JAVA中利用ResultSet結(jié)果集進(jìn)行循環(huán)遍歷來(lái)實(shí)現(xiàn),第一次遍歷第1_50條記錄并取出。第二次遍歷第1-100條記錄,但只取出第51-100條記錄,這種方式依然存在每次預(yù)先查詢所有記錄的缺點(diǎn);其次還有一種通過(guò)預(yù)先查出將滿足條件結(jié)果集的主鍵PK,然后存入臨時(shí)表并編上序號(hào),之后通過(guò)序號(hào)一批批讀出PK集合,在利用PK集合到數(shù)據(jù)庫(kù)中查詢出數(shù)據(jù),這種方式雖然解決了前面的問(wèn)題,但是由于要一批批從數(shù)據(jù)庫(kù)臨時(shí)表中讀取數(shù)據(jù),在高并發(fā)的情況下,數(shù)據(jù)庫(kù)端的壓力還是非常大,并且會(huì)有多次中間件單元到數(shù)據(jù)庫(kù)的連接、查詢、數(shù)據(jù)網(wǎng)絡(luò)傳輸,在窄帶環(huán)境中,效率依然存在一些瓶頸,另外沒有合理的利用中間件單元資源。最后上述三種方案都沒有提出加載數(shù)據(jù)到內(nèi)存中后,如何用一種通用的方式進(jìn)一步優(yōu)化數(shù)據(jù)處理的速度,都只是考慮解決整個(gè)算法中數(shù)據(jù)加載的瓶頸,而往往大數(shù)據(jù)量批處理算法往往有查詢加載和數(shù)據(jù)處理持久化兩個(gè)過(guò)程,并且分頁(yè)處理如何自動(dòng)適配多數(shù)據(jù)庫(kù),這些都是問(wèn)題。所以,如何解決大數(shù)據(jù)量加載過(guò)程中中間件單元資源和數(shù)據(jù)庫(kù)資源的合理使用,如何使分頁(yè)底層自適應(yīng)多種數(shù)據(jù)庫(kù),如何提出一整套解決方法和系統(tǒng),防止中間件單元內(nèi)存溢出、減輕數(shù)據(jù)庫(kù)端處理壓力、降低中間件單元和數(shù)據(jù)庫(kù)之間網(wǎng)絡(luò)傳輸數(shù)據(jù)量,這是亟待解決的技術(shù)問(wèn)題
發(fā)明內(nèi)容
本發(fā)明正是基于上述問(wèn)題,提出了一種大數(shù)據(jù)量批處理技術(shù),能夠防止中間件單元內(nèi)存溢出、減輕數(shù)據(jù)庫(kù)端的處理壓力。根據(jù)本發(fā)明的一個(gè)方面,本發(fā)明提供了一種大數(shù)據(jù)量批處理系統(tǒng),包括中間件單元、一級(jí)緩存裝置和二級(jí)緩存裝置,其中,所述中間件單元用于向所述一級(jí)緩存裝置發(fā)送查詢請(qǐng)求,以及接收來(lái)自所述二級(jí)緩存裝置的二級(jí)分頁(yè)主鍵集合,根據(jù)所述二級(jí)分頁(yè)主鍵集合向數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并在對(duì)所述待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向所述數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求;所述一級(jí)緩存裝置用于向所述數(shù)據(jù)庫(kù)查詢符合所述查詢請(qǐng)求的主鍵集合,以及根據(jù)所述主鍵集合生成一級(jí)分頁(yè)主鍵集合并將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置;所述二級(jí)緩存裝置用于根據(jù)所述一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元。通過(guò)上述技術(shù)方案,在中間件讀取數(shù)據(jù)的過(guò)程中加入兩級(jí)緩存結(jié)構(gòu),大大優(yōu)化數(shù)據(jù)讀取,解決了中間件內(nèi)存溢出的技術(shù)問(wèn)題。在上述技術(shù)方案中,優(yōu)選的,還可以包括第一設(shè)置單元,設(shè)置所述一級(jí)緩存裝置的一級(jí)緩存閾值;所述一級(jí)緩存裝置還用于在所述主鍵集合的數(shù)據(jù)量小于等于所述一級(jí)緩存閾值時(shí),直接將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置,以及在所述主鍵集合的數(shù)據(jù)量大于所述一級(jí)緩存閾值時(shí),建立并插入臨時(shí)表,對(duì)所述臨時(shí)表進(jìn)行分頁(yè)并將獲取的主鍵返回至所述二級(jí)緩存裝置。如果只有一級(jí)緩存結(jié)構(gòu)來(lái)解決中間件內(nèi)存溢出的問(wèn)題,則必須對(duì)每頁(yè)主鍵數(shù)據(jù)量做更細(xì)粒度的控制,當(dāng)采用了兩級(jí)緩存結(jié)構(gòu)之后,由于一級(jí)緩存返回的只是主鍵,每一個(gè)主鍵只是一個(gè)固定長(zhǎng)度的字符串,占用內(nèi)存較少,所以可大大提高一級(jí)緩存結(jié)構(gòu)每頁(yè)的主鍵數(shù)據(jù)總量。在上述技術(shù)方案中,優(yōu)選的,還可以包括第二設(shè)置單元,設(shè)置所述二級(jí)緩存裝置的二級(jí)緩存閾值;所述二級(jí)緩存裝置還用于在所述一級(jí)分頁(yè)主鍵的數(shù)據(jù)量小于等于所述二級(jí)緩存閾值時(shí),直接將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元,以及在所述主鍵集合的數(shù)據(jù)量大于所述二級(jí)緩存閾值時(shí),將所述二級(jí)分頁(yè)主鍵集合暫存于內(nèi)存,從所述內(nèi)存中取出每一頁(yè)主鍵數(shù)據(jù),根據(jù)所述每一頁(yè)主鍵數(shù)據(jù)查詢所述待處理數(shù)據(jù)?;谥虚g件實(shí)際處理數(shù)據(jù)的占用量設(shè)置二級(jí)緩存裝置的二級(jí)緩存閾值,合理設(shè)置各級(jí)緩存結(jié)構(gòu)的存儲(chǔ)閾值能夠最大限度的提升系統(tǒng)的處理效率。上述技術(shù)方案中,優(yōu)選的,所述中間件單元包括事務(wù)建立子單元,用于建立獨(dú)立事務(wù);加鎖子單元,用于對(duì)所述待處理數(shù)據(jù)添加中間件單元級(jí)別主鍵鎖,對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,在處理結(jié)束后,對(duì)所述中間件單元級(jí)別鎖進(jìn)行解鎖。每一頁(yè)數(shù)據(jù)采用獨(dú)立事務(wù)處理,也就是說(shuō)每頁(yè)數(shù)據(jù)處理完畢后事務(wù)立即提交,而不是僅在整個(gè)算法最外層起一個(gè)事務(wù),不會(huì)對(duì)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)進(jìn)行長(zhǎng)時(shí)間加鎖鎖定,從而提升數(shù)據(jù)庫(kù)整體并發(fā)處理能力,降低了數(shù)據(jù)庫(kù)端的壓力。在上述任一技術(shù)方案中,優(yōu)選的,還可以包括自識(shí)別裝置,使所述一級(jí)緩存裝置自適應(yīng)多類型數(shù)據(jù)庫(kù)。根據(jù)本發(fā)明的另一方面,還提供了一種大數(shù)據(jù)量批處理方法,包括以下步驟步驟402,中間件單元向一級(jí)緩存裝置發(fā)送查詢請(qǐng)求,數(shù)據(jù)庫(kù)返回符合所述查詢請(qǐng)求的主鍵集合至所述一級(jí)緩存裝置;步驟404,所述一級(jí)緩存裝置根據(jù)所述主鍵集合生成一級(jí)分頁(yè)主鍵集合并將所述一級(jí)分頁(yè)主鍵集合返回至二級(jí)緩存裝置;步驟406,所述二級(jí)緩存裝置根據(jù)所述一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元;步驟408,所述中間件單元根據(jù)所述二級(jí)分頁(yè)主鍵集合向所述數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并再對(duì)所述待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向所述數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求。通過(guò)上述技術(shù)方案,在中間件讀取數(shù)據(jù)的過(guò)程中加入兩級(jí)緩存結(jié)構(gòu),大大優(yōu)化數(shù)據(jù)讀取,解決了中間件內(nèi)存溢出的技術(shù)問(wèn)題。在上述技術(shù)方案中,優(yōu)選的,所述步驟404具體包括設(shè)置所述一級(jí)緩存裝置的一級(jí)緩存閾值;在所述主鍵集合的數(shù)據(jù)量小于等于所述一級(jí)緩存閾值時(shí),直接將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置;在所述主鍵集合的數(shù)據(jù)量大于所述一級(jí)緩存閾值時(shí),建立并插入臨時(shí)表,對(duì)所述臨時(shí)表進(jìn)行分頁(yè)并將獲取的主鍵返回至所述二級(jí)緩存裝置。如果只有一級(jí)緩存結(jié)構(gòu)來(lái)解決中間件內(nèi)存溢出的問(wèn)題,則必須對(duì)每頁(yè)主鍵數(shù)據(jù)量做更細(xì)粒度的控制,當(dāng)采用了兩級(jí)緩存結(jié)構(gòu)之后,由于一級(jí)緩存返回的只是主鍵,每一個(gè)主鍵只是一個(gè)固定長(zhǎng)度的字符串,占用內(nèi)存較少,所以可大大提高一級(jí)緩存結(jié)構(gòu)每頁(yè)的主鍵數(shù)據(jù)總量。在上述技術(shù)方案中,優(yōu)選的,所述步驟406具體包括設(shè)置所述二級(jí)緩存裝置的二級(jí)緩存閾值;在所述一級(jí)分頁(yè)主鍵的數(shù)據(jù)量小于等于所述二級(jí)緩存閾值時(shí),直接將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元;在所述主鍵集合的數(shù)據(jù)量大于所述二級(jí)緩存閾值時(shí),將所述二級(jí)分頁(yè)主鍵集合暫存于內(nèi)存,從所述內(nèi)存中取出每一頁(yè)主鍵數(shù)據(jù),根據(jù)所述每一頁(yè)主鍵數(shù)據(jù)查詢所述待處理數(shù)據(jù)?;谥虚g件實(shí)際處理數(shù)據(jù)的占用量設(shè)置二級(jí)緩存裝置的二級(jí)緩存閾值,合理設(shè)置各級(jí)緩存結(jié)構(gòu)的存儲(chǔ)閾值能夠最大限度的提升系統(tǒng)的處理效率。在上述技術(shù)方案中,優(yōu)選的,所述步驟408具體包括在所述中間件單元建立獨(dú)立事務(wù),對(duì)所述待處理數(shù)據(jù)添加中間件單元級(jí)別主鍵鎖,對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,在處理結(jié)束后,對(duì)所述中間件單元級(jí)別鎖進(jìn)行解鎖。每一頁(yè)數(shù)據(jù)采用獨(dú)立事務(wù)處理,也就是說(shuō)每頁(yè)數(shù)據(jù)處理完畢后事務(wù)立即提交,而不是僅在整個(gè)算法最外層起一個(gè)事務(wù),不會(huì)對(duì)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)進(jìn)行長(zhǎng)時(shí)間加鎖鎖定,從而提升數(shù)據(jù)庫(kù)整體并發(fā)處理能力,降低了數(shù)據(jù)庫(kù)端的壓力。在上述任一技術(shù)方案中,優(yōu)選的,所述步驟404還可以包括,在所述一級(jí)緩存裝置處,采用自識(shí)別裝置自適應(yīng)多類型數(shù)據(jù)庫(kù)。因此,根據(jù)本發(fā)明的大數(shù)據(jù)量批處理方法能夠大大提高系統(tǒng)對(duì)大數(shù)據(jù)量業(yè)務(wù)的處理速度,最大程度上平衡使用中間件和數(shù)據(jù)庫(kù)資源,在降低各自負(fù)載的境況下,又充分利用各自資源,以達(dá)到系統(tǒng)性能的最大提升
圖1示出了相關(guān)技術(shù)中大數(shù)據(jù)量批處理的原理圖;圖2示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理系統(tǒng)的框圖;圖3示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理的原理圖;圖4示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理方法的流程圖;圖5示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理方法的流程圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來(lái)實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí)施例的限制。在說(shuō)明根據(jù)本發(fā)明的大數(shù)據(jù)量批處理系統(tǒng)之前,先簡(jiǎn)單介紹現(xiàn)有的大數(shù)據(jù)匹配處理過(guò)程。如圖1所示,一般的大數(shù)據(jù)量批處理業(yè)務(wù)場(chǎng)景,所有的處理邏輯和算法都大致分為如下幾個(gè)過(guò)程中間件向數(shù)據(jù)庫(kù)發(fā)起查詢加載數(shù)據(jù)的請(qǐng)求,中間件獲取數(shù)據(jù)并在內(nèi)存計(jì)算處理,處理結(jié)束后最后向數(shù)據(jù)庫(kù)發(fā)起持久化數(shù)據(jù)的請(qǐng)求,數(shù)據(jù)庫(kù)完成持久化操作,這樣的處理過(guò)程很容易造成中間件內(nèi)存溢出。為了解決該技術(shù)問(wèn)題,公開了根據(jù)本發(fā)明的大數(shù)據(jù)量批處理系統(tǒng)。圖2示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理系統(tǒng)的框圖。如圖2所示,根據(jù)本發(fā)明實(shí)施例的大數(shù)據(jù)量批處理系統(tǒng)200包括中間件單元202、一級(jí)緩存裝置204和二級(jí)緩存裝置206,其中,所述中間件單元202用于向所述一級(jí)緩存裝置204發(fā)送查詢請(qǐng)求,以及接收來(lái)自所述二級(jí)緩存裝置206的二級(jí)分頁(yè)主鍵集合,根據(jù)所述二級(jí)分頁(yè)主鍵集合向數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并在對(duì)所述待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向所述數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求;所述一級(jí)緩存裝置204用于向所述數(shù)據(jù)庫(kù)查詢符合所述查詢請(qǐng)求的主鍵集合,以及根據(jù)所述主鍵集合生成一級(jí)分頁(yè)主鍵集合并將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置206 ;所述二級(jí)緩存裝置206用于根據(jù)所述一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元202。通過(guò)上述技術(shù)方案,在中間件讀取數(shù)據(jù)的過(guò)程中加入兩級(jí)緩存結(jié)構(gòu),大大優(yōu)化數(shù)據(jù)讀取,解決了中間件內(nèi)存溢出的技術(shù)問(wèn)題。上述技術(shù)方案中,優(yōu)選的,還可以包括第一設(shè)置單元208,設(shè)置所述一級(jí)緩存裝置204的一級(jí)緩存閾值;所述一級(jí)緩存裝置204還用于在所述主鍵集合的數(shù)據(jù)量小于等于所述一級(jí)緩存閾值時(shí),直接將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置206,以及在所述主鍵集合的數(shù)據(jù)量大于所述一級(jí)緩存閾值時(shí),建立并插入臨時(shí)表,對(duì)所述臨時(shí)表進(jìn)行分頁(yè)并將獲取的主鍵返回至所述二級(jí)緩存裝置206。如果只有一級(jí)緩存結(jié)構(gòu)來(lái)解決中間件內(nèi)存溢出的問(wèn)題,則必須對(duì)每頁(yè)主鍵數(shù)據(jù)量做更細(xì)粒度的控制,當(dāng)采用了兩級(jí)緩存結(jié)構(gòu)之后,由于一級(jí)緩存返回的只是主鍵,每一個(gè)主鍵只是一個(gè)固定長(zhǎng)度的字符串,占用內(nèi)存較少,所以可大大提高一級(jí)緩存結(jié)構(gòu)每頁(yè)的主鍵數(shù)據(jù)總量。優(yōu)選的,大數(shù)據(jù)量批處理系統(tǒng)200還可以包括第二設(shè)置單元210,設(shè)置所述二級(jí)緩存裝置206的二級(jí)緩存閾值;所述二級(jí)緩存裝置206還用于在所述一級(jí)分頁(yè)主鍵的數(shù)據(jù)量小于等于所述二級(jí)緩存閾值時(shí),直接將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元202,以及在所述主鍵集合的數(shù)據(jù)量大于所述二級(jí)緩存閾值時(shí),將所述二級(jí)分頁(yè)主鍵集合暫存于內(nèi)存,從所述內(nèi)存中取出每一頁(yè)主鍵數(shù)據(jù),根據(jù)所述每一頁(yè)主鍵數(shù)據(jù)查詢所述待處理數(shù)據(jù)。基于中間件實(shí)際處理數(shù)據(jù)的占用量設(shè)置二級(jí)緩存裝置206的二級(jí)緩存閾值,合理設(shè)置各級(jí)緩存結(jié)構(gòu)的存儲(chǔ)閾值能夠最大限度的提升系統(tǒng)的處理效率。上述技術(shù)方案中,優(yōu)選的,所述中間件單元202包括事務(wù)建立子單元2022,用于建立獨(dú)立事務(wù);加鎖子單元2024,用于對(duì)所述待處理數(shù)據(jù)添加中間件單元202級(jí)別主鍵鎖,對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,在處理結(jié)束后,對(duì)所述中間件單元202級(jí)別鎖進(jìn)行解鎖。每一頁(yè)數(shù)據(jù)采用獨(dú)立事務(wù)處理,也就是說(shuō)每頁(yè)數(shù)據(jù)處理完畢后事務(wù)立即提交,而不是僅在整個(gè)算法最外層起一個(gè)事務(wù),不會(huì)對(duì)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)進(jìn)行長(zhǎng)時(shí)間加鎖鎖定,從而提升數(shù)據(jù)庫(kù)整體并發(fā)處理能力,降低了數(shù)據(jù)庫(kù)端的壓力。優(yōu)選的,大數(shù)據(jù)量批處理系統(tǒng)200還可以包括自識(shí)別裝置212,使所述一級(jí)緩存裝置204自適應(yīng)多類型數(shù)據(jù)庫(kù)。綜合上述,整個(gè)大數(shù)據(jù)量批處理系統(tǒng)可分為如下幾個(gè)模塊相互傳遞數(shù)據(jù)協(xié)調(diào)工作一級(jí)緩存裝置解決中間件內(nèi)存瓶頸;數(shù)據(jù)庫(kù)自識(shí)別裝置自動(dòng)適配多類型數(shù)據(jù)庫(kù);二級(jí)緩存裝置降低數(shù)據(jù)庫(kù)負(fù)載壓力的同時(shí)合理化使用中間件資源;獨(dú)立事務(wù)處理裝置進(jìn)一步提升數(shù)據(jù)庫(kù)和中間件多并發(fā)處理能力,從而整體提升系統(tǒng)效率。下面結(jié)合圖3詳細(xì)說(shuō)明根據(jù)本發(fā)明的大數(shù)據(jù)量批處理系統(tǒng)的處理原理。圖3示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理的原理圖。如圖3所示,在中間件(對(duì)應(yīng)圖2中的中間件單元)讀取數(shù)據(jù)的過(guò)程中加入兩級(jí)緩存結(jié)構(gòu),優(yōu)化數(shù)據(jù)讀取;在中間件發(fā)起持久化處理過(guò)程中采用獨(dú)立事務(wù),優(yōu)化減輕數(shù)據(jù)庫(kù)端壓力。從圖中可以看到整個(gè)過(guò)程如下1.向一級(jí)緩存裝置發(fā)起查詢請(qǐng)求。2. 一級(jí)緩存裝置向數(shù)據(jù)庫(kù)查詢滿足查詢條件的主鍵,數(shù)據(jù)庫(kù)返回所有主鍵集合到一級(jí)緩存結(jié)構(gòu)。3. 二級(jí)緩存裝置向一級(jí)緩存裝置請(qǐng)求獲取一級(jí)分頁(yè)主鍵集合。4. 二級(jí)緩存裝置接收由一級(jí)緩存裝置返回的二級(jí)分頁(yè)主鍵集合。5.中間件向二級(jí)緩存裝置請(qǐng)求獲取二級(jí)分頁(yè)主鍵結(jié)合。6. 二級(jí)緩存裝置向中間件返回二級(jí)分頁(yè)主鍵集合。7.中間件根據(jù)二級(jí)分頁(yè)主鍵向數(shù)據(jù)庫(kù)結(jié)合查詢待處理數(shù)據(jù)。8.采用獨(dú)立事務(wù)處理計(jì)算數(shù)據(jù)。9.持久化二級(jí)分頁(yè)數(shù)據(jù)。其中,第2步到第4步為第一級(jí)分頁(yè)循環(huán)處理過(guò)程;第5步到第9步為第二級(jí)分頁(yè)循環(huán)處理過(guò)程,同時(shí)內(nèi)部采用獨(dú)立事務(wù),減輕數(shù)據(jù)庫(kù)端處理壓力。系統(tǒng)中一級(jí)緩存裝置內(nèi)部利用數(shù)據(jù)庫(kù)臨時(shí)表來(lái)實(shí)現(xiàn),同時(shí)內(nèi)部包含自動(dòng)適應(yīng)底層數(shù)據(jù)庫(kù)的自識(shí)別裝置212,適用于各類數(shù)據(jù)庫(kù)。二級(jí)緩存結(jié)構(gòu)采用在中間件級(jí)別建立內(nèi)存級(jí)緩存,暫存數(shù)據(jù)主鍵信息。如果只采用一級(jí)緩存裝置防止中間件內(nèi)存溢出,必須對(duì)每頁(yè)主鍵數(shù)據(jù)量做更細(xì)粒度的控制,例如必須要處理總量1000萬(wàn)的數(shù)據(jù)量,為保證內(nèi)存不溢出,必須做到每頁(yè)最多5000條記錄,對(duì)應(yīng)的主鍵也是5000條,那么就需要2000頁(yè),也就是2000次分頁(yè)查詢。而現(xiàn)在如果采用兩級(jí)緩存結(jié)構(gòu),同樣二級(jí)緩存每頁(yè)最多5000條數(shù)據(jù),對(duì)應(yīng)的主鍵也是5000條,但由于一級(jí)緩存裝置返回的只是主鍵,每一個(gè)主鍵只是一個(gè)固定長(zhǎng)度的字符串,占用內(nèi)存較少,所以它的每頁(yè)主鍵數(shù)據(jù)可以達(dá)到例如4萬(wàn)條記錄,由于二級(jí)緩存分頁(yè)取數(shù)完全是在內(nèi)存中完成,不會(huì)有遠(yuǎn)程查詢,那么一級(jí)緩存帶來(lái)的查詢開銷只有1000萬(wàn)/4萬(wàn)=250,也就是說(shuō)總共只有250次分頁(yè)查詢。相比只有一級(jí)緩存裝置的2000次分頁(yè)查詢,采用二級(jí)緩存結(jié)構(gòu)的方法對(duì)數(shù)據(jù)庫(kù)端的壓力會(huì)更小,同時(shí)還降低了中間件與數(shù)據(jù)庫(kù)之間的網(wǎng)絡(luò)傳輸流量,從而進(jìn)一步的提升整個(gè)系統(tǒng)大數(shù)據(jù)量批處理的能力。接下來(lái)結(jié)合圖4和圖5來(lái)詳細(xì)說(shuō)明根據(jù)本發(fā)明的大數(shù)據(jù)量批處理方法。圖4示出了根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理方法的流程圖。如圖4所示,根據(jù)本發(fā)明的實(shí)施例的大數(shù)據(jù)量批處理方法,包括以下步驟步驟402,中間件單元向一級(jí)緩存裝置發(fā)送查詢請(qǐng)求,數(shù)據(jù)庫(kù)返回符合查詢請(qǐng)求的主鍵集合至一級(jí)緩存裝置;步驟404,一級(jí)緩存裝置根據(jù)主鍵集合生成一級(jí)分頁(yè)主鍵集合并將一級(jí)分頁(yè)主鍵集合返回至二級(jí)緩存裝置;步驟406,二級(jí)緩存裝置根據(jù)一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將二級(jí)分頁(yè)主鍵集合返回至中間件單元;步驟408,中間件單元根據(jù)二級(jí)分頁(yè)主鍵集合向數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并再對(duì)待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求。通過(guò)上述技術(shù)方案,在中間件讀取數(shù)據(jù)的過(guò)程中加入兩級(jí)緩存結(jié)構(gòu),大大優(yōu)化數(shù)據(jù)讀取,解決了中間件內(nèi)存溢出的技術(shù)問(wèn)題。上述技術(shù)方案中,優(yōu)選的,所述步驟404具體包括設(shè)置所述一級(jí)緩存裝置的一級(jí)緩存閾值;在所述主鍵集合的數(shù)據(jù)量小于等于所述一級(jí)緩存閾值時(shí),直接將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置;在所述主鍵集合的數(shù)據(jù)量大于所述一級(jí)緩存閾值時(shí),建立并插入臨時(shí)表,對(duì)所述臨時(shí)表進(jìn)行分頁(yè)并將獲取的主鍵返回至所述二級(jí)緩存裝置。如果只有一級(jí)緩存結(jié)構(gòu)來(lái)解決中間件內(nèi)存溢出的問(wèn)題,則必須對(duì)每頁(yè)主鍵數(shù)據(jù)量做更細(xì)粒度的控制,當(dāng)采用了兩級(jí)緩存結(jié)構(gòu)之后,由于一級(jí)緩存返回的只是主鍵,每一個(gè)主鍵只是一個(gè)固定長(zhǎng)度的字符串,占用內(nèi)存較少,所以可大大提高一級(jí)緩存結(jié)構(gòu)每頁(yè)的主鍵數(shù)據(jù)總量。上述技術(shù)方案中,優(yōu)選的,所述步驟406具體包括設(shè)置所述二級(jí)緩存裝置的二級(jí)緩存閾值;在所述一級(jí)分頁(yè)主鍵的數(shù)據(jù)量小于等于所述二級(jí)緩存閾值時(shí),直接將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元;在所述主鍵集合的數(shù)據(jù)量大于所述二級(jí)緩存閾值時(shí),將所述二級(jí)分頁(yè)主鍵集合暫存于內(nèi)存,從所述內(nèi)存中取出每一頁(yè)主鍵數(shù)據(jù),根據(jù)所述每一頁(yè)主鍵數(shù)據(jù)查詢所述待處理數(shù)據(jù)?;谥虚g件實(shí)際處理數(shù)據(jù)的占用量設(shè)置二級(jí)緩存裝置的二級(jí)緩存閾值,合理設(shè)置各級(jí)緩存結(jié)構(gòu)的存儲(chǔ)閾值能夠最大限度的提升系統(tǒng)的處理效率。上述技術(shù)方案中,優(yōu)選的,所述步驟408具體包括在所述中間件單元建立獨(dú)立事務(wù),對(duì)所述待處理數(shù)據(jù)添加中間件單元級(jí)別主鍵鎖,對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,在處理結(jié)束后,對(duì)所述中間件單元級(jí)別鎖進(jìn)行解鎖。每一頁(yè)數(shù)據(jù)采用獨(dú)立事務(wù)處理,也就是說(shuō)每頁(yè)數(shù)據(jù)處理完畢后事務(wù)立即提交,而不是僅在整個(gè)算法最外層起一個(gè)事務(wù),不會(huì)對(duì)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)進(jìn)行長(zhǎng)時(shí)間加鎖鎖定,從而提升數(shù)據(jù)庫(kù)整體并發(fā)處理能力,降低了數(shù)據(jù)庫(kù)端的壓力。上述任一技術(shù)方案中,優(yōu)選的,所述步驟404還可以包括,在所述一級(jí)緩存裝置處,采用自識(shí)別裝置自適應(yīng)多類型數(shù)據(jù)庫(kù)。
如圖5所示,大數(shù)據(jù)量批處理過(guò)程可大致分為3個(gè)過(guò)程1) 一級(jí)緩存結(jié)構(gòu)處理查詢請(qǐng)求;2) 二級(jí)緩存結(jié)構(gòu)處理查詢請(qǐng)求;3)使用獨(dú)立事務(wù)提交最終數(shù)據(jù)I) 一級(jí)緩存結(jié)構(gòu)處理查詢請(qǐng)求。1. 一級(jí)緩存結(jié)構(gòu)接收查詢請(qǐng)求后,首先執(zhí)行SQL語(yǔ)句獲得結(jié)果集。2.遍歷結(jié)果集,如果結(jié)果集的數(shù)據(jù)量總大小未超過(guò)一級(jí)緩存閥值,直接返回結(jié)果集。3.如果結(jié)果集的數(shù)據(jù)量總大小超過(guò)一級(jí)緩存閥值,臨時(shí)表緩存裝置處理SQL語(yǔ)句。4.臨時(shí)表緩存裝置根據(jù)底層數(shù)據(jù)源類型,自動(dòng)創(chuàng)建各種數(shù)據(jù)庫(kù)類型插入臨時(shí)表 SQL語(yǔ)句。臨時(shí)表的字段如下編號(hào)(自增長(zhǎng)型)、主鍵、傳入臨時(shí)表緩存SQL中的字段。其中,編號(hào)是為了后續(xù)分頁(yè)使用,并且每種數(shù)據(jù)庫(kù)自增長(zhǎng)型字段實(shí)現(xiàn)技術(shù)有差異,所以在此會(huì)根據(jù)數(shù)據(jù)庫(kù)類型自動(dòng)區(qū)別處理,最終形成插敘臨時(shí)表的SQL語(yǔ)句,類似dnsert intotemp (select rownumFrom..·)。5. 一級(jí)緩存結(jié)構(gòu)從內(nèi)部臨時(shí)表中分頁(yè)取出待處理數(shù)據(jù),分頁(yè)的原理就是利用臨時(shí)表中編號(hào)字段,由于編號(hào)字段是自增長(zhǎng)型(例如,12,3,4…),所以分頁(yè)取數(shù)的SQL類似select pk from temp where no>=land no〈=50......。6.最后將分頁(yè)取出的主鍵數(shù)據(jù)集合傳給二級(jí)緩存結(jié)構(gòu)(即二級(jí)緩存裝置)。2) 二級(jí)緩存結(jié)構(gòu)處理查詢請(qǐng)求。1. 二級(jí)緩存結(jié)構(gòu)接收一級(jí)緩存結(jié)構(gòu)返回的主鍵數(shù)據(jù)。2.如果結(jié)果集的數(shù)據(jù)量總大小未超過(guò)二級(jí)緩存閥值,則直接返回主鍵結(jié)果集。3.如果結(jié)果集的數(shù)據(jù)量總大小超過(guò)二級(jí)緩存閥值,則將主鍵數(shù)據(jù)暫存在內(nèi)存中。4. 二次分頁(yè)從內(nèi)存級(jí)緩存中取出每一頁(yè)主鍵數(shù)據(jù)。5.根據(jù)每一頁(yè)主鍵數(shù)據(jù)去數(shù)據(jù)庫(kù)中查詢出待處理數(shù)據(jù)。3 )使用獨(dú)立事務(wù)提交數(shù)據(jù)。1.在中間件層創(chuàng)建獨(dú)立事務(wù)。2.對(duì)待處理數(shù)據(jù)加中間件級(jí)別主鍵鎖。3.對(duì)數(shù)據(jù)進(jìn)行計(jì)算、最后持久化數(shù)據(jù)。4.釋然鎖。4)各緩存結(jié)構(gòu)閥值設(shè)置。1. 一級(jí)緩存結(jié)構(gòu)默認(rèn)分頁(yè)數(shù)據(jù)閥值20000。2. 二級(jí)緩存結(jié)構(gòu)默認(rèn)分頁(yè)數(shù)據(jù)閥值5000。3. 一級(jí)緩存結(jié)構(gòu)和二級(jí)緩存結(jié)構(gòu)的閥值都可以根據(jù)中間件的硬件條件動(dòng)態(tài)設(shè)置。4. 一級(jí)緩存結(jié)構(gòu)閥值的設(shè)置主要考慮主鍵字符內(nèi)存占用量。5. 二級(jí)緩存結(jié)構(gòu)閥值的設(shè)置主要考慮中間件中實(shí)際處理數(shù)據(jù)的占用量。合理設(shè)置各級(jí)緩存結(jié)構(gòu)的閥值能夠最大的提升系統(tǒng)的處理效率。因此,根據(jù)本發(fā)明的大數(shù)據(jù)量批處理方法能夠大大提高系統(tǒng)對(duì)大數(shù)據(jù)量業(yè)務(wù)的處理速度,最大程度上平衡使用中間件和數(shù)據(jù)庫(kù)資源,在降低各自負(fù)載的境況下,又充分利用各自資源,以達(dá)到系統(tǒng)性能的最大提升。綜上,該方法這使得信息系統(tǒng)能夠更好的適應(yīng)更多、條件更苛刻的網(wǎng)絡(luò)環(huán)境、大數(shù)據(jù)量環(huán)境,能夠使客戶在更大的業(yè)務(wù)數(shù)據(jù)場(chǎng)景下運(yùn)行系統(tǒng)。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種大數(shù)據(jù)量批處理系統(tǒng),其特征在于,包括中間件單元、一級(jí)緩存裝置和二級(jí)緩存裝置,其中, 所述中間件單元用于向所述一級(jí)緩存裝置發(fā)送查詢請(qǐng)求,以及接收來(lái)自所述二級(jí)緩存裝置的二級(jí)分頁(yè)主鍵集合,根據(jù)所述二級(jí)分頁(yè)主鍵集合向數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并在對(duì)所述待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向所述數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求; 所述一級(jí)緩存裝置用于向所述數(shù)據(jù)庫(kù)查詢符合所述查詢請(qǐng)求的主鍵集合,以及根據(jù)所述主鍵集合生成一級(jí)分頁(yè)主鍵集合并將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置; 所述二級(jí)緩存裝置用于根據(jù)所述一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元。
2.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)量批處理系統(tǒng),其特征在于,還包括第一設(shè)置單元,設(shè)置所述一級(jí)緩存裝置的一級(jí)緩存閾值; 所述一級(jí)緩存裝置還用于在所述主鍵集合的數(shù)據(jù)量小于等于所述一級(jí)緩存閾值時(shí),直接將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置,以及在所述主鍵集合的數(shù)據(jù)量大于所述一級(jí)緩存閾值時(shí),建立并插入臨時(shí)表,對(duì)所述臨時(shí)表進(jìn)行分頁(yè)并將獲取的主鍵返回至所述二級(jí)緩存裝置。
3.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)量批處理系統(tǒng),其特征在于,還包括 第二設(shè)置單元,設(shè)置所述二級(jí)緩存裝置的二級(jí)緩存閾值; 所述二級(jí)緩存裝置還用于在所述一級(jí)分頁(yè)主鍵的數(shù)據(jù)量小于等于所述二級(jí)緩存閾值時(shí),直接將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元,以及在所述主鍵集合的數(shù)據(jù)量大于所述二級(jí)緩存閾值時(shí),將所述二級(jí)分頁(yè)主鍵集合暫存于內(nèi)存,從所述內(nèi)存中取出每一頁(yè)主鍵數(shù)據(jù),根據(jù)所述每一頁(yè)主鍵數(shù)據(jù)查詢所述待處理數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的大數(shù)據(jù)量批處理系統(tǒng),其特征在于,所述中間件單元包括 事務(wù)建立子單元,用于建立獨(dú)立事務(wù); 加鎖子單元,用于對(duì)所述待處理數(shù)據(jù)添加中間件單元級(jí)別主鍵鎖,對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,在處理結(jié)束后,對(duì)所述中間件單元級(jí)別鎖進(jìn)行解鎖。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的大數(shù)據(jù)量批處理系統(tǒng),其特征在于,還包括自識(shí)別裝置,使所述一級(jí)緩存裝置自適應(yīng)多類型數(shù)據(jù)庫(kù)。
6.一種大數(shù)據(jù)量批處理方法,其特征在于,包括以下步驟 步驟402,中間件單元向一級(jí)緩存裝置發(fā)送查詢請(qǐng)求,數(shù)據(jù)庫(kù)返回符合所述查詢請(qǐng)求的主鍵集合至所述一級(jí)緩存裝置; 步驟404,所述一級(jí)緩存裝置根據(jù)所述主鍵集合生成一級(jí)分頁(yè)主鍵集合并將所述一級(jí)分頁(yè)主鍵集合返回至二級(jí)緩存裝置; 步驟406,所述二級(jí)緩存裝置根據(jù)所述一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元; 步驟408,所述中間件單元根據(jù)所述二級(jí)分頁(yè)主鍵集合向所述數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并再對(duì)所述待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向所述數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求。
7.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)量批處理方法,其特征在于,所述步驟404具體包括設(shè)置所述一級(jí)緩存裝置的一級(jí)緩存閾值;在所述主鍵集合的數(shù)據(jù)量小于等于所述一級(jí)緩存閾值時(shí),直接將所述一級(jí)分頁(yè)主鍵集合返回至所述二級(jí)緩存裝置; 在所述主鍵集合的數(shù)據(jù)量大于所述一級(jí)緩存閾值時(shí),建立并插入臨時(shí)表,對(duì)所述臨時(shí)表進(jìn)行分頁(yè)并將獲取的主鍵返回至所述二級(jí)緩存裝置。
8.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)量批處理方法,其特征在于,所述步驟406具體包括設(shè)置所述二級(jí)緩存裝置的二級(jí)緩存閾值; 在所述一級(jí)分頁(yè)主鍵的數(shù)據(jù)量小于等于所述二級(jí)緩存閾值時(shí),直接將所述二級(jí)分頁(yè)主鍵集合返回至所述中間件單元; 在所述主鍵集合的數(shù)據(jù)量大于所述二級(jí)緩存閾值時(shí),將所述二級(jí)分頁(yè)主鍵集合暫存于內(nèi)存,從所述內(nèi)存中取出每一頁(yè)主鍵數(shù)據(jù),根據(jù)所述每一頁(yè)主鍵數(shù)據(jù)查詢所述待處理數(shù)據(jù)。
9.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)量批處理方法,其特征在于,所述步驟408具體包括在所述中間件單元建立獨(dú)立事務(wù),對(duì)所述待處理數(shù)據(jù)添加中間件單元級(jí)別主鍵鎖,對(duì)所述待處理數(shù)據(jù)進(jìn)行處理,在處理結(jié)束后,對(duì)所述中間件單元級(jí)別鎖進(jìn)行解鎖。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的大數(shù)據(jù)量批處理方法,其特征在于,所述步驟404還包括,在所述一級(jí)緩存裝置處,采用自識(shí)別裝置自適應(yīng)多類型數(shù)據(jù)庫(kù)。
全文摘要
本發(fā)明提供了一種大數(shù)據(jù)量批處理系統(tǒng),包括中間件單元用于向一級(jí)緩存裝置發(fā)送查詢請(qǐng)求,以及接收來(lái)自二級(jí)緩存裝置的二級(jí)分頁(yè)主鍵集合,根據(jù)二級(jí)分頁(yè)主鍵集合向數(shù)據(jù)庫(kù)查詢待處理數(shù)據(jù)并在對(duì)待處理數(shù)據(jù)進(jìn)行計(jì)算處理后,向數(shù)據(jù)庫(kù)發(fā)送持久化數(shù)據(jù)請(qǐng)求;一級(jí)緩存裝置用于向數(shù)據(jù)庫(kù)查詢符合查詢請(qǐng)求的主鍵集合,以及根據(jù)主鍵集合生成一級(jí)分頁(yè)主鍵集合并將一級(jí)分頁(yè)主鍵集合返回至二級(jí)緩存裝置;二級(jí)緩存裝置用于根據(jù)一級(jí)分頁(yè)主鍵集合生成二級(jí)分頁(yè)主鍵集合并將二級(jí)分頁(yè)主鍵集合返回至中間件單元。本發(fā)明還提供了一種大數(shù)據(jù)量批處理方法。根據(jù)本發(fā)明的技術(shù)方案,可大大提高系統(tǒng)海量數(shù)據(jù)的處理速度,降低系統(tǒng)處理時(shí)間,進(jìn)而提升系統(tǒng)的綜合性能。
文檔編號(hào)G06F17/30GK103020151SQ20121048006
公開日2013年4月3日 申請(qǐng)日期2012年11月22日 優(yōu)先權(quán)日2012年11月22日
發(fā)明者張 成 申請(qǐng)人:用友軟件股份有限公司