本申請涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種訪問日志的查詢方法和裝置。
背景技術(shù):
:Tomcat是一個免費的開源的Web應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶下被普遍使用。用戶訪問Tomcat的訪問日志是十分有價值的,需要對用戶的訪問日志進行保存。由于訪問日志的數(shù)據(jù)量比較大,在服務(wù)器本地保存訪問日志就會消耗磁盤的資源,影響服務(wù)器的性能,將數(shù)據(jù)保存至分布式數(shù)據(jù)庫是十分可行的方法。HBase是一個可靠性高、性能好、面向列、可伸縮分布式存儲系統(tǒng),可以在HBase中同時保存多個Tomcat的訪問日志。在HBase中保存Tomcat的訪問日志,需要在HBase中建立一張表,用于存放Tomcat的訪問日志。當需要對Tomcat中的訪問日志進行查詢時,在這張表中進行查詢。由于這張表中同時保存多個Tomcat的訪問日志,數(shù)據(jù)量是十分大的,查詢某一個或某幾個特定服務(wù)器的訪問日志耗時較長,查詢效率低。針對上述的問題,目前尚未提出有效的解決方案。技術(shù)實現(xiàn)要素:本申請實施例提供了一種訪問日志的查詢方法和裝置,以至少解決現(xiàn)有技術(shù)中在HBase中查詢某一個或某幾個服務(wù)器的訪問日志耗時較長,查詢效率低的技術(shù)問題。根據(jù)本申請實施例的一個方面,提供了一種訪問日志的查詢方法,包括:在分布式數(shù)據(jù)庫中建立表,其中,所述表的行鍵包括服務(wù)器的標識,所述表包括多個行;將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至所述表的目標行,其中,與目標服務(wù)器對應(yīng)的所述目標行為行鍵包括所述目標服務(wù)器的標識的行,所述目標服務(wù)器為所述多個服務(wù)器中的任一服務(wù)器,與任一所述服務(wù)器對應(yīng)的所述目標行為多個;根據(jù)所述行鍵,在所述表中查詢待查詢服務(wù)器的訪問日志。進一步地,所述表的行鍵還包括預(yù)設(shè)時間,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至所述表的目標行包括:獲取所述多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti,其中,i依次取1至m,m為所述多個服務(wù)器中服務(wù)器的數(shù)量;查找所述目標 行中行鍵包括標識Zi和預(yù)設(shè)時間Ti的目標行Hi,其中,所述標識Zi為所述服務(wù)器i的標識,所述預(yù)設(shè)時間Ti為所述訪問時間ti所屬的預(yù)設(shè)時間;以及將所述服務(wù)器i的訪問日志保存至所述目標行Hi,根據(jù)所述行鍵,在所述表中查詢待查詢服務(wù)器的訪問日志包括:根據(jù)所述待查詢服務(wù)器的標識,在所述表中查詢所述待查詢服務(wù)器的訪問日志;或根據(jù)所述待查詢服務(wù)器的標識和待查詢時間,在所述表中查詢所述待查詢服務(wù)器的訪問日志,其中,所述待查詢時間為所述表的行鍵中的任一預(yù)設(shè)時間。進一步地,所述服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多條訪問數(shù)據(jù),其中,ni為所述多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,獲取所述多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti包括:獲取訪問數(shù)據(jù)Lij的訪問時間tij,其中,j依次取1至ni,查找所述目標行中行鍵包括標識Zi和預(yù)設(shè)時間Ti的目標行Hi包括:查找所述目標行中行鍵包括所述標識Zi和預(yù)設(shè)時間Tij的目標行Hij,其中,所述預(yù)設(shè)時間Tij為所述訪問時間tij所屬的預(yù)設(shè)時間,將所述服務(wù)器i的訪問日志保存至所述目標行Hi包括:將所述服務(wù)器i的所述訪問數(shù)據(jù)Lij保存至所述目標行Hij。進一步地,所述表的行鍵還包括預(yù)設(shè)時間和日志標識,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至所述表的目標行還包括:獲取所述多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti和所述訪問日志Li的日志標識Ri,其中,i依次取1至m,m為所述多個服務(wù)器中服務(wù)器的數(shù)量;查找所述目標行中行鍵包括標識Zi、預(yù)設(shè)時間Ti和所述日志標識Ri的目標行Hi,其中,所述標識Zi為所述服務(wù)器i的標識,所述預(yù)設(shè)時間Ti為所述訪問時間ti所屬的預(yù)設(shè)時間;以及將所述服務(wù)器i的訪問日志保存至所述目標行Hi,根據(jù)所述行鍵,在所述表中查詢待查詢服務(wù)器的訪問日志還包括:根據(jù)所述待查詢服務(wù)器的標識,在所述表中查詢所述待查詢服務(wù)器的訪問日志;或根據(jù)所述待查詢服務(wù)器的標識和待查詢時間,在所述表中查詢所述待查詢服務(wù)器的訪問日志,其中,所述待查詢時間為所述表的行鍵中的任一預(yù)設(shè)時間。進一步地,所述服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多 條訪問數(shù)據(jù),其中,ni為所述多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,獲取所述多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti和所述訪問日志Li的日志標識Ri包括:獲取訪問數(shù)據(jù)Lij的訪問時間tij和所述訪問數(shù)據(jù)Lij的通用識別唯一碼Uij,其中,j依次取1至ni,所述日志標識為所述通用識別唯一碼Uij,查找所述目標行中行鍵包括標識Zi、預(yù)設(shè)時間Ti和所述日志標識Ri的目標行Hi包括:查找所述目標行中行鍵包括所述標識Zi、預(yù)設(shè)時間Tij和所述通用識別唯一碼Uij的目標行Hij,其中,所述預(yù)設(shè)時間Tij為所述訪問時間tij所屬的預(yù)設(shè)時間,將所述服務(wù)器i的訪問日志保存至所述目標行Hi包括:將所述服務(wù)器i的所述訪問數(shù)據(jù)Lij保存至所述目標行Hij。根據(jù)本申請實施例的另一方面,還提供了一種訪問日志的查詢裝置,包括:建立單元,用于在分布式數(shù)據(jù)庫中建立表,其中,所述表的行鍵包括服務(wù)器的標識,所述表包括多個行;保存單元,用于將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至所述表的目標行,其中,與目標服務(wù)器對應(yīng)的所述目標行為行鍵包括所述目標服務(wù)器的標識的行,所述目標服務(wù)器為所述多個服務(wù)器中的任一服務(wù)器,與任一所述服務(wù)器對應(yīng)的所述目標行為多個;查詢單元,用于根據(jù)所述行鍵,在所述表中查詢待查詢服務(wù)器的訪問日志。進一步地,所述表的行鍵還包括預(yù)設(shè)時間,所述保存單元包括:第一獲取子單元,用于獲取所述多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti,其中,i依次取1至m,m為所述多個服務(wù)器中服務(wù)器的數(shù)量;第一查找子單元,用于查找所述目標行中行鍵包括標識Zi和預(yù)設(shè)時間Ti的目標行Hi,其中,所述標識Zi為所述服務(wù)器i的標識,所述預(yù)設(shè)時間Ti為所述訪問時間ti所屬的預(yù)設(shè)時間;以及第一保存子單元,用于將所述服務(wù)器i的訪問日志保存至所述目標行Hi,所述查詢單元包括:第一查詢子單元,用于根據(jù)所述待查詢服務(wù)器的標識,在所述表中查詢所述待查詢服務(wù)器的訪問日志;以及第二查詢子單元,用于根據(jù)所述待查詢服務(wù)器的標識和待查詢時間,在所述表中查詢所述待查詢服務(wù)器的訪問日志,其中,所述待查詢時間為所述表的行鍵中的任一預(yù)設(shè)時間。進一步地,所述服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多 條訪問數(shù)據(jù),其中,ni為所述多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,所述第一獲取子單元包括:第一獲取模塊,用于獲取訪問數(shù)據(jù)Lij的訪問時間tij,其中,j依次取1至ni,所述第一查找子單元包括:第一查找模塊,用于查找所述目標行中行鍵包括所述標識Zi和預(yù)設(shè)時間Tij的目標行Hij,其中,所述預(yù)設(shè)時間Tij為所述訪問時間tij所屬的預(yù)設(shè)時間,所述第一保存子單元包括:第一保存模塊,用于將所述服務(wù)器i的所述訪問數(shù)據(jù)Lij保存至所述目標行Hij。進一步地,所述表的行鍵還包括預(yù)設(shè)時間和日志標識,所述保存單元還包括:第二獲取子單元,用于獲取所述多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti和所述訪問日志Li的日志標識Ri,其中,i依次取1至m,m為所述多個服務(wù)器中服務(wù)器的數(shù)量;第二查找子單元,用于查找所述目標行中行鍵包括標識Zi、預(yù)設(shè)時間Ti和所述日志標識Ri的目標行Hi,其中,所述標識Zi為所述服務(wù)器i的標識,所述預(yù)設(shè)時間Ti為所述訪問時間ti所屬的預(yù)設(shè)時間;以及第二保存子單元,用于將所述服務(wù)器i的訪問日志保存至所述目標行Hi,所述查詢單元還包括:第三查詢子單元,用于根據(jù)所述待查詢服務(wù)器的標識,在所述表中查詢所述待查詢服務(wù)器的訪問日志;以及第四查詢子單元,用于根據(jù)所述待查詢服務(wù)器的標識和待查詢時間,在所述表中查詢所述待查詢服務(wù)器的訪問日志,其中,所述待查詢時間為所述表的行鍵中的任一預(yù)設(shè)時間。進一步地,所述服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多條訪問數(shù)據(jù),其中,ni為所述多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,所述第二獲取子單元包括:第二獲取模塊,用于獲取訪問數(shù)據(jù)Lij的訪問時間tij和所述訪問數(shù)據(jù)Lij的通用識別唯一碼Uij,其中,j依次取1至ni,所述日志標識為所述通用識別唯一碼Uij,所述第二查找子單元包括:第二查找模塊,用于查找所述目標行中行鍵包括所述標識Zi、預(yù)設(shè)時間Tij和所述通用識別唯一碼Uij的目標行Hij,其中,所述預(yù)設(shè)時間Tij為所述訪問時間tij所屬的預(yù)設(shè)時間,所述第二保存子單元包括:第二保存模塊,用于將所述服 務(wù)器i的所述訪問數(shù)據(jù)Lij保存至所述目標行Hij。在本申請實施例中,采用在分布式數(shù)據(jù)庫中建立表,其中,表的行鍵包括服務(wù)器的標識,表包括多個行,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至表的目標行,其中,與目標服務(wù)器對應(yīng)的目標行為行鍵包括目標服務(wù)器的標識的行,目標服務(wù)器為多個服務(wù)器中的任一服務(wù)器,與任一服務(wù)器對應(yīng)的目標行為多個,根據(jù)行鍵,在表中查詢待查詢服務(wù)器的訪問日志。通過在建立HBase的表時,使表的行鍵包括服務(wù)器的標識,將服務(wù)器的訪問日志對應(yīng)保存至行鍵包括該服務(wù)器的標識的行中,使得同一個服務(wù)器的訪問日志的訪問數(shù)據(jù)保存在表中相鄰的位置,當需要查詢某個服務(wù)器的訪問日志時,按照表的行鍵進行查詢,由于同一個服務(wù)器的訪問日志的訪問數(shù)據(jù)在表中所處的位置很集中,因此,查詢時速度很快,從而實現(xiàn)了快速查詢出待查詢服務(wù)器的訪問日志的技術(shù)效果,進而解決了現(xiàn)有技術(shù)中在HBase中查詢某一個或某幾個服務(wù)器的訪問日志耗時較長,查詢效率低的技術(shù)問題。附圖說明此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:圖1是根據(jù)本申請實施例的訪問日志的查詢方法的流程圖;以及圖2是根據(jù)本申請實施例的訪問日志的查詢裝置的示意圖。具體實施方式為了使本
技術(shù)領(lǐng)域:
的人員更好地理解本申請方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分的實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本申請保護的范圍。需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本申請的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方 法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。首先對本申請實施例所涉及的技術(shù)術(shù)語作如下解釋:時間戳:時間戳(time-stamp)是一個經(jīng)加密后形成的憑證文檔,它包括三個部分:(1)需加時間戳的文件的摘要(digest);(2)DTS收到文件的日期和時間;(3)DTS的數(shù)字簽名。時間戳主要分為兩種:(1)自建時間戳:此類時間戳是通過時間接收設(shè)備(如GPS,CDMA,北斗衛(wèi)星)來獲取時間到時間戳服務(wù)器上,并通過時間戳服務(wù)器簽發(fā)時間戳證書。此種時間戳可用來企業(yè)內(nèi)部責(zé)任認定,在法庭認證時并不具備法律效力。因其在通過時間接收設(shè)備接收時間時存在被篡改的可能,故此不能做為法律依據(jù)。(2)具有法律的效力的時間戳:它是由我國中科院國家授時中心與北京聯(lián)合信任技術(shù)服務(wù)有限公司負責(zé)建設(shè)的我國第三方可信時間戳認證服務(wù)。由國家授時中心負責(zé)時間的授時與守時監(jiān)測。因其守時監(jiān)測功能而保障時間戳證書中的時間的準確性和不被篡改。獲取時間戳平臺有“大眾版權(quán)保護平臺”,可與我國中科院國家授時中心時間同步。根據(jù)本申請實施例,提供了一種訪問日志的查詢方法的實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。圖1是根據(jù)本申請實施例的訪問日志的查詢方法的流程圖,如圖1所示,該方法包括如下步驟:步驟S102,在分布式數(shù)據(jù)庫中建立表,其中,表的行鍵包括服務(wù)器的標識,表包括多個行。步驟S104,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至表的目標行,其中,與目標服務(wù)器對應(yīng)的目標行為行鍵包括目標服務(wù)器的標識的行,目標服務(wù)器為多個服務(wù)器中的任一服務(wù)器,與任一服務(wù)器對應(yīng)的目標行為多個。步驟S106,根據(jù)行鍵,在表中查詢待查詢服務(wù)器的訪問日志。分布式數(shù)據(jù)庫可以為HBase數(shù)據(jù)庫。當需要保存的數(shù)據(jù)的數(shù)據(jù)量非常巨大時,使用HBase數(shù)據(jù)庫中的表保存數(shù)據(jù)是一個非常好的方法。HBase只能用行鍵rowkey來查找數(shù)據(jù)。所以rowkey的設(shè)計是至關(guān)重要的,關(guān)系到查詢效率的高低。行鍵rowkey是以字典順序排序的。例如,有三個行鍵,分別為rowkey1、rowkey2、rowkey3。rowkey1為aaa222,rowkey2為bbb111,rowkey3為abb111。首先將rowkey1、rowkey2和rowkey3的第一位進行比較,rowkey1和rowkey3的第一位是a,rowkey2的第一位是b,所以rowkey1和rowkey3排在rowkey2前面,再將rowkey1和rowkey3的第二位進行比較,rowkey1的第二位是a,rowkey3的第二位是b,所以rowkey1排在rowkey3前面,綜上所述,rowkey1排在rowkey3前面,rowkey3排在rowkey2前面。HBase中用rowkey來查詢表中的記錄,支持以下三種查詢方式:(1)通過單個rowkey訪問:即按照某個rowkey鍵值進行g(shù)et操作。(2)通過rowkey的范圍進行掃描:即通過設(shè)置startRowKey(開始行鍵)和endRowKey(結(jié)束行鍵),在這個范圍內(nèi)進行掃描;(3)全表掃描:即直接掃描整張表中所有行記錄。當需要將多個服務(wù)器的訪問日志保存到HBase的表中時,設(shè)計表的行鍵rowkey為服務(wù)器的標識,這樣當接收到來自某一個服務(wù)器的訪問日志時,就可以將該服務(wù)器的訪問日志保存至行的行鍵為該服務(wù)器的標識的行中。設(shè)置HBase的表的列包括:遠程主機名(RemoteHosts)、時間戳(TimeStamp)、虛擬主機名(VirtualHost)、查詢參數(shù)(Query)、用戶代理瀏覽器(UserAgent)、方法名(Method)、單次請求Tomcat內(nèi)存的變化值等。HBase數(shù)據(jù)庫中的列的數(shù)量不用事先指定,可以根據(jù)需要隨時添加。例如,一共需要在HBase的表T1中保存5個Tomcat的訪問日志,這5個Tomcat的標識分別為字符串s1、字符串s2、字符串s3、字符串s4和字符串s5。設(shè)計HBase的表T1的行鍵分別包括字符串s1、字符串s2、字符串s3、字符串s4、字符串s5。假設(shè)一共接收到10條訪問數(shù)據(jù),表1示出了這10條訪問數(shù)據(jù)中每條訪問數(shù)據(jù)的編號和訪問數(shù)據(jù)來自哪個服務(wù)器,則將訪問數(shù)據(jù)D2保存至表T1中行鍵包括字符串s1的行中,將訪問數(shù)據(jù)D6和訪問數(shù)據(jù)D8保存至表T1中行鍵包括字符串s2的行中,將訪問數(shù)據(jù)D1和訪問數(shù)據(jù)D4保存至表T1中行鍵包括字符串s3的行中,將訪問數(shù)據(jù)D5保存至表T1中行鍵包括字符串s4的行中,將訪問數(shù)據(jù)D3、訪問數(shù)據(jù)D7、訪問數(shù)據(jù)D9和訪問數(shù)據(jù)D10保存至表T1中行鍵包括字符串s5的行中。需要注意的是,由于篇幅所限,本例子給出的數(shù)據(jù)僅為10條,而在實際應(yīng)用中,訪問日志的訪問數(shù)據(jù)的數(shù)量是非常巨大的。表1訪問數(shù)據(jù)編號訪問數(shù)據(jù)來源D1Tomcat3D2Tomcat1D3Tomcat5D4Tomcat3D5Tomcat4D6Tomcat2D7Tomcat5D8Tomcat2D9Tomcat5D10Tomcat5查詢表T1中行鍵包括字符串s1的行,得到Tomcat1的全部訪問日志;查詢表T1中行鍵包括字符串s2的行,得到Tomcat2的全部訪問日志;查詢表T1中行鍵包括字符串s3的行,得到Tomcat3的全部訪問日志。通過在建立HBase的表時,使表的行鍵包括服務(wù)器的標識,將服務(wù)器的訪問日志對應(yīng)保存至行鍵包括該服務(wù)器的標識的行中,使得同一個服務(wù)器的訪問日志的訪問數(shù)據(jù)保存在表中相鄰的位置,當需要查詢某個服務(wù)器的訪問日志時,按照表的行鍵進行查詢,由于同一個服務(wù)器的訪問日志的訪問數(shù)據(jù)在表中所處的位置很集中,因此,查詢時速度很快,從而實現(xiàn)了快速查詢出待查詢服務(wù)器的訪問日志的技術(shù)效果,進而解決了現(xiàn)有技術(shù)中在HBase中查詢某一個或某幾個服務(wù)器的訪問日志耗時較長,查詢效率低的技術(shù)問題??蛇x地,表的行鍵還包括預(yù)設(shè)時間,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至表的目標行包括:獲取多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti,其中,i依次取1至m,m為多個服務(wù)器中服務(wù)器的數(shù)量;查找目標行中行鍵包括標識Zi和預(yù) 設(shè)時間Ti的目標行Hi,其中,標識Zi為服務(wù)器i的標識,預(yù)設(shè)時間Ti為訪問時間ti所屬的預(yù)設(shè)時間;以及將服務(wù)器i的訪問日志保存至目標行Hi,根據(jù)行鍵,在表中查詢待查詢服務(wù)器的訪問日志包括:根據(jù)待查詢服務(wù)器的標識,在表中查詢待查詢服務(wù)器的訪問日志;或根據(jù)待查詢服務(wù)器的標識和待查詢時間,在表中查詢待查詢服務(wù)器的訪問日志,其中,待查詢時間為表的行鍵中的任一預(yù)設(shè)時間??蛇x地,服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多條訪問數(shù)據(jù),其中,ni為多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,獲取多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti包括:獲取訪問數(shù)據(jù)Lij的訪問時間tij,其中,j依次取1至ni,查找目標行中行鍵包括標識Zi和預(yù)設(shè)時間Ti的目標行Hi包括:查找目標行中行鍵包括標識Zi和預(yù)設(shè)時間Tij的目標行Hij,其中,預(yù)設(shè)時間Tij為訪問時間tij所屬的預(yù)設(shè)時間,將服務(wù)器i的訪問日志保存至目標行Hi包括:將服務(wù)器i的訪問數(shù)據(jù)Lij保存至目標行Hij。每個服務(wù)器的訪問日志都包括至少一條訪問數(shù)據(jù),在大多數(shù)情況下,每個服務(wù)器的訪問日志都包括大量的訪問數(shù)據(jù)。服務(wù)器1的訪問日志包括n1條訪問數(shù)據(jù),分別為訪問數(shù)據(jù)L11、訪問數(shù)據(jù)L12、訪問數(shù)據(jù)L13、……、訪問數(shù)據(jù)服務(wù)器2的訪問日志包括n2條訪問數(shù)據(jù),分別為訪問數(shù)據(jù)L21、訪問數(shù)據(jù)L22、訪問數(shù)據(jù)L23、……、訪問數(shù)據(jù)以此類推,服務(wù)器i的訪問日志包括ni條訪問數(shù)據(jù),分別為訪問數(shù)據(jù)Li1、訪問數(shù)據(jù)Li2、訪問數(shù)據(jù)Li3、……、訪問數(shù)據(jù)訪問數(shù)據(jù)Lij的訪問時間為tij,tij精確到秒。預(yù)設(shè)時間Tij為訪問時間tij所在的那一天,預(yù)設(shè)時間Tij精確到天。例如,當訪問時間為2015年11月10日08:20:30,則訪問時間所屬的預(yù)設(shè)時間為2015年11月10日。再例如,當訪問時間為2015年10月25日15:25:58,則訪問時間所屬的預(yù)設(shè)時間為2015年10月25日。例如,建立HBase的表T2,設(shè)置表T2的行鍵包括服務(wù)器的標識和日期,例如,假設(shè)一共有3個Tomcat服務(wù)器,這3個Tomcat服務(wù)器的標識分別為字符串s1、字符串s2、字符串s3,設(shè)置表T2的行鍵包括字符串s1和日期,或包括字符串s2和日期,或包括字符串s3和日期。假設(shè)HBase一共接收到1百萬條訪問數(shù)據(jù),表2示出了這1百萬條訪問數(shù)據(jù)中每條訪問數(shù)據(jù)的編號、訪問數(shù)據(jù)來源于哪個服務(wù)器和訪問數(shù)據(jù)產(chǎn)生的時間。將訪問數(shù)據(jù)D1保存至表T2中行鍵包括字符串s2和字符串“20151015”的行中;將訪問數(shù)據(jù)D2保存至表T2中行鍵包括字符串s2和字符串“20151015”的行中;將訪問數(shù)據(jù)D3保存至表T2中行鍵包括字符串s3和字符串“20151015”的行中;將訪問數(shù)據(jù)D4保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;將訪問數(shù)據(jù)D5保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;將訪問數(shù)據(jù)D6保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;將訪問數(shù)據(jù)D7保存至表T2中行鍵包括字符串s3和字符串“20151015”的行中;將訪問數(shù)據(jù)D8保存至表T2中行鍵包括字符串s3和字符串“20151015”的行中;將訪問數(shù)據(jù)D9保存至表T2中行鍵包括字符串s2和字符串“20151015”的行中;將訪問數(shù)據(jù)D10保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;……將訪問數(shù)據(jù)D10000保存至表T2中行鍵包括字符串s2和字符串“20151016”的行中;將訪問數(shù)據(jù)D10001保存至表T2中行鍵包括字符串s1和字符串“20151016”的行中;將訪問數(shù)據(jù)D10002保存至表T2中行鍵包括字符串s3和字符串“20151016”的行中;……將訪問數(shù)據(jù)D1000000保存至表T2中行鍵包括字符串s1和字符串“20151020”的行中。再例如,設(shè)置rowkey為:Tomcat標識-日期,如果想查詢Tomcat1在2015年10 月15日這一天的訪問日志,則查詢時設(shè)置startKEY為Tomcat1-20151015,endKey為Tomcat1-20151016。如果想查詢Tomcat2在2015年11月20日這一天的訪問日志,則查詢時設(shè)置startKEY為Tomcat2-20151120,endKey為Tomcat2-20151121。通過設(shè)置rowkey包括服務(wù)器標識和日期,在HBase的表中保存訪問日志時會將同一個服務(wù)器的同一天的訪問日志保存在相鄰的位置,在該表中查詢訪問日志時,可以快速查詢出某一個服務(wù)器在某個日期的訪問日志,大大提高了查詢效率。表2訪問數(shù)據(jù)編號訪問數(shù)據(jù)來源訪問數(shù)據(jù)產(chǎn)生的時間(訪問時間)D1Tomcat22015年10月15日12:00:00D2Tomcat22015年10月15日12:00:00D3Tomcat32015年10月15日12:00:03D4Tomcat12015年10月15日12:00:03D5Tomcat12015年10月15日12:00:03D6Tomcat12015年10月15日12:00:03D7Tomcat32015年10月15日12:00:05D8Tomcat32015年10月15日12:00:05D9Tomcat22015年10月15日12:00:06D10Tomcat12015年10月15日12:00:10………………D10000Tomcat22015年10月16日09:00:15D10001Tomcat12015年10月16日09:00:15D10002Tomcat32015年10月16日09:00:17………………D1000000Tomcat12015年10月20日18:00:17可選地,表的行鍵還包括預(yù)設(shè)時間和日志標識,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至表的目標行還包括:獲取多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti和訪問日志Li的日志標識Ri,其中,i依次取1至m,m為多個服務(wù)器中服務(wù)器的數(shù)量;查找目標行中行鍵包括標識Zi、預(yù)設(shè)時間Ti和日志標識Ri的目標行Hi,其中,標識Zi為服務(wù)器i的標識,預(yù)設(shè)時間Ti為訪問時間ti所屬的預(yù)設(shè)時間;以及將服務(wù)器i的訪問日志保存至目標行Hi,根據(jù)行鍵,在表中查詢待查詢服務(wù)器的訪問日志還包括:根據(jù)待查詢服務(wù)器的標識,在表中查詢待查詢服務(wù)器的訪問日志;或根據(jù)待查詢服務(wù)器的標識和待查詢時間,在表中查詢待查詢服務(wù)器的訪問日志,其中,待查詢時間為表的行鍵中的任一預(yù)設(shè)時間??蛇x地,服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多條訪問數(shù)據(jù),其中,ni為多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,獲取多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti和訪問日志Li的日志標識Ri包括:獲取訪問數(shù)據(jù)Lij的訪問時間tij和訪問數(shù)據(jù)Lij的通用識別唯一碼Uij,其中,j依次取1至ni,日志標識為通用識別唯一碼Uij,查找目標行中行鍵包括標識Zi、預(yù)設(shè)時間Ti和日志標識Ri的目標行Hi包括:查找目標行中行鍵包括標識Zi、預(yù)設(shè)時間Tij和通用識別唯一碼Uij的目標行Hij,其中,預(yù)設(shè)時間Tij為訪問時間tij所屬的預(yù)設(shè)時間,將服務(wù)器i的訪問日志保存至目標行Hi包括:將服務(wù)器i的訪問數(shù)據(jù)Lij保存至目標行Hij。通用識別唯一碼(UniversallyUniqueIdentifier,簡稱UUID)是指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的。使用UUID的目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。UUID由以下幾部分的組合:(1)當前日期和時間,UUID的第一個部分與時間有關(guān),如果在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。(2)時鐘序列。(3)全局唯一的IEEE機器識別號,如果有網(wǎng)卡,從網(wǎng)卡MAC地址獲得,沒有網(wǎng)卡以其他方式獲得。UUID生成的結(jié)果串會比較長。關(guān)于UUID這個標準使用最普遍的是微軟的 GUID(GlobalsUniqueIdentifiers)。在ColdFusion中可以用CreateUUID()函數(shù)很簡單地生成UUID,其格式為:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個x是0-9或a-f范圍內(nèi)的一個十六進制的數(shù)字。而標準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(8-4-4-4-12),可以從cflib下載CreateGUID()UDF進行轉(zhuǎn)換。使用UUID的好處在分布式的軟件系統(tǒng)中(比如:DCE/RPC,COM+,CORBA)就能體現(xiàn)出來,它能保證每個節(jié)點所生成的標識都不會重復(fù),并且隨著WEB服務(wù)等整合技術(shù)的發(fā)展,UUID的優(yōu)勢將更加明顯。根據(jù)使用的特定機制,UUID不僅需要保證是彼此不相同的,或者最少也是與公元3400年之前其他任何生成的通用唯一標識符有非常大的區(qū)別。訪問日志的每條訪問數(shù)據(jù)在生成時,都產(chǎn)生了唯一的UUID,此UUID能夠唯一地標識一條訪問數(shù)據(jù)。設(shè)置行鍵包括服務(wù)器標識、日期和UUID,在保存訪問日志時,能夠把每條訪問數(shù)據(jù)都保存到行鍵包含該訪問數(shù)據(jù)的UUID的行中,在需要查詢訪問日志時,通過合理地設(shè)置startKEY和endKey,既可以快速查詢出每個服務(wù)器的所有的訪問日志,又可以快速查詢出每個服務(wù)器在指點日期的訪問日志,還可以快速查詢出每個服務(wù)器的指定的某一條訪問數(shù)據(jù),大大提高了在HBase的表中查詢服務(wù)器的訪問日志的效率。根據(jù)本申請實施例,還提供了一種訪問日志的查詢裝置。該訪問日志的查詢裝置可以執(zhí)行上述訪問日志的查詢方法,上述訪問日志的查詢方法也可以通過該訪問日志的查詢裝置實施。圖2是根據(jù)本申請實施例的訪問日志的查詢裝置的示意圖。如圖2所示,該裝置包括:建立單元22、保存單元24和查詢單元26。建立單元22用于在分布式數(shù)據(jù)庫中建立表,其中,表的行鍵包括服務(wù)器的標識,表包括多個行。保存單元24用于將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至表的目標行,其中,與目標服務(wù)器對應(yīng)的目標行為行鍵包括目標服務(wù)器的標識的行,目標服務(wù)器為多個服務(wù)器中的任一服務(wù)器,與任一服務(wù)器對應(yīng)的目標行為多個。查詢單元26用于根據(jù)行鍵,在表中查詢待查詢服務(wù)器的訪問日志。分布式數(shù)據(jù)庫可以為HBase數(shù)據(jù)庫。當需要保存的數(shù)據(jù)的數(shù)據(jù)量非常巨大時,使用HBase數(shù)據(jù)庫中的表保存數(shù)據(jù)是一個非常好的方法。HBase只能用行鍵rowkey來查找數(shù)據(jù)。所以rowkey的設(shè)計是至關(guān)重要的,關(guān)系到查詢效率的高低。行鍵rowkey是以字典順序排序的。例如,有三個行鍵,分別為rowkey1、rowkey2、rowkey3。rowkey1為aaa222,rowkey2為bbb111,rowkey3為abb111。首先將rowkey1、rowkey2和rowkey3的第一位進行比較,rowkey1和rowkey3的第一位是a,rowkey2的第一位是b,所以rowkey1和rowkey3排在rowkey2前面,再將rowkey1和rowkey3的第二位進行比較,rowkey1的第二位是a,rowkey3的第二位是b,所以rowkey1排在rowkey3前面,綜上所述,rowkey1排在rowkey3前面,rowkey3排在rowkey2前面。HBase中用rowkey來查詢表中的記錄,支持以下三種查詢方式:(1)通過單個rowkey訪問:即按照某個rowkey鍵值進行g(shù)et操作。(2)通過rowkey的范圍進行掃描:即通過設(shè)置startRowKey(開始行鍵)和endRowKey(結(jié)束行鍵),在這個范圍內(nèi)進行掃描;(3)全表掃描:即直接掃描整張表中所有行記錄。當需要將多個服務(wù)器的訪問日志保存到HBase的表中時,設(shè)計表的行鍵rowkey為服務(wù)器的標識,這樣當接收到來自某一個服務(wù)器的訪問日志時,就可以將該服務(wù)器的訪問日志保存至行的行鍵為該服務(wù)器的標識的行中。設(shè)置HBase的表的列包括:遠程主機名(RemoteHosts)、時間戳(TimeStamp)、虛擬主機名(VirtualHost)、查詢參數(shù)(Query)、用戶代理瀏覽器(UserAgent)、方法名(Method)、單次請求Tomcat內(nèi)存的變化值等。HBase數(shù)據(jù)庫中的列的數(shù)量不用事先指定,可以根據(jù)需要隨時添加。例如,一共需要在HBase的表T1中保存5個Tomcat的訪問日志,這5個Tomcat的標識分別為字符串s1、字符串s2、字符串s3、字符串s4和字符串s5。設(shè)計HBase的表T1的行鍵分別包括字符串s1、字符串s2、字符串s3、字符串s4、字符串s5。假設(shè)一共接收到10條訪問數(shù)據(jù),表1示出了這10條訪問數(shù)據(jù)中每條訪問數(shù)據(jù)的編號和訪問數(shù)據(jù)來自哪個服務(wù)器,則將訪問數(shù)據(jù)D2保存至表T1中行鍵包括字符串s1的行中,將訪問數(shù)據(jù)D6和訪問數(shù)據(jù)D8保存至表T1中行鍵包括字符串s2的行中,將訪問數(shù)據(jù)D1和訪問數(shù)據(jù)D4保存至表T1中行鍵包括字符串s3的行中,將訪問數(shù)據(jù)D5保存至表T1中行鍵包括字符串s4的行中,將訪問數(shù)據(jù)D3、訪問數(shù)據(jù)D7、訪問數(shù)據(jù)D9和訪問數(shù)據(jù)D10保存至表T1中行鍵包括字符串s5的行中。需要注意的是,由于篇幅所限,本例子給出的數(shù)據(jù)僅為10條,而在實際應(yīng)用中,訪問日志的訪問數(shù)據(jù)的數(shù)量是非常巨大的。查詢表T1中行鍵包括字符串s1的行,得到Tomcat1的全部訪問日志;查詢表T1中行鍵包括字符串s2的行,得到Tomcat2的全部訪問日志;查詢表T1中行鍵包括字符串s3的行,得到Tomcat3的全部訪問日志。通過在建立HBase的表時,使表的行鍵包括服務(wù)器的標識,將服務(wù)器的訪問日志對應(yīng)保存至行鍵包括該服務(wù)器的標識的行中,使得同一個服務(wù)器的訪問日志的訪問數(shù)據(jù)保存在表中相鄰的位置,當需要查詢某個服務(wù)器的訪問日志時,按照表的行鍵進行查詢,由于同一個服務(wù)器的訪問日志的訪問數(shù)據(jù)在表中所處的位置很集中,因此,查詢時速度很快,從而實現(xiàn)了快速查詢出待查詢服務(wù)器的訪問日志的技術(shù)效果,進而解決了現(xiàn)有技術(shù)中在HBase中查詢某一個或某幾個服務(wù)器的訪問日志耗時較長,查詢效率低的技術(shù)問題??蛇x地,表的行鍵還包括預(yù)設(shè)時間,保存單元24包括第一獲取子單元、第一查找子單元和第一保存子單元。第一獲取子單元用于獲取多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti,其中,i依次取1至m,m為多個服務(wù)器中服務(wù)器的數(shù)量。第一查找子單元用于查找目標行中行鍵包括標識Zi和預(yù)設(shè)時間Ti的目標行Hi,其中,標識Zi為服務(wù)器i的標識,預(yù)設(shè)時間Ti為訪問時間ti所屬的預(yù)設(shè)時間。第一保存子單元用于將服務(wù)器i的訪問日志保存至目標行Hi。查詢單元26包括第一查詢子單元和第二查詢子單元。第一查詢子單元用于根據(jù)待查詢服務(wù)器的標識,在表中查詢待查詢服務(wù)器的訪問日志。第二查詢子單元用于根據(jù)待查詢服務(wù)器的標識和待查詢時間,在表中查詢待查詢服務(wù)器的訪問日志,其中,待查詢時間為表的行鍵中的任一預(yù)設(shè)時間??蛇x地,服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多條訪問數(shù)據(jù),其中,ni為多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量,第一獲取子單元包括第一獲取模塊。第一獲取模塊用于獲取訪問數(shù)據(jù)Lij的訪問時間tij,其中,j依次取1至ni。第一查找子單元包括第一查找模塊。第一查找模塊,用于查找目標行中行鍵包括標識Zi和預(yù)設(shè)時間Tij的目標行Hij,其中,預(yù)設(shè)時間Tij為訪問時間tij所屬的預(yù)設(shè)時間。第一保存子單元包括第一保存模塊。第一保存模塊,用于將服務(wù)器i的訪問數(shù)據(jù)Lij保存至目標行Hij。每個服務(wù)器的訪問日志都包括至少一條訪問數(shù)據(jù),在大多數(shù)情況下,每個服務(wù)器的訪問日志都包括大量的訪問數(shù)據(jù)。服務(wù)器1的訪問日志包括n1條訪問數(shù)據(jù),分別為訪問數(shù)據(jù)L11、訪問數(shù)據(jù)L12、訪問數(shù)據(jù)L13、……、訪問數(shù)據(jù)服務(wù)器2的訪問日志包括n2條訪問數(shù)據(jù),分別為訪問數(shù)據(jù)L21、訪問數(shù)據(jù)L22、訪問數(shù)據(jù)L23、……、訪問數(shù)據(jù)以此類推,服務(wù)器i的訪問日志包括ni條訪問數(shù)據(jù),分別為訪問數(shù)據(jù)Li1、訪問數(shù)據(jù)Li2、訪問數(shù)據(jù)Li3、……、訪問數(shù)據(jù)訪問數(shù)據(jù)Lij的訪問時間為tij,tij精確到秒。預(yù)設(shè)時間Tij為訪問時間tij所在的那一天,預(yù)設(shè)時間Tij精確到天。例如,當訪問時間為2015年11月10日08:20:30,則訪問時間所屬的預(yù)設(shè)時間為2015年11月10日。再例如,當訪問時間為2015年10月25日15:25:58,則訪問時間所屬的預(yù)設(shè)時間為2015年10月25日。例如,建立HBase的表T2,設(shè)置表T2的行鍵包括服務(wù)器的標識和日期,例如,假設(shè)一共有3個Tomcat服務(wù)器,這3個Tomcat服務(wù)器的標識分別為字符串s1、字符串s2、字符串s3,設(shè)置表T2的行鍵包括字符串s1和日期,或包括字符串s2和日期,或包括字符串s3和日期。假設(shè)HBase一共接收到1百萬條訪問數(shù)據(jù),表2示出了這1百萬條訪問數(shù)據(jù)中每條訪問數(shù)據(jù)的編號、訪問數(shù)據(jù)來源于哪個服務(wù)器和訪問數(shù)據(jù)產(chǎn)生的時間。將訪問數(shù)據(jù)D1保存至表T2中行鍵包括字符串s2和字符串“20151015”的行中;將訪問數(shù)據(jù)D2保存至表T2中行鍵包括字符串s2和字符串“20151015”的行中;將訪問數(shù)據(jù)D3保存至表T2中行鍵包括字符串s3和字符串“20151015”的行中;將訪問數(shù)據(jù)D4保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;將訪問數(shù)據(jù)D5保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;將訪問數(shù)據(jù)D6保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;將訪問數(shù)據(jù)D7保存至表T2中行鍵包括字符串s3和字符串“20151015”的行中;將訪問數(shù)據(jù)D8保存至表T2中行鍵包括字符串s3和字符串“20151015”的行中;將訪問數(shù)據(jù)D9保存至表T2中行鍵包括字符串s2和字符串“20151015”的行中;將訪問數(shù)據(jù)D10保存至表T2中行鍵包括字符串s1和字符串“20151015”的行中;……將訪問數(shù)據(jù)D10000保存至表T2中行鍵包括字符串s2和字符串“20151016”的行中;將訪問數(shù)據(jù)D10001保存至表T2中行鍵包括字符串s1和字符串“20151016”的行中;將訪問數(shù)據(jù)D10002保存至表T2中行鍵包括字符串s3和字符串“20151016”的行中;……將訪問數(shù)據(jù)D1000000保存至表T2中行鍵包括字符串s1和字符串“20151020”的行中。再例如,設(shè)置rowkey為:Tomcat標識-日期,如果想查詢Tomcat1在2015年10月15日這一天的訪問日志,則查詢時設(shè)置startKEY為Tomcat1-20151015,endKey為Tomcat1-20151016。如果想查詢Tomcat2在2015年11月20日這一天的訪問日志,則查詢時設(shè)置startKEY為Tomcat2-20151120,endKey為Tomcat2-20151121。通過設(shè)置rowkey包括服務(wù)器標識和日期,在HBase的表中保存訪問日志時會將同一個服務(wù)器的同一天的訪問日志保存在相鄰的位置,在該表中查詢訪問日志時,可以快速查詢出某一個服務(wù)器在某個日期的訪問日志,大大提高了查詢效率。可選地,表的行鍵還包括預(yù)設(shè)時間和日志標識,保存單元24還包括第二獲取子單元、第二查找子單元和第二保存子單元。第二獲取子單元用于獲取多個服務(wù)器中服務(wù)器i的訪問日志Li的訪問時間ti和訪問日志Li的日志標識Ri,其中,i依次取1至m,m為多個服務(wù)器中服務(wù)器的數(shù)量。第二查找子單元用于查找目標行中行鍵包括標識Zi、預(yù)設(shè)時間Ti和日志標識Ri的目標行Hi,其中,標識Zi為服務(wù)器i的標識,預(yù)設(shè)時間Ti為訪問時間ti所屬的預(yù)設(shè)時間。第二保存子單元用于將服務(wù)器i的訪問日志保存至目標行Hi。查詢單元26還包括第三查詢子單元和第四查詢子單元。第三查詢子單元用于根據(jù)待查詢服務(wù)器的標識,在表中查詢待查詢服務(wù)器的訪問日志。第四查詢子單元 用于根據(jù)待查詢服務(wù)器的標識和待查詢時間,在表中查詢待查詢服務(wù)器的訪問日志,其中,待查詢時間為表的行鍵中的任一預(yù)設(shè)時間??蛇x地,服務(wù)器i的訪問日志包括由訪問數(shù)據(jù)Li1至訪問數(shù)據(jù)組成的多條訪問數(shù)據(jù),其中,ni為多條訪問數(shù)據(jù)中訪問數(shù)據(jù)的數(shù)量。第二獲取子單元包括第二獲取模塊。第二獲取模塊用于獲取訪問數(shù)據(jù)Lij的訪問時間tij和訪問數(shù)據(jù)Lij的通用識別唯一碼Uij,其中,j依次取1至ni,日志標識為通用識別唯一碼Uij。第二查找子單元包括第二查找模塊。第二查找模塊用于查找目標行中行鍵包括標識Zi、預(yù)設(shè)時間Tij和通用識別唯一碼Uij的目標行Hij,其中,預(yù)設(shè)時間Tij為訪問時間tij所屬的預(yù)設(shè)時間。第二保存子單元包括第二保存模塊。第二保存模塊用于將服務(wù)器i的訪問數(shù)據(jù)Lij保存至目標行Hij。通用識別唯一碼(UniversallyUniqueIdentifier,簡稱UUID)是指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的。使用UUID的目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。UUID由以下幾部分的組合:(1)當前日期和時間,UUID的第一個部分與時間有關(guān),如果在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。(2)時鐘序列。(3)全局唯一的IEEE機器識別號,如果有網(wǎng)卡,從網(wǎng)卡MAC地址獲得,沒有網(wǎng)卡以其他方式獲得。UUID生成的結(jié)果串會比較長。關(guān)于UUID這個標準使用最普遍的是微軟的GUID(GlobalsUniqueIdentifiers)。在ColdFusion中可以用CreateUUID()函數(shù)很簡單地生成UUID,其格式為:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個x是0-9或a-f范圍內(nèi)的一個十六進制的數(shù)字。而標準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(8-4-4-4-12),可以從cflib下載CreateGUID()UDF進行轉(zhuǎn)換。使用UUID的好處在分布式的軟件系統(tǒng)中(比如:DCE/RPC,COM+,CORBA)就能體現(xiàn)出來,它能保證每個節(jié)點所生成的標識都不會重復(fù),并且隨著WEB服務(wù)等整合技術(shù)的發(fā)展,UUID的優(yōu)勢將更加明顯。根據(jù)使用的特定機制,UUID不僅需要保證是彼此不 相同的,或者最少也是與公元3400年之前其他任何生成的通用唯一標識符有非常大的區(qū)別。訪問日志的每條訪問數(shù)據(jù)在生成時,都產(chǎn)生了唯一的UUID,此UUID能夠唯一地標識一條訪問數(shù)據(jù)。設(shè)置行鍵包括服務(wù)器標識、日期和UUID,在保存訪問日志時,能夠把每條訪問數(shù)據(jù)都保存到行鍵包含該訪問數(shù)據(jù)的UUID的行中,在需要查詢訪問日志時,通過合理地設(shè)置startKEY和endKey,既可以快速查詢出每個服務(wù)器的所有的訪問日志,又可以快速查詢出每個服務(wù)器在指點日期的訪問日志,還可以快速查詢出每個服務(wù)器的指定的某一條訪問數(shù)據(jù),大大提高了在HBase的表中查詢服務(wù)器的訪問日志的效率。所述訪問日志的查詢裝置包括處理器和存儲器,上述建立單元22、保存單元24和查詢單元26等均作為程序單元存儲在存儲器中,由處理器執(zhí)行存儲在存儲器中的上述程序單元來實現(xiàn)相應(yīng)的功能。處理器中包含內(nèi)核,由內(nèi)核去存儲器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個或以上,通過調(diào)整內(nèi)核參數(shù)來快速高效地在HBase的表中查詢服務(wù)器的訪問日志。存儲器可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flashRAM),存儲器包括至少一個存儲芯片。本申請還提供了一種計算機程序產(chǎn)品,當在數(shù)據(jù)處理設(shè)備上執(zhí)行時,適于執(zhí)行初始化有如下方法步驟的程序代碼:在分布式數(shù)據(jù)庫中建立表,其中,表的行鍵包括服務(wù)器的標識,表包括多個行,將接收到的多個服務(wù)器的訪問日志對應(yīng)保存至表的目標行,其中,與目標服務(wù)器對應(yīng)的目標行為行鍵包括目標服務(wù)器的標識的行,目標服務(wù)器為多個服務(wù)器中的任一服務(wù)器,與任一服務(wù)器對應(yīng)的目標行為多個,根據(jù)行鍵,在表中查詢待查詢服務(wù)器的訪問日志。上述本申請實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。在本申請的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模 塊的間接耦合或通信連接,可以是電性或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可為個人計算機、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述僅是本申請的優(yōu)選實施方式,應(yīng)當指出,對于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本申請的保護范圍。當前第1頁1 2 3