本發(fā)明涉及數(shù)據(jù)統(tǒng)計(jì)
技術(shù)領(lǐng)域:
,特別涉及一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法及裝置。
背景技術(shù):
:隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,更多的人選擇利用網(wǎng)絡(luò)來獲取信息,對(duì)于發(fā)布這些信息的網(wǎng)站的服務(wù)器而言,在消息系統(tǒng)中產(chǎn)生了龐大的消息流,尤其是訪問量比較巨大的網(wǎng)站服務(wù)器而言,在消息系統(tǒng)中產(chǎn)生的消息流更為龐大。為了更好的服務(wù)用戶,運(yùn)維人員需要對(duì)服務(wù)器接收的消息流中的某些信息進(jìn)行統(tǒng)計(jì),進(jìn)而采取應(yīng)對(duì)措施。因此,對(duì)消息流中的某些信息進(jìn)行統(tǒng)計(jì)是十分必要的。目前,現(xiàn)有技術(shù)中針對(duì)消息系統(tǒng)中的消息流中的某些信息進(jìn)行統(tǒng)計(jì),采用的是先將服務(wù)器接收的消息流進(jìn)行處理,把處理后的消息流存儲(chǔ)到數(shù)據(jù)庫中,然后利用SQL語句統(tǒng)計(jì)數(shù)據(jù)庫中的信息,得到統(tǒng)計(jì)結(jié)果。應(yīng)用現(xiàn)有技術(shù),需要將消息中的數(shù)據(jù)寫入數(shù)據(jù)庫,然后針對(duì)數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。但在實(shí)際應(yīng)用中,網(wǎng)站的服務(wù)器接收消息的數(shù)量非常龐大,如果將這些消息中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,將會(huì)占用大量的數(shù)據(jù)庫的存儲(chǔ)空間。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例的目的在于提供一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法及裝置,以減少數(shù)據(jù)統(tǒng)計(jì)過程中,對(duì)數(shù)據(jù)庫存儲(chǔ)空間的占用。為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法,所述方法包括:將消息系統(tǒng)中的每一條消息抽象為一個(gè)虛擬表的一行記錄;根據(jù)接收到的統(tǒng)計(jì)指令,對(duì)所述虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。較佳的,所述將消息系統(tǒng)中的每一條消息抽象為一個(gè)虛擬表的一行記錄,包括:將消息系統(tǒng)中的消息流按照預(yù)設(shè)時(shí)間窗口進(jìn)行分段;針對(duì)每一段消息流,將該段消息流中的每一條消息抽象為一個(gè)虛擬表的一行記錄;所述根據(jù)接收到的統(tǒng)計(jì)指令,對(duì)所述虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),包括:根據(jù)當(dāng)前接收到的統(tǒng)計(jì)指令,對(duì)當(dāng)前虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。較佳的,所述每一條消息包含的數(shù)據(jù)的格式符合鍵值對(duì)格式。較佳的,所述方法還包括:輸出當(dāng)前統(tǒng)計(jì)結(jié)果。較佳的,所述輸出當(dāng)前統(tǒng)計(jì)結(jié)果,包括:將當(dāng)前統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中。為達(dá)到上述目的,本發(fā)明實(shí)施例還提供了一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)裝置,所述裝置包括:抽象模塊和統(tǒng)計(jì)模塊,其中,所述抽象模塊,用于將消息系統(tǒng)中的每一條消息抽象為一個(gè)虛擬表的一行記錄;所述統(tǒng)計(jì)模塊,用于根據(jù)接收到的統(tǒng)計(jì)指令,對(duì)所述虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。較佳的,所述抽象模塊,具體用于:將消息系統(tǒng)中的消息流按照預(yù)設(shè)時(shí)間窗口進(jìn)行分段;針對(duì)每一段消息流,將該段消息流中的每一條消息抽象為一個(gè)虛擬表的一行記錄;所述統(tǒng)計(jì)模塊,具體用于:根據(jù)當(dāng)前接收到的統(tǒng)計(jì)指令,對(duì)當(dāng)前虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。較佳的,所述每一條消息包含的數(shù)據(jù)的格式符合鍵值對(duì)格式。較佳的,所述裝置還包括輸出模塊,用于輸出當(dāng)前統(tǒng)計(jì)結(jié)果。較佳的,所述輸出模塊,具體用于:將當(dāng)前統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中。本發(fā)明實(shí)施例提供了一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法及裝置,方法包括:將消息系統(tǒng)中的每一條消息抽象為一個(gè)虛擬表的一行記錄;根據(jù)接收到的統(tǒng)計(jì)指令,對(duì)所述虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。應(yīng)用本發(fā)明實(shí)施例,針對(duì)消息系統(tǒng)生成的虛擬表是只存在緩存中的,無需占用數(shù)據(jù)庫的存儲(chǔ)空間的,因此,應(yīng)用本發(fā)明實(shí)施例,減少了數(shù)據(jù)統(tǒng)計(jì)過程中,對(duì)數(shù)據(jù)庫存儲(chǔ)空間的占用。當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品或方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法的流程示意圖;圖2為本發(fā)明實(shí)施例提供的另一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法的流程示意圖;圖3為本發(fā)明實(shí)施例提供的一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的另一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為解決現(xiàn)有技術(shù)問題,本發(fā)明實(shí)施例提供了一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法及裝置,下面首先就本發(fā)明實(shí)施例提供的一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法進(jìn)行介紹。圖1為本發(fā)明實(shí)施例提供的一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法的流程示意圖,可以包括:S101:將消息系統(tǒng)中的每一條消息抽象為一個(gè)虛擬表的一行記錄。具體的,可以將消息系統(tǒng)中的消息流按照預(yù)設(shè)時(shí)間窗口進(jìn)行分段;針對(duì)每一段消息流,將該段消息流中的每一條消息抽象為一個(gè)虛擬表的一行記錄。通常情況下,每一條消息包含的數(shù)據(jù)的格式符合鍵值對(duì)格式。在實(shí)際應(yīng)用中,假設(shè)一個(gè)大型消息流的時(shí)長為30分鐘,預(yù)設(shè)時(shí)間窗口為1分鐘,該大型消息流就被分成了30段時(shí)長為1分鐘的消息流,也可以把預(yù)設(shè)時(shí)間窗口設(shè)置為30分鐘。假設(shè),在當(dāng)前時(shí)間窗口內(nèi)接收到的當(dāng)前消息流包含5條消息,每個(gè)消息包含4個(gè)鍵值對(duì),如下所示:MassageID:50231,userID:zhangluzhi,videoID:1129876098,request_time:0.083MassageID:50232,userID:haiminxue,videoID:1129876095,request_time:0.211MassageID:50233,userID:zhangludu,videoID:1129870001,request_time:0.057MassageID:50234,userID:jiayibindun,videoID:1129870009,request_time:0.077MassageID:50235,userID:shihuanlen,videoID:1129875667,request_time:0.180將該段消息流中的每一條消息抽象為一個(gè)虛擬表的一行記錄,該段消息流中共有5條消息,對(duì)應(yīng)虛擬表中的5條記錄。通常情況下,可以把每一條消息中的所有鍵值對(duì)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)到虛擬表中,也可以將消息中的部分鍵值對(duì)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)到虛擬表中。根據(jù)上述步驟,得到的虛擬表如表1所示:表1MessageIDuserIDvideoIDrequest_time50231zhangluzhi11298760980.08350232haiminxue11298760950.21150233zhangludu11298700010.05750234jiayibindun11298700090.07750235shihuanlen11298756670.180S102:根據(jù)接收到的統(tǒng)計(jì)指令,對(duì)所述虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。具體的,根據(jù)當(dāng)前接收到的統(tǒng)計(jì)指令,對(duì)當(dāng)前虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。在實(shí)際應(yīng)用中,可以根據(jù)接收到的統(tǒng)計(jì)指令中包含的SQL(結(jié)構(gòu)化查詢語言)語句,統(tǒng)計(jì)S101中的虛擬表中MessageID、userID、videoID和request_time中的一種或多種。假設(shè),用戶需要的是針對(duì)當(dāng)前信息流的平均request_time。S101中的虛擬表的平均request_time(響應(yīng)時(shí)間):平均request_time=(0.083+0.211+0.057+0.077+0.180)/5=0.1216秒應(yīng)用本發(fā)明圖1所示實(shí)施例,針對(duì)消息系統(tǒng)生成的虛擬表是只存在緩存中的,無需占用數(shù)據(jù)庫的存儲(chǔ)空間的,因此,應(yīng)用本發(fā)明實(shí)施例,減少了在針對(duì)消息系統(tǒng)中的消息中的數(shù)據(jù)統(tǒng)計(jì)過程中,對(duì)數(shù)據(jù)庫存儲(chǔ)空間的占用。在當(dāng)前時(shí)間窗口的數(shù)據(jù)流進(jìn)行統(tǒng)計(jì)結(jié)束后,用戶可以更改統(tǒng)計(jì)指令中的SQL語句,再次發(fā)送統(tǒng)計(jì)指令。如果統(tǒng)計(jì)指令中的SQL語句要求統(tǒng)計(jì)userID(用戶身份標(biāo)識(shí))號(hào)碼的數(shù)量。在下一時(shí)間窗口內(nèi)統(tǒng)計(jì)userID號(hào)碼的數(shù)量。應(yīng)用本發(fā)明圖1所示實(shí)施例,可以在當(dāng)前時(shí)間窗口結(jié)束時(shí),結(jié)束統(tǒng)計(jì)過程,再重新接收統(tǒng)計(jì)指令,根據(jù)統(tǒng)計(jì)指令中的SQL語句,針對(duì)下一時(shí)間窗口的數(shù)據(jù)流進(jìn)行數(shù)據(jù)統(tǒng)計(jì),可以靈活的進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。圖2為本發(fā)明實(shí)施例提供的另一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)方法的流程示意圖。圖2所示實(shí)施例在圖1所示實(shí)施例的基礎(chǔ)上增加了S103:輸出當(dāng)前統(tǒng)計(jì)結(jié)果。具體的,將當(dāng)前統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中。將S101中的統(tǒng)計(jì)的平均request_time=0.1216秒輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中。具體的,假設(shè),用戶需要的是針對(duì)該大型消息流的平均request_time。根據(jù)輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中的30個(gè)統(tǒng)計(jì)結(jié)果,進(jìn)行針對(duì)大型消息流的平均request_time的計(jì)算。在實(shí)際應(yīng)用中,在當(dāng)前時(shí)間窗口結(jié)束時(shí),將針對(duì)當(dāng)前消息流的統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中,再統(tǒng)計(jì)下一消息流的統(tǒng)計(jì)結(jié)果,直至將所有的消息流統(tǒng)計(jì)完成,針對(duì)該大型消息流,共輸出30個(gè)統(tǒng)計(jì)結(jié)果。應(yīng)用本發(fā)明圖2所示實(shí)施例,將針對(duì)消息系統(tǒng)的統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中,可以使運(yùn)維人員直觀的看到針對(duì)消息系統(tǒng)中各消息流的統(tǒng)計(jì)結(jié)果,也可以讓用戶對(duì)輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中的統(tǒng)計(jì)結(jié)果進(jìn)行處理。與上述方法實(shí)施例相對(duì)應(yīng),本發(fā)明還提供了一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)裝置。圖3為本發(fā)明實(shí)施例提供的一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)裝置的結(jié)構(gòu)示意圖,包括:抽象模塊301和統(tǒng)計(jì)模塊302,其中,抽象模塊301,用于將消息系統(tǒng)中的每一條消息抽象為一個(gè)虛擬表的一行記錄。具體的,所述抽象模塊,具體用于:將消息系統(tǒng)中的消息流按照預(yù)設(shè)時(shí)間窗口進(jìn)行分段;針對(duì)每一段消息流,將該段消息流中的每一條消息抽象為一個(gè)虛擬表的一行記錄。通常情況下,每一條消息包含的數(shù)據(jù)的格式符合鍵值對(duì)格式。統(tǒng)計(jì)模塊302,用于根據(jù)接收到的統(tǒng)計(jì)指令,對(duì)所述虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。具體的,根據(jù)當(dāng)前接收到的統(tǒng)計(jì)指令,對(duì)當(dāng)前虛擬表中記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。應(yīng)用本發(fā)明實(shí)施例圖3所示實(shí)施例,針對(duì)消息系統(tǒng)生成的虛擬表是只存在緩存中的,無需占用數(shù)據(jù)庫的存儲(chǔ)空間的,因此,應(yīng)用本發(fā)明實(shí)施例,減少了在針對(duì)消息系統(tǒng)中的消息中的數(shù)據(jù)統(tǒng)計(jì)過程中,對(duì)數(shù)據(jù)庫存儲(chǔ)空間的占用。應(yīng)用本發(fā)明圖3所示實(shí)施例,可以在當(dāng)前時(shí)間窗口結(jié)束時(shí),結(jié)束統(tǒng)計(jì)過程,再重新接收統(tǒng)計(jì)指令,根據(jù)統(tǒng)計(jì)指令中的SQL語句,針對(duì)下一時(shí)間窗口的數(shù)據(jù)流進(jìn)行數(shù)據(jù)統(tǒng)計(jì),可以靈活的進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。圖4為本發(fā)明實(shí)施例提供的另一種針對(duì)消息系統(tǒng)的數(shù)據(jù)統(tǒng)計(jì)裝置的結(jié)構(gòu)示意圖。圖4所示實(shí)施例在圖3所示實(shí)施例的基礎(chǔ)上增加了輸出模塊303,用于輸出當(dāng)前統(tǒng)計(jì)結(jié)果。具體的,所述輸出模塊,具體用于:將當(dāng)前統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中。應(yīng)用本發(fā)明圖4所示實(shí)施例,將針對(duì)消息系統(tǒng)的統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中,可以使運(yùn)維人員直觀的看到針對(duì)消息系統(tǒng)中各消息流的統(tǒng)計(jì)結(jié)果,也可以讓用戶對(duì)輸出到控制臺(tái)和/或預(yù)設(shè)文件中和/或預(yù)設(shè)數(shù)據(jù)庫中的統(tǒng)計(jì)結(jié)果進(jìn)行處理。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。本說明書中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,這里所稱得的存儲(chǔ)介質(zhì),如:ROM/RAM、磁碟、光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。當(dāng)前第1頁1 2 3