本申請涉及數(shù)據(jù)處理技術領域,尤其涉及一種數(shù)據(jù)獲取方法和裝置。
背景技術:
通常的數(shù)據(jù)處理流程是:數(shù)據(jù)獲取系統(tǒng)從數(shù)據(jù)表中獲取數(shù)據(jù),并發(fā)送給數(shù)據(jù)執(zhí)行系統(tǒng)進行處理,當數(shù)據(jù)執(zhí)行系統(tǒng)完成對一條數(shù)據(jù)的處理后才從數(shù)據(jù)表中刪除該條數(shù)據(jù),當一條數(shù)據(jù)正在執(zhí)行時,數(shù)據(jù)表中依然保留該條數(shù)據(jù)。如果數(shù)據(jù)獲取系統(tǒng)的頻率較高,數(shù)據(jù)執(zhí)行系統(tǒng)的頻率較低時,就可能會出現(xiàn)數(shù)據(jù)獲取系統(tǒng)獲取到之前獲取且當前在執(zhí)行過程中狀態(tài)還沒有改變的數(shù)據(jù)。這樣就會存在數(shù)據(jù)被重復獲取和執(zhí)行的問題,造成資源浪費。
技術實現(xiàn)要素:
本申請旨在至少在一定程度上解決相關技術中的技術問題之一。
為此,本申請的一個目的在于提出一種數(shù)據(jù)獲取方法,該方法可以避免在相鄰時間內(nèi)獲取到重復數(shù)據(jù),提高資源利用率。
本申請的另一個目的在于提出一種數(shù)據(jù)獲取裝置。
為達到上述目的,本申請第一方面實施例提出的數(shù)據(jù)獲取方法,包括:確定當前時間,并根據(jù)當前時間計算參數(shù),其中,相鄰時間內(nèi),不同的當前時間 對應不同的參數(shù);根據(jù)所述參數(shù)確定需要選取的數(shù)據(jù)的標識信息,其中,當參數(shù)不同時,對應的標識信息不同;獲取所述標識信息對應的數(shù)據(jù)。
本申請第一方面實施例提出的數(shù)據(jù)獲取方法,通過根據(jù)參數(shù)確定對應的標識信息,并獲取對應的數(shù)據(jù),且參數(shù)不同對應的標識信息不同,可以在參數(shù)不同時獲取到不同的數(shù)據(jù),由于相鄰時間內(nèi)不同的當前時間對應不同的參數(shù),因此,可以在相鄰時間內(nèi)獲取到不同的數(shù)據(jù),從而避免相鄰時間內(nèi)獲取到重復數(shù)據(jù),提高資源利用率。
為達到上述目的,本申請第二方面實施例提出的數(shù)據(jù)獲取裝置,包括:計算模塊,用于確定當前時間,并根據(jù)當前時間計算參數(shù),其中,相鄰時間內(nèi),不同的當前時間對應不同的參數(shù);確定模塊,用于根據(jù)所述參數(shù)確定需要選取的數(shù)據(jù)的標識信息,其中,當參數(shù)不同時,對應的標識信息不同;獲取模塊,用于獲取所述標識信息對應的數(shù)據(jù)。
本申請第二方面實施例提出的數(shù)據(jù)獲取裝置,通過根據(jù)參數(shù)確定對應的標識信息,并獲取對應的數(shù)據(jù),且參數(shù)不同對應的標識信息不同,可以在參數(shù)不同時獲取到不同的數(shù)據(jù),由于相鄰時間內(nèi)不同的當前時間對應不同的參數(shù),因此,可以在相鄰時間內(nèi)獲取到不同的數(shù)據(jù),從而避免相鄰時間內(nèi)獲取到重復數(shù)據(jù),提高資源利用率。
本申請附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請的實踐了解到。
附圖說明
本申請上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1是本申請一實施例提出的數(shù)據(jù)獲取方法的流程示意圖;
圖2是本申請另一實施例提出的數(shù)據(jù)獲取方法的流程示意圖;
圖3是本申請實施例中數(shù)據(jù)獲取系統(tǒng)和數(shù)據(jù)執(zhí)行系統(tǒng)的處理示意圖;
圖4是本申請另一實施例提出的數(shù)據(jù)獲取裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面詳細描述本申請的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的模塊或具有相同或類似功能的模塊。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本申請,而不能理解為對本申請的限制。相反,本申請的實施例包括落入所附加權利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
圖1是本申請一實施例提出的數(shù)據(jù)獲取方法的流程示意圖,該方法包括:
s11:確定當前時間,并根據(jù)當前時間計算參數(shù),其中,相鄰時間內(nèi),不同的當前時間對應不同的參數(shù)。
其中,可以預設計算規(guī)則,根據(jù)計算規(guī)則由當前時間計算得到參數(shù)。
根據(jù)計算規(guī)則的不同,相鄰時間對應的具體時間也可以不同。
例如,計算規(guī)則是對當前時間的秒數(shù)進行取模運算時,相鄰時間是相應的模的數(shù)值。取模運算的公式可以表示如下:
mod(當前時間的秒數(shù),n),其中,n是模。
例如,n=3時,假設當前時間是14:00:03,則取模運算后得到的余數(shù)是0,當前時間是14:00:04,則得到的余數(shù)是1,依此類推,當前時間是14:00:06,則余數(shù)是0。相應的,此時的相鄰時間是3秒。
s12:根據(jù)所述參數(shù)確定需要選取的數(shù)據(jù)的標識信息,其中,當參數(shù)不同時,對應的標識信息不同。
其中,數(shù)據(jù)的標識信息是指唯一標識數(shù)據(jù)的信息,當標識信息不同時,數(shù)據(jù)也是不同的。
標識信息例如是數(shù)據(jù)的主鍵(id)。
一些實施例中,可以根據(jù)預設的計算規(guī)則對標識信息進行運算,得到運算后的值,確定的標識信息是:對應的運算后的值與當前時間對應的參數(shù)相同的標識信息。
例如,計算規(guī)則與對當前時間的計算規(guī)則相同,如mod(id,n)。假設當前時間對應的參數(shù)是0,則確定的標識信息是取模運算后得到的余數(shù)是0的標識信息,例如,id是0、3、6等。
s13:獲取所述標識信息對應的數(shù)據(jù)。
在根據(jù)當前時間對應的參數(shù)確定出標識信息后,可以選取與確定出的標識信息對應的數(shù)據(jù)。
例如,參數(shù)是0時,選取id是0、3、6等的數(shù)據(jù)。
另外,在獲取數(shù)據(jù)時還可以設置其他的需要滿足的條件,因此,在選取id是0、3、6等的數(shù)據(jù)后,還可以根據(jù)其他的需要滿足的條件,在這些數(shù)據(jù)中選取滿足其他的需要滿足的條件的數(shù)據(jù)。
本實施例中,通過根據(jù)參數(shù)確定對應的標識信息,并獲取對應的數(shù)據(jù),且參數(shù)不同對應的標識信息不同,可以在參數(shù)不同時獲取到不同的數(shù)據(jù),由于相鄰時間內(nèi)不同的當前時間對應不同的參數(shù),因此,可以在相鄰時間內(nèi)獲取到不同的數(shù)據(jù),從而避免相鄰時間內(nèi)獲取到重復數(shù)據(jù),提高資源利用率。
圖2是本申請另一實施例提出的數(shù)據(jù)獲取方法的流程示意圖,該方法包括:
s21:確定當前時間,并對當前時間的秒數(shù)進行取模運算,得到余數(shù)。
取模運算的公式可以表示為:
mod(當前時間的秒數(shù),n),n是可設置的,例如n=3。
例如,當前時間是14:00:03,則取模運算后得到的余數(shù)是0,當前時間是14:00:04,則得到的余數(shù)是1,依此類推,當前時間是14:00:06,則余數(shù)是0。
s22:生成數(shù)據(jù)選取條件,所述條件包括:根據(jù)所述參數(shù)確定的所述標識信息需要滿足的條件。
其中,選取條件可以用結(jié)構(gòu)化查詢語言(structuredquerylanguage,sql)語句表示。
以標識信息是數(shù)據(jù)的id為例,本實施例中,選取條件不僅包括通常的選取條件,還包括數(shù)據(jù)的id需要滿足的條件。
本實施例中,id需要滿足的條件是:對標識信息進行取模運算后得到的余數(shù)是所述參數(shù),用公式表示為:
mod(id,n)=#mod#
其中,mod(id,n)表示對id進行取模運算,且模是n。
#mod#是傳入?yún)?shù),具體是根據(jù)當前時間的秒數(shù)計算得到的余數(shù)。
當然,可以理解的是,選取條件還可以包括其他的需要滿足的條件。
s23:根據(jù)數(shù)據(jù)選取條件,獲取數(shù)據(jù)。
例如,對當前時間的秒數(shù)進行取模運算后得到的余數(shù)是0,則如果一條數(shù)據(jù)的id取模運算后的余數(shù)是0,即,id是0、3、6等,可以獲取這些數(shù)據(jù)。
當然,可以理解的是,在還包括其他需要滿足的條件時,在余數(shù)是0的場景下,則獲取的數(shù)據(jù)是id是0、3、6等且滿足其他需要滿足的條件的數(shù)據(jù)。
數(shù)據(jù)獲取系統(tǒng)在獲取到數(shù)據(jù)后,可以發(fā)送給數(shù)據(jù)執(zhí)行系統(tǒng)進行處理。
例如,參見圖3,數(shù)據(jù)獲取系統(tǒng)可以先通過sql腳本從數(shù)據(jù)表中獲取滿足條件的數(shù)據(jù)(s31),之后,數(shù)據(jù)獲取系統(tǒng)將獲取的數(shù)據(jù)逐條發(fā)送給數(shù)據(jù)執(zhí)行系統(tǒng)(s32),之后,數(shù)據(jù)執(zhí)行系統(tǒng)對數(shù)據(jù)進行處理,例如開啟事務、鎖住單條記錄,進行后續(xù)的處理。
本實施例中,數(shù)據(jù)獲取系統(tǒng)采用的條件不僅包括通常的條件,還包括數(shù)據(jù)的id需要滿足的條件,如上述的mod(id,n)=#mod#。
其中的。#mod#是根據(jù)當前時間取模運算后得到的余數(shù),n是可設置的。
具體的,可以根據(jù)數(shù)據(jù)獲取系統(tǒng)和數(shù)據(jù)執(zhí)行系統(tǒng)的處理頻率確定相應參數(shù)。例如,數(shù)據(jù)獲取系統(tǒng)以秒為單位,每秒獲取一次數(shù)據(jù),則對當前時間進行運算時,可以具體是指對當前時間的秒數(shù)進行取模運算。又例如,n可以選為大于或等于數(shù)據(jù)執(zhí)行系統(tǒng)處理一條處理所需的時間。
因此,例如當前時間是14:00:03,03取模是0,定時任務觸發(fā)只獲取(或稱為撈取)數(shù)據(jù)的id模3取余為0的一批數(shù)據(jù)(當然還要滿足其他sql條件),下一秒定時任務觸發(fā)只撈取數(shù)據(jù)的id模3取余為1的一批數(shù)據(jù),再下一秒定時任務觸發(fā)只撈取數(shù)據(jù)的id模3取余為2的一批數(shù)據(jù),依次下去,到14:00:06,定時任務才會再撈取數(shù)據(jù)的id模3取余為0的一批數(shù)據(jù),這樣間隔3秒才會有機會撈取重復的數(shù)據(jù),但如果3秒以內(nèi)3秒前的被撈取的數(shù)據(jù)能執(zhí)行完成的話(狀態(tài)有所推進),那就不會再被撈出,就大大降低了由于撈取頻率過高導致被撈取到重復數(shù)據(jù)的可能性。數(shù)據(jù)獲取系統(tǒng)獲取到數(shù)據(jù)后,可以將該數(shù)據(jù)發(fā)送給數(shù)據(jù)執(zhí)行系統(tǒng)進行處理。
本實施例中,通過根據(jù)參數(shù)確定對應的標識信息,并獲取對應的數(shù)據(jù),且參數(shù)不同對應的標識信息不同,可以在參數(shù)不同時獲取到不同的數(shù)據(jù),由于相鄰時間內(nèi)不同的當前時間對應不同的參數(shù),因此,可以在相鄰時間內(nèi)獲取到不同的數(shù)據(jù),從而避免相鄰時間內(nèi)獲取到重復數(shù)據(jù),提高資源利用率。進一步的,進行取模運算時采用的模大于或等于數(shù)據(jù)執(zhí)行所需時間,可以避免數(shù)據(jù)被重復執(zhí)行,提升了數(shù)據(jù)執(zhí)行效率。
圖4是本申請另一實施例提出的數(shù)據(jù)獲取裝置的結(jié)構(gòu)示意圖。該裝置40包括:計算模塊41、確定模塊42和獲取模塊43。
計算模塊41,用于確定當前時間,并根據(jù)當前時間計算參數(shù),其中,相鄰時間內(nèi),不同的當前時間對應不同的參數(shù);
可選的,所述計算模塊41具體用于:確定當前時間,根據(jù)當前時間進行取模運算,得到余數(shù)。
進一步的,計算模塊41用于根據(jù)當前時間進行取模運算,得到余數(shù),包括:對當前時間的秒數(shù)進行取模運算,得到余數(shù)。
其中,可以預設計算規(guī)則,根據(jù)計算規(guī)則由當前時間計算得到參數(shù)。
根據(jù)計算規(guī)則的不同,相鄰時間對應的具體時間也可以不同。
例如,計算規(guī)則是對當前時間的秒數(shù)進行取模運算時,相鄰時間是相應的模的數(shù)值。取模運算的公式可以表示如下:
mod(當前時間的秒數(shù),n),其中,n是模。
例如,n=3時,假設當前時間是14:00:03,則取模運算后得到的余數(shù)是0,當前時間是14:00:04,則得到的余數(shù)是1,依此類推,當前時間是14:00:06,則余數(shù)是0。相應的,此時的相鄰時間是3秒。
確定模塊42,用于根據(jù)所述參數(shù)確定需要選取的數(shù)據(jù)的標識信息,其中, 當參數(shù)不同時,對應的標識信息不同。
可選的,確定模塊42具體用于:將取模運算后得到的余數(shù)是所述參數(shù)的標識信息,確定為需要選取的數(shù)據(jù)的標識信息。
具體的,確定模塊42用于:生成數(shù)據(jù)選取條件,所述條件包括:根據(jù)所述參數(shù)確定的所述標識信息需要滿足的條件;根據(jù)所述標識信息需要滿足的條件,確定需要選取的數(shù)據(jù)的標識信息。
其中,所述標識信息需要滿足的條件,包括:對標識信息進行取模運算后得到的余數(shù)是所述參數(shù)。
一些實施例中,根據(jù)當前時間進行取模運算時采用的模,與對標識信息進行取模運算時采用的模相同。
一些實施例中,取模運算時采用的模大于或等于每條數(shù)據(jù)的執(zhí)行所需時間。
可選的,所述數(shù)據(jù)的標識信息是數(shù)據(jù)的主鍵。
其中,數(shù)據(jù)的標識信息是指唯一標識數(shù)據(jù)的信息,當標識信息不同時,數(shù)據(jù)也是不同的。
標識信息例如是數(shù)據(jù)的主鍵(id)。
一些實施例中,可以根據(jù)預設的計算規(guī)則對標識信息進行運算,得到運算后的值,確定的標識信息是:對應的運算后的值與當前時間對應的參數(shù)相同的標識信息。
例如,計算規(guī)則與對當前時間的計算規(guī)則相同,如mod(id,n)。假設當前時間對應的參數(shù)是0,則確定的標識信息是取模運算后得到的余數(shù)是0的標識信息,例如,id是0、3、6等。
獲取模塊43,用于獲取所述標識信息對應的數(shù)據(jù)。
在根據(jù)當前時間對應的參數(shù)確定出標識信息后,可以選取與確定出的標識信息對應的數(shù)據(jù)。
例如,參數(shù)是0時,選取id是0、3、6等的數(shù)據(jù)。
另外,在獲取數(shù)據(jù)時還可以設置其他的需要滿足的條件,因此,在選取id是0、3、6等的數(shù)據(jù)后,還可以根據(jù)其他的需要滿足的條件,在這些數(shù)據(jù)中選取滿足其他的需要滿足的條件的數(shù)據(jù)。
本實施例中,通過根據(jù)參數(shù)確定對應的標識信息,并獲取對應的數(shù)據(jù),且參數(shù)不同對應的標識信息不同,可以在參數(shù)不同時獲取到不同的數(shù)據(jù),由于相鄰時間內(nèi)不同的當前時間對應不同的參數(shù),因此,可以在相鄰時間內(nèi)獲取到不同的數(shù)據(jù),從而避免相鄰時間內(nèi)獲取到重復數(shù)據(jù),提高資源利用率。進一步的,進行取模運算時采用的模大于或等于數(shù)據(jù)執(zhí)行所需時間,可以避免數(shù)據(jù)被重復執(zhí)行,提升了數(shù)據(jù)執(zhí)行效率。
需要說明的是,在本申請的描述中,術語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。此外,在本申請的描述中,除非另有說明,“多個”的含義是指至少兩個。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應被本申請的實施例所屬技術領域的技術人員所理解。
應當理解,本申請的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí) 行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領域公知的下列技術中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
本技術領域的普通技術人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
此外,在本申請各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。
上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本申請的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本申請的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本申請的限制,本領域的普通技術人員在本申請的 范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。