簽到類業(yè)務(wù)處理方法和裝置制造方法
【專利摘要】本發(fā)明提供了簽到類業(yè)務(wù)處理方法和裝置。其中,該方法包括:將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備,并將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存;檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫;檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù),針對讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。采用本發(fā)明,能夠提高簽到數(shù)據(jù)的訪問速度。
【專利說明】簽到類業(yè)務(wù)處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及網(wǎng)絡(luò)技術(shù),特別涉及簽到類業(yè)務(wù)處理方法和裝置。
【背景技術(shù)】
[0002]首先,對本發(fā)明涉及的縮略語和關(guān)鍵術(shù)語進(jìn)行定義:
[0003]事物,其是指抽象出來的信息,如用戶、話題、消息等;
[0004]維度,其是指描述一個事物的角度,如性別、省份、城市、學(xué)校、車次、航班等;
[0005]維度組合,其是指多個維度的組合;
[0006]簽到,其是指某個事物與一個或多個維度關(guān)聯(lián)起來的行為;比如,男用戶到A學(xué)校報道,其簽到的數(shù)據(jù)為(A學(xué)校、男用戶)。
[0007]簽到業(yè)務(wù),其是指收集用戶的簽到數(shù)據(jù),按照不同的維度組合進(jìn)行聚合,然后按照產(chǎn)品需求展示出來;比如,維度聚合為:(A學(xué)校、男用戶)、(A學(xué)校、女用戶)。
[0008]維度組合熱點(diǎn)數(shù)據(jù),其是指通過維度組合聚合起來的熱點(diǎn)數(shù)據(jù);
[0009]簽到流水?dāng)?shù)據(jù),其為截至到一段時間的簽到數(shù)據(jù),比如,截至到目前為止到A學(xué)校報道的同學(xué)名單。
[0010]以上對本發(fā)明涉及的縮略語和關(guān)鍵術(shù)語進(jìn)行了定義。
[0011]如上述針對簽到業(yè)務(wù)的定義,可以看出,簽到業(yè)務(wù)的特點(diǎn)是更多的按照不同的維度組合讀取簽到數(shù)據(jù)。而通常,維度組合比較多,這樣,按照維度組合聚合起來的簽到數(shù)據(jù)也就相應(yīng)比較多。如此,如何在眾多個按照維度組合聚合起來的簽到數(shù)據(jù)中提高簽到數(shù)據(jù)的訪問速度就成為當(dāng)前亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0012]本申請?zhí)峁┝撕灥筋悩I(yè)務(wù)處理方法和裝置,以提高簽到數(shù)據(jù)的訪問速度。
[0013]本申請?zhí)峁┑募夹g(shù)方案包括:
[0014]一種簽到類業(yè)務(wù)處理方法,包括:
[0015]將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備,并將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存;
[0016]檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫;
[0017]檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù),針對讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。
[0018]一種簽到類業(yè)務(wù)處理裝置,包括:
[0019]存放處理模塊,用于將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備,以及將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存;
[0020]檢測模塊,用于檢測設(shè)定的數(shù)據(jù)回寫時間和設(shè)定的數(shù)據(jù)列表更新時間;
[0021]回寫模塊,用于在所述檢測模塊檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫;
[0022]讀模塊,用于在所述檢測模塊檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù);
[0023]更新模塊,用于針對所述讀模塊讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。
[0024]由以上技術(shù)方案可以看出,本發(fā)明中,通過將簽到數(shù)據(jù)實(shí)時存放至緩存設(shè)備,目的在于用戶及其簽到的數(shù)據(jù)之間,只需要簡單的對應(yīng)關(guān)系,不需要復(fù)雜的結(jié)構(gòu)化數(shù)據(jù)來描述,并且,將簽到數(shù)據(jù)存放至緩存設(shè)備,能夠通過緩存的方式,實(shí)現(xiàn)在高并發(fā)的海量訪問環(huán)境下快速讀取用戶的簽到數(shù)據(jù),極大減少后續(xù)數(shù)據(jù)訪問的消耗,提升了服務(wù)性能。
[0025]進(jìn)一步地,本發(fā)明先是將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)暫時存放至內(nèi)存,等到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,就將所述內(nèi)存存放的流水?dāng)?shù)據(jù)回寫至數(shù)據(jù)庫,這能夠避免海量用戶并發(fā)訪問的壓力(有可能高達(dá)上百次/秒)會直接傳導(dǎo)至數(shù)據(jù)庫,壓垮數(shù)據(jù)庫。
【專利附圖】
【附圖說明】
[0026]圖1為本發(fā)明實(shí)施例提供的方法流程圖;
[0027]圖2為本發(fā)明實(shí)施例提供的實(shí)施例流程圖;
[0028]圖3為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0029]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。
[0030]為了解決簽到類業(yè)務(wù)處理時海量的流水?dāng)?shù)據(jù)、以及維度組合下數(shù)據(jù)列表的近實(shí)時更新,本發(fā)明提供了圖1所示的方法。
[0031]參見圖1,圖1為本發(fā)明實(shí)施例提供的方法流程圖。如圖1所示,該流程可包括以下步驟:
[0032]步驟101,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備,并將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存。
[0033]作為本發(fā)明的一個實(shí)施例,本發(fā)明中提及的內(nèi)存、緩存設(shè)備不同,內(nèi)存可為執(zhí)行本發(fā)明方法的主體比如服務(wù)器等服務(wù)進(jìn)程自帶的存儲介質(zhì),其在服務(wù)進(jìn)程重啟時,該服務(wù)進(jìn)程自帶的內(nèi)存中的數(shù)據(jù)會丟失,而緩存設(shè)備,獨(dú)立于服務(wù)進(jìn)程內(nèi)存的存儲介質(zhì),其不會隨之服務(wù)進(jìn)程的重啟而丟失原來存放的數(shù)據(jù)。
[0034]作為本發(fā)明的一個實(shí)施例,本發(fā)明中,緩存設(shè)備可為開發(fā)公司自研的海量內(nèi)存存儲系統(tǒng),比如Dcache。下面均以緩存設(shè)備為Dcache為例進(jìn)行描述。
[0035]本發(fā)明中,用戶的簽到數(shù)據(jù),是存儲在DCache中的,該存儲介質(zhì)具有讀寫性能高、可存儲海量數(shù)據(jù)、數(shù)據(jù)容災(zāi)能力強(qiáng)等優(yōu)點(diǎn),但數(shù)據(jù)結(jié)構(gòu)化差、存儲成本較高?;诖?,為節(jié)省DCache存儲成本,本發(fā)明盡可能避免DCache重復(fù)存儲數(shù)據(jù)?;诖?,本步驟101中,所述將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至DCache可包括:
[0036]在所述DCache已存放該用戶之前簽到時的簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)覆蓋掉所述DCache存放的該用戶之前簽到時的簽到數(shù)據(jù);
[0037]在所述DCache未存放該用戶之前簽到時的任何簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)寫入至所述DCache存放。
[0038]通過以上步驟,能夠盡可能避免DCache重復(fù)存儲數(shù)據(jù),節(jié)省DCache存儲成本。
[0039]還有,本發(fā)明中,之所以將簽到數(shù)據(jù)實(shí)時存放至DCache,目的在于用戶及其簽到的數(shù)據(jù)之間,只需要簡單的對應(yīng)關(guān)系,不需要復(fù)雜的結(jié)構(gòu)化數(shù)據(jù)來描述,并且,將簽到數(shù)據(jù)存放至DCache,能夠通過緩存的方式,實(shí)現(xiàn)在高并發(fā)的海量訪問環(huán)境下快速讀取用戶的簽到數(shù)據(jù),極大減少后續(xù)數(shù)據(jù)訪問的消耗,提升了服務(wù)性能。
[0040]同樣,本發(fā)明中,將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)暫時統(tǒng)一存放至內(nèi)存,也是為了減少后續(xù)數(shù)據(jù)訪問的消耗,這在下文進(jìn)行了描述。
[0041]步驟102,檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫。
[0042]作為本發(fā)明的一個實(shí)施例,所述數(shù)據(jù)庫具體實(shí)現(xiàn)時可為關(guān)系型的數(shù)據(jù)庫,該關(guān)系型數(shù)據(jù)庫具有容量大、容災(zāi)能力強(qiáng)、數(shù)據(jù)結(jié)構(gòu)化存儲、存儲成本較低等優(yōu)點(diǎn),但讀寫性能有限。因此,為了避免海量用戶并發(fā)訪問的壓力(有可能高達(dá)上百次/秒)會直接傳導(dǎo)至數(shù)據(jù)庫,壓垮數(shù)據(jù)庫,本發(fā)明先是將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)暫時存放至內(nèi)存,等到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,就將所述內(nèi)存存放的流水?dāng)?shù)據(jù)回寫至數(shù)據(jù)庫。
[0043]優(yōu)選地,本發(fā)明中,設(shè)定的數(shù)據(jù)回寫時間可在盡可能避免海量用戶并發(fā)訪問的壓力直接傳導(dǎo)至數(shù)據(jù)庫,壓垮數(shù)據(jù)庫的前提下依據(jù)實(shí)際情況設(shè)置,本發(fā)明并不具體限定。
[0044]需要說明的是,本發(fā)明中,為避免在進(jìn)程重啟、內(nèi)存數(shù)據(jù)丟失的情況下,可從持久化存儲中快速恢復(fù)數(shù)據(jù),提供對外服務(wù),本發(fā)明還需要定時將所述內(nèi)存中存放的流水?dāng)?shù)據(jù)寫入至持久化介質(zhì)。其中,該寫入方式可按照增加更新方式寫入。
[0045]步驟103,檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù),針對讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。
[0046]本發(fā)明中,維度組合的數(shù)據(jù)列表,是從數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù)實(shí)現(xiàn)的。維度組合的數(shù)據(jù)列表長度是固定的,一般視業(yè)務(wù)場景而定,因此在維度組合數(shù)目確定的前提下,存儲數(shù)據(jù)量的上限也是確定的。
[0047]還有,本發(fā)明中,維度組合的數(shù)據(jù)列表的更新依賴于設(shè)定的數(shù)據(jù)列表更新時間到達(dá),這樣做的理由,在于維度組合的數(shù)據(jù)列表并不需要被用戶(除了一些例外情況)實(shí)時看至IJ,而是允許一定時間的滯后。
[0048]還有,本發(fā)明中,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù)來更新維度組合的數(shù)據(jù)列表,在于流水?dāng)?shù)據(jù)的海量特點(diǎn),所以選取增量更新的方式,而非全量更新。
[0049]需要說明的是,本發(fā)明中,為避免在進(jìn)程重啟、內(nèi)存數(shù)據(jù)丟失的情況下,可從持久化存儲中快速恢復(fù)數(shù)據(jù),提供對外服務(wù),本發(fā)明還需要定時將所述內(nèi)存中存放的維度組合的數(shù)據(jù)列表寫入至持久化介質(zhì)。其中,該寫入方式可按照增加更新方式寫入。
[0050]至此,完成圖1所示的流程。
[0051]基于圖1所示流程,則用戶需要訪問某個維度組合的數(shù)據(jù)列表時,可執(zhí)行圖2所示流程。
[0052]參見圖2,圖2為本發(fā)明實(shí)施例提供的實(shí)例流程圖。其中,該圖2所示流程可應(yīng)用于下述場景(記為場景I):用戶在簽到完成后需要立即看到自己的簽到數(shù)據(jù)排在某一維度組合的數(shù)據(jù)列表中,也可應(yīng)用于另一場景(記為場景2):用戶因為需求直接讀取某一維度組合的數(shù)據(jù)列表中,與用戶什么時間完成的簽到無關(guān)。
[0053]如圖2所示,該流程可包括以下步驟:
[0054]步驟201,讀取所述用戶需要訪問的維度組合的數(shù)據(jù)列表。
[0055]步驟202,從所述DCache中讀取所述用戶最近的簽到數(shù)據(jù)。
[0056]步驟203,按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)。
[0057]需要說明的是,本發(fā)明中,為便于本步驟203中排列數(shù)據(jù),上述步驟101中的簽到數(shù)據(jù)、以及流水?dāng)?shù)據(jù)都需要被標(biāo)識存放時間,這樣,本步驟203中,就可以按照存放時間的前后順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)。
[0058]優(yōu)選地,本發(fā)明中,如果所述數(shù)據(jù)列表中存在與讀取的簽到數(shù)據(jù)重復(fù)的部分?jǐn)?shù)據(jù),則步驟203中,所述按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)包括:
[0059]合并重復(fù)的數(shù)據(jù),為合并后的數(shù)據(jù)分配一個存放時間;
[0060]按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及合并后的數(shù)據(jù)。
[0061]其中,上面描述中,為合并后的數(shù)據(jù)分配的存放時間可為當(dāng)前合并的時間,也可為被合并的任一數(shù)據(jù)的存放時間,本發(fā)明并不具體限定。
[0062]以上對本發(fā)明提供的方法進(jìn)行了描述,下面對本發(fā)明提供的裝置進(jìn)行描述:
[0063]參見圖3,圖3為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)圖。如圖3所示,該裝置包括:
[0064]存放處理模塊,用于將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備DCache,以及將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存。
[0065]作為本發(fā)明的一個實(shí)施例,本發(fā)明中提及的內(nèi)存、緩存設(shè)備不同,內(nèi)存可為執(zhí)行本發(fā)明方法的主體比如服務(wù)器等服務(wù)進(jìn)程自帶的存儲介質(zhì),其在服務(wù)進(jìn)程重啟時,該服務(wù)進(jìn)程自帶的內(nèi)存中的數(shù)據(jù)會丟失,而緩存設(shè)備,獨(dú)立于服務(wù)進(jìn)程內(nèi)存的存儲介質(zhì),其不會隨之服務(wù)進(jìn)程的重啟而丟失原來存放的數(shù)據(jù)。
[0066]檢測模塊,用于檢測設(shè)定的數(shù)據(jù)回寫時間和設(shè)定的數(shù)據(jù)列表更新時間;
[0067]回寫模塊,用于在所述檢測模塊檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫;
[0068]讀模塊,用于在所述檢測模塊檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù);
[0069]更新模塊,用于針對所述讀模塊讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。
[0070]作為本發(fā)明的一個實(shí)施例,所述存放處理模塊在所述DCache已存放該用戶之前簽到時的簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)覆蓋掉所述DCache存放的該用戶之前簽到時的簽到數(shù)據(jù);
[0071]在所述DCache未存放該用戶之前簽到時的任何簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)寫入至所述DCache存放。
[0072]本發(fā)明中,如圖3所示,該裝置進(jìn)一步包括:持久化模塊。
[0073]其中,所述持久化模塊,用于定時將所述內(nèi)存中存放的流水?dāng)?shù)據(jù)寫入至持久化介質(zhì);以及定時將所述內(nèi)存中存放的維度組合的數(shù)據(jù)列表寫入至持久化介質(zhì)。
[0074]本發(fā)明中,所述讀模塊還進(jìn)一步在用戶需要訪問某個維度組合的數(shù)據(jù)列表時,讀取所述用戶需要訪問的維度組合的數(shù)據(jù)列表,以及從所述DCache中讀取所述用戶最近的簽到數(shù)據(jù),并按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)。
[0075]作為本發(fā)明的一個實(shí)施例,如果所述數(shù)據(jù)列表中存在與讀取的簽到數(shù)據(jù)重復(fù)的部分?jǐn)?shù)據(jù),則所述讀模塊按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)可包括:
[0076]合并重復(fù)的數(shù)據(jù),為合并后的數(shù)據(jù)分配一個存放時間;
[0077]按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及合并后的數(shù)據(jù)。
[0078]至此,完成圖3所示的裝置結(jié)構(gòu)描述。
[0079]由以上技術(shù)方案可以看出,本發(fā)明中,通過將簽到數(shù)據(jù)實(shí)時存放至DCache,目的在于用戶及其簽到的數(shù)據(jù)之間,只需要簡單的對應(yīng)關(guān)系,不需要復(fù)雜的結(jié)構(gòu)化數(shù)據(jù)來描述,并且,將簽到數(shù)據(jù)存放至DCache,能夠通過緩存的方式,實(shí)現(xiàn)在高并發(fā)的海量訪問環(huán)境下快速讀取用戶的簽到數(shù)據(jù),極大減少后續(xù)數(shù)據(jù)訪問的消耗,提升了服務(wù)性能。
[0080]進(jìn)一步地,本發(fā)明先是將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)暫時存放至內(nèi)存,等到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,就將所述內(nèi)存存放的流水?dāng)?shù)據(jù)回寫至數(shù)據(jù)庫,這能夠避免海量用戶并發(fā)訪問的壓力(有可能高達(dá)上百次/秒)會直接傳導(dǎo)至數(shù)據(jù)庫,壓垮數(shù)據(jù)庫。
[0081]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種簽到類業(yè)務(wù)處理方法,其特征在于,該方法包括: 將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備,并將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存; 檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫; 檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù),針對讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備包括: 在所述緩存設(shè)備已存放該用戶之前簽到時的簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)覆蓋掉所述緩存設(shè)備存放的該用戶之前簽到時的簽到數(shù)據(jù); 在所述緩存設(shè)備未存放該用戶之前簽到時的任何簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)寫入至所述緩存設(shè)備存放。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括: 定時將所述內(nèi)存中存放的流水?dāng)?shù)據(jù)寫入至持久化介質(zhì)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括: 定時將所述內(nèi)存中存放的維度組合的數(shù)據(jù)列表寫入至持久化介質(zhì)。
5.根據(jù)權(quán)利要求1或4所述的方法,其特征在于,當(dāng)用戶需要訪問某個維度組合的數(shù)據(jù)列表時,該方法進(jìn)一步包括: 讀取所述用戶需要訪問的維度組合的數(shù)據(jù)列表; 從所述緩存設(shè)備中讀取所述用戶最近的簽到數(shù)據(jù); 按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,如果所述數(shù)據(jù)列表中存在與讀取的簽到數(shù)據(jù)重復(fù)的部分?jǐn)?shù)據(jù),則所述按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)包括: 合并重復(fù)的數(shù)據(jù),為合并后的數(shù)據(jù)分配一個存放時間; 按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及合并后的數(shù)據(jù)。
7.一種簽到類業(yè)務(wù)處理裝置,其特征在于,該裝置包括: 存放處理模塊,用于將用戶當(dāng)前簽到時的簽到數(shù)據(jù)存放至緩存設(shè)備,以及將用戶當(dāng)前簽到時的流水?dāng)?shù)據(jù)存放至內(nèi)存; 檢測模塊,用于檢測設(shè)定的數(shù)據(jù)回寫時間和設(shè)定的數(shù)據(jù)列表更新時間; 回寫模塊,用于在所述檢測模塊檢測到設(shè)定的數(shù)據(jù)回寫時間到達(dá)時,回寫所述內(nèi)存存放的流水?dāng)?shù)據(jù)至數(shù)據(jù)庫; 讀模塊,用于在所述檢測模塊檢測到設(shè)定的數(shù)據(jù)列表更新時間到達(dá)時,按照增量更新的方式從所述數(shù)據(jù)庫中讀取流水?dāng)?shù)據(jù); 更新模塊,用于針對所述讀模塊讀取的每一流水?dāng)?shù)據(jù),識別當(dāng)前所有維度組合的數(shù)據(jù)列表中是否存在該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,如果是,將該流水?dāng)?shù)據(jù)添加至該存在的維度組合的數(shù)據(jù)列表,如果否,新建一個該流水?dāng)?shù)據(jù)對應(yīng)的維度組合的數(shù)據(jù)列表,并將該流水?dāng)?shù)據(jù)添加至該新建的維度組合的數(shù)據(jù)列表。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述存放處理模塊在所述緩存設(shè)備已存放該用戶之前簽到時的簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)覆蓋掉所述緩存設(shè)備存放的該用戶之前簽到時的簽到數(shù)據(jù); 在所述緩存設(shè)備未存放該用戶之前簽到時的任何簽到數(shù)據(jù)時,將用戶當(dāng)前簽到時的簽到數(shù)據(jù)寫入至所述緩存設(shè)備存放。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,該裝置進(jìn)一步包括: 持久化模塊,用于定時將所述內(nèi)存中存放的流水?dāng)?shù)據(jù)寫入至持久化介質(zhì);以及定時將所述內(nèi)存中存放的維度組合的數(shù)據(jù)列表寫入至持久化介質(zhì)。
10.根據(jù)權(quán)利要求7或9所述的裝置,其特征在于,所述讀模塊還進(jìn)一步在用戶需要訪問某個維度組合的數(shù)據(jù)列表時,讀取所述用戶需要訪問的維度組合的數(shù)據(jù)列表,以及從所述緩存設(shè)備中讀取所述用戶最近的簽到數(shù)據(jù),并按照數(shù)據(jù)的存放時間順序依次排列讀取的所述數(shù)據(jù)列表中的數(shù)據(jù)、以及讀取的簽到數(shù)據(jù)。
【文檔編號】G06F17/30GK104281586SQ201310276250
【公開日】2015年1月14日 申請日期:2013年7月3日 優(yōu)先權(quán)日:2013年7月3日
【發(fā)明者】霍一杰, 李鑫竺 申請人:騰訊科技(深圳)有限公司