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