本發(fā)明涉及大數(shù)據(jù)處理領(lǐng)域,尤其涉及一種處理數(shù)據(jù)的方法及系統(tǒng)。
背景技術(shù):
:隨著電子信息技術(shù)的發(fā)展,大數(shù)據(jù)處理及應(yīng)用已成為一項快速發(fā)展的領(lǐng)域,并逐漸實(shí)現(xiàn)了許多需要海量數(shù)據(jù)參與計算的業(yè)務(wù)場景。數(shù)據(jù)在參與計算的過程中,需要經(jīng)歷查詢、讀取并傳輸?shù)倪^程,若要實(shí)現(xiàn)海量數(shù)據(jù)參與計算,則需要提取大量數(shù)據(jù),同時,為了保證計算結(jié)果的精確性,還需要保證數(shù)據(jù)在查詢、讀取、的傳輸過程中的錯誤率低于設(shè)計標(biāo)準(zhǔn)。由于分布式系統(tǒng)在處理大容量數(shù)據(jù)方面具有優(yōu)勢,因此目前通常使用分布式系統(tǒng)來處理大容量的數(shù)據(jù),并主要采用數(shù)據(jù)庫表的數(shù)據(jù)存儲、讀取方式。但是在實(shí)際應(yīng)用中,數(shù)據(jù)庫表的數(shù)據(jù)量很大,在查詢、讀取、的傳輸過程中需要耗費(fèi)大量時間,并占用分布式系統(tǒng)較多的接口資源,當(dāng)出現(xiàn)重讀或讀取中斷等情況時,則會進(jìn)一步延長處理時間和接口的排隊等待時間。導(dǎo)致目前的大數(shù)據(jù)處理業(yè)務(wù)存在時效性差以及難以及時反饋結(jié)果等問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的實(shí)施例提供一種處理數(shù)據(jù)的方法及系統(tǒng),能夠提高數(shù)據(jù)處理的效率,降低接口資源的占用情況。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:第一方面,本發(fā)明的實(shí)施例提供一種處理數(shù)據(jù)的方法,包括:將所述數(shù)據(jù)庫表劃分為至少兩個部分,并分別建立每一個部分與任務(wù)段的對應(yīng)關(guān)系;為各任務(wù)段分配計算線程,其中,一個任務(wù)段分配一個線程,不同的任務(wù)段被分配的線程不同;通過線程處理各自分配的任務(wù)段。結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,還包括:通過自增長主鍵設(shè)置數(shù)據(jù)行的行標(biāo)識;按照數(shù)據(jù)行的排列順序,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行垂直拆分,得到至少兩個數(shù)據(jù)庫表。結(jié)合第一方面,在第一方面的第二種可能的實(shí)現(xiàn)方式中,還包括:在建立每一個部分與任務(wù)段的對應(yīng)關(guān)系后,生成分段信息,所述分段信息包括:數(shù)據(jù)庫名稱、表名稱、分區(qū)字段、行標(biāo)識和處理情況信息;在通過線程處理各自分配的任務(wù)段后,更新所述分段信息。結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,包括:任務(wù)段服務(wù)器對所述數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行劃分得到至少兩個任務(wù)段,并生成所述分段信息,并將所述分段信息存放至同步隊列中;所述計算服務(wù)器從所述同步隊列中獲取所述分段信息,并根據(jù)所述分段信息從所述數(shù)據(jù)庫中讀取數(shù)據(jù),并通過預(yù)設(shè)的線程并行計算所讀取的數(shù)據(jù);所述計算服務(wù)器在對所讀取的數(shù)據(jù)完成并行計算后,向所述任務(wù)段服務(wù)器發(fā)送結(jié)果信息,所述任務(wù)段服務(wù)器根據(jù)所述結(jié)果信息更新所述分段信息。結(jié)合第一方面或第一方面的第一至三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,當(dāng)檢測到數(shù)據(jù)處理異常時,重新處理出現(xiàn)異常時的任務(wù)段。第二方面,本發(fā)明的實(shí)施例提供一種處理數(shù)據(jù)的系統(tǒng),包括:任務(wù)段服務(wù)器,用于將所述數(shù)據(jù)庫表劃分為至少兩個部分,并分別建立每一個部分與任務(wù)段的對應(yīng)關(guān)系;并為各任務(wù)段分配計算線程,其中,一個任務(wù)段分配一個線程,不同的任務(wù)段被分配的線程不同;計算服務(wù)器,用于通過線程處理各自分配的任務(wù)段。結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述任務(wù)段服務(wù)器,具體用于通過自增長主鍵設(shè)置數(shù)據(jù)行的行標(biāo)識;并按照數(shù)據(jù)行的排列順序,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行垂直拆分,得到至少兩個數(shù)據(jù)庫表。結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述任務(wù)段服務(wù)器,還用于在建立每一個部分與任務(wù)段的對應(yīng)關(guān)系后,生成分段信息,所述分段信息包括:數(shù)據(jù)庫名稱、表名稱、分區(qū)字段、行標(biāo)識和處理情況信息;并在通過線程處理各自分配的任務(wù)段后,更新所述分段信息。結(jié)合第二方面或第二方面的第一至二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述計算服務(wù)器,還用于當(dāng)檢測到數(shù)據(jù)處理異常時,重新處理出現(xiàn)異常時的任務(wù)段。本發(fā)明實(shí)施例提供的處理數(shù)據(jù)的方法及系統(tǒng),通過對數(shù)據(jù)庫表劃分任務(wù)段,并將不同任務(wù)段導(dǎo)入不同的線程進(jìn)行處理,實(shí)現(xiàn)了多個線程同時并行處理一個數(shù)據(jù)庫表的功能,并且由于任務(wù)段不同,因此當(dāng)數(shù)據(jù)處理出現(xiàn)異?;蚴菙?shù)據(jù)讀取出錯時,只需重新處理或讀取當(dāng)前任務(wù)段的數(shù)據(jù)內(nèi)容,并非現(xiàn)有技術(shù)中重新處理或讀取整個數(shù)據(jù)庫表,提高了數(shù)據(jù)處理的效率,降低了接口資源的占用情況。并且由于對于數(shù)據(jù)庫表的劃分為邏輯劃分,沒有對數(shù)據(jù)庫中的數(shù)據(jù)本身就像分割,因此不需要占用數(shù)據(jù)庫的讀寫接口的資源,只需通過關(guān)系型數(shù)據(jù)庫記錄任務(wù)段的映射信息(例如可以記錄為分段信息),因此進(jìn)一步提高了數(shù)據(jù)處理的效率,降低了接口資源的占用情況。附圖說明為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一 些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。圖1a為本發(fā)明實(shí)施例提供的一種處理數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖;圖1b為本發(fā)明實(shí)施例提供的另一種處理數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖;圖1c為本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例提供的處理數(shù)據(jù)的方法的流程圖;圖3、圖4為本發(fā)明實(shí)施例提供的具體應(yīng)用場景的示意圖。具體實(shí)施方式為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明的技術(shù)方案,下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明作進(jìn)一步詳細(xì)描述。下文中將詳細(xì)描述本發(fā)明的實(shí)施方式,所述實(shí)施方式的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。本
技術(shù)領(lǐng)域:
技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的任一單元和全部組合。本
技術(shù)領(lǐng)域:
技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語)具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣定義,不會用理想化或過于正式的含義來解釋。本發(fā)明實(shí)施例可以應(yīng)用于一種如圖1a所示的數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)包括:任務(wù)段服務(wù)器(TSS,TaskSegmentServer)、計算服務(wù)器(WS,WorkerServer)和數(shù)據(jù)庫。其中,任務(wù)段服務(wù)器用于對數(shù)據(jù)庫表進(jìn)行任務(wù)段的劃分;計算服務(wù)器用于為任務(wù)段分配計算線程,并通過線程完成數(shù)據(jù)處理;數(shù)據(jù)庫用于存儲需要被處理的數(shù)據(jù),在本實(shí)施例適用于關(guān)系型數(shù)據(jù)庫的大數(shù)據(jù)處理。需要說明的是,也可以根據(jù)計算量需求的不同,設(shè)置不同的計算設(shè)備,比如:除了計算服務(wù)器,若在計算需求較大的場景中,也可以采用如圖1b所示的計算集群。具體的,本實(shí)施例中所采用的服務(wù)器的基本結(jié)構(gòu)可以如圖1c所示,包括:輸入單元、處理器單元、輸出單元、通信單元、存儲單元、外設(shè)單元等組件。這些組件通過一條或多條總線進(jìn)行通信。本領(lǐng)域技術(shù)人員可以理解,圖中示出的服務(wù)器的結(jié)構(gòu)并不構(gòu)成對本發(fā)明的限定,它既可以是總線形結(jié)構(gòu),也可以是星型結(jié)構(gòu),還可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中,輸入單元用于實(shí)現(xiàn)用戶與服務(wù)器的交互和/或信息輸入到服務(wù)器中。例如,輸入單元可以接收用戶輸入的數(shù)字或字符信息,以產(chǎn)生與用戶設(shè)置或功能控制有關(guān)的信號輸入。在本發(fā)明具體實(shí)施方式中,輸入單元可以是鍵盤、觸控面板等,也可以是其他人機(jī)交互界面。處理器單元為服務(wù)器的控制中心,利用各種接口和線路連接整個服務(wù)器的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲單元內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲單元內(nèi)的數(shù)據(jù),以執(zhí)行服務(wù)器的各種功能和/或處理數(shù)據(jù)。所述處理器單元可以由集成電路(IntegratedCircuit,簡稱IC)組成,例如可以由單顆封裝的IC所組成,也可以由連接多顆相同功能或不同功能的封裝IC而組成。舉例來說,處理器單元可以僅包括中央處理器(CentralProcessingUnit,簡稱CPU),也可以是GPU、數(shù)字信號處理器(DigitalSignalProcessor,簡稱DSP)、及通信單元中的控制芯片(例如基帶芯片)的組合。在本發(fā)明實(shí)施方式中,CPU可以是單運(yùn)算核心,也可以包括多運(yùn)算核心。通信單元用于建立通信信道,使服務(wù)器通過所述通信信道以連接至遠(yuǎn)程設(shè)備,比如存儲了訂單數(shù)據(jù)和/或歷史記錄的數(shù)據(jù)庫服務(wù)器,并從所述遠(yuǎn) 程服務(wù)器下媒體數(shù)據(jù)。在本發(fā)明的不同實(shí)施方式中,所述通信單元中的各種通信模塊一般以集成電路芯片(IntegratedCircuitChip)的形式出現(xiàn),并可進(jìn)行選擇性組合,而不必包括所有通信模塊及對應(yīng)的天線組,由通信單元所傳輸?shù)臄?shù)據(jù)通過數(shù)據(jù)線向其他設(shè)備發(fā)送,或者通過互聯(lián)網(wǎng)向遠(yuǎn)程設(shè)備發(fā)送。輸出單元包括但不限于影像輸出單元和聲音輸出單元。影像輸出單元用于輸出文字、圖片和/或視頻。所述影像輸出單元可包括顯示面板,例如采用LCD(LiquidCrystalDisplay,液晶顯示器)、OLED(OrganicLight-EmittingDiode,有機(jī)發(fā)光二極管)、場發(fā)射顯示器(fieldemissiondisplay,簡稱FED)等形式來配置的顯示面板。存儲單元可用于存儲軟件程序以及模塊,處理單元通過運(yùn)行存儲在存儲單元的軟件程序以及模塊,從而執(zhí)行服務(wù)器的各種功能應(yīng)用以及實(shí)現(xiàn)數(shù)據(jù)處理。存儲單元主要包括程序存儲區(qū)和數(shù)據(jù)存儲區(qū),其中,程序存儲區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序,比如聲音播放程序、圖像播放程序等等;數(shù)據(jù)存儲區(qū)可存儲根據(jù)服務(wù)器的使用所創(chuàng)建的數(shù)據(jù)等。在本發(fā)明具體實(shí)施方式中,存儲單元可以包括易失性存儲器,例如非揮發(fā)性動態(tài)隨機(jī)存取內(nèi)存(NonvolatileRandomAccessMemory,簡稱NVRAM)、相變化隨機(jī)存取內(nèi)存(PhaseChangeRAM,簡稱PRAM)、磁阻式隨機(jī)存取內(nèi)存(MagetoresistiveRAM,簡稱MRAM)等,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、電子可擦除可編程只讀存儲器(ElectricallyErasableProgrammableRead-OnlyMemory,簡稱EEPROM)、閃存器件,例如反或閃存(NORflashmemory)或是反及閃存(NANDflashmemory)。非易失存儲器儲存處理單元所執(zhí)行的操作系統(tǒng)及應(yīng)用程序。所述處理單元從所述非易失存儲器加載運(yùn)行程序與數(shù)據(jù)到內(nèi)存并將數(shù)字內(nèi)容儲存于大量儲存系統(tǒng)中。所述操作系統(tǒng)包括用于控制和管理常規(guī)系統(tǒng)任務(wù),例如內(nèi)存管理、存儲設(shè)備控制、電源管理等,以及有助于各種軟硬件之間通信的各種組件和/或驅(qū)動器。在本發(fā)明實(shí)施方式中,所述操作系統(tǒng)可以是Google公司的Android系統(tǒng)、Apple公司開發(fā)的iOS系統(tǒng)或Microsoft公司開發(fā)的Windows操作系統(tǒng)等,或者是Vxworks這類的嵌入式操作系統(tǒng)。所述應(yīng)用程序包括安裝在服務(wù)器上的任何應(yīng)用,比如取單系統(tǒng)、鎖人系統(tǒng)和派單系統(tǒng)。電源用于給服務(wù)器的不同部件進(jìn)行供電以維持其運(yùn)行。作為一般性理解,所述電 源可以是內(nèi)置的電池,例如常見的鋰離子電池、鎳氫電池等,也包括直接向服務(wù)器供電的外接電源,例如AC適配器等。在本發(fā)明的一些實(shí)施方式中,所述電源還可以作更為廣泛的定義,例如還可以包括電源管理系統(tǒng)、充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或逆變器、電源狀態(tài)指示器(如發(fā)光二極管),以及與服務(wù)器的電能生成、管理及分布相關(guān)聯(lián)的其他任何組件。本發(fā)明實(shí)施例提供一種處理數(shù)據(jù)的方法,如圖2所示,包括:101,將所述數(shù)據(jù)庫表劃分為至少兩個部分,并分別建立每一個部分與任務(wù)段的對應(yīng)關(guān)系。在本實(shí)施例中,對于數(shù)據(jù)庫表的劃分可以按照數(shù)據(jù)行的順序進(jìn)行劃分,得到至少兩個相互連續(xù)的部分,例如表一所示的,數(shù)據(jù)庫表的1至10000數(shù)據(jù)行劃分為第一部分,數(shù)據(jù)庫表的10001至20000數(shù)據(jù)行劃分為第二部分。數(shù)據(jù)庫名稱表名稱分區(qū)字段數(shù)據(jù)行處理情況DB1Tab1_1id1-10000NDB1Tab1_1id10001-20000N表一在本實(shí)施例中,一個任務(wù)段實(shí)際對應(yīng)所劃分出的一個部分的所有數(shù)據(jù)行的內(nèi)容,任務(wù)段所對應(yīng)的數(shù)據(jù)行的內(nèi)容被計算服務(wù)器提取并放入同一個線程進(jìn)行處理。102,為各任務(wù)段分配計算線程。其中,一個任務(wù)段分配一個線程,不同的任務(wù)段被分配的線程不同。具體的,線程的數(shù)量可以根據(jù)計算設(shè)備自身的配置,如CPU核數(shù)、是否支持超線程等認(rèn)為設(shè)定或是按照預(yù)設(shè)規(guī)則由計算設(shè)備動態(tài)調(diào)整。103,通過線程處理各自分配的任務(wù)段。在本實(shí)施例中,對于數(shù)據(jù)庫表的劃分為邏輯劃分,并非直接分割數(shù)據(jù)庫表, 從而并不需要對數(shù)據(jù)庫表中的大部分信息和數(shù)據(jù)庫中存儲的數(shù)據(jù)進(jìn)行處理,減少了接口占用和數(shù)據(jù)讀寫所需的時間,對于數(shù)據(jù)庫表劃分后得到的各個部分,服務(wù)器生成分段信息,用于記錄數(shù)據(jù)庫表的劃分情況。因此本實(shí)施例還包括:在建立每一個部分與任務(wù)段的對應(yīng)關(guān)系后,生成分段信息,所述分段信息包括:數(shù)據(jù)庫名稱、表名稱、分區(qū)字段、行標(biāo)識和處理情況信息。在通過線程處理各自分配的任務(wù)段后,更新所述分段信息。在本實(shí)施例中,在將所述數(shù)據(jù)庫表劃分為至少兩個部分之前,還包括以下具體方案,用于標(biāo)識數(shù)據(jù)行并劃分出數(shù)據(jù)庫表:通過自增長主鍵設(shè)置數(shù)據(jù)行的行標(biāo)識。例如:任務(wù)段服務(wù)器可以通過自增長的主鍵對數(shù)據(jù)庫表中的每一個數(shù)據(jù)行進(jìn)行編號,數(shù)據(jù)行的編號課作為所述航標(biāo)識。按照數(shù)據(jù)行的排列順序,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行垂直拆分,得到至少兩個數(shù)據(jù)庫表。例如:任務(wù)段服務(wù)器拆分?jǐn)?shù)據(jù)庫的內(nèi)容,具體可以將將數(shù)據(jù)庫垂直拆分,還可以根據(jù)相應(yīng)的分區(qū)鍵做水平拆分。并通過自增長的主鍵對數(shù)據(jù)庫表中的每一個數(shù)據(jù)行進(jìn)行編號。將數(shù)據(jù)庫表中的數(shù)據(jù)劃分為不同的部分,即進(jìn)行分段,并將如表二所示的分段信息存放在數(shù)據(jù)庫或者任務(wù)段服務(wù)器的緩存等存儲設(shè)備。數(shù)據(jù)庫名稱表名稱分區(qū)字段行編號處理情況DB1Tab1_1id1-10000NDB1Tab1_1id10001-20000NDB2Tab2_1id1-100000N表二在任務(wù)段服務(wù)器、計算服務(wù)器和數(shù)據(jù)庫等節(jié)點(diǎn)設(shè)備組成的應(yīng)用場景中,上述方法流程的具體實(shí)現(xiàn)包括:任務(wù)段服務(wù)器對所述數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行劃分得到至少兩個任務(wù)段,并生成所述分段信息,并將所述分段信息存放至同步隊列中。本實(shí)施例應(yīng)用在超大數(shù)據(jù)計算的場景中時,如圖3所示,可以通過全局任務(wù)段處理器執(zhí)行任務(wù)分配策略,并保證計算服務(wù)器中的每個實(shí)例是無狀態(tài)的,以便于進(jìn)行線性擴(kuò)展,最大限度的均衡的利用資源。并通過校驗器檢測故障并判定是否需要重做任務(wù)段。所述計算服務(wù)器從所述同步隊列中獲取所述分段信息,并根據(jù)所述分段信息從所述數(shù)據(jù)庫中讀取數(shù)據(jù),并通過預(yù)設(shè)的線程并行計算所讀取的數(shù)據(jù)。所述計算服務(wù)器在對所讀取的數(shù)據(jù)完成并行計算后,向所述任務(wù)段服務(wù)器發(fā)送結(jié)果信息,所述任務(wù)段服務(wù)器根據(jù)所述結(jié)果信息更新所述分段信息。例如:如表二所示的分段信息在所有劃分出的任務(wù)段執(zhí)行完畢后,更新得到表三數(shù)據(jù)庫名稱表名稱分區(qū)字段行編號處理情況DB1Tab1_1id1-10000YDB1Tab1_1id10001-20000YDB2Tab2_1id1-100000Y表三進(jìn)一步的,在本實(shí)施例中,當(dāng)檢測到數(shù)據(jù)處理異常時,重新處理出現(xiàn)異常時的任務(wù)段。例如:在如圖4所示的場景中,通過校驗器(或稱為任務(wù)校驗器(CS,CheckerServer))監(jiān)控任務(wù)段數(shù)據(jù)的更新情況并處理故障。本實(shí)施例通過對數(shù)據(jù)庫表劃分任務(wù)段,并將不同任務(wù)段導(dǎo)入不同的線程進(jìn)行處理,實(shí)現(xiàn)了多個線程同時并行處理一個數(shù)據(jù)庫表的功能,并且由于任務(wù)段 不同,因此當(dāng)數(shù)據(jù)處理出現(xiàn)異?;蚴菙?shù)據(jù)讀取出錯時,只需重新處理或讀取當(dāng)前任務(wù)段的數(shù)據(jù)內(nèi)容,并非現(xiàn)有技術(shù)中重新處理或讀取整個數(shù)據(jù)庫表,提高了數(shù)據(jù)處理的效率,降低了接口資源的占用情況。并且由于對于數(shù)據(jù)庫表的劃分為邏輯劃分,沒有對數(shù)據(jù)庫中的數(shù)據(jù)本身就像分割,因此不需要占用數(shù)據(jù)庫的讀寫接口的資源,只需通過關(guān)系型數(shù)據(jù)庫記錄任務(wù)段的映射信息(例如可以記錄為分段信息),因此進(jìn)一步提高了數(shù)據(jù)處理的效率,降低了接口資源的占用情況。結(jié)合本實(shí)施例提供的方案,以大于2000W條數(shù)據(jù)的數(shù)據(jù)庫為檢測實(shí)例進(jìn)行舉例說明:其中,數(shù)據(jù)庫中的原始數(shù)據(jù)的內(nèi)容包括:0;;商品1;地點(diǎn)1;銷售城市1;;;;底價1,銷售渠道1;;商品2;地點(diǎn)2;銷售城市2;;;;底價2,銷售渠道2;;商品3;地點(diǎn)1;銷售城市3;;;;底價3,銷售渠道…n;;商品n;地點(diǎn)n;銷售城市n;;;;底價n,銷售渠道處理步驟,如下:(TSS,TaskSegmentServer)、計算服務(wù)器(WS,WorkerServer)TSS將數(shù)據(jù)庫的內(nèi)容拆分10個部分,為每個部分分配10張表,總共拆分為100張數(shù)據(jù)庫表,并生成分段信息:TSS將上述分段信息放入同步隊列中。WS由多個無狀態(tài)的應(yīng)用服務(wù)器組成,WS從TSS上獲取任務(wù)段,并根據(jù)任務(wù)段從數(shù)據(jù)庫讀取數(shù)據(jù),通過多線程處理任務(wù)段。具體的,WS可以為每個線程分配處理一個任務(wù)段;或者WS可以為多個線程分配處理同一個任務(wù)段,其中,一個線程處理這一個任務(wù)段所對應(yīng)的數(shù)據(jù)行的一部分,比如:任務(wù)段所對應(yīng)的數(shù)據(jù)行1至10000,WS分配了4個線程處理該任務(wù)段,則按照數(shù)據(jù)行的編號1-2500、2501-5000、5001-7500、7501-10000的順序依次導(dǎo)入4個線程并行處理,從而實(shí)現(xiàn)多個線程并行處理一個任務(wù)段,擴(kuò)大并行處理的規(guī)模。WS將處理結(jié)果向TSS發(fā)送。TSS更新分段信息。CS校驗任務(wù)處理情況。并處理異常的任務(wù),比如重做出現(xiàn)異常的任務(wù)段。通過對2000W的數(shù)據(jù)進(jìn)行5億計算得到的結(jié)果集,時間變化和機(jī)器使用效率變化明顯,WS上實(shí)現(xiàn)平均每秒計算560萬結(jié)果集能力。結(jié)合上述方法流程方案,本發(fā)明實(shí)施例還提供一種如圖1a所示的數(shù)據(jù)處理系統(tǒng),包括:任務(wù)段服務(wù)器,用于將所述數(shù)據(jù)庫表劃分為至少兩個部分,并分別建立每一個部分與任務(wù)段的對應(yīng)關(guān)系;并為各任務(wù)段分配計算線程,其中,一個任務(wù) 段分配一個線程,不同的任務(wù)段被分配的線程不同;計算服務(wù)器,用于通過線程處理各自分配的任務(wù)段。其中,所述任務(wù)段服務(wù)器,具體用于通過自增長主鍵設(shè)置數(shù)據(jù)行的行標(biāo)識;并按照數(shù)據(jù)行的排列順序,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行垂直拆分,得到至少兩個數(shù)據(jù)庫表。進(jìn)一步的,所述任務(wù)段服務(wù)器,還用于在建立每一個部分與任務(wù)段的對應(yīng)關(guān)系后,生成分段信息,所述分段信息包括:數(shù)據(jù)庫名稱、表名稱、分區(qū)字段、行標(biāo)識和處理情況信息;并在通過線程處理各自分配的任務(wù)段后,更新所述分段信息。所述計算服務(wù)器,還用于當(dāng)檢測到數(shù)據(jù)處理異常時,重新處理出現(xiàn)異常時的任務(wù)段。本實(shí)施例提供的數(shù)據(jù)處理系統(tǒng),通過對數(shù)據(jù)庫表劃分任務(wù)段,并將不同任務(wù)段導(dǎo)入不同的線程進(jìn)行處理,實(shí)現(xiàn)了多個線程同時并行處理一個數(shù)據(jù)庫表的功能,并且由于任務(wù)段不同,因此當(dāng)數(shù)據(jù)處理出現(xiàn)異?;蚴菙?shù)據(jù)讀取出錯時,只需重新處理或讀取當(dāng)前任務(wù)段的數(shù)據(jù)內(nèi)容,并非現(xiàn)有技術(shù)中重新處理或讀取整個數(shù)據(jù)庫表,提高了數(shù)據(jù)處理的效率,降低了接口資源的占用情況。并且由于對于數(shù)據(jù)庫表的劃分為邏輯劃分,沒有對數(shù)據(jù)庫中的數(shù)據(jù)本身就像分割,因此不需要占用數(shù)據(jù)庫的讀寫接口的資源,只需通過關(guān)系型數(shù)據(jù)庫記錄任務(wù)段的映射信息(例如可以記錄為分段信息),因此進(jìn)一步提高了數(shù)據(jù)處理的效率,降低了接口資源的占用情況。本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,各個實(shí)施例之間相同相似的部分互相參見即可,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于設(shè)備實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較 簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-OnlyMemory,ROM)或隨機(jī)存儲記憶體(RandomAccessMemory,RAM)等。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁1 2 3