用于數(shù)據(jù)列表的操作方法和裝置制造方法
【專利摘要】本申請公開了一種用于數(shù)據(jù)列表的操作方法和裝置,其中,該方法包括:接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;從計算命令中獲取計算所需的特征因子和邏輯指令,其中,特征因子用于指示當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),邏輯指令用于指示數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;獲取與特征因子和邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,已操作數(shù)據(jù)列表是預(yù)先根據(jù)當(dāng)前數(shù)據(jù)列表中的特征因子執(zhí)行邏輯指令得到的;對獲取的已操作數(shù)據(jù)列表進(jìn)行計算命令中指示的計算操作。本申請解決了現(xiàn)有技術(shù)在對數(shù)據(jù)列表進(jìn)行操作時比較邏輯和運(yùn)算邏輯是相關(guān)的,從而造成了重復(fù)的運(yùn)算和不必要的計算資源的浪費(fèi)的技術(shù)問題。
【專利說明】用于數(shù)據(jù)列表的操作方法和裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種用于數(shù)據(jù)列表的操作方法和裝置。
【背景技術(shù)】
[0002]目前,在對大批量的新舊兩份數(shù)據(jù)列表進(jìn)行比較處理時,一般都會對兩份數(shù)據(jù)的特征因子進(jìn)行循環(huán)比較。比較時,主要是通過創(chuàng)建多個存儲列表來單獨(dú)存儲不同用途的比較處理后的數(shù)據(jù)單元,在完成比較后,后面的計算將依賴這些獨(dú)立的數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算。在對數(shù)據(jù)列表進(jìn)行比較或者是對新的數(shù)據(jù)列表進(jìn)行計算場景中,這種解決方案是比較常用的。
[0003]然而,從數(shù)據(jù)列表的比較和數(shù)據(jù)列表的計算兩個邏輯步驟來看,兩者之間的關(guān)系是相互依存關(guān)系,只有基于列表的比較,才能執(zhí)行數(shù)據(jù)列表的計算;由于存在對數(shù)據(jù)列表的計算,列表的比較才有存在的意義,這種依賴關(guān)系的耦合度很高。同時,對于不同的比較和計算場景,由于數(shù)據(jù)結(jié)果的差異,不斷重復(fù)上面的比較和計算邏輯也是必然的,在處理過程中數(shù)據(jù)的通用性差。
[0004]目前,針對比較和計算的場景,采用比較數(shù)據(jù)列表中數(shù)據(jù)單元的內(nèi)部特征屬性,將特征屬性作為比較因子,由于應(yīng)用用途的差異,特征因子隨應(yīng)用場景的變化而變。例如,當(dāng)數(shù)據(jù)單元是學(xué)生時,特征屬性包含:學(xué)號、名字以及性別等,這些特征屬性都可以作為特征因子,例如“學(xué)號”就可以作為特征因子使用。根據(jù)對應(yīng)的特征因子,循環(huán)計算多份列表,就可以得到按照該特征因子劃分的新的數(shù)據(jù)列表,例如:按照“學(xué)號”對數(shù)據(jù)列表進(jìn)行劃分,可以得到“新報到學(xué)生列表”類似的應(yīng)用數(shù)據(jù),后續(xù)的邏輯再根據(jù)上述比較后的數(shù)據(jù)列表執(zhí)行后續(xù)的邏輯處理。然而,當(dāng)再需要用到學(xué)號對應(yīng)的數(shù)據(jù)列表時,還需要再次對該數(shù)據(jù)列表進(jìn)行邏輯比較運(yùn)算。這種處理方式需要依賴具體的業(yè)務(wù)場景下的特征因子,對比較劃分和計算之間的數(shù)據(jù)列表沒有獨(dú)立抽取,從而導(dǎo)致在相似的場景下需要進(jìn)行重復(fù)的集合運(yùn)算。
[0005]例如,存在兩份數(shù)據(jù)列表A和B,在對數(shù)據(jù)列表A和B進(jìn)行計算的時候,可能在一個運(yùn)算中需要計算A和B的并集,在另外一個運(yùn)算中可能也需要計算A和B的并集,根據(jù)并集的結(jié)果進(jìn)行后續(xù)的運(yùn)算。例如,數(shù)據(jù)列表A是A班學(xué)生的學(xué)生信息、數(shù)據(jù)列表B是B班學(xué)生的學(xué)生信息,根據(jù)現(xiàn)有的處理方式計算A和B兩班學(xué)生總成績的時候需要對A和B兩個數(shù)據(jù)列表進(jìn)行并集運(yùn)算,再計算總成績,在統(tǒng)計兩班學(xué)生的性別分布的時候,也需要對A和B兩個數(shù)據(jù)列表進(jìn)行并集運(yùn)算。這樣在進(jìn)行兩種不同的計算邏輯的時候,都需要進(jìn)行一次A與B的并集運(yùn)算,從而造成了不必要的運(yùn)算操作,增加了系統(tǒng)的計算負(fù)荷。特別是到對多個數(shù)據(jù)列表進(jìn)行聯(lián)合的運(yùn)算的時候,出現(xiàn)需要重復(fù)進(jìn)行集合運(yùn)算的操作的概率更大。
[0006]針對上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0007]本申請?zhí)峁┝艘环N用于數(shù)據(jù)列表的操作方法和裝置,以至少解決現(xiàn)有技術(shù)中在對數(shù)據(jù)列表進(jìn)行操作時比較邏輯和運(yùn)算邏輯是相關(guān)的,每次進(jìn)行運(yùn)算邏輯之前都需要進(jìn)行相應(yīng)的比較邏輯,從而造成了重復(fù)的運(yùn)算和不必要的計算資源的浪費(fèi)的技術(shù)問題。
[0008]根據(jù)本申請的一個方面,提供了一種用于數(shù)據(jù)列表的操作方法,包括:接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;從計算命令中獲取計算所需的特征因子和邏輯指令,其中,特征因子用于指示當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),邏輯指令用于指示數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;獲取與特征因子和邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,已操作數(shù)據(jù)列表是預(yù)先根據(jù)當(dāng)前數(shù)據(jù)列表中的特征因子執(zhí)行邏輯指令得到的;對獲取的已操作數(shù)據(jù)列表進(jìn)行計算命令中指示的計算操作。
[0009]優(yōu)選地,在接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令之前,上述方法還包括:獲取多于一個的當(dāng)前數(shù)據(jù)列表與特征因子;按照不同的集合邏輯關(guān)系對多于一個當(dāng)前數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算;將邏輯運(yùn)算后得到的結(jié)果作為已操作數(shù)據(jù)列表進(jìn)行存儲。
[0010]優(yōu)選地,將邏輯運(yùn)算后得到的結(jié)果作為已操作數(shù)據(jù)列表進(jìn)行存儲的步驟包括:按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對已操作數(shù)據(jù)列表進(jìn)行命名;對命名后的已操作數(shù)據(jù)列表進(jìn)行存儲。
[0011]優(yōu)選地,已操作數(shù)據(jù)列表存儲在緩存服務(wù)器中。
[0012]優(yōu)選地,集合邏輯關(guān)系包括以下至少之一:交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、以及子集運(yùn)算。
[0013]根據(jù)本申請的另一個方面,提供了一種用于數(shù)據(jù)列表的操作裝置,包括:接收單元,用于接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;第一獲取單元,用于從計算命令中獲取計算所需的特征因子和邏輯指令,其中,特征因子用于指示當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),邏輯指令用于指示數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;第二獲取單元,用于獲取與特征因子和邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,已操作數(shù)據(jù)列表是預(yù)先根據(jù)當(dāng)前數(shù)據(jù)列表中的特征因子執(zhí)行邏輯指令得到的;計算單元,用于對獲取的已操作數(shù)據(jù)列表進(jìn)行計算命令中指示的計算操作。
[0014]優(yōu)選地,上述裝置還包括:第三獲取單元,用于獲取多于一個的當(dāng)前數(shù)據(jù)列表與特征因子;邏輯運(yùn)算單元,用于按照不同的集合邏輯關(guān)系對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算;存儲單元,用于將邏輯運(yùn)算后得到的結(jié)果作為已操作數(shù)據(jù)列表進(jìn)行存儲。
[0015]優(yōu)選地,存儲單元包括:命名模塊,用于按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對已操作數(shù)據(jù)列表進(jìn)行命名;存儲模塊,用于對命名后的已操作數(shù)據(jù)列表進(jìn)行存儲。
[0016]優(yōu)選地,已操作數(shù)據(jù)列表存儲在緩存服務(wù)器中。
[0017]優(yōu)選地,集合邏輯關(guān)系包括以下至少之一:交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、以及子集運(yùn)算。
[0018]在本申請中,通過預(yù)先存儲多個數(shù)據(jù)列表在不同特征因子下對應(yīng)于不同集合邏輯關(guān)系的新的數(shù)據(jù)列表,從而使得在需要進(jìn)行比較邏輯運(yùn)算時,從這些列表中選擇所需的數(shù)據(jù)列表進(jìn)行運(yùn)算即可,解決了現(xiàn)有技術(shù)中在對數(shù)據(jù)列表進(jìn)行操作時比較邏輯和運(yùn)算邏輯是相關(guān)的,每次進(jìn)行運(yùn)算邏輯之前都需要進(jìn)行相應(yīng)的比較邏輯,從而造成了重復(fù)的運(yùn)算和不必要的計算資源的浪費(fèi)的技術(shù)問題,達(dá)到了避免重復(fù)的比較邏輯的運(yùn)算,減少計算資源浪費(fèi)的技術(shù)效果?!緦@綀D】
【附圖說明】
[0019]此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
[0020]圖1是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作系統(tǒng)的一種優(yōu)選結(jié)構(gòu)框圖;
[0021]圖2是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作裝置的一種優(yōu)選結(jié)構(gòu)框圖;
[0022]圖3是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作裝置的另一種優(yōu)選結(jié)構(gòu)框圖;
[0023]圖4是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作裝置的又一種優(yōu)選結(jié)構(gòu)框圖;
[0024]圖5是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作方法的一種優(yōu)選流程圖;
[0025]圖6是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作方法的另一種優(yōu)選流程圖;
[0026]圖7是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作方法的又一種優(yōu)選流程圖;
[0027]圖8是根據(jù)本申請實(shí)施例的用于數(shù)據(jù)列表的操作系統(tǒng)總體結(jié)構(gòu)圖;
[0028]圖9是根據(jù)本申請實(shí)施例的集合數(shù)據(jù)的處理流程圖。
【具體實(shí)施方式】
[0029]下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0030]在描述本申請的各實(shí)施例的進(jìn)一步細(xì)節(jié)之前,將參考圖1來描述可用于實(shí)現(xiàn)本申請的原理的一個合適的計算體系結(jié)構(gòu)。在以下描述中,除非另外指明,否則將參考由一個或多個計算機(jī)執(zhí)行的動作和操作的符號表示來描述本申請的各實(shí)施例。由此,可以理解,有時被稱為計算機(jī)執(zhí)行的這類動作和操作包括計算機(jī)的處理單元對以結(jié)構(gòu)化形式表示數(shù)據(jù)的電信號的操縱。這一操縱轉(zhuǎn)換了數(shù)據(jù)或在計算機(jī)的存儲器系統(tǒng)中的位置上維護(hù)它,這以本領(lǐng)域的技術(shù)人員都理解的方式重配置或改變了計算機(jī)的操作。維護(hù)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是具有數(shù)據(jù)的格式所定義的特定屬性的存儲器的物理位置。然而,盡管在上述上下文中描述本申請,但它并不意味著限制性的,如本領(lǐng)域的技術(shù)人員所理解的,后文所描述的動作和操作的各方面也可用硬件來實(shí)現(xiàn)。
[0031]轉(zhuǎn)向附圖,其中相同的參考標(biāo)號指代相同的元素,本申請的原理被示為在一個合適的計算環(huán)境中實(shí)現(xiàn)。以下描述基于所述的本申請的實(shí)施例,并且不應(yīng)認(rèn)為是關(guān)于此處未明確描述的替換實(shí)施例而限制本申請。
[0032]圖1示出了可用于這些設(shè)備的一個示例計算機(jī)體系結(jié)構(gòu)的示意圖。出于描述的目的,所繪的體系結(jié)構(gòu)僅為合適環(huán)境的一個示例,并非對本申請的使用范圍或功能提出任何局限。也不應(yīng)將該計算系統(tǒng)解釋為對圖1所示的任一組件或其組合具有任何依賴或需求。
[0033]本申請的原理可以使用其它通用或?qū)S糜嬎慊蛲ㄐ怒h(huán)境或配置來操作。適用于本申請的眾所周知的計算系統(tǒng)、環(huán)境和配置的示例包括但不限于,個人計算機(jī)、服務(wù)器,多處理器系統(tǒng)、基于微處理的系統(tǒng)、小型機(jī)、大型計算機(jī)、以及包括任一上述系統(tǒng)或設(shè)備的分布式計算環(huán)境。
[0034]在其最基本的配置中,圖1中的用于數(shù)據(jù)列表的操作系統(tǒng)100至少包括:一個網(wǎng)站的服務(wù)器102以及一個或多個客戶端104。服務(wù)器102可以包括但不限于微處理器MCU或可編程邏輯器件FPGA等的處理裝置、用于存儲數(shù)據(jù)的存儲裝置以及與客戶端通信的傳輸裝置;客戶端104可以包括:微處理器MCU、與服務(wù)器通信的傳輸裝置、與用戶交互的顯示裝置。在本說明書和權(quán)利要求書中,“系統(tǒng)”也可以被定義為能夠執(zhí)行軟件、固件或微碼來實(shí)現(xiàn)功能的任何硬件組件或硬件組件的組合用于數(shù)據(jù)列表的操作100甚至可以是分布式的,以實(shí)現(xiàn)分布式功能。
[0035]如本申請所使用的,術(shù)語“模塊”、“組件”或“單元”可以指在用于數(shù)據(jù)列表的操作100上執(zhí)行的軟件對象或例程。此處所描述的不同組件、模塊、單元、引擎和服務(wù)可被實(shí)現(xiàn)為在用于數(shù)據(jù)列表的操作100上執(zhí)行(例如,作為單獨(dú)的線程)的對象或進(jìn)程。盡管此處所描述的系統(tǒng)和方法較佳地以軟件來實(shí)現(xiàn),但是硬件或軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
[0036]實(shí)施例1
[0037]圖2是根據(jù)本申請實(shí)施例用于數(shù)據(jù)列表的操作裝置200的一種優(yōu)選的結(jié)構(gòu)示意圖,優(yōu)選的,本實(shí)施例中的裝置位于服務(wù)器102上或者客戶端104上。
[0038]如圖2所示,用于數(shù)據(jù)列表的操作裝置200包括:接收單元202、第一獲取單元204、第二獲取單元206以及計算單元208。下面對該裝置的幾個單元的功能進(jìn)行具體描述:
[0039]接收單元202,用于接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;
[0040]第一獲取單元204,用于從計算命令中獲取計算所需的特征因子和邏輯指令,其中,特征因子用于指示當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),邏輯指令用于指示數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;
[0041]例如,對于學(xué)生數(shù)據(jù)列表,當(dāng)需要計算同班級學(xué)生在兩個學(xué)期的學(xué)生成績時,就需要該班在兩個學(xué)期的學(xué)生數(shù)據(jù)列表的并集,以得到同時存在兩個學(xué)期的學(xué)生信息,再利用得到的數(shù)據(jù)執(zhí)行成績計算邏輯,因此其對應(yīng)的邏輯指令就是:并操作,即,計算兩個數(shù)據(jù)列表的并集,對應(yīng)的特征因子是:學(xué)號。
[0042]第二獲取單元206,用于獲取與特征因子和邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,已操作數(shù)據(jù)列表是預(yù)先根據(jù)當(dāng)前數(shù)據(jù)列表中的特征因子執(zhí)行邏輯指令得到的;
[0043]考慮到對數(shù)據(jù)的集合邏輯運(yùn)算就存在以下幾種關(guān)系:交集、并集、差集以及子集,因此,可以預(yù)先存儲對應(yīng)于多于一個的數(shù)據(jù)列表之間進(jìn)行集合邏輯運(yùn)算后得到的數(shù)據(jù)列表,這樣在計算時,只需要從預(yù)先存儲的多個已操作的數(shù)據(jù)列表中選擇所需的數(shù)據(jù)列表即可,而不需要每次用到相同的集合邏輯運(yùn)算時都需要進(jìn)行一次集合的邏輯計算,即將邏輯運(yùn)算與計算指令分開進(jìn)行獨(dú)立運(yùn)算。例如,對于上述的計算同班級兩個學(xué)期的學(xué)生信息,從預(yù)先存儲的多個已操作數(shù)據(jù)列表中,找到該班級兩個學(xué)期所對應(yīng)的兩張數(shù)據(jù)列表基于學(xué)號這個特征因子的交集運(yùn)算所對應(yīng)的數(shù)據(jù)列表即可。
[0044]計算單元208,用于對獲取的已操作數(shù)據(jù)列表進(jìn)行計算命令中指示的計算操作。
[0045]在接收到的計算指令中,既存在對數(shù)據(jù)集合的邏輯運(yùn)算又存在對數(shù)據(jù)集合的計算操作,在獲取到其對應(yīng)的邏輯運(yùn)算的數(shù)據(jù)列表后,基于該邏輯運(yùn)算后的數(shù)據(jù)列表進(jìn)行計算操作即可,從而適應(yīng)于不同的計算操作。
[0046]在本優(yōu)選實(shí)施方式中,通過預(yù)先存儲多個數(shù)據(jù)列表在不同特征因子下對應(yīng)于不同集合邏輯關(guān)系的新的數(shù)據(jù)列表,從而使得在需要進(jìn)行比較邏輯運(yùn)算時,從這些列表中選擇所需的列表進(jìn)行運(yùn)算即可,解決了現(xiàn)有技術(shù)中在對數(shù)據(jù)列表進(jìn)行操作時比較邏輯和運(yùn)算邏輯是相關(guān)的,每次進(jìn)行運(yùn)算邏輯之前都需要進(jìn)行相應(yīng)的比較邏輯,從而造成了重復(fù)的運(yùn)算和不必要的計算資源的浪費(fèi)的技術(shù)問題,達(dá)到了避免重復(fù)的比較邏輯的運(yùn)算,減少計算資源浪費(fèi)的技術(shù)效果。
[0047]在一個優(yōu)選實(shí)施方式中,如圖3所示,上述裝置還包括:第三獲取單元302,用于獲取多于一個的當(dāng)前數(shù)據(jù)列表與特征因子;邏輯運(yùn)算單元304,用于按照不同的集合邏輯關(guān)系對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算;存儲單元306,用于將邏輯運(yùn)算后得到的結(jié)果作為已操作數(shù)據(jù)列表進(jìn)行存儲。
[0048]優(yōu)選地,如圖4所示,存儲單元306包括:命名模塊402,用于按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對已操作數(shù)據(jù)列表進(jìn)行命名;存儲模塊404,用于對命名后的已操作數(shù)據(jù)列表進(jìn)行存儲。即,獲取多個具有相同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)列表,并提取該數(shù)據(jù)結(jié)構(gòu)中的多個特征因子,即多個數(shù)據(jù)項(xiàng);上述的多個數(shù)據(jù)列表按照每種集合邏輯運(yùn)算得到對應(yīng)于不同特征因子的不同的數(shù)據(jù)列表。
[0049]在對上述得到的已操作數(shù)據(jù)列表進(jìn)行存儲時,可以按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對已操作數(shù)據(jù)列表進(jìn)行命名;對命名后的已操作數(shù)據(jù)列表進(jìn)行存儲。
[0050]例如,對于數(shù)據(jù)結(jié)構(gòu)為Student (id, name, sex, class)的多個數(shù)據(jù)列表,以id作為特征因子的情況下,按照不同的集合邏輯關(guān)系得到的數(shù)據(jù)列表可以按照如下格式的名稱存儲:“id=student單元”,從而表明該數(shù)據(jù)列表的集合時對應(yīng)于id這個特征因子的不同的集合邏輯運(yùn)算下的數(shù)據(jù)列表。
[0051]考慮到在對大批量的集合數(shù)據(jù)進(jìn)行計算時,如果集合運(yùn)算后的結(jié)果直接存放在內(nèi)存中,勢必需要足夠的內(nèi)存支持,會影響應(yīng)用在執(zhí)行其他邏輯時內(nèi)存分配資源切換的消耗,因此,可以將結(jié)果數(shù)據(jù)存儲在cache服務(wù)器上,從而可以釋放這部分的存儲資源,后續(xù)計算邏輯通過一定的規(guī)則從cache服務(wù)中獲取相應(yīng)的數(shù)據(jù)集合,即,優(yōu)選地,已操作數(shù)據(jù)列表存儲在緩存服務(wù)器中。
[0052]在各個優(yōu)選實(shí)施方式中,集合邏輯關(guān)系包括但不限于以下至少之一:交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、以及子集運(yùn)算。
[0053]實(shí)施例2
[0054]基于上述用于數(shù)據(jù)列表的操作裝置,本申請實(shí)施例還提供了一種用于數(shù)據(jù)列表的操作方法,如圖5所示,包括以下步驟:
[0055]步驟S502:接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;
[0056]步驟S504:從計算命令中獲取計算所需的特征因子和邏輯指令,其中,特征因子用于指示當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),邏輯指令用于指示數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;
[0057]例如,對于學(xué)生數(shù)據(jù)列表,當(dāng)需要計算同班級學(xué)生在兩個學(xué)期的學(xué)生成績時,就需要該班在兩個學(xué)期的學(xué)生數(shù)據(jù)列表的并集,以得到同時存在兩個學(xué)期的學(xué)生信息,再利用得到的數(shù)據(jù)執(zhí)行成績計算邏輯,因此其對應(yīng)的邏輯指令就是:并操作,,即,計算兩個數(shù)據(jù)列表的并集,對應(yīng)的特征因子是:學(xué)號。
[0058]步驟S506:獲取與特征因子和邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,已操作數(shù)據(jù)列表是預(yù)先根據(jù)當(dāng)前數(shù)據(jù)列表中的特征因子執(zhí)行邏輯指令得到的;
[0059]考慮到對數(shù)據(jù)的執(zhí)行邏輯運(yùn)算時存在以下幾種集合邏輯關(guān)系:交集、并集、差集以及子集,因此,可以預(yù)先存儲對應(yīng)于多于一個的數(shù)據(jù)列表之間進(jìn)行邏輯運(yùn)算后得到的數(shù)據(jù)列表,這樣在計算時,只需要從預(yù)先存儲的多個已操作的數(shù)據(jù)列表中選擇所需的數(shù)據(jù)列表即可,而不需要每次用到相同的集合邏輯運(yùn)算時都需要進(jìn)行一次集合的邏輯計算,即將邏輯運(yùn)算與計算指令分開進(jìn)行獨(dú)立運(yùn)算。例如,對于上述的計算同班級兩個學(xué)期的學(xué)生信息,從預(yù)先存儲的多個已操作數(shù)據(jù)列表中,找到該班級兩個學(xué)期所對應(yīng)的兩張數(shù)據(jù)列表基于學(xué)號這個特征因子的交集運(yùn)算所對應(yīng)的數(shù)據(jù)列表即可。
[0060]步驟S508:對獲取的已操作數(shù)據(jù)列表進(jìn)行計算命令中指示的計算操作。
[0061]在接收到的計算指令中,既存在對數(shù)據(jù)集合的邏輯運(yùn)算又存在對數(shù)據(jù)集合的計算操作,在獲取到其對應(yīng)的邏輯運(yùn)算的數(shù)據(jù)列表后,基于該邏輯運(yùn)算后的數(shù)據(jù)列表進(jìn)行計算操作即可,從而適應(yīng)于不同的計算操作。
[0062]在本優(yōu)選實(shí)施方式中,通過預(yù)先存儲多個數(shù)據(jù)列表在不同特征因子下對應(yīng)于不同集合邏輯關(guān)系的新的數(shù)據(jù)列表,從而使得在需要進(jìn)行比較邏輯運(yùn)算時,從這些列表中選擇所需的列表進(jìn)行運(yùn)算即可,解決了現(xiàn)有技術(shù)中在對數(shù)據(jù)列表進(jìn)行操作時比較邏輯和運(yùn)算邏輯是相關(guān)的,每次進(jìn)行運(yùn)算邏輯之前都需要進(jìn)行相應(yīng)的比較邏輯,從而造成了重復(fù)的運(yùn)算和不必要的計算資源的浪費(fèi)的技術(shù)問題,達(dá)到了避免重復(fù)的比較邏輯的運(yùn)算,減少計算資源浪費(fèi)的技術(shù)效果。
[0063]在一個優(yōu)選實(shí)施方式中,需要預(yù)先生成對應(yīng)于不同特征因子不同集合邏輯關(guān)系的已操作數(shù)據(jù)列表,如圖6所示,可以按照以下步驟實(shí)現(xiàn):
[0064]步驟S602:獲取多于一個的當(dāng)前數(shù)據(jù)列表與特征因子;即,獲取多個具有相同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)列表,并提取該數(shù)據(jù)結(jié)構(gòu)中的多個特征因子,即多個數(shù)據(jù)項(xiàng)。
[0065]步驟S604:按照不同的集合邏輯關(guān)系對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算;即,對上述的多個數(shù)據(jù)列表按照每種集合邏輯運(yùn)算得到對應(yīng)于不同特征因子的不同的數(shù)據(jù)列表。
[0066]步驟S606:將邏輯運(yùn)算后得到的結(jié)果作為已操作數(shù)據(jù)列表進(jìn)行存儲。
[0067]在對上述得到的已操作數(shù)據(jù)列表進(jìn)行存儲時,可以按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對已操作數(shù)據(jù)列表進(jìn)行命名;對命名后的已操作數(shù)據(jù)列表進(jìn)行存儲。
[0068]例如,對于數(shù)據(jù)結(jié)構(gòu)為Student (id, name, sex, class)的多個數(shù)據(jù)列表,以id作為特征因子的情況下,按照不同的集合邏輯關(guān)系得到的數(shù)據(jù)列表可以按照如下格式的名稱存儲:“id=student單元”,從而表明該數(shù)據(jù)列表的集合時對應(yīng)于id這個特征因子的不同的集合邏輯運(yùn)算下的數(shù)據(jù)列表。
[0069]考慮到在對大批量的集合數(shù)據(jù)進(jìn)行計算時,如果集合運(yùn)算后的結(jié)果直接存放在內(nèi)存中,勢必需要足夠的內(nèi)存支持,會影響應(yīng)用在執(zhí)行其他邏輯時內(nèi)存分配資源切換的消耗,因此,可以將結(jié)果數(shù)據(jù)存儲在cache服務(wù)器上,從而可以釋放這部分的存儲資源,后續(xù)計算邏輯通過一定的規(guī)則從cache服務(wù)中獲取相應(yīng)的數(shù)據(jù)集合,即,優(yōu)選地,已操作數(shù)據(jù)列表存儲在緩存服務(wù)器中。
[0070]在各個優(yōu)選實(shí)施方式中,集合邏輯關(guān)系包括但不限于以下至少之一:交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、以及子集運(yùn)算。
[0071]實(shí)施例3
[0072]本申請?zhí)峁┝艘环N優(yōu)選的實(shí)施例來進(jìn)一步對本申請進(jìn)行解釋,但是值得注意的是,該優(yōu)選實(shí)施例只是為了更好的描述本申請,并不構(gòu)成對本申請不當(dāng)?shù)南薅ā?br>
[0073]考慮到現(xiàn)有技術(shù)中有特征因子的使用,但是沒有充分利用特征因子和比較劃分?jǐn)?shù)據(jù)列表的關(guān)系。即,在特征因子作用下,根據(jù)特征因子劃分后的業(yè)務(wù)用途使用特定組合數(shù)據(jù)列表,比如按照ID因子比較,得到兩個列表都存在的數(shù)據(jù)列表,就是兩個列表的交集部分。從本質(zhì)來說,可以認(rèn)為特征因子對于多個數(shù)據(jù)列表的比較結(jié)果,可以存在以下幾種關(guān)系:交集、并集、差集、子集。如果特征因子和集合能夠在計算關(guān)系之間獨(dú)立運(yùn)算,那么在不同的比較場景時都可以采用相同的數(shù)據(jù)列表集合,減少了重復(fù)運(yùn)算的概率,從而減少了運(yùn)算負(fù)荷。
[0074]比較數(shù)據(jù)邏輯和計算處理邏輯的耦合度很高,比較邏輯依賴于應(yīng)用場景,例如:在對同班級在兩個學(xué)期的學(xué)生成績進(jìn)行統(tǒng)計的時候,就需要比較兩個學(xué)期學(xué)生數(shù)據(jù)列表數(shù)據(jù),得到同時存在兩個學(xué)期的學(xué)生信息,再利用上面的數(shù)據(jù)執(zhí)行成績計算邏輯。
[0075]在本實(shí)施例中,可以通過提取新舊兩份數(shù)據(jù)列表中數(shù)據(jù)單元的特征因子值,按照特征因子值轉(zhuǎn)換成“特征因子=數(shù)據(jù)單元”結(jié)構(gòu)的兩份因子特征數(shù)據(jù)列表的方式進(jìn)行數(shù)據(jù)列表的計算;接著將兩份特征因子特征數(shù)據(jù)列表送到通用的集合運(yùn)算模型,最終得到多份對應(yīng)于該特征因子的列表,可以通過cache緩存服務(wù)機(jī)制緩存上述的列表;在后續(xù)的計算邏輯中,只需要從cache中提取符合計算要求的特征因子列表即可。通過上述方式,基于通用集合劃分模型、cache緩存機(jī)制、計算依賴通用集合類方法有效地解決了現(xiàn)有技術(shù)中對數(shù)據(jù)列表進(jìn)行操作時邏輯運(yùn)算通用性低造成的重復(fù)計算而導(dǎo)致的浪費(fèi)計算資源的技術(shù)問題。
[0076]從本質(zhì)來說,可以認(rèn)為特征因子對于多個數(shù)據(jù)列表的比較結(jié)果,存在以下幾種關(guān)系:交集、并集、差集以及子集。通過將特征因子和集合關(guān)系獨(dú)立運(yùn)算,使得不同的比較場景都可以采用同一個數(shù)據(jù)列表集合。
[0077]在本實(shí)施例中,通過特征因子實(shí)現(xiàn)比較邏輯的抽象化、集合化,以及比較結(jié)果緩存處理技術(shù),實(shí)現(xiàn)了處理大批量多數(shù)據(jù)列表比較和計算的通用性,提高了對數(shù)據(jù)列表計算的性能。在本技術(shù)方案中,如圖7所示,包括以下步驟:
[0078]步驟S702:比較邏輯接收多個具有相同數(shù)據(jù)單元的數(shù)據(jù)列表,以及特征因子。
[0079]步驟S704:按照特征因子值轉(zhuǎn)換原有數(shù)據(jù)列表為“特征因子=數(shù)據(jù)單元”的數(shù)據(jù)列表。
[0080]步驟S706:使用集合模型,按照因子值計算得到集合邏輯關(guān)系的四種新關(guān)系數(shù)據(jù)列表:交集數(shù)據(jù)列表、并集數(shù)據(jù)列表、差集數(shù)據(jù)列表、以及子集數(shù)據(jù)列表。
[0081]步驟S708:使用命名規(guī)則化方式,將新列表使用緩存技術(shù)暫存在cache服務(wù)器上。
[0082]步驟S710:后續(xù)運(yùn)算根據(jù)需要從cache中按照命名規(guī)則獲取所需的新集合數(shù)據(jù)列表。
[0083]通過上述方式,實(shí)現(xiàn)了基于不同應(yīng)用場景下比較劃分邏輯和計算邏輯的分離,同時在不同應(yīng)用場景下,都可以采用通用的比較集合劃分組件,減少了重復(fù)性的計算操作。
[0084]圖8是本申請實(shí)施例的系統(tǒng)總體結(jié)構(gòu)圖,如圖8所示,描述了基于特征因子的集合劃分多個數(shù)據(jù)列表的通用系統(tǒng)流程,對于多個數(shù)據(jù)列表需要比較和計算的場景,將數(shù)據(jù)列表中單個數(shù)據(jù)單元的特征因子提取出來,例如:Student(id, name, sex, class)單元。在某些場景提取id作為特征因子,將多個數(shù)據(jù)列表及特征因子作為參數(shù)交給集合比較劃分組件單元處理,集合處理單元通過特征因子轉(zhuǎn)換存儲列表,比如Student數(shù)據(jù)單元列表,存儲格式為:“id=stUdent單元”組成新的數(shù)據(jù)列表,將轉(zhuǎn)換后的數(shù)據(jù)列表采用集合算法計算得到四種基本集合關(guān)系,輸出四種關(guān)系對應(yīng)的列表數(shù)據(jù)。輸出可以支持兩種方式:caChe緩存或者直接輸出結(jié)果列表,cache緩存機(jī)制在大數(shù)據(jù)量比較可以提高性能,一般應(yīng)用的計算直接獲取新的數(shù)據(jù)列表進(jìn)行計算即可。
[0085]圖9是集合數(shù)據(jù)的流程圖,如圖9所示:數(shù)據(jù)列表A和B、對應(yīng)的特征因子是F1,集
合劃分關(guān)系運(yùn)算規(guī)則如下:
【權(quán)利要求】
1.一種用于數(shù)據(jù)列表的操作方法,其特征在于,包括:接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;從所述計算命令中獲取計算所需的特征因子和邏輯指令,其中,所述特征因子用于指示所述當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),所述邏輯指令用于指示所述數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;獲取與所述特征因子和所述邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,所述已操作數(shù)據(jù)列表是預(yù)先根據(jù)所述當(dāng)前數(shù)據(jù)列表中的所述特征因子執(zhí)行所述邏輯指令得到的;對所述獲取的已操作數(shù)據(jù)列表進(jìn)行所述計算命令中指示的計算操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令之前,所述方法還包括:獲取所述多于一個的當(dāng)前數(shù)據(jù)列表與所述特征因子;按照不同的集合邏輯關(guān)系對所述多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算;將邏輯運(yùn)算后得到的結(jié)果作為所述已操作數(shù)據(jù)列表進(jìn)行存儲。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,將邏輯運(yùn)算后得到的結(jié)果作為所述已操作數(shù)據(jù)列表進(jìn)行存儲的步驟包括:按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對所述已操作數(shù)據(jù)列表進(jìn)行命名;對命名后的所述已操作數(shù)據(jù)列表進(jìn)行存儲。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述已操作數(shù)據(jù)列表存儲在緩存服務(wù)器中。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的方法,其特征在于,所述集合邏輯關(guān)系包括以下至少之一:交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、以及子集運(yùn)算。
6.一種用于數(shù)據(jù)列表的操作裝置,其特征在于,包括:接收單元,用于接收用于對多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行計算的計算命令;第一獲取單元,用于從所述計算命令中獲取計算所需的特征因子和邏輯指令,其中,所述特征因子用于指示所述當(dāng)前數(shù)據(jù)列表中參與計算的數(shù)據(jù)項(xiàng),所述邏輯指令用于指示所述數(shù)據(jù)項(xiàng)所進(jìn)行的邏輯運(yùn)算;第二獲取單元,用于獲取與所述特征因子和所述邏輯指令所指示的集合邏輯關(guān)系對應(yīng)的、預(yù)先存儲的已操作數(shù)據(jù)列表,其中,所述已操作數(shù)據(jù)列表是預(yù)先根據(jù)所述當(dāng)前數(shù)據(jù)列表中的所述特征因子執(zhí)行所述邏輯指令得到的;計算單元,用于對所述獲取的已操作數(shù)據(jù)列表進(jìn)行所述計算命令中指示的計算操作。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括:第三獲取單元,用于獲取所述多于一個的當(dāng)前數(shù)據(jù)列表與所述特征因子;邏輯運(yùn)算單元,用于按照不同的集合邏輯關(guān)系對所述多于一個的當(dāng)前數(shù)據(jù)列表進(jìn)行邏輯運(yùn)算;存儲單元,用于將邏輯運(yùn)算后得到的結(jié)果作為所述已操作數(shù)據(jù)列表進(jìn)行存儲。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述存儲單元包括:命名模塊,用于按照生成該已操作數(shù)據(jù)列表所對應(yīng)的集合邏輯關(guān)系、以及特征因子對所述已操作數(shù)據(jù)列表進(jìn)行命名;存儲模塊,用于對命名后的所述已操作數(shù)據(jù)列表進(jìn)行存儲。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述已操作數(shù)據(jù)列表存儲在緩存服務(wù)器中。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的裝置,其特征在于,所述集合邏輯關(guān)系包括以下至少之一:交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、以及子集運(yùn)算。
【文檔編號】G06F17/30GK103631797SQ201210301726
【公開日】2014年3月12日 申請日期:2012年8月22日 優(yōu)先權(quán)日:2012年8月22日
【發(fā)明者】陳古榮, 梅升賢, 葉江華 申請人:阿里巴巴集團(tuán)控股有限公司