使用行-列數(shù)據(jù)存儲(chǔ)的查詢匯總生成的制作方法
【專利摘要】數(shù)據(jù)存儲(chǔ)系統(tǒng)(122)包括列存儲(chǔ)(281)和行存儲(chǔ)(282)。數(shù)據(jù)存儲(chǔ)系統(tǒng)(122)可以生成查詢匯總。數(shù)據(jù)存儲(chǔ)系統(tǒng)(122)確定查詢匯總字段,查詢匯總字段包括來(lái)自用于在行存儲(chǔ)(282)中存儲(chǔ)數(shù)據(jù)的模式的字段的子集。數(shù)據(jù)存儲(chǔ)系統(tǒng)(122)針對(duì)查詢匯總字段中的查詢結(jié)果搜索列存儲(chǔ)(281)或行存儲(chǔ)(282)。查詢匯總字段從查詢匯總字段中的查詢結(jié)果生成。
【專利說(shuō)明】使用行-列數(shù)據(jù)存儲(chǔ)的查詢匯總生成
【背景技術(shù)】
[0001]如果傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)被用于存儲(chǔ)大量的數(shù)據(jù)(這可能會(huì)包括數(shù)百萬(wàn)或甚至數(shù)十億的條目),則在RDBMS中運(yùn)行查詢是有挑戰(zhàn)性的。生成這個(gè)數(shù)據(jù)量的環(huán)境是不尋常的,諸如,從許多不同的源連續(xù)接收事件的事件管理系統(tǒng)。
[0002]索引可以被創(chuàng)建以改進(jìn)查詢的性能。然而,由于查詢可能必須等待索引完成,所以在數(shù)據(jù)庫(kù)中每個(gè)列的大量數(shù)據(jù)上索引可能減低查詢的性能。此外,由于針對(duì)環(huán)境的索引的大小需要大量數(shù)據(jù)存儲(chǔ),所以索引增加數(shù)據(jù)庫(kù)所需的存儲(chǔ)的數(shù)量。此外,因?yàn)楸砀裥枰恢匦滤饕?,所以寫操作花費(fèi)更長(zhǎng)的時(shí)間。
[0003]此外,由于這種大量的數(shù)據(jù),審核查詢結(jié)果可能變得難以處理。查詢可以生數(shù)千或甚至數(shù)百萬(wàn)的命中(hit)。對(duì)于用戶來(lái)說(shuō),解析這種大量的命中通常是困難的。在典型的情況下,前一百個(gè)命中被呈現(xiàn)給用戶。用戶通過圖形用戶界面(GUI)審核命中,以及然后點(diǎn)擊按鈕來(lái)檢索接下來(lái)的一百個(gè)命中,等等,這是耗時(shí)且低效的過程。
【專利附圖】
【附圖說(shuō)明】
[0004]在接下來(lái)的描述中,參考如下的附圖詳細(xì)地描述實(shí)施例。
[0005]圖1圖示了依據(jù)實(shí)施例的信息和事件管理系統(tǒng);
圖2圖示了依據(jù)實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng);
圖3-8圖示了依據(jù)實(shí)施例的方法;以及
圖9圖示了依據(jù)實(shí)施例的可以被用于所述方法和系統(tǒng)的計(jì)算機(jī)系統(tǒng)。
【具體實(shí)施方式】
[0006]為了簡(jiǎn)單和圖示說(shuō)明的目的,實(shí)施例的原理通過主要參考其示例而描述。在接下來(lái)的描述中,眾多特定的細(xì)節(jié)被闡述以提供對(duì)實(shí)施例的徹底理解。顯然的是:實(shí)施例可以在不限制到全部特定細(xì)節(jié)的情形下被實(shí)施。此外,實(shí)施例可以采用各種組合一起被使用。
[0007]依據(jù)實(shí)施例,混合數(shù)據(jù)存儲(chǔ)系統(tǒng)在列和行數(shù)據(jù)存儲(chǔ)二者中存儲(chǔ)數(shù)據(jù)。所述系統(tǒng)選擇列或行數(shù)據(jù)存儲(chǔ)來(lái)依賴于各種參數(shù)執(zhí)行查詢,這可以改進(jìn)運(yùn)行查詢的速度。數(shù)據(jù)存儲(chǔ)系統(tǒng)可操作以優(yōu)化查詢,所述查詢對(duì)使用列和行數(shù)據(jù)存儲(chǔ)而存儲(chǔ)在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的大量數(shù)據(jù)執(zhí)行。例如,除了確定查詢的命中之外,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)還生成命中的查詢匯總。所述命中是來(lái)自運(yùn)行查詢的搜索結(jié)果。查詢匯總包括在數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)數(shù)據(jù)的字段的子集。所述字段的子集被稱為查詢匯總字段。所述查詢匯總可以包括針對(duì)所述子集中每個(gè)字段的柱狀圖。所述柱狀圖可以包括針對(duì)每個(gè)查詢匯總字段的聚集計(jì)數(shù)。所述查詢匯總允許用戶快速識(shí)別查詢結(jié)果的最相關(guān)數(shù)據(jù)。此外,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)允許在所述查詢匯總中對(duì)信息向下鉆取(drill-down)。
[0008]數(shù)據(jù)存儲(chǔ)系統(tǒng)還執(zhí)行優(yōu)化,該優(yōu)化可以允許所述查詢匯總被存儲(chǔ)在存儲(chǔ)器中。例如,查詢匯總可能過大而無(wú)法存儲(chǔ)在存儲(chǔ)器中,因此,數(shù)據(jù)存儲(chǔ)系統(tǒng)執(zhí)行優(yōu)化來(lái)減小查詢匯總中的數(shù)據(jù)量,但保留可能與所述用戶最相關(guān)的數(shù)據(jù)。通過優(yōu)化查詢匯總以供在存儲(chǔ)器中存儲(chǔ),向下鉆取可以被更快地執(zhí)行。在此描述的優(yōu)化技術(shù)為大量數(shù)據(jù)提供了縮放查詢匯總和向下鉆取的方法。
[0009]數(shù)據(jù)存儲(chǔ)系統(tǒng)還生成全局匯總。全局匯總針對(duì)在預(yù)定的時(shí)間周期內(nèi)接收的全部數(shù)據(jù)而生成。相對(duì)于來(lái)自可用于查詢匯總字段的模式的較少數(shù)量的字段,所述全局匯總可以包括存儲(chǔ)模式中的全部或大部分的字段。通過示例和非限制的方式,全局匯總可以針對(duì)每個(gè)5分鐘時(shí)段的數(shù)據(jù)而生成。當(dāng)新的數(shù)據(jù)被存儲(chǔ)時(shí),舊數(shù)據(jù)可以出于規(guī)章遵從的原因或者為新的數(shù)據(jù)創(chuàng)建空間而被移除。全局匯總提供可縮放的方法用以維護(hù)所刪除數(shù)據(jù)的信息。此外,時(shí)段全局匯總能夠被用于優(yōu)化在大的時(shí)間范圍內(nèi)執(zhí)行的查詢。例如,所述全局匯總能夠被用于快速確定具有查詢的命中的窄時(shí)間范圍,而不是搜索整個(gè)時(shí)間范圍。
[0010]在數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的類型的示例是事件數(shù)據(jù)。事件是在數(shù)據(jù)存儲(chǔ)系統(tǒng)收集和存儲(chǔ)的數(shù)據(jù)的實(shí)例。所述事件可以關(guān)聯(lián)于或描述被執(zhí)行的活動(dòng)或動(dòng)作。通常,事件被生成一次,并且以后不改變。事件數(shù)據(jù)包括一個(gè)或多個(gè)事件。事件數(shù)據(jù)可以包括日志數(shù)據(jù),該日志數(shù)據(jù)可以由各種源(包括設(shè)備和應(yīng)用)生成并且可以采用任何格式。例如,事件可以是日志文件中的條目、系統(tǒng)日志服務(wù)器中的條目、警告、警報(bào)、網(wǎng)絡(luò)數(shù)據(jù)包、電子郵件、通知等。
[0011]事件數(shù)據(jù)可以被相關(guān)和分析以識(shí)別網(wǎng)絡(luò)安全威脅。安全事件是一種類型的事件,并且是能夠被分析以確定其是否與安全威脅相關(guān)聯(lián)的任何活動(dòng)。所述活動(dòng)可以與用戶(也被稱為行動(dòng)者)相關(guān)聯(lián),以識(shí)別安全威脅和所述安全威脅的原因。活動(dòng)可以包括:登陸、退出、通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)、發(fā)送電子郵件、訪問應(yīng)用、讀取或?qū)懭霐?shù)據(jù)等。安全威脅包括被確定為指示可疑或不當(dāng)行為的活動(dòng),其可以被通過網(wǎng)絡(luò)或在連接到網(wǎng)絡(luò)的系統(tǒng)上執(zhí)行。例如,通常的安全威脅是用戶嘗試通過網(wǎng)絡(luò)獲得對(duì)保密信息(諸如,社會(huì)安全號(hào)碼、信用卡號(hào)碼等)的未授權(quán)訪問。
[0012]事件的數(shù)據(jù)源可以包括:網(wǎng)絡(luò)設(shè)備、應(yīng)用、或下面描述的其它類型的數(shù)據(jù)源,其可操作來(lái)提供可用于識(shí)別網(wǎng)絡(luò)安全威脅的事件數(shù)據(jù)。事件數(shù)據(jù)是描述事件的數(shù)據(jù)。事件數(shù)據(jù)可在由數(shù)據(jù)源生成的日志或消息中捕獲。例如,侵入檢測(cè)系統(tǒng)(IDS)、侵入防御系統(tǒng)(IPS)、漏洞評(píng)估工具、防火墻、防病毒工具、反垃圾郵件工具和加密工具可以生成描述由所述源執(zhí)行的活動(dòng)的日志。例如,事件數(shù)據(jù)可以由日志文件或系統(tǒng)日志服務(wù)器中的條目、警告、警報(bào)、網(wǎng)絡(luò)數(shù)據(jù)包、電子郵件或通知頁(yè)面提供。
[0013]事件數(shù)據(jù)可以包括關(guān)于生成事件的設(shè)備或應(yīng)用的信息。事件源是網(wǎng)絡(luò)端點(diǎn)標(biāo)識(shí)符(例如,IP地址或媒體訪問控制(MAC)地址)和/或?qū)λ鲈吹拿枋?,可能包括關(guān)于產(chǎn)品的供應(yīng)商和版本的信息。時(shí)間屬性、源信息和其它信息被用于把事件與用戶相關(guān),并針對(duì)安全威脅分析事件。
[0014]圖1圖示依據(jù)實(shí)施例的包括安全信息和事件管理系統(tǒng)(SIEM) 110的環(huán)境100。所述SIEM 110處理事件數(shù)據(jù),其可以包括實(shí)時(shí)事件處理。SIEM 110可以處理所述事件數(shù)據(jù)來(lái)確定網(wǎng)絡(luò)相關(guān)的條件,諸如,網(wǎng)絡(luò)完全威脅。此外,例如,SIEM 110被描述為安全信息和事件管理系統(tǒng)。如上面所指出的,系統(tǒng)110是信息和事件管理系統(tǒng),并且作為示例,它可以執(zhí)行與網(wǎng)絡(luò)安全相關(guān)的事件數(shù)據(jù)處理。它可操作來(lái)針對(duì)不與網(wǎng)絡(luò)安全相關(guān)的事件執(zhí)行事件數(shù)據(jù)處理。所述環(huán)境100包括為事件生成事件數(shù)據(jù)的數(shù)據(jù)源101,所述事件由SIEM 110收集并被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)111中。數(shù)據(jù)存儲(chǔ)111可以包括數(shù)據(jù)庫(kù)或其它類型的數(shù)據(jù)存儲(chǔ)系統(tǒng)。數(shù)據(jù)存儲(chǔ)111可以包括用于執(zhí)行存儲(chǔ)器中處理的存儲(chǔ)器和/或用于數(shù)據(jù)庫(kù)存儲(chǔ)和操作的非易失性存儲(chǔ)。數(shù)據(jù)存儲(chǔ)111存儲(chǔ)由SIEM 110使用以相關(guān)和分析事件數(shù)據(jù)的任何數(shù)據(jù)。
[0015]數(shù)據(jù)源101可以包括網(wǎng)絡(luò)設(shè)備、應(yīng)用、其它類型的數(shù)據(jù)源,其可操作來(lái)提供可被分析的事件數(shù)據(jù)。事件數(shù)據(jù)可在由數(shù)據(jù)源101生成的日志或消息中被捕獲。例如,侵入檢測(cè)系統(tǒng)(IDS)、侵入防御系統(tǒng)(IPS)、漏洞評(píng)估工具、防火墻、防病毒工具、反垃圾郵件工具、力口密工具和商業(yè)應(yīng)用可以生成描述由數(shù)據(jù)源執(zhí)行的活動(dòng)的日志。事件數(shù)據(jù)被從所述日志中檢索并被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)111中。例如,事件數(shù)據(jù)可以由日志文件或系統(tǒng)日志服務(wù)器中的條目、警告、警報(bào)、網(wǎng)絡(luò)數(shù)據(jù)包、電子郵件或通知頁(yè)面提供。數(shù)據(jù)源101可以把消息發(fā)送到包括事件數(shù)據(jù)的SIEM 110。
[0016]事件數(shù)據(jù)可以包括關(guān)于生成所述事件的源的信息和描述所述事件的信息。例如,事件數(shù)據(jù)可以標(biāo)識(shí)作為用戶登錄或信用卡交易的事件。事件數(shù)據(jù)中的其它信息可以包括所述事件何時(shí)被從所述事件源接收(“接收時(shí)間”)。所述接收時(shí)間可以是日期/時(shí)間戳。事件數(shù)據(jù)可以描述所述源,諸如,事件源是網(wǎng)絡(luò)端點(diǎn)標(biāo)識(shí)符(例如,IP地址或媒體訪問控制(MAC)地址)和/或?qū)λ鲈吹拿枋?,可能包括關(guān)于產(chǎn)品供應(yīng)商和版本的信息。然后,數(shù)據(jù)/時(shí)間戳、源信息和其它信息可以被用于由事件處理引擎121執(zhí)行的相關(guān)。事件數(shù)據(jù)可以包括事件的元數(shù)據(jù),諸如,它何時(shí)發(fā)生、它在哪發(fā)生、所涉及的用戶等。
[0017]數(shù)據(jù)源101的示例在圖1中被示為:數(shù)據(jù)庫(kù)(DB)、UNIX、Appl (應(yīng)用I)和App2(應(yīng)用2)。DB和UNIX是包括網(wǎng)絡(luò)設(shè)備(諸如,服務(wù)器)并生成事件數(shù)據(jù)的系統(tǒng)。Appl和App2是生成事件數(shù)據(jù)的應(yīng)用。Appl和App2可以是商業(yè)應(yīng)用(諸如,信用卡和股票交易的金融應(yīng)用)、IT應(yīng)用、人力資源應(yīng)用、或任何其它類型的應(yīng)用。
[0018]數(shù)據(jù)源101的其它示例可以包括:安全檢測(cè)和代理系統(tǒng)、訪問和策略控制、核心服務(wù)日志和日志整合器(consolidator)、網(wǎng)絡(luò)硬件、加密設(shè)備、和物理安全。安全檢測(cè)和代理系統(tǒng)的示例包括:IDS、IPS、多用途安全設(shè)備、漏洞評(píng)估和管理、防病毒、蜜罐(honeypot)、威脅響應(yīng)技術(shù)、和網(wǎng)絡(luò)監(jiān)控。訪問和策略控制系統(tǒng)的示例包括:訪問和身份標(biāo)識(shí)管理、虛擬專用網(wǎng)絡(luò)(VPN)、高速緩存引擎、防火墻、和安全策略管理。核心服務(wù)日志和日志整合器的示例包括:操作系統(tǒng)日志、數(shù)據(jù)庫(kù)審計(jì)日志、應(yīng)用日志、日志整合器、網(wǎng)絡(luò)(web)服務(wù)器日志、和管理控制臺(tái)。網(wǎng)絡(luò)設(shè)備的示例包括:路由器和交換機(jī)。加密設(shè)備的示例包括:數(shù)據(jù)安全和完整性。物理安全系統(tǒng)的示例包括:卡鍵讀取器、生物計(jì)量技術(shù)、防盜警報(bào)器、和火災(zāi)警報(bào)器。其它的數(shù)據(jù)源可以包括與網(wǎng)絡(luò)安全不相關(guān)的數(shù)據(jù)源。
[0019]連接器102可以包括代碼,該代碼包括把事件數(shù)據(jù)從數(shù)據(jù)源提供到SIEM 110的機(jī)器可讀指令。連接器102可以提供來(lái)自一個(gè)或多個(gè)數(shù)據(jù)源101的高效、實(shí)時(shí)(或接近實(shí)時(shí))的局部事件數(shù)據(jù)捕獲和濾波。例如,連接器102從事件日志或消息收集事件數(shù)據(jù)。事件數(shù)據(jù)的收集被示出為“EVENTS (事件)”,其描述來(lái)自數(shù)據(jù)資源101、被發(fā)送到SIEM 110的事件數(shù)據(jù)。連接器可以不被用于全部的數(shù)據(jù)源101。事件過程延長(zhǎng)器123可以為從數(shù)據(jù)源檢索數(shù)據(jù)提供接口。
[0020]SIEM 110收集和分析事件數(shù)據(jù)。事件可以與規(guī)則交叉相關(guān),以創(chuàng)建元事件。例如,相關(guān)包括:發(fā)現(xiàn)事件之間的關(guān)系、推斷那些關(guān)系的意義(例如,通過生成元事件)、把事件和元數(shù)據(jù)按優(yōu)先順序排列、以及提供框架以采取動(dòng)作。系統(tǒng)(其一個(gè)實(shí)施例表示為由計(jì)算機(jī)硬件(諸如處理器)執(zhí)行的機(jī)器可讀指令)實(shí)現(xiàn)對(duì)活動(dòng)的聚集、相關(guān)、檢測(cè)和調(diào)查跟蹤。所述系統(tǒng)還支持:響應(yīng)管理、即席(ad-hoc)查詢解析、取證分析的報(bào)告和重放、以及網(wǎng)絡(luò)威脅和活動(dòng)的圖形可視化。
[0021]SIEM 110可以包括執(zhí)行在此描述的功能的模塊。模塊可以包括硬件和/或機(jī)器可讀指令。例如,所述模塊可以包括事件處理引擎121、數(shù)據(jù)存儲(chǔ)系統(tǒng)122、和用戶接口 123。事件處理引擎121依據(jù)可以在數(shù)據(jù)存儲(chǔ)111中存儲(chǔ)的規(guī)則和指令處理事件。例如,事件處理引擎121依照規(guī)則、指令和/或請(qǐng)求把事件相關(guān)。例如,規(guī)則指示:相同用戶同時(shí)或在短的時(shí)間周期內(nèi)在不同機(jī)器上執(zhí)行的多次失敗登陸將給系統(tǒng)管理員生成警告。另一個(gè)規(guī)則可以指示:相同用戶在相同的小時(shí)內(nèi)但從不同國(guó)家或城市進(jìn)行的兩次信用卡交易是潛在的欺詐表示。當(dāng)應(yīng)用所述規(guī)則時(shí),事件處理引擎121可以提供時(shí)間、位置和多個(gè)事件之間的用戶相關(guān)性。
[0022]用戶接口 123可以被用于把關(guān)于事件和事件處理的報(bào)告或通知傳送或顯示給用戶。用戶接口 123可以被用于接收查詢并把查詢結(jié)果提供給用戶。用戶接口 123可以包括基于網(wǎng)絡(luò)的⑶I。
[0023]數(shù)據(jù)存儲(chǔ)系統(tǒng)122是混合列-行存儲(chǔ)系統(tǒng),如相對(duì)于圖2進(jìn)一步詳細(xì)描述的。數(shù)據(jù)存儲(chǔ)系統(tǒng)122存儲(chǔ)事件,事件可以包括從數(shù)據(jù)源101接收的安全事件(有時(shí)被稱為“日志數(shù)據(jù)”)。事件可以采用壓縮的形式存儲(chǔ)。然而,數(shù)據(jù)存儲(chǔ)系統(tǒng)122能夠根據(jù)需要檢索這些事件,并且針對(duì)取證質(zhì)量的數(shù)據(jù)把它們恢復(fù)到其最初的、未修改的形式。
[0024]數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以針對(duì)極高的事件吞吐量而被優(yōu)化。數(shù)據(jù)存儲(chǔ)系統(tǒng)122能夠存儲(chǔ)可以以高速率且大量被接收的事件。例如,包含300-500字段的事件可以以每秒10000-30000的速率被接收。數(shù)據(jù)存儲(chǔ)系統(tǒng)122在包含百萬(wàn)兆字節(jié)數(shù)據(jù)的混合列-行存儲(chǔ)系統(tǒng)中存儲(chǔ)事件。數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以運(yùn)行對(duì)事件的查詢。數(shù)據(jù)存儲(chǔ)系統(tǒng)122能夠通過下面描述的查詢匯總和優(yōu)化技術(shù)來(lái)優(yōu)化所述查詢并且改進(jìn)所述查詢的執(zhí)行時(shí)間。
[0025]數(shù)據(jù)存儲(chǔ)111可以包括能夠被包括在數(shù)據(jù)存儲(chǔ)系統(tǒng)122中的數(shù)據(jù)庫(kù)或其它類型的數(shù)據(jù)存儲(chǔ)系統(tǒng)。例如可以被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)111中的數(shù)據(jù)庫(kù)表格、數(shù)據(jù)文件表格、以及數(shù)據(jù)文件可以是數(shù)據(jù)存儲(chǔ)系統(tǒng)122的一部分,或由數(shù)據(jù)存儲(chǔ)系統(tǒng)122管理。
[0026]圖2圖示了數(shù)據(jù)存儲(chǔ)系統(tǒng)122。數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以被提供在SIEM 100中或在SIEM 100的外部。此外,數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以被用在不同于所述SIEM 100的系統(tǒng)中或與該系統(tǒng)一起被使用。
[0027]數(shù)據(jù)存儲(chǔ)系統(tǒng)122接收可以包括數(shù)據(jù)塊(data chunk)(如下面進(jìn)一步描述的)的事件數(shù)據(jù),并且存儲(chǔ)事件數(shù)據(jù),使得它可以被查詢。數(shù)據(jù)存儲(chǔ)系統(tǒng)122包括:控制系統(tǒng)270、數(shù)據(jù)文件表格275、塊表格280、和數(shù)據(jù)文件285。控制系統(tǒng)270被通信地耦合到所述數(shù)據(jù)文件表格275、塊表格280、和數(shù)據(jù)文件285??刂葡到y(tǒng)270控制用于存儲(chǔ)事件和運(yùn)行查詢的操作。例如,控制系統(tǒng)270包括存儲(chǔ)引擎271和查詢引擎272,存儲(chǔ)引擎271存儲(chǔ)事件數(shù)據(jù),包括管理和存儲(chǔ)塊,查詢引擎272運(yùn)行查詢、生成查詢匯總和全局匯總、執(zhí)行查詢優(yōu)化、以及執(zhí)行向下鉆取。圖2示出了接收事件數(shù)據(jù)(例如,塊)250的控制系統(tǒng)270。事件數(shù)據(jù)250可以包括來(lái)自圖1的事件。存儲(chǔ)引擎271在如下所述的行存儲(chǔ)282和列存儲(chǔ)281中存儲(chǔ)事件數(shù)據(jù)250。圖2還示出了接收查詢和向下鉆取請(qǐng)求291的控制系統(tǒng)270。存儲(chǔ)引擎271可以生成所述查詢的搜索結(jié)果、向下鉆取、查詢匯總和全局匯總(示作290)。
[0028]事件數(shù)據(jù)可以包括時(shí)間屬性,時(shí)間屬性包括:管理器接收時(shí)間(MRT)和事件發(fā)生時(shí)間(ET)。MRT是事件由數(shù)據(jù)存儲(chǔ)系統(tǒng)122接收的時(shí)間,以及ET是事件發(fā)生了的時(shí)間。ERT和MRT是事件模式中的字段。ERT或MET可以被用于查詢,以把搜索結(jié)果限制到期望的時(shí)間范圍。全局匯總的時(shí)段也可以基于ERT或MET。ERT或MET也可以被用于識(shí)別滿足查詢的塊。
[0029]數(shù)據(jù)文件表格275存儲(chǔ)關(guān)于數(shù)據(jù)文件285的信息。在一個(gè)實(shí)施例中,數(shù)據(jù)文件表格275中的每個(gè)條目表示已為其分配空間的數(shù)據(jù)文件285中的一個(gè)數(shù)據(jù)文件,并且所述條目包括與數(shù)據(jù)文件和數(shù)據(jù)文件的位置(例如,文件系統(tǒng)、其中的路徑、和文件名稱)相關(guān)聯(lián)的唯一標(biāo)識(shí)符。
[0030]事件數(shù)據(jù)可以被存儲(chǔ)在塊中。例如,事件數(shù)據(jù)被分割成塊,并且所述塊中的數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)系統(tǒng)122中。例如,事件被解析成它們的字段值,并且所述字段值和接收時(shí)間可以被存儲(chǔ)在緩沖器中。在某個(gè)時(shí)間點(diǎn),根據(jù)緩沖器中的內(nèi)容生成塊。不同的塊可以具有不同的大小。由于例如塊中存儲(chǔ)的字段值的類型以及導(dǎo)致所述塊被生成的觸發(fā)器的類型,塊的大小可以不同。在一個(gè)實(shí)施例中,可以指定最大塊的大小。每個(gè)塊可以包括元數(shù)據(jù),元數(shù)據(jù)包括塊標(biāo)識(shí)符(ChunkID)、帶標(biāo)識(shí)符(StripeID)、和一組索引位置標(biāo)識(shí)符(IndexLocationID)。ChunkID相對(duì)于其它塊唯一標(biāo)識(shí)所述塊。StripeID(其在一組塊中被共享)被用于把塊彼此相關(guān)聯(lián)(因?yàn)?,一組塊可以涉及相同的事件組)。IndexLocationID的組包括塊中每個(gè)字段值的一個(gè)IndexLocationID。IndexLocationID用于訪問對(duì)應(yīng)于相同事件的不同塊中的字段值。IndexLocationID可以包括StripeID和偏移標(biāo)識(shí)符(OffsetID)。OffsetID指示塊內(nèi)的哪個(gè)字段值對(duì)應(yīng)于期望的事件。塊可以被壓縮。在事件數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)系統(tǒng)處被接收之前,其可以被分割成塊。
[0031]塊表280存儲(chǔ)關(guān)于在數(shù)據(jù)文件285中接收和存儲(chǔ)的一個(gè)或多個(gè)塊250的信息。對(duì)于每個(gè)塊250,這個(gè)信息可以包括塊的元數(shù)據(jù),元數(shù)據(jù)可以包括時(shí)間屬性、以及關(guān)于塊中的數(shù)據(jù)和塊的位置的其它信息(例如,與存儲(chǔ)塊的數(shù)據(jù)文件相關(guān)聯(lián)的唯一標(biāo)識(shí)符以及所述塊在數(shù)據(jù)文件內(nèi)被存儲(chǔ)的位置(例如,作為偏移))。
[0032]每個(gè)數(shù)據(jù)文件285存儲(chǔ)可以包括多個(gè)塊的事件數(shù)據(jù)。數(shù)據(jù)文件285可以是相同的大小或不同的大小,并且可以按時(shí)間順序被組織。數(shù)據(jù)文件285可以被存儲(chǔ)在硬盤上的文件系統(tǒng)中。
[0033]數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以在基于行的存儲(chǔ)和基于列的存儲(chǔ)中存儲(chǔ)數(shù)據(jù)?;谛械拇鎯?chǔ)被示出為行存儲(chǔ)282,以及所述基于列的存儲(chǔ)被示出為列存儲(chǔ)281。如果不同的事件包括相同字段,則所述事件能夠被以表格組織。所述表格的每個(gè)行表示不同的事件,以及所述表格的每個(gè)列表示不同的字段。
[0034]在基于行的存儲(chǔ)中,數(shù)據(jù)存儲(chǔ)是面向記錄(行)的。記錄的屬性(字段值)在存儲(chǔ)中連續(xù)地放置。在這個(gè)體系結(jié)構(gòu)中,單個(gè)磁盤寫入足以把單個(gè)記錄的全部字段推出到磁盤。因此,高性能的寫入被實(shí)現(xiàn),并且具有行存儲(chǔ)體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)被稱為寫入優(yōu)化系統(tǒng)(WOS)。
[0035]在基于列的存儲(chǔ)中,數(shù)據(jù)存儲(chǔ)是面向字段(列)的。在一個(gè)列中被存儲(chǔ)的值(橫跨多個(gè)記錄)在存儲(chǔ)中被連續(xù)地放置。在這個(gè)體系結(jié)構(gòu)中,DBMS僅需要讀取為處理給定查詢所需的那些列的值,并且能夠避免把不相關(guān)的字段值(屬性)加載到存儲(chǔ)器中。因此,高性能的即席查詢被實(shí)現(xiàn),并且具有列存儲(chǔ)體系結(jié)構(gòu)的DBMS被稱為讀取優(yōu)化系統(tǒng)(R0S)。[0036]塊包含一個(gè)或多個(gè)事件。因?yàn)槭录梢员徽J(rèn)為是表格的行,所以塊可以被認(rèn)為包含表格的一個(gè)或多個(gè)行。換言之,塊可以被認(rèn)為遵從行存儲(chǔ)體系結(jié)構(gòu)。例如,事件被連接在一起,一個(gè)事件接著另一個(gè)事件,從而被輸入到(基于行的)塊中。盡管塊是基于行的,但也可以生成基于列的塊。例如,構(gòu)建塊的不同方式是把事件表格的每個(gè)列存儲(chǔ)為不同的(基于列的)塊。每個(gè)基于列的塊表示事件表格中的列(即,多個(gè)事件中的相同字段的一組值)。取代把表格表示為包含全部行(事件)的一個(gè)大的基于行的塊,表格表示多個(gè)基于列的塊(表格的每個(gè)列一個(gè))。
[0037]控制系統(tǒng)270在行存儲(chǔ)282和列存儲(chǔ)281 二者中存儲(chǔ)相同的事件數(shù)據(jù)。因此,每個(gè)事件可以被存儲(chǔ)兩次。例如,對(duì)于相同的事件,表示行的塊和表示列的塊分別存儲(chǔ)在基于行的表格中和基于列的表格中。所述表格可以存儲(chǔ)在數(shù)據(jù)文件285中。
[0038]基于行的塊的生成和存儲(chǔ)、以及基于列的塊的生成和存儲(chǔ)可以不被作為相同交易的一部分而被執(zhí)行。如果事件正在以非常高的速率被接收,則基于列的塊的生成和存儲(chǔ)(“索引”)可能落后于基于行的塊的生成和存儲(chǔ)。沒有數(shù)據(jù)由于索引的成本(例如,時(shí)間成本)而被刪除或延遲。要注意的是:即使所述索引落后于基于行的塊的生成和存儲(chǔ),但所述用戶仍然能夠使用基于行的塊查詢?nèi)渴录?shù)據(jù)。
[0039]此外,基于行的塊和基于列的塊可以與不同的保留策略相關(guān)聯(lián)。例如,存儲(chǔ)一組事件的基于行的塊可以與第一保留策略相關(guān)聯(lián),以及存儲(chǔ)相同的事件組的基于列的塊可以與第二保留策略相關(guān)聯(lián)(或多個(gè)保留策略,如上所述的)。只要基于行的塊存在,基于列的塊就可以被再創(chuàng)建(如果必要)。同樣地,只要基于列的塊存在,基于行的塊就可以被再創(chuàng)建(如果必要)。通常,在多個(gè)基于列的塊中存儲(chǔ)一組事件比在一個(gè)基于行的塊中需要較少的空間。因此,(例如,對(duì)于相同的事件組),依據(jù)保留策略的一個(gè)示例,基于列的塊比基于行的塊存儲(chǔ)得更久。
[0040]此外,對(duì)于事件的基于列的存儲(chǔ),全部的列可以不被存儲(chǔ)??紤]使用基于行的塊存儲(chǔ)的一組事件。代替把事件的全部的列存儲(chǔ)為基于列的塊,僅所選擇的列可以采用這種方式存儲(chǔ)。因?yàn)榛诹械膲K查詢更快,所以,在一個(gè)示例中,最頻繁被查詢的列被存儲(chǔ)為基于列的塊。要注意的是,盡管剩余的列不被存儲(chǔ)為基于列的塊,但因?yàn)榛谛械膲K包括全部事件數(shù)據(jù),所以其字段值仍然能夠通過使用基于行的塊來(lái)查詢。
[0041]在另一個(gè)示例中,優(yōu)化對(duì)存儲(chǔ)為基于行的塊的事件的查詢的一種方式是:為最頻繁被查詢的事件字段創(chuàng)建基于列的塊。創(chuàng)建這些基于列的塊可以在事件存儲(chǔ)過程中的任何點(diǎn)處發(fā)生。存儲(chǔ)對(duì)策(諸如,是否把事件存儲(chǔ)為基于行和/或基于列的體系結(jié)構(gòu))、保留策略(哪些字段用于基于列的存儲(chǔ))可以由用戶或另一個(gè)系統(tǒng)來(lái)選擇,并可以在任何時(shí)間被改變。
[0042]控制系統(tǒng)270可以接收例如由用戶生成的查詢,并且所述查詢引擎272生成查詢匯總,并且還可以生成查詢的完整搜索結(jié)果。查詢匯總提供對(duì)查詢匯總字段的搜索結(jié)果的聚集計(jì)數(shù)。計(jì)數(shù)包括每個(gè)查詢匯總字段的完整搜索結(jié)果中的字段值的計(jì)數(shù)。所述計(jì)數(shù)可以按查詢匯總字段布置。如上面所指出的,查詢匯總字段可以包括:比用于存儲(chǔ)數(shù)據(jù)的字段總數(shù)少的字段子集。例如,事件模式可以包括300-500個(gè)描述事件數(shù)據(jù)的字段。例如,查詢匯總可以包括10-20個(gè)來(lái)自所述模式的字段。查詢引擎272還提供了向下鉆取的能力,其允許用戶在計(jì)數(shù)上向下鉆取,以精化所述搜索并收集更多關(guān)于數(shù)據(jù)的信息。[0043]在一個(gè)示例中,查詢匯總包括查詢匯總字段的柱狀圖(例如,排名前十的字段值)。例如,對(duì)于源設(shè)備字段,所述柱狀圖包括生成與所述查詢匹配的事件的排名前十的源設(shè)備。查詢匯總還可以指示每個(gè)源設(shè)備的命中百分比,例如,源設(shè)備A產(chǎn)生50%的命中。為了向下鉆取,用戶可以點(diǎn)擊柱狀圖中的源設(shè)備A,并且查詢引擎272提供由源設(shè)備A生成的命中的列表。
[0044]圖3圖示了使用數(shù)據(jù)存儲(chǔ)系統(tǒng)122的混合數(shù)據(jù)存儲(chǔ)生成查詢匯總的方法300。方法300以及在此描述的其它方法的步驟可以由數(shù)據(jù)存儲(chǔ)系統(tǒng)122和所述數(shù)據(jù)存儲(chǔ)系統(tǒng)122的組件(圖2中示出)執(zhí)行。在301,查詢引擎272接收查詢。在302,查詢引擎272確定查詢匯總字段。查詢匯總字段可以從存儲(chǔ)中預(yù)先確定和檢索、或可以由用戶選擇、或可以由計(jì)算機(jī)化的過程選擇。在303,查詢引擎272確定全部的查詢匯總字段是否被存儲(chǔ)在所述列存儲(chǔ)281中。如果是,則在304,查詢引擎272搜索列存儲(chǔ)281來(lái)生成查詢匯總。如果全部的查詢匯總字段被存儲(chǔ)在列存儲(chǔ)281中,則在304可以不使用行存儲(chǔ)282。如果至少一個(gè)查詢匯總字段未被存儲(chǔ)在列存儲(chǔ)281中,則在305查詢引擎272搜索行存儲(chǔ)282來(lái)生成查詢匯總。在305,可以不使用列存儲(chǔ)281,并且所述搜索可以僅在行存儲(chǔ)282上執(zhí)行。在306,查詢引擎271根據(jù)如在303-305所確定的對(duì)行存儲(chǔ)282或列存儲(chǔ)281的搜索來(lái)生成查詢匯總。例如,在306,查詢引擎272運(yùn)行對(duì)所選擇的存儲(chǔ)的查詢,并且確定對(duì)查詢匯總字段的命中計(jì)數(shù),從而生成查詢匯總字段的柱狀圖。例如,如果查詢匯總字段是源設(shè)備,則在完整的查詢搜索結(jié)果中,生成每個(gè)源設(shè)備的計(jì)數(shù)。為了確定每個(gè)源設(shè)備的計(jì)數(shù),每當(dāng)查詢搜索結(jié)果中的事件包括特定源設(shè)備時(shí),針對(duì)特定源設(shè)備的計(jì)數(shù)被遞增。這些計(jì)數(shù)可以在查詢匯總中被提供。此外,計(jì)數(shù)可以被聚集以節(jié)約存儲(chǔ)器的空間(如下面詳細(xì)描述的)。
[0045]查詢匯總可以生成并顯示在⑶I上。也可以顯示完整的查詢搜索結(jié)果。在著眼于一小組的列的情形下,列存儲(chǔ)281的查詢可以更快,但在著眼于大量的列的情形下,行存儲(chǔ)282的查詢可以更快。此外,查詢匯總可以被存儲(chǔ)在存儲(chǔ)器中。如下面進(jìn)一步詳細(xì)描述的,數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以優(yōu)化所述查詢匯總,使得它適合于能夠允許更快的向下鉆取的存儲(chǔ)器中。
[0046]圖4圖示了用于優(yōu)化向下鉆取的方法400。例如,在401,查詢引擎271為所接收的查詢生成查詢匯總。查詢匯總可以如上面在方法300中描述的那樣被生成。查詢匯總被顯示給用戶。在402,控制系統(tǒng)270接收向下鉆取請(qǐng)求,該向下鉆取請(qǐng)求針對(duì)向下鉆取標(biāo)識(shí)查詢匯總字段。向下鉆取請(qǐng)求可以由用戶經(jīng)由用戶接口選擇查詢匯總字段來(lái)生成。在403,控制系統(tǒng)270確定向下鉆取請(qǐng)求中的查詢匯總字段是否在列存儲(chǔ)281中。數(shù)據(jù)文件表格275存儲(chǔ)指示存儲(chǔ)在列存儲(chǔ)281中的字段的數(shù)據(jù)。數(shù)據(jù)文件表格275可以存儲(chǔ)其它信息,諸如,事件模式中的事件字段的列表、所發(fā)現(xiàn)的字段的列表、以及查詢匯總字段的列表。控制系統(tǒng)270可以訪問數(shù)據(jù)文件表格,以確定所述查詢匯總字段是否在列存儲(chǔ)281中。
[0047]在404,如果向下鉆取請(qǐng)求中的查詢匯總字段在列存儲(chǔ)281中,則查詢引擎272搜索列存儲(chǔ)281以檢索與針對(duì)查詢匯總字段的查詢相匹配的事件。所檢索的事件可以顯示給用戶。
[0048]如果向下鉆取請(qǐng)求中的查詢匯總字段不在列存儲(chǔ)281中,則在405,控制系統(tǒng)270確定向下鉆取請(qǐng)求中的查詢匯總字段是否是事件模式中的預(yù)定字段。例如,所述事件模式包括預(yù)定字段,預(yù)定字段可以是300-500個(gè)字段。被存儲(chǔ)引擎271確定為與事件模式中的任何字段都不匹配的事件數(shù)據(jù)可以被存儲(chǔ)在發(fā)現(xiàn)的字段中。例如,當(dāng)事件被生成時(shí),存儲(chǔ)引擎271接收如下數(shù)據(jù),該數(shù)據(jù)為源設(shè)備指示空閑的存儲(chǔ)器(例如,可用存儲(chǔ)器容量)。如果在事件模式中沒有空閑的存儲(chǔ)器字段,則所發(fā)現(xiàn)的字段可以被創(chuàng)建并被稱為空閑存儲(chǔ)器。所發(fā)現(xiàn)的字段可以被存儲(chǔ)在行存儲(chǔ)282中。
[0049]如果向下鉆取請(qǐng)求中的查詢匯總字段在事件模式中,則在406,查詢引擎272搜索行存儲(chǔ)282,以檢索與針對(duì)查詢匯總字段的查詢相匹配的事件。檢索到的事件可以被顯示給用戶。
[0050]如果向下鉆取請(qǐng)求中的查詢匯總字段不在事件模式中(例如是發(fā)現(xiàn)的字段),則在407,查詢引擎272使用與所發(fā)現(xiàn)的字段相關(guān)聯(lián)的標(biāo)記(token)搜索行存儲(chǔ)282,以檢索與針對(duì)查詢匯總字段的查相詢匹配的事件。所檢索到的事件可以被顯示給用戶。因?yàn)闃?biāo)記搜索不能夠強(qiáng)化標(biāo)記的位置,所以來(lái)自所述標(biāo)記的搜索結(jié)果可能不精確。為了使所述搜索結(jié)果更精確,正則表達(dá)匹配可以被應(yīng)用到所述搜索結(jié)果中的事件,并且選擇適合的事件。要注意的是:正則表達(dá)可以被直接應(yīng)用,而無(wú)需使用所述標(biāo)記,但使用所述標(biāo)記使向下鉆取更快。
[0051]行存儲(chǔ)282可以按標(biāo)記索引,以改進(jìn)搜索性能。在一個(gè)示例中,標(biāo)記可以包括發(fā)現(xiàn)的字段的名稱,諸如,空閑存儲(chǔ)器。標(biāo)記可以與字段值相關(guān)聯(lián)。例如,查詢匯總指示時(shí)間的50%,空閑存儲(chǔ)器=1024字節(jié)。用戶選擇空閑存儲(chǔ)器=1024字節(jié)用于向下鉆取。行存儲(chǔ)282可以在空閑存儲(chǔ)器和1024字節(jié)的標(biāo)記上被索引。在407,查詢引擎272使用空閑存儲(chǔ)器和1024字節(jié)的標(biāo)記來(lái)搜索行存儲(chǔ)器282,標(biāo)記可以在搜索結(jié)果中標(biāo)識(shí)與那些標(biāo)準(zhǔn)匹配的全部源設(shè)備和事件。
[0052]如上面所指示的,查詢匯總可以被優(yōu)化以減小其大小,使得它可以被存儲(chǔ)在存儲(chǔ)器中。此外,字段中唯一條目的數(shù)量可能太大而無(wú)法適應(yīng)于所述用戶接口。例如,查詢匯總字段可以是發(fā)送字節(jié)的數(shù)量。對(duì)于這個(gè)字段,可能有數(shù)千個(gè)不同的值,因此,全部的值或排名前10%的值可能太大而無(wú)法在用戶的顯示屏幕上適應(yīng)。依據(jù)實(shí)施例,通過引入層次結(jié)構(gòu)和/或抑制條目而減小字段基數(shù)。例如,不同的字段值可以被組合到存儲(chǔ)段中,并且可以確定所述存儲(chǔ)段的聚集計(jì)數(shù)。
[0053]圖5圖示了減小字段基數(shù)的方法500。在501,控制系統(tǒng)270識(shí)別字段。例如,所述字段是查詢匯總字段。在502,控制系統(tǒng)270確定所述字段的值是否可以被聚集到存儲(chǔ)段中(即,存儲(chǔ)段化)。例如,數(shù)字值可以被存儲(chǔ)段化,但空閑的文本字段不可以被存儲(chǔ)段化。如果字段值可以被聚集到類別中,則所述值可以被存儲(chǔ)段化。
[0054]在503,如果字段值可以被存儲(chǔ)段化,則控制系統(tǒng)270確定所述字段值的存儲(chǔ)段。例如,數(shù)字字段值的存儲(chǔ)段可以是:數(shù)十,數(shù)百,數(shù)千等。例如,對(duì)于一億個(gè)事件中的字節(jié)字段的數(shù)量,存在一百萬(wàn)個(gè)值。控制系統(tǒng)270可以首先嘗試創(chuàng)建數(shù)十的存儲(chǔ)段,諸如,0,10,20,30等。每個(gè)字段值被放入到存儲(chǔ)段中。例如,0-9字節(jié)被放入到存儲(chǔ)段O中,10-19字節(jié)被放入到存儲(chǔ)段10中,等等。如果存在太多的存儲(chǔ)段(這可以通過與預(yù)定最大數(shù)量的存儲(chǔ)段閾值相比較來(lái)確定),則存儲(chǔ)段的大小可以被增加到數(shù)百,然后數(shù)千等。存儲(chǔ)段閾值可以基于存儲(chǔ)器的大小和/或能夠在單個(gè)顯示器中示出的值的最大數(shù)量而確定。相似地,日期和時(shí)間字段、以及地址字段被存儲(chǔ)段化。例如,對(duì)于地址,控制系統(tǒng)270可以持續(xù)增加子網(wǎng)掩碼來(lái)創(chuàng)建存儲(chǔ)段。
[0055]在一些實(shí)例中,如果字段值被放入統(tǒng)一存儲(chǔ)段中,則所述存儲(chǔ)段變得偏斜。為了使偏斜最小化,對(duì)數(shù)刻度被創(chuàng)建并且控制系統(tǒng)270持續(xù)增加所述對(duì)數(shù)的底,以及把事件放入那些存儲(chǔ)段中。
[0056]在504,存儲(chǔ)段的計(jì)數(shù)被確定。所述計(jì)數(shù)可以是存儲(chǔ)段中值的數(shù)量。每個(gè)存儲(chǔ)段計(jì)數(shù)被認(rèn)為是聚集計(jì)數(shù)。
[0057]在505,如果所述字段值不能夠被存儲(chǔ)段化,則所述字段的近似計(jì)數(shù)被確定。例如,事件的名稱是空閑文本字段,并且這個(gè)字段中的字符串不能夠被聚集。例如,即使少量的字符是相同的,但因?yàn)槊Q不可以被相關(guān),所以名稱仍然不能夠被存儲(chǔ)段化。
[0058]控制系統(tǒng)270可以為預(yù)定數(shù)量的條目(例如,1000個(gè)條目)保持近似的計(jì)數(shù),而不是保持精確的計(jì)數(shù)。例如,字段的1000個(gè)不同字段值以排列的順序(諸如,從最大值到最小值)被保持。與查詢匹配的事件可以包括:不在1000個(gè)排列的字段值中的字段中的新的字段值。假設(shè)這個(gè)新的字段不在1000個(gè)字段值的柱狀圖中,具有最小數(shù)量(例如,最小計(jì)數(shù))的條目的字段值被從所述柱狀圖中丟棄,并且新的字段值被添加到所述柱狀圖。如果新的字段值之前未被丟棄,則所述新的字段值的計(jì)數(shù)是I。然而,如果字段值之前被丟棄,則所述新的字段值的計(jì)數(shù)被設(shè)置在所丟棄的值的計(jì)數(shù)加I。為了確定字段值之前是否被丟棄,每個(gè)字段值的布隆(bloom)過濾器可以被保持。所述布隆過濾器存儲(chǔ)少量的數(shù)據(jù),該數(shù)據(jù)被用于確定字段值之前是否被接收。使用這個(gè)數(shù)據(jù),布隆過濾器可以用相當(dāng)高程度的確定性來(lái)指示所述字段值是否之前被接收和丟棄。
[0059]在506,查詢引擎272采用每個(gè)存儲(chǔ)段的計(jì)數(shù)、或所述字段的近似計(jì)數(shù)來(lái)生成查詢匯總。針對(duì)每個(gè)查詢匯總 字段,方法500可以被重復(fù)。
[0060]在不弄亂用戶視圖的情形下,示出全部查詢匯總字段可能是不可能的。為了充分利用屏幕上的空間,所述查詢匯總字段可以依據(jù)所述字段提供的信息以優(yōu)先順序排列。優(yōu)先級(jí)可以確定什么查詢匯總字段被首先示出。
[0061]圖6圖示了確定如何以優(yōu)先順序排列查詢匯總字段的方法600。在601,控制系統(tǒng)270確定查詢匯總字段是否過多而無(wú)法示出給用戶。最大字段的閾值數(shù)量可以被預(yù)先確定。如果超過所述閾值,則存在過多的字段。如果是,則在602,控制系統(tǒng)270確定每個(gè)字段在所述查詢結(jié)果中的頻率。在603,控制系統(tǒng)270確定每個(gè)字段如何偏斜。偏斜由依據(jù)信息理論的熵來(lái)測(cè)量。熵是與隨機(jī)變量相關(guān)聯(lián)的不確定性的量度?,F(xiàn)在描述熵計(jì)算的示例。具有可能值U1,...,xn}的離散隨機(jī)變量X的熵H可以被表示為:H(X) = S(I(X))0這里的E是期望值,并且I是X的信息內(nèi)容。I⑴本身是隨機(jī)變量。如
果P表示X的概率質(zhì)量函數(shù),則熵可以被明確地寫為:H(X) = ^=1 i?(Xi)I(Xi)。在604,
依據(jù)頻率和偏斜(例如,所測(cè)量的熵)來(lái)以優(yōu)先順序排列所述字段。例如,如果源設(shè)備正發(fā)送數(shù)據(jù)的90%,則所述源設(shè)備字段是高優(yōu)先級(jí),并且在第一屏幕中被示出。
[0062]控制系統(tǒng)270可以針對(duì)相關(guān)的字段生成元組。例如,如果源設(shè)備X生成查詢結(jié)果中事件的50%并且目標(biāo)設(shè)備Y占查詢結(jié)果中事件的50%,則因?yàn)榇蟛糠值氖录丛O(shè)備X和目標(biāo)設(shè)備Y,所以元組被生成以示出所述字段之間的關(guān)系。例如,因?yàn)榘丛O(shè)備X的事件的35%也包括目標(biāo)設(shè)備Y,并且因?yàn)榘繕?biāo)設(shè)備Y的字段的30%也包括源設(shè)備X,所以元組可以包括源設(shè)備X=35%,目標(biāo)設(shè)備Y=30%。最頻繁的元組經(jīng)由用戶接口以表格或基于樹的格式示出給用戶。包含每個(gè)元組的事件和其子集的數(shù)量被示出給用戶。這種示出元組而不是單個(gè)字段值的方式允許用戶識(shí)別事件中不同字段之間的相關(guān)。
[0063]圖7圖示了生成元組的方法700。在701,控制系統(tǒng)270在搜索結(jié)果中識(shí)別高百分比的字段值。例如,控制系統(tǒng)270識(shí)別源設(shè)備字段具有字段值,例如,源設(shè)備=X,其占查詢結(jié)果中事件的49%以上,并且識(shí)別目標(biāo)設(shè)備字段具有字段值,例如,目標(biāo)設(shè)備=Y,其占查詢結(jié)果中事件的49%以上。閾值百分比可以被用于識(shí)別這些高百分比的字段值。在702,控制系統(tǒng)270確定高百分比的字段值之間的相關(guān)。所述相關(guān)可以包括高百分比的字段值在相同的事件中的指示,以及指示高百分比的字段值在相同字段事件中的時(shí)間量的度量。在703,控制系統(tǒng)270根據(jù)相關(guān)生成元組。例如,元組可以包括(源設(shè)備Χ=35%,目標(biāo)設(shè)備Υ=30%)。因?yàn)樵M包含多個(gè)字段的字段值,所以元組是多維的。在704,控制系統(tǒng)生成元組顯示。元組顯示可以包括元組列表。元組顯示可以包括元組樹。例如,元組中高百分比的字段值被單獨(dú)示出。用戶可以在高百分比的字段值上向下鉆取,來(lái)以樹的格式顯示高百分比的字段值的元組列表。所述樹中的元組還可以采用表格格式來(lái)顯示。
[0064]控制系統(tǒng)270確定預(yù)定時(shí)間周期(被稱為時(shí)段)的全局匯總。圖8示出了確定全局匯總的方法800。在801,事件在數(shù)據(jù)存儲(chǔ)系統(tǒng)122被接收。在802,控制系統(tǒng)270確定當(dāng)前時(shí)段,并且所述時(shí)段中的事件在803被標(biāo)識(shí)。例如,對(duì)于每個(gè)5分鐘的時(shí)段,所述時(shí)段中的事件的全局匯總被確定。事件的ET或MRT可以被用于確定事件是否在特定的時(shí)段中。在804,當(dāng)前時(shí)段中的事件的全局匯總被確定。針對(duì)對(duì)于下一個(gè)5分鐘時(shí)段重復(fù)方法800,等等。因此,全局匯總在每個(gè)時(shí)段的整個(gè)時(shí)間上被連續(xù)地確定,并被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)系統(tǒng)122中。元數(shù)據(jù)指示時(shí)段的時(shí)間周期。全局匯總可以包括事件模式中的全部字段或字段子集的匯總。
[0065]此外,時(shí)段全局匯總可以被用于優(yōu)化在大時(shí)間范圍執(zhí)行的查詢。例如,全局匯總可以被用于快速確定具有針對(duì)查詢的命中的窄時(shí)間范圍,而不是搜索整個(gè)時(shí)間范圍。
[0066]圖9示出了可以與在此描述的實(shí)施例一起使用的計(jì)算機(jī)系統(tǒng)900。計(jì)算機(jī)系統(tǒng)900表示包括硬件組件的通用平臺(tái),該硬件組件可以在服務(wù)器或另一個(gè)計(jì)算機(jī)系統(tǒng)中。計(jì)算機(jī)系統(tǒng)900可以被用作針對(duì)數(shù)據(jù)存儲(chǔ)系統(tǒng)122的平臺(tái)。計(jì)算機(jī)系統(tǒng)900可以通過處理器或其它的硬件處理電路來(lái)執(zhí)行在此描述的方法、功能和其它過程。這些方法、功能和其它過程可以被具體化為計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)的機(jī)器可讀指令,該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是非臨時(shí)性的,諸如,硬件存儲(chǔ)設(shè)備(例如,RAM (隨機(jī)存取存儲(chǔ)器)、ROM (只讀存儲(chǔ)器)、EPROM (可擦除可編程ROM)、EEPROM (電可擦除可編程ROM)、硬盤驅(qū)動(dòng)器和閃存)。
[0067]計(jì)算機(jī)系統(tǒng)900包括可以實(shí)現(xiàn)或執(zhí)行機(jī)器可讀指令的處理器902,所述指令執(zhí)行在此描述的方法、功能和其它過程中的一些或全部。來(lái)自處理器902的命令和數(shù)據(jù)通過通信總線909來(lái)傳送。計(jì)算機(jī)系統(tǒng)900還包括:針對(duì)處理器902的機(jī)器可讀指令和數(shù)據(jù)可以在運(yùn)行時(shí)間期間駐留其中的主存儲(chǔ)器906 (諸如,隨機(jī)存取存儲(chǔ)器(RAM)),以及第二數(shù)據(jù)存儲(chǔ)908,其可以是非易失性的并且存儲(chǔ)機(jī)器可讀指令和數(shù)據(jù)。所述存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)是計(jì)算機(jī)可讀介質(zhì)的示例。
[0068]計(jì)算機(jī)系統(tǒng)900可以包括I/O設(shè)備910,諸如,鍵盤、鼠標(biāo)、顯示器等。計(jì)算機(jī)系統(tǒng)900可以包括連接到網(wǎng)絡(luò)的網(wǎng)絡(luò)接口 912。其它已知的電子組件可以在計(jì)算機(jī)系統(tǒng)900中被添加或替代。此外,數(shù)據(jù)存儲(chǔ)系統(tǒng)122可以在分布計(jì)算環(huán)境(諸如,云系統(tǒng))中實(shí)現(xiàn)。
[0069]盡管所述實(shí)施例已被參考示例來(lái)描述,但在不背離請(qǐng)求保護(hù)的實(shí)施例的范圍的情形下,對(duì)于所描述實(shí)施例的各種修改可以被做出。
【權(quán)利要求】
1.一種根據(jù)數(shù)據(jù)存儲(chǔ)系統(tǒng)中的列存儲(chǔ)和行存儲(chǔ)中存儲(chǔ)的數(shù)據(jù)生成查詢匯總的方法,所述方法包括: 接收查詢(301); 確定查詢匯總字段(302),所述查詢匯總字段包括來(lái)自用于在行存儲(chǔ)中存儲(chǔ)數(shù)據(jù)的模式的字段的子集; 確定全部的查詢匯總字段是否被存儲(chǔ)在列存儲(chǔ)中(303); 如果全部的查詢匯總字段被存儲(chǔ)在列存儲(chǔ)中,則針對(duì)查詢匯總字段中的查詢結(jié)果搜索列存儲(chǔ)(304); 如果查詢匯總字段中的一個(gè)未被存儲(chǔ)在列存儲(chǔ)中,則針對(duì)查詢匯總字段中的查詢結(jié)果搜索行存儲(chǔ)而不是列存儲(chǔ)(305);以及 由處理器根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總(306)。
2.如權(quán)利要求1所述的方法,其中,根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總包括: 確定每個(gè)查詢匯總 字段中的字段值的計(jì)數(shù);以及 在所述查詢匯總中提供所述計(jì)數(shù)。
3.如權(quán)利要求1所述的方法,其中,根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總包括: 由所述處理器把查詢匯總字段的字段值存儲(chǔ)段化成為存儲(chǔ)段(503); 確定所述存儲(chǔ)段中字段值的聚集計(jì)數(shù)(504);以及 在查詢匯總中提供所述聚集計(jì)數(shù)(505 )。
4.如權(quán)利要求1所述的方法,其中,把查詢匯總字段的字段值存儲(chǔ)段化成為存儲(chǔ)段包括:如果取得統(tǒng)一的存儲(chǔ)段,則通過增加對(duì)數(shù)刻度來(lái)確定存儲(chǔ)段。
5.如權(quán)利要求1所述的方法,其中,根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總包括: 確定查詢匯總字段中字段值的近似計(jì)數(shù),其中確定近似計(jì)數(shù)包括: 確定查詢匯總字段的預(yù)定數(shù)量的字段值; 接收不在所述預(yù)定數(shù)量的字段值中的字段值; 使用針對(duì)查詢匯總字段的布隆過濾器確定所接收的字段值是否是之前接收的字段值; 如果所述字段值被確定為之前已被接收,則識(shí)別來(lái)自預(yù)定數(shù)量的字段值的、具有最低計(jì)數(shù)的字段值,丟棄具有最低計(jì)數(shù)的字段值,把所接收的字段值包括在預(yù)定數(shù)量的字段值中,以及向所接收的值分配一個(gè)等于所述最低計(jì)數(shù)加I的計(jì)數(shù);以及 如果所述字段值被確定之前未被接收,則識(shí)別來(lái)自預(yù)定數(shù)量的字段值的、具有最低計(jì)數(shù)的字段值,丟棄具有最低計(jì)數(shù)的字段值,把所接收的字段值包括在預(yù)定數(shù)量的字段值中,并且向所接收值分配等于I的計(jì)數(shù)。
6.如權(quán)利要求1所述的方法,包括: 接收識(shí)別針對(duì)向下鉆取的查詢匯總字段的向下鉆取請(qǐng)求(401); 確定所述向下鉆取請(qǐng)求中的查詢匯總字段是否在列存儲(chǔ)中(403); 如果向下鉆取請(qǐng)求中的查詢匯總字段在列存儲(chǔ)中,則搜索列存儲(chǔ),以檢索與針對(duì)查詢匯總字段的查詢相匹配的數(shù)據(jù)(404); 如果向下鉆取請(qǐng)求中的查詢匯總字段不在列存儲(chǔ)中,則確定向下鉆取請(qǐng)求中的查詢匯總字段是否是所述模式中的字段(405); 如果向下鉆取請(qǐng)求中的查詢匯總字段是所述模式中的字段,則搜索行存儲(chǔ),以檢索與針對(duì)查詢匯總字段的查詢相匹配的數(shù)據(jù)(406);以及 如果向下鉆取請(qǐng)求中的查詢匯總字段不是所述模式中的字段,則使用與所述查詢匯總字段相關(guān)聯(lián)的標(biāo)記來(lái)搜索行存儲(chǔ),以檢索與針對(duì)查詢匯總字段的查詢相匹配的數(shù)據(jù)(407)。
7.如權(quán)利要求1所述的方法,其中,確定查詢匯總字段包括: 基于在查詢匯總字段中命中的偏斜和頻率,把查詢匯總字段按優(yōu)先順序排列;以及 依據(jù)查詢匯總字段的優(yōu)先級(jí)生成查詢匯總。
8.如權(quán)利要求1所述的方法,包括: 在查詢結(jié)果中識(shí)別特定字段值(701),所述特定字段值是多于預(yù)定數(shù)量的次數(shù)的查詢結(jié)果; 確定所述特定字段值之間的相關(guān)(702); 基于所述相關(guān)生成所述特定字段值的元組(703);以及 生成元組的元組顯示,所述元組顯示包括:元組的列表、每個(gè)元組的基于樹的顯示,或每個(gè)樹中元組的表格顯示(704 )。
9.如權(quán)利要求1所述的方法,包括: 生成時(shí)段全局匯總; 如果查詢是基于時(shí)間的,則使用時(shí)段全局匯總來(lái)優(yōu)化所述查詢。
10.一種包括機(jī)器可讀指令的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì)(906),當(dāng)所述指令由處理器(902)執(zhí)行時(shí),執(zhí)行從數(shù)據(jù)存儲(chǔ)系統(tǒng)中的列存儲(chǔ)和行存儲(chǔ)中存儲(chǔ)的數(shù)據(jù)生成查詢匯總的方法,所述指令包括如下的指令: 接收查詢(301); 確定查詢匯總字段(302),所述查詢匯總字段包括來(lái)自用于在行存儲(chǔ)中存儲(chǔ)數(shù)據(jù)的模式的字段的子集; 確定全部的查詢匯總字段是否被存儲(chǔ)在列存儲(chǔ)中(303); 如果全部的查詢匯總字段被存儲(chǔ)在列存儲(chǔ)中,則針對(duì)查詢匯總字段中的查詢結(jié)果搜索列存儲(chǔ)(304); 如果查詢匯總字段中的一個(gè)未被存儲(chǔ)在列存儲(chǔ)中,則針對(duì)查詢匯總字段中的查詢結(jié)果搜索行存儲(chǔ)而不是列存儲(chǔ)(305);以及 根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總(306)。
11.如權(quán)利要求10所述的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,從查詢匯總字段中的查詢結(jié)果生成查詢匯總的指令包括如下指令: 確定每個(gè)查詢匯總字段中的字段值的計(jì)數(shù);以及 在所述查詢匯總中提供所述計(jì)數(shù)。
12.如權(quán)利要求10所述的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總的指令包括如下指令: 把查詢匯總字段的字段值存儲(chǔ)段化成為存儲(chǔ)段(503);確定所述存儲(chǔ)段中字段值的聚集計(jì)數(shù)(504);以及 在查詢匯總中提供所述聚集計(jì)數(shù)(505 )。
13.如權(quán)利要求10所述的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,把查詢匯總字段的字段值存儲(chǔ)段化成為存儲(chǔ)段的指令包括如下指令:如果取得統(tǒng)一的存儲(chǔ)段,則通過增加對(duì)數(shù)刻度來(lái)確定存儲(chǔ)段。
14.如權(quán)利要求10所述的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總的指令包括如下指令: 確定查詢匯總字段中字段值的近似計(jì)數(shù),其中確定近似計(jì)數(shù)包括: 確定查詢匯總字段的預(yù)定數(shù)量的字段值; 接收不在所述預(yù)定數(shù)量的字段值中的字段值; 使用針對(duì)查詢匯總字段的布隆過濾器確定所接收的字段值是否是之前接收的字段值; 如果所述字段值被確定為之前已被接收,則識(shí)別來(lái)自預(yù)定數(shù)量的字段值的、具有最低計(jì)數(shù)的字段值,丟棄具有最低計(jì)數(shù)的字段值,把所接收的字段值包括在預(yù)定數(shù)量的字段值中,以及向所接收的值分配一個(gè)等于所述最低計(jì)數(shù)加I的計(jì)數(shù);以及 如果所述字段值被確定之 前未被接收,則識(shí)別來(lái)自預(yù)定數(shù)量的字段值的、具有最低計(jì)數(shù)的字段值,丟棄具有最低計(jì)數(shù)的字段值,把所接收的字段值包括在預(yù)定數(shù)量的字段值中,并且向所接收值分配等于I的計(jì)數(shù)。
15.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括: 處理器(902),用于: 接收查詢; 確定查詢匯總字段,所述查詢匯總字段包括來(lái)自用于在行存儲(chǔ)中存儲(chǔ)數(shù)據(jù)的模式的字段的子集; 確定全部的查詢匯總字段是否被存儲(chǔ)在列存儲(chǔ)中; 如果全部的查詢匯總字段被存儲(chǔ)在列存儲(chǔ)中,則針對(duì)查詢匯總字段中的查詢結(jié)果搜索列存儲(chǔ); 如果查詢匯總字段中的一個(gè)未被存儲(chǔ)在列存儲(chǔ)中,則針對(duì)查詢匯總字段中的查詢結(jié)果搜索行存儲(chǔ)而不是列存儲(chǔ);以及 根據(jù)查詢匯總字段中的查詢結(jié)果生成查詢匯總;以及 存儲(chǔ)器(906 ),用于存儲(chǔ)所述查詢匯總。
【文檔編號(hào)】G06F17/30GK103930887SQ201180074933
【公開日】2014年7月16日 申請(qǐng)日期:2011年11月18日 優(yōu)先權(quán)日:2011年11月18日
【發(fā)明者】D.達(dá)什, W.唐, M.奧拉亞尼, B.W.克利夫蘭, 宇津?qū)m正樹 申請(qǐng)人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)