时间序列搜索引擎的制作方法

文档序号:6375263阅读:222来源:国知局
专利名称:时间序列搜索引擎的制作方法
技术领域
本发明总体上涉及信息组织、搜索以及检索,并且更特别地涉及时间序列(time series)数据组织、搜索以及检索。
背景技术
时间序列数据通常是一个或多个连续流中出现的具有时间戳的记录的序列,其表示由离散事件组成的某些类型的活动。示例包括信息处理日志、市场交易以及来自于实时监视器的传感器数据(供应链、军事操作网络或安全系统)。为了理解以及利用发出大量时间序列数据的系统,编制索引、搜索以及呈现相关搜索结果是重要的。现有的大规模搜索引擎(例如,Google和Yahoo的web搜索)设计为满足对时间性不太敏感类数据的需要,并且该搜索引擎建立在如下假设上,即仅需要在索引库中存储数据的一个状态,例如,Web搜索索引中的URL、客户数据库中的记录或作为文件系统一部分的文档。针对信息的搜索通常基于关键字搜索项而仅检索单个信息的副本来自于几天前编制索引的Web站点的URL集合、来自于昨天营业结束时的客户记录或指定版本的文档。相反,考虑来自于如图I所示的典型信息处理环境中的时间序列数据的示例。防火墙、路由器、web服务器、应用服务器和数据库总是生成事件形式的数据流,其中,每秒可能出现数百次或数千次事件。这里,随时间变化的数据行为模式以及历史数据值通常与当前数据值一样重要。目前的搜索方案通常几乎不具有基于时间编制索引、搜索或结果呈现中相关性的概念,并且不符合时间序列数据的需要。与全文本搜索引擎(全文本搜索引擎对其索引进行组织,从而检索具有最高相关性分数的文档是最有效的)相比,搜索时间序列数据的引擎优选地对索引进行组织,从而对各种时间范围(包括不太近的时间范围)的访问是有效的。例如,与很多现代搜索引擎不同,对于时间序列搜索引擎来说,对特定关键字的前1000个结果进行高速缓存没有显著的益处。另一方面,鉴于时间序列数据的重复性质,存在对索引构造效率和搜索优化的机会。然而,由于可以从多个不同的源异步地、乱序地收集数据,因此对时间序列数据编制索引进一步复杂化。来自于一个源的数据流可能是数秒前的,而来自于另一个源的数据可以与其他源交织,或者可能比其他源要早数天、数周或数月。而且,数据源时间可能不是彼此同步的,这需要在编制索引后的时间偏移中进行调整。此外,时间戳可以具有几乎无限数量的格式,导致难以标识以及解释。在没有针对位置、格式或时间粒度(例如,日、小时、分钟、秒、亚秒)的标准的情况下,可能很难定位数据内的时间戳。搜索时间序列数据通常涉及以下能力有效地将搜索结果限制到指定时间窗以及基于时间的其他元数据(诸如频率、时间间隔分布)以及结果出现总数或类别。基于关键字的搜索通常在重要性方面是次要的,但是其在与基于时间的搜索机制组合时可能是强有力的。搜索时间序列数据需要全新的快速搜索方式。搜索引擎如今允许用户通过最频繁出现的项或数据内的关键字来进行搜索,并且通常几乎没有基于时间搜索的概念。如果存在大量时间序列数据并且具有重复性特征,则用户通常需要由使用基于时间的搜索机制缩小潜在的搜索结果集合开始,然后通过检验结果、选择一个或多个关键字添加到它们的搜索参数。时间帧和基于时间的元数据(比如频率、分布和出现概率)在搜索时间序列数据时是特别重要的,但是利用当前搜索引擎方法很难实现。例如,尝试利用基于Web的新闻站点搜索引擎查找2005年5月10日上午10点到11点之间所有涉及“航天飞机”的报道或 同一天中每小时“航天飞机”报道的平均数量。由于关注数据何时出现,基于时间的搜索机制和查询对于搜索时间序列数据可能是有用的。在特定的小规模领域中,存在某些现有的、基于时间搜索的有限应用。例如,电子邮件搜索如今在很多主流电子邮件程序和基于web的电子邮件服务中可用。然而,搜索限于简单的时间功能,比如,某时间之前、之后或时间范围;数据集合通常是小规模的,并且是来自于单个域的高度结构化的;并且实时编制索引机制仅仅是附加性的,通常需要对交织的新数据重建全部索引。呈现有用结果的挑战是时间序列数据的周期性所独有的。传统搜索引擎通常按照流行性以及通用性分类来呈现结果。与此相反,对于时间序列数据,重点可能在于关注数据模式以及不频繁出现或不寻常结果的能力。优选地,能够通过基于时间的模式和行为来组织和呈现时间序列搜索结果将是有益的。用户需要在多个粒度(例如,秒、分钟、小时、日)以及分布(例如,不期望或极少出现)水平来查看结果的能力,以及查看反映遍及结果集合的模式和行为的摘要信息的能力。另一方面,在试图首先显示最流行结果时,现有搜索引擎通常返回按照关键字密度排序的文本结果、使用统计或去往或来自文档和Web页面的链接。在一类时间序列搜索引擎中,希望该引擎实时地编制索引并且允许实时地搜索数据。收集时间数据之间的延迟,将可用于搜索的时间最小化。利用传统的大规模搜索引擎实现针对大量、频繁改变的数据集合的实时操作,其以快速数据可用性为代价而针对小的搜索响应时间进行优化。例如,Web和文档搜索引擎通常以种子开始并且通过爬取(crawl)收集数据,直到经过一定时间量或达到一定的收集规模。保存该收集的快照,并且建立、优化以及存储索引。然后,将被频繁访问的索引加载到高速缓存机构中以优化搜索响应时间。取决于数据集合的大小和索引的密度,该处理可能花费数小时或甚至数日来完成。这不同于实时时间序列编制索引机制,其中实时时间序列编制索引机制被设计为,将收集数据的时刻与该数据可用于搜索的时刻之间的时间最小化。能够在收集数据时自动对索引进行插入、删除以及重新组织,而不需要重建索引结构,其中该索引结构对于对时间序列编制索弓丨、以及针对此类时间序列搜索引擎提供实时搜索结果来说是重要的。关注于时间序列的其他软件(例如,诸如Sawmill或Google的Sawzall之类的日志事件分析器)可以提供实时分析功能,但是它们本身不是搜索引擎,因为它们不提供adhoc搜索。在任何分析之前,必须定义并建立报告。此外,没有通用的基于关键字或基于时间的搜索机制可用。其他流式传输数据搜索项目(包括Stanford流式项目以及来自于比如StreamBase Systems公司的产品)还可以产生流式传输数据的分析和报警,但是不提供任何持久性的数据、编制索引、基于时间或基于关键字的搜索。因此,需要开发其他技术,用于编制索引、搜索以及呈现来自时间序列数据的搜索结果。

发明内容
根据本发明的方法和装置允许使用时间序列搜索引擎(TSSE)来编制索引、搜索以及检索时间序列数据,从而满足这些和其他需要。在一个实现中,TSSE的一个方面是将 时间用作编制索引、搜索和/或呈现搜索结果的主要机制。特定于基于时间的搜索机制的时间序列搜索语言(TSSL)用于以人类可读的形式来表示搜索,并且使用特定于时间序列数据的相关性算法来呈现结果。搜索表达与结果基于对于搜索时间序列数据重要的关键概念,包括但不限于时间窗、频率、分布、出现模式以及来自于多个、离散源的相关时间序列数据点。在本发明的一个方面中,对时间序列数据的多个源组织以及编制索引以用于搜索,并且在用户或机器启动搜索时呈现结果。在另一方面,时间序列搜索引擎(TSSE)包括四个部分⑴时间戳处理;⑵编制索引处理;⑶搜索处理;以及⑷结果呈现处理。在本发明的一个方面中,计算机实现的、用于时间搜索数据的方法包括以下步骤。接收时间序列数据流。时间序列数据流的一个示例包括服务器日志以及其他类型的机器数据(即,由机器生成的数据)。时间序列数据流被标记时间戳,以创建具有时间戳的事件。对具有时间戳的事件进行时间索引,从而产生时间分段的(timebucketed)索引,其用于履行搜索请求。至少部分地通过搜索时间分段的索引来执行时间序列搜索请求。在某些实现中,对时间序列数据流标记时间戳包括将该时间序列数据流聚合为事件,并且对该事件标记时间戳。例如,事件可以按照域来分类,并且根据它们的域标记时间戳。在一个方法中,对于利用已知的时间戳格式在域中分类的事件,从该事件提取时间戳。然而,对于没有利用已知的时间戳格式在域中分类的事件,对时间戳进行内插。在本发明的另一方面中,根据被标记时间戳的事件的时间戳来将具有时间戳的事件分配给时间段,从而创建时间分段的索引。可以使用不同的时间段策略。例如,时间段可以全部具有相同的持续时间,或者可以具有不同的持续时间。此外,时间段可以使用懒惰分配(lazy allocation)策略进行实例化。还可以对时间戳事件分割,并且将片段用于确定时间分段的索引。可以使用各种形式的编制索引,包括热编制索引、暖编制索引以及推理编制索引。创建时间分段的索引促进时间序列搜索的执行。在一个方法中,将时间序列搜索请求针对受影响的时间段划分为不同的子搜索,同时在相应的时间分段的索引上执行每个
子搜索。本发明的其他方面包括对应于上述方法的软件、计算机系统和其他设备和针对上述全部内容的应用。


本发明具有其他优势和特征,当结合附图时,根据对本发明的详细说明书以及所附权利要求书,将更容易理解这些优势和特征,在附图中图I (现有技术)是时间序列数据环境的图示。图2是根据本发明的时间序列搜索引擎的图示。图3是适于与图2的时间序列搜索引擎一起使用的时间戳处理的图示。图4是适于与图3的时间戳处理一起使用的事件聚合处理的图示。
图5是适于图2的时间序列搜索引擎一起使用的编制索引处理的图示。图6是适于与图2的时间序列搜索引擎一起使用的搜索处理的图示。图7是适于与图2的时间序列搜索引擎一起使用的结果呈现处理的图示。附图仅出于说明的目的描绘了本发明的实施方式。本领域的技术人员将容易地根据以下讨论认识到,在不脱离在此所述本发明原理的情况下,可以采用本文所述的结构和方法的备选实施方式。
具体实施例方式图I示出了时间序列数据环境的不同示例,该环境具有遍及多个域的潜在大量数 据源以及时间序列数据的流。在该图中,第一幅图示出了信息处理环境,其具有服务器日志形式的来自于web服务器、应用服务器和数据库的时间序列数据。第二幅图是典型的市场 贸易环境,其具有多个购买者和销售者之间的以及两个或更多市场之间的事务。以事务记录的形式生成时间序列数据,该记录表示作为示例的目的或交易或交易的最终处理。在第三幅图中,示出了具有以记录测量形式产生时间序列数据的多个传感器的实时监视环境。所有这三个环境是TSSE的潜在应用的示例。将针对图I中的第一幅图(信息处理环境)描述本发明的多个方面,但是本发明也可以与其他时间序列数据环境和包括图I中示出的其他环境的应用一起使用。图2示出了构造TSSE的一个方法200。时间序列数据流205以同步或异步方式从多个源到达,多个搜索255由用户和/或其他系统表达,并且通过例如包括应用编程接口和基于web的用户接口的各种机制呈现结果集合275。
可以通过使TSSE直接收集时间序列数据流205,或使用户提供的脚本收集、预处理来进行收集,并将其传递到默认TSSE收集点,从而实现使时间序列数据流205到达TSSE200。该架构优选地容忍数据迟到以及在时间上的乱序。当前,大部分时间序列数据的源都不是针对数据的复杂处理而设计的,因此,通常TSSE将收集或向TSSE馈送原始时间序列数据(接近其原有形式)。TSSE可以位于不同的位置,只要其能够访问时间序列数据即可。例如,TSSE的一个副本可以运行在单个中心计算机上,或多个副本可以配置用于与每个副本建立对等连接,每个副本对同一时间序列数据流或不同时间序列数据流进行处理。图2示出了具有四个主要处理的示例TSSE 200 :时间戳处理210、索引处理220、搜索处理230和呈现处理240。时间戳处理210将原始时间序列数据205转换为具有时间戳的事件215,以便将其馈送至编制索引处理220。根据示出的信息处理示例,来自于多个web服务器、应用服务器和数据库的原始日志205可以由时间戳处理210进行处理,以标识各种日志格式内的独立事件215,并且正确地提取时间和其他事件数据。事件数据215由索引处理220使用,以便构建事件的时间分段的索引(time bucketed index) 225。这些索引225由搜索处理230利用,该搜索处理230执行来自于用户或系统的搜索255、分解搜索以及继而执行对索引集合的搜索。例如,用户可能希望定位在最近一个小时内出现的、来自于特定web服务器和特定应用服务器、并且其中包含特定IP地址的所有事件。此外,搜索处理230可以选择在搜索时启动创建元事件237,以处理有助于对重复时间数据进行搜索的、基于时间的统计摘要索引。例如,元事件237可以表示实际事件或基于更复杂模式行为的平均、中值或计数。在该情况下,用户可能希望搜索以发现出现频率为每分钟三次的所有事件。
在完成时,搜索处理230将结果从所选择的索引235传递到呈现处理240,该呈现处理240合并结果集合、分级集合以及将结果275馈送到API或用户接口用于呈现。I.时间戳处理图3中所示了 TSSE的示例性实现200的处理210,其旨在于获取流式传输的时间序列数据、标识该流内的单独事件以及将时间戳分配给每个事件。在图3中示出了示例时间戳处理210框图,并且包括多个步骤,所述步骤包括事件聚合310、域标识320、时间提取330和时间内插340。时间序列数据流205作为输入被接收至时间戳处理210,并且然后被处理为独立的具有时间戳的事件215。I. A事件聚合在图3的时间戳处理210中,步骤310将流式传输时间序列数据205聚合为独立事件315。在示出的信息处理示例中,web服务器时间序列数据流可以针对每个事件具有单一的行,并且容易标识。然而,应用服务器时间序列数据流可能包含具有大量行的单个事件,从而难以在流内标识单独的事件。在一个实现中,事件聚合310使用特征提取(例如,主要的标点符号、重要的词语、空白和换行符)以及机器学习算法来确定事件边界在何处。图4是适于与图3的时间戳处理一起使用的事件聚合处理的图示。I. A. I源标识-分类到域中在示出的信息处理示例中,如果时间序列数据205具有重复且动态的性质(该数据被称为机器数据205或MD205),则有效聚合处理310 (诸如在图4中示出)优选地将自动学习关于数据格式和结构。在一个实现中,基于MD 205的源,将知识划分为不同域。域可以是一般系统类型,诸如日志文件、消息总线业务以及网络管理数据,或指定类型的,诸如给定应用或技术的输出一Sendmail (发送邮件)日志数据、Oracle数据库审计数据以及J2EE消息传送。在该示例事件聚合处理310中,针对MD的给定源的域标识为415,从而可以应用特定于域的组织方法。通过学习过程来确定域。该学习过程将来自于公知域的MD集合用作输入,并且为每个域创建源签名412。在一个实现中,通过创建将标点字符映射到其频率的哈希表来从MD 205的代表性示例生成源签名412。虽然标志和标志值在MD集合中可以改变,但是在此特定实现中,按照标点符号频率生成的签名412非常稳定,并且在特定域内是可靠的。其他实现可以使用标点符号和标志的功能,诸如行上的第一标点字符的频率或行上的第一大写项。如果源签名412较大且难以读取,则签名可以具有可以由机器生成或人工指定的数字或文本形式的相应标签。例如,用于Apache web服务器日志的源签名412可能被编程地分配标签“205”,或用户可以被分配标签“Apache服务器日志”。在一个实施方式中,使用聚类(clustering)来根据所收集的MD205的源签名412将其分类到域中。当遇到MD205集合时,通过执行最近相邻搜索将每个集合的签名与已知源签名412的集合进行匹配。如果最近匹配签名412的距离在阈值之内,则假设最近匹配签名412是源的域。如果不能找到最佳匹配,则可以根据采样签名和所创建的新源域来创建新的源签名412。可替换地,可以使用默认源域。在一个实现中,通过对两个签名属性联合的迭代来计算两个签名之间的距离,其中总签名距离是针对每个属性的距离平均。对于每个属性A,比较Signaturel (签名I)和Signature〗(签名2)的值Vl和V2,并且计算距离。属性A的距离是(V1-V2)*IDF的平方,其中IDF是log (N/I Al),其中N是签名的数量,并且IAl是具有属性a的签名的数量。LA. 2源标识-分类为文本/ 二进制某些MD 205源是非文本的或二进制的,并且不易处理,除非已知处理可用于将二 进制MD转换为文本形式。为了将源分类为文本或二进制,分析采样MD集合。文本MD也可以具有嵌入的二进制MD,诸如存储器转储,并且分类优选地对其进行同样的标识。在一个实现中,文本/ 二进制分类以如下方式进行。采样是数据行的集合,其中行定义为新行(即,“\n”)、回车(即,“\r”)或它们的组合(即,“\r\n”)之间的数据。对于每一行,如果行的长度大于某些大阈值,诸如2k字符,或如果行包含具有零(O)值的ASCII的字符,则二进制类行的计数增加。否则,如果行的长度短于期望大部分文本行所低于的长度,诸如256字符,则文本类行的计数增加。如果文本类行的数量是二进制类行数量的两倍(根据上下文可以使用其他比例),则将源分类为文本。否则,将源分类为二进制。LA. 3将机器数据聚合为原始事件当用于MD的集合的源签名420已经标识时(415),则将相应的聚合规则应用于MD集合(425)。聚合规则描述了如下方式,以该方式,通过在MD集合内标识事件的边界将来自于特定域的MD205组织为事件数据315(425),例如,如何通过找到离散事件的开始和结尾来对其进行定位。在一个实现中,在没有先验知识的情况下,聚合方法425通过将来自于MD205的多行分组在一起来学习。通常,MD 205包含事件315,该事件315来自于在某种程度上逻辑分组到一起的一行到数百行长度的任何位置。在执行聚合之前,MD集合可以是事先已知的,或可以被分类为单行类型(即,仅包含单行事件)或多行类型(即,可能包含多行事件)。对于那些被分类为单行类型的MD集合,聚合425是简单的单行类型MD集合被分解,每行作为一个独立事件。对多行类型MD集合进行处理以用于聚合(425)。在一个实现中,如果1)存在大比例的以空格开始或是空白的行(例如,如果以空格开始或空白的行超过5% ),或2)在第一 N个标点字符中存在太多类型的标点字符,则将MD集合分类为多行类型。例如,如果在每行上找到的前三个标点字符集多于5种模式(例如,“::,,、“!则可能将集合分类为多行。聚合方法425的另一方面是以下能力通过分析MD的采样来学习是什么组成了行之间的间断以及因此成为事件之间的边界,并将该内容编成规则。例如,在一个实现中,聚合方法425将每两行作为一对进行比较,以寻找统计上的类似结构(例如,使用空白、缩进和时间戳),从而快速地学习哪两个属于一起而哪两个独立。在一个实现中,聚合425工作如下。对于每一行,首先检查行是否以时间戳开始。如果是,则中断。通常,以时间戳开始的行是新事件的开始。对于不是以时间戳开始的行,将当前行与之前的行合并,以查看该“行对”以一行在另一行之前的方式出现的频率(作为MD采样中总对的百分比)。使用行签名来取代行,其中行签名是行的更稳定版本,不受简单数字和文本改变的影响。在该实现中,可以通过将行转换为字符串来创建签名,其中字符串由引导空白、行上的任何标点以及行的首词连接。将行“10:29:03 Host 191. 168. O. Irebooting :normally (重启正常)”转换为 “ ..Host. ”。现在,该当前行签名可以与之前的行签名连接(即,signaturel与signature〗结合),并且用作间断规则表中的组合键。间断规则表将该组合键映射到间断规则,其确定在两行之间是否应该存在“间断”(即,它们是否是不同事件的部分)。间断规则可以具有置信度,并且更可信的规则可以覆盖不太可信的规则。可以通过分析两行的共现(co-occurrence)数据和它们签名相邻出现的百分比来自动创建间断规则。如果两个行签名高度共现,则新规则将推荐在它们之间不间断。可替换地,如果它们极少共现,则新规则将推荐在它们之间间断。例如,如果行签名A之后跟着行签名B的次数大于看到A次数的 20%,那么可以创建间断规则以推荐在它们之间不间断。还可以基于在另一行签名之后/之前的行签名的原始数量来创建规则。例如,如果假设行签名后跟着十个不同的行签名,则创建规则,该规则推荐在它们之间间断。如果在间断规则表中没有间断规则,则默认行为是间断的,并且假设两行来自不同事件。通过处理每个两行的对、更新行签名以及共现统计,以及应用和学习相应的间断规则来使处理前进。以规则的间隔,将间断规则表写出至硬盘或永久性存储装置。I. B时间戳标识一旦已经将输入的时间序列流205聚合为独立事件315,则将事件及其事件数据输入到时间戳标识步骤320中,该步骤确定时间序列事件数据是否包含如下标志,该标志指示匹配于一个已知时间戳格式的集合。如果包含,则认为数据具有来自于已知域的时间戳,并且执行提取330。否则,执行内插340。I. C时间戳提取如果已经针对事件标识了已知域,则将事件315作为对时间戳提取步骤330的输入,其中提取来自于原始事件数据的时间戳,并且将其随同事件传递到编制索引处理220。在示例性实现中,对来自于动态排序列表的潜在时间戳格式模式进行迭代,以此进行时间戳提取330,从而提取时间,该时间将被记录为从Unix epoch (O秒、O分钟、O小时,1970年I月I日,协调世界时)开始已过去的秒数,不包括润秒。此外,该实现考虑时区信息并且将时间规范化为公共偏移。为了提高性能,使用前移算法来确定该列表的排序,其中只要发现匹配,就将匹配模式移动到列表的开始。在此类实现中,最先并且最经常地检查最频繁出现的模式,以改进性能。可以这样维护前移列表在每个源的基础上,针对所有时间序列数据源一起维护(利用单个源中的格式很可能相似的事实),或按照某些其他配置来维持。I. C时间戳内插在事件不包含来自于已知域的时间戳的情况下,基于事件的上下文将时间戳分配给事件。在一个实现中,从来自于同一时间序列数据流的前一和后一事件315的时间戳线性内插,而得出时间戳(340)。如果这些事件也不包含来自于已知域的时间戳,则可以将更早和/或更晚的事件用于内插。时间戳提取模块330将来自每个时间序列数据流的每100个事件(或某些其他可配置的周期)的时间戳自动存储一次,以促进时间戳内插(340)。在另一实现中,基于与包括获取时间、创建时间或其他上下文的元时间数据的全部时间序列数据流205相关联的事件进行时间戳内插(340)。II.编制素引处理回到图2,在编制索引处理220中,基于输入的事件数据215创建索引。编制索引处理220在利用更多事件扩展索引集合时,以在线方式组织和优化索引集合。在图5中示出了示例TSSE编制索引处理220,在一个实现中,其包括多个步骤,这些步骤包括时间分段510、分割520、归档530、分配540、插入550、执行次级存储560、在次级存储中合并时间段570以及在次级存储中终止时间段580。II. A时间分段
通常,使用基于时间的运算符来查询、更新以及终止由TSSE编制索引的事件。通过在按照时间组织的时间段集合上对索引的分量进行哈希运算,则这些运算符的效率和性能可以显著改进。当然,时间分段的最终效率取决于硬件配置、事件到达的顺序以及如何对其进行查询,因此不存在单个最佳的时间分段策略。在一个实现中,使用具有统一扩展的时间段。例如,每个时间段可以处理一个小时的数据。备选策略可以改变从一个时段延伸到另一时段的时间段。例如,时间分段策略可以指定早于今天的事件的时间段是3小时时间段,但是按照小时来对出现在过去24小时期间内的事件的时间段进行哈希运算。在该信息处理示例中,时间段可以覆盖从01-15-200512:00:00到01-15-2005 14:59:59的时段。为了进一步改进效率,在主存储器(即,RAM)中使用懒惰分配策略(即,尽可能地晚)将时间段实例化。在存储器中,时间段具有最大容量,并且当它们达到极限时,将它们提交给硬盘并且由新时间段替换。时间段存储大小是时间分段策略的另一元素,并且其还随着时间范围的大小而改变。最终,时间段策略通常迫使(a)时间段不重叠,并且(b)覆盖所有可能的进入时间戳。在按照时间对事件编制索引的步骤510中,基于事件的时间戳和索引的时间分段策略来标识事件的合适的时间段。将每个进入事件215分配(510)给时间段,其中来自于该事件的时间戳与该时间段的时间标准相匹配。在一个实现中,使用由开始时间和结束时间限定的半开放间隔,其中开始时间包含边界,而结束时间排除边界。这样做以便使得在时间段边界上出现的事件被唯一分配给一个时间段。根据信息处理环境中示出的示例,可以将具有时间戳01-15-200512:00:01的数据库服务器事件分配给上述时间段。II. B 分_丨一旦已经针对事件标识(510) 了合适的时间段,则对原始事件数据进行分割(520)。片段(也称为标志)是进入事件文本的子串,并且分割520是关于进入事件数据的分割算法所隐含的片段集合。片段字串可以与另一个子串重叠,但是如果重叠,则其必须全部包含在子串内。允许将该属性递归地应用于所包含的子串,从而使片段层级形成关于进入文本的树。在一个实现中,通过选择两个互斥的字符集合来执行分割520,这两个互斥的字符集合称作次间断符(breaker)和主间断符。在分割原始数据期间,只要遇到次间断符要或主间断字符,便发出片段,其对应于在序列的一端具有至少一个主间断符的任何字节序列。例如在分割期间,如果发现次间断字符,那么记录如下片段,该片段对应于当前遇到的次间断符开始向后直到遇到的最后主间断符所引导的字符序列。如果遇到主间断符,则向后引导至最后主间断符或最后的次间断符(以最近出现的为准)的字符序列确定将要记录的下一分段。分割520规则描述了如何将事件数据划分为片段525 (也称为标志)。在一个实现中,分割规则检验事件内可能的分隔符或标点符号,例如,逗号、空格或分号。分割的重要方面是如下能力,即不仅标识独立的片段525,还标识重叠的片段。例如,可以将电子邮件地址的文本“bob. smith @ corp. com”分为独立和重叠的片段;< bob. smith >、<@>和< corp. com >可以被标识为独立的片段,并且<< bob. smith > <@ > < corp. com > >也可以被标识为重叠的片段。如上所述,在一个实现中,分割520使用针对主间断符和次间断符的两层系统。主间断是界定最外片段525的分隔符或标点。示例包括空格、制表符以及新行。次间断是将较大片段分为子片段的分隔符或标点符号,例如句号、逗号和等号。在一个实现中,将更复杂的分隔符和标点符号组合用于处理复杂的分割任务520,例如,处理 应用服务器日志文件中的Java异常。在示出的信息处理示例中的分割示例,可以使用空白作为主间断符,而使用句号作为次间断符,从而划分IP地址。因此,针对原始文本“192. 168. I. I”的片段可以是“192”“192.168”“192.168.1”“192.168.1.1”在另一实现中,某些片段可以表示已知实体,该实体可以通过算法或通过人工添加语义而被标记和进一步理解。例如,在上述表示中,“192. 168. I. I”可以理解为IP地址。可以以多种方式通过算法来执行已命名实体提取。在一个实现中,将来自于遍及多个事件的同一片段的片段值或片段形式与已知值或已知形式的实体字典进行比较。在另一实现中,将实体提取技术用于标识数据内的语义实体。在一个实现中,可以将搜索树或规则表达式应用于提取和验证例如IP地址或电子邮件地址。提取的目标是辅助分割处理520并且向数据提供语义值。II. C将事件归档并且为事件编制索引在处理中的该点处,进入事件具有时间戳215、片段525和与其相关联的时间段515。为了创建稍后将用于在搜索处理中执行查找的永久数据结构,存储具有分割的事件的原始数据,创建将片段和时间戳映射为事件数据存储中偏移的索引,并且计算和存储与该索引相关的元数据。由于TSSE近似实时地容忍新事件和新搜索两者的到达,因此系统优选地要仔细管理对盘的访问。对于索引,这通过将索引创建分为两个独立阶段来实现热编制索引(hotindexing)和暖编制索引(warm indexing)。热索引全部在RAM中管理、被优化用于最小可能的插入时间、是不可搜索的并且不持续。“暖”索引是可搜索的并且是持续的,但是不可改变。当需要热索引是可搜索的或持续的时,将它们转换为暖索引。在图5中示出的实现中,热索引555包含片段的封装数组、事件地址及其相关联时间戳的封装数组、以及将片段与其具有时间戳的事件地址相关联的记录列表(postingslist)。出于性能原因,封装数组可以具有与其相关联的哈希表,以提供对副本的快速移除。当对进入事件编制索引时,使用片段数组及其相关联的哈希,来针对副本对事件的每个片段进行测试。还针对副本参照事件地址数组及其相关联的哈希来对事件地址进行测试。如果属性之一是副本,则使用已经插入封装数组的该副本的实例。否则,将新片段或事件地址复制到合适的表550中,并且更新相关联的哈希表。当事件被插入热索引时,使用与每个封装数组相关联的空间。当热片的一个封装数组填满时或当热片的一个哈希表超过使用阈值(例如,如果超过一半的哈希表处于使用中)时,认为热片是“饱满的(at capacity)”。一旦热索引达到容量540,则其不能接受更多片段用于编制索引。取而代之的是,将其转换为暖索引,提交到盘560并且以新的空热索引取代。该特定系统的另一特征是推理编制索引。基于较早的编制索引处理,作为范例,可以使用所有或部分的代表性、已完成时间段来初始化新的时间段。换言之,通过保留可能合理地期望出现在时间段中的数据副本,可以通过推理地初始化部分热索引来改进编制索引 性能。在一个实施方式中,通过复制片段的封装数组及其相关联的来自于较早热索引的哈希表,来执行推理编制索引。然后,利用异常来照常填充热片,该异常是已经为副本测试填充以及准备了片段数组。由于高度规则的语言和机器有限的词汇,与该推理相关联的命中率可能非常高。搜索处理(如下一章节中描述)允许用户搜索片段、片段前缀和片段后缀。为了支持这些搜索类型,在一个实现中,可以对片段数组进行排序,并且然后存储为封闭的前编码词典(blocked front coded lexicon)(此后称为“前向词典”)。该数据结构使得在有效地执行片段和片段前缀查找的同时,还能实现合理量的片段文本压缩。在执行关于特定片段的搜索时,使用前向词典中片段的偏移作为查找与其他关联表中所查询的片段相关联的元数据的有效方式。为了处理后缀查找,可以在片段已经被字符串反转(此后称为反转词典)之后,针对同一片段集合创建封闭的前编码词典。而且,填充映射,该映射将反转词典中的反转片段的偏移转换为前向词典中的等效非反转片段偏移(此后称为“反转前向映射”)。当执行后缀查找时,将反转词典中的偏移用作反转前向映射中的偏移。存储在映射中该位置处的值是合适的偏移,以便用于暖索引中的其他元数据数组。暖索引优选地以有效的方式为每个已编制索引的片段提供事件偏移列表。在一个实现中,这可以通过维持已压缩记录列表的数组和相关联的到那些已封装记录列表开始的偏移数组来实现。可以按照片段偏移的顺序维持置入列表,因此,当执行查找时,可以使用片段ID来查找记录列表偏移数组的正确条目。记录列表条目中的值是应该用于查找事件地址封装数组中事件的偏移。最终,可以为每个已编制索引的片段(例如,片段的第一次和最后一次出现、平均间隔时间以及间隔时间的标准差)提供统计的元数据。在编制索引处理过程期间,可以多次填充单个时间段并将其提交给盘560。这将导致在针对单个时间跨度的次级存储装置中的多个、可独立搜索的索引。在示例性实现中,存在合并处理570,其将两个或更多暖索引作为输入,并且将它们合并为针对该时间段的单个暖索引。这是性能优化并且不是搜索所必需的。
II. D 终 Ih事件此外,在长时间周期上,对时间序列数据应用编制索引处理220将可能累积大量持久性数据。因此,编制索引处理优选地包含终止处理580,其基于用户提供的偏好针对将要删除的时间段来监测数据库。在一个实现中,这些偏好可能包括跟踪时间窗(“在搜索结果中不必返回3个月之前的事件”)、时间范围(“在搜索结果中不必返回当年I月之前的事件”)、事件的最大数量(“需要在搜索结果中返回不超过I百万个事件”)、或索引的最大总大小(“在消耗超过100GB盘时,尽可能地返回更多有用的搜索结果”)。针对符合终止标准的任何片,处理周期性地唤醒以及测试暖片集合。在终止时,将暖索引文件及其关联的原始事件数据移出活跃索引。不必删除索引文件。在一个实现中,可以将索引文件流式传输到不太昂贵的离线存储装置。III.榑素处理在图6中示出了的示例TSSE搜索处理,并且其包括多种方法,用于解析(610)搜 索短语,发布多个子搜索625从而满足进入的父搜索,使用子搜索635来修整搜索,以及将子搜索结果合并(640)到搜索结果的最终集合中以便呈现给用户。III. A时间序列搜索语言在搜索处理期间,根据时间序列搜索语言(TSSL)解析(610)输入的搜索短语255,从而生成注释的解析树615。示例性TSSL语言语义包括采用“name (名称):valUe(值)”格式的一系列修饰符或命令。某些修饰符可以具有默认的值,并且某些仅可以使用一次,然而某些可以在相同的搜索中以不同的值出现多次。示例包括如下内容average :值一使用值时间巾贞计算事件的平均数量。page:值一由“值”呈现搜索结果。“值”可以是秒、分、小时、日、周或月或任何其他元数据元素,例如,源或事件类型。count —计算事件的总数。daysago :值一搜索最后“值”天内的事件。index :值一待搜索的索引,即主要、默认、历史或由TSSE定义的另一索引。hoursago :值一搜索最后“值”小时数内的事件。eventtype :值一利用与指定“值”匹配的事件类型或标签搜索事件。host:值一搜索其主机名设置为指定“值”的事件。这是记录事件的主机,而不必是生成事件的主机。maxresults :值一将返回结果的最大数量。minutesago :值一搜索最后“值”分钟数内的事件。related :值一利用与一个或多个当前事件相匹配的片段值(例如,404或用户名)搜索事件。similar :值一利用与当前事件相类似的事件类型搜索事件。sourcetype :值一利用给定的“值”的源类型搜索事件。unexpected ::值一通过0(期望)到9(最不期望)的指定值搜索位于索引中所观察模式之外的事件。修饰符可以与关键字、通配符、字符串、引用短语和布尔运算符(诸如AND(与)、OR(或)、NOT(非))结合。可以将括号用于将搜索和子搜索短语嵌套在一起。示例搜索短语可以是 “sourcetype : :mysql*sock*NOT (started OR (host foo OR host BAR))maxresults 10 (eventtype baddb OR evettype 8512-3) daysago : :30,,。在一个实现中,定制解析器610处理布尔运算符“NOT”和“OR”并且默认为“AND”。该实现还使用括号处理以消除存在多个运算符时的歧义。否则,其从左至右进行关联。该实现还支持特定的搜索运算符,使用域说明符后跟着划界元素来指示特定的搜索运算符。例如,搜索“source: :1234”可以表明搜索者(人或系统)希望将结果限制于从特定源ID接收的事件。输入搜索短语还可以基于特定关键字的映射触发自组织(ad hoc)计算612。例如,可以将特定搜索字符串用于指示将周期性地存储并重新发布搜索或请求源列表。在该情况下,搜索字符串将连同以下调度一起存储在盘上的表中,所述调度指定应该重新发布搜索的调度。根据搜索结果,在执行时可以触发额外的动作。例如,可以发送电子邮件报警、可以更新RSS源、或可以执行用户提供的脚本。触发ad hoc计算612的搜索的另一示 例是,指示为稍后使用而保存但不周期性地重新发布的搜索。假设搜索解析器610确定应该针对搜索字符串来创建注释的语义树615,则下一组件(即搜索执行引擎620)将使用注释的语义树615来向时间分段的索引565发布子搜索625。在独立时间段656处将每个子搜索625作为目标。以最有利于修整给定的结果的排序顺序的顺序来查询时间段。例如,如果以逆时间顺序对搜索结果排序,则将首先发布针对最近时间段的子搜索。这允许搜索执行引擎620在处理附加(昂贵)的子搜索625之前检验子搜索的结果635。例如,如果特定子搜索返回了足够的结果635,则不必继续进行附加的子搜索625。一旦结果集合627已经累积到满足父搜索,则另一模块将取得结果并且将它们合并(640)为满足搜索的单个结果集合235、237。在一个实现中,该合并处理对来自于每个时间段的结果执行合并排序,以保持它们是按照呈现处理所需的顺序。IV.旱现处理如图7所示,在示例TSSE的示例性实现中的最终处理是呈现240的搜索结果的准备。不同于当前按照关键字相关性分级排序呈现非交互性结果的大规模搜索引擎,该示例TSSE可以按照时间、事件关系和关键字相关性分级组织而呈现结果。IV. A基于时间的旱.现对于对时间序列数据进行编制索引和搜索来说,使用时间作为主要维度呈现结果(710)是其特有的挑战。因为现有的大规模搜索引擎不按照时间组织信息,不考虑基于时间的结果呈现。然而,TSSE的主要益处是其能够按照时间属性编制索引、搜索以及呈现时间序列数据。可以这样来呈现结果基于离散时间范围或统计来计算聚合以及概括搜索结果。例如,示例TSSL可以指定仅查看针对特定时间帧的结果和/或查看按照秒、分钟、小时、日、周或月呈现的结果。这样,可以将搜索窗限制为时间巾贞,并且可以基于从搜索返回的期望的结果集合的密度将结果构建为最佳视图。搜索“192. 168. 169. 100 hoursago 24page :seconds”将返回包括关键字“ 192. 168. 169. 100”的时间序列事件,该事件出现在最近24小时内并且将按照秒概括显示结果。在TSSE的示例性实现中,概括可以包括针对概括窗聚合的概括事件的显示行和/或按照概括窗对结果分页。在上述示例中,每页搜索结果呈现可以包括时间上的一秒。示例包括但不限于以下能力·以时间计数滚动/分页数据(η)结果;·按照时间滚动/分页数据下一 /上一秒、分钟、小时、日、年;·指定每个时间巾贞的最大计数;·在分页的时间帧内获得接下来(η个)结果_( 一秒内)获得接下来的100个结
果OIV. B元数据旱期除了基于时间的呈现710,TSSE的示例优选是能够按照元数据特征720呈现结果的附加聚合和概括,特征诸如数据源、数据源类型、事件类型或源起主机。这 样,不仅可以按照时间组织结果,而且还通过元数据聚合和概括来完善结果。搜索“192. 168. 169. IOOpage :source”将呈现所有具有“ 192. 168. 169. 100” 的结果,并且将包含结果的每个数据源放在独立页上。示例包括但不限于 数据源的原始物理位置;·生成数据的原始物理机器、传感器等;·如由编制索引处理动态分配的数据源类型;·如由编制索引处理动态分配的事件类型。IV. C缩放控制因为时间和特定元数据参数(例如,机器IP地址)可以是连续的,示例TSSE用户交互模块可以包括使用缩放控制730以小的时间增量(秒或分钟)或元数据参数(不同类别的IP地址)移动。该缩放控制可以与其他元数据搜索参数合,并支持在大量数据间快速移动。示例包括但不限于以下能力·针对给定的时间(从任何秒到分钟、小时等)进行放大以及缩小;·针对特定的数据源类型和物理机器位置,针对2005年6月3日上午12:15放大到秒分辨率。IV. P旱现密度控制对于不同类型的用户(人和系统)以及各种类型的时间序列数据以及事件(例如,从几字节大小的单行事件,到几兆字节大小的多行事件),能够指定结果的密度是有用的。在一个实现中,可以控制(740)呈现强度,来仅以简单ASCII文本格式返回和/或显示原始数据,而没有任何元数据。可替换地,可以利用作为富XML的完整元数据返回或显示同
一结果。V.实现可以以很多不同的方式实现TSSE。在一个方法中,在各个图中示出的每个框以软件作为独立的处理实现。所有处理都可以运行在单个机器上或可以对它们进行划分,以便运行在独立的逻辑或物理机器上。在备选实施方式中,以计算机硬件、固件、软件和/或它们的组合实现本发明。本发明的装置可以以计算机程序产品实现,其中计算机程序产品有形地实现在机器可读存储设备中,以便由可编程处理器执行;并且本发明的方法步骤可以由可编程处理器执行,该可编程处理器执行程序指令以通过对输入数据进行操作并且生成输出来执行本发明的功能。有利的是,本发明可以以一个或多个计算机程序实现,这些计算机程序可在可编程系统上执行,该可编程系统包括至少一个耦合的可编程处理器,以从数据存储系统接收数据和指令,并且向数据存储系统传输数据和指令;至少一个输入设备以及至少一个输出设备。每个计算机程序可以通过高级过程或面向对象编程语言实现,或者如果希望,可以通过汇编或机器语言实现;并且在任何情况下,该语言可以是编译或解释语言。合适的处理器例如包括通用和专用微处理器两者。通常,处理器将从只读存储器和/或随机访问存储器接收指令和数据。通常,计算机将包括一个或多个用于存储数据文件的大容量存储设备;此类设备包括磁盘,诸如内部硬盘和可移动盘;磁光盘;以及光盘。使用有形地实现计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,例如包括半导体存储器设备,诸如EPROM、EEPROM和闪存设备;磁盘,诸如内部硬盘和可移动盘;磁光盘;以及CD-ROM盘。可以通过或集成ASIC (专用集成电路)和其他形式的硬件对任何前述内容进行补充。因此,尽管详细描述包含很多细节,但是这些不应被认为对本发明范围的限制,而且仅作为对本发明的不同示例和方面的说明。应该理解,本发明的范围包括未在上文详细讨论的其他实施方式。在不脱离如所附权利要求书限定的本发明的精神和范围的情况下,可以在本文公开的本发明的配置、操作和方法以及装置的细节中进行各种修改、改变和变 形,其对于本领域的技术人员来说易见的。因此,本发明的范围应由所附权利要求书及其法律等同物确定。
权利要求
1.一种用于通过网络搜索时间序列数据的方法,包括 采用计算设备从信息处理环境收集至少一个时间序列数据流,并且布置所述至少一个时间序列数据流以用于搜索,其中所述计算设备执行动作,所述动作包括 基于与所述至少一个时间序列数据流对应的域聚合所述至少一个时间序列数据流中的数据; 给所述至少一个时间序列数据流标记时间戳,以生成包括至少一部分经聚合数据的至少一个具有时间戳的事件; 基于所述时间戳给所述具有时间戳的事件编制时间索引以创建时间划分索引;以及 采用所述计算设备基于接收到的时间序列数据搜索请求搜索所述时间划分索引。
2.根据权利要求I所述的方法,其中所述收集所述至少一个时间序列数据流进一步包括采用脚本执行包括以下至少一个的动作收集、预处理和向所述计算设备递送所述至少一个数据流。
3.根据权利要求I所述的方法,其中所述动作进一步包括确定与所述至少一个时间序列数据流对应的至少一个域。
4.根据权利要求I所述的方法,其中所述动作进一步包括采用所述经聚合数据的至少一个特征来确定每个具有时间戳的事件的至少一个边界。
5.根据权利要求I所述的方法,其中所述具有时间戳的事件表示行为的统计和模式中的至少一个。
6.根据权利要求I所述的方法,其中所述动作进一步包括按照每个具有时间戳的事件的对应域对具有时间戳的事件进行分类。
7.根据权利要求I所述的方法,其中所述动作进一步包括对利用未知时间戳格式在域中被分类的每个事件的所述时间戳进行内插。
8.根据权利要求I所述的方法,其中所述动作进一步包括至少部分地基于时间戳将每个具有时间戳的事件分配给时间划分索引。
9.根据权利要求I所述的方法,其中所述时间序列数据流包括以下至少一个服务器日志,事务记录,以及记录的测量。
10.一种用于通过网络搜索时间序列数据的装置,包括 网络接口,用于支持通过所述网络的通信; 存储有指令的存储器; 处理器,用于执行所述指令以允许动作的执行,所述动作包括 从信息处理环境收集至少一个时间序列数据流, 布置所述至少一个时间序列数据流以用于搜索,其中所述布置的动作包括 基于与所述至少一个时间序列数据流对应的域聚合所述至少一个时间序列数据流中的数据; 给所述至少一个时间序列数据流标记时间戳,以生成包括至少一部分经聚合数据的至少一个具有时间戳的事件; 基于所述时间戳给所述具有时间戳的事件编制时间索引以创建时间划分索引; 接收针对所述时间序列数据的搜索请求;以及 搜索所述时间划分索引以提供针对所述搜索请求的结果。
11.根据权利要求10所述的装置,其中所述收集所述至少一个时间序列数据流进一步包括采用脚本执行包括以下至少一个的动作收集、预处理和向所述计算设备递送所述至少一个数据流。
12.根据权利要求10所述的装置,其中所述动作进一步包括确定与所述至少一个时间序列数据流对应的至少一个域。
13.根据权利要求10所述的装置,其中所述动作进一步包括采用所述经聚合数据的至少一个特征来确定每个具有时间戳的事件的至少一个边界。
14.根据权利要求10所述的装置,其中所述具有时间戳的事件表示行为的统计和模式中的至少一个。
15.根据权利要求10所述的装置,其中所述动作进一步包括按照每个具有时间戳的事件的对应域对具有时间戳的事件进行分类。
16.根据权利要求10所述的装置,其中所述动作进一步包括对利用未知时间戳格式在域中被分类的每个事件的所述时间戳进行内插。
17.根据权利要求10所述的装置,其中所述动作进一步包括至少部分地基于时间戳将每个具有时间戳的事件分配给时间划分索引。
18.根据权利要求10所述的方法,其中所述时间序列数据流包括以下至少一个服务器日志,事务记录,以及记录的测量。
19.一种处理器可读的非易失性存储介质,包括用于通过网络搜索时间序列数据的指令,其中处理器执行所述指令允许动作,所述动作包括 采用计算设备从信息处理环境收集至少一个时间序列数据流,并且布置所述至少一个时间序列数据流以用于搜索,其中所述计算设备执行动作,所述动作包括 基于与所述至少一个时间序列数据流对应的域聚合所述至少一个时间序列数据流中的数据; 给所述至少一个时间序列数据流标记时间戳,以生成包括至少一部分经聚合数据的至少一个具有时间戳的事件; 基于所述时间戳给所述具有时间戳的事件编制时间索引以创建时间划分索引;以及 采用所述计算设备基于接收到的时间序列数据搜索请求搜索所述时间划分索引。
20.根据权利要求19所述的介质,其中所述收集所述至少一个时间序列数据流进一步包括采用脚本执行包括以下至少一个的动作收集、预处理和向所述计算设备递送所述至少一个数据流。
21.根据权利要求19所述的介质,其中所述动作进一步包括确定与所述至少一个时间序列数据流对应的至少一个域。
22.根据权利要求19所述的介质,其中所述动作进一步包括采用所述经聚合数据的至少一个特征来确定每个具有时间戳的事件的至少一个边界。
23.根据权利要求19所述的介质,其中所述具有时间戳的事件表示行为的统计和模式中的至少一个。
24.根据权利要求19所述的介质,其中所述动作进一步包括按照每个具有时间戳的事件的对应域对具有时间戳的事件进行分类。
25.根据权利要求19所述的介质,其中所述动作进一步包括对利用未知时间戳格式在域中被分类的每个事件的所述时间戳进行内插。
26.根据权利要求19所述的介质,其中所述动作进一步包括至少部分地基于时间戳将每个具有时间戳的事件分配给时间划分索引。
27.根据权利要求19所述的介质,其中所述时间序列数据流包括以下至少一个服务器日志,事务记录,以及记录的测量。
28.一种用于通过网络搜索时间序列数据的系统,包括 客户端设备,包括 网络接口,用于支持通过所述网络的通信; 存储有指令的存储器; 处理器,用于执行所述指令以允许动作的执行,所述动作包括传送搜索请求;以及 服务器设备,包括 网络接口,用于支持通过所述网络的通信; 存储有指令的存储器; 处理器,用于执行所述指令以允许动作的执行,所述动作包括 从信息处理环境收集至少一个时间序列数据流, 布置所述至少一个时间序列数据流以用于搜索,其中所述布置的动作包括 基于与所述至少一个时间序列数据流对应的域聚合所述至少一个时间序列数据流中的数据; 给所述至少一个时间序列数据流标记时间戳,以生成包括至少一部分经聚合数据的至少一个具有时间戳的事件; 基于所述时间戳给所述具有时间戳的事件编制时间索引以创建时间划分索引; 从所述客户端设备接收所述搜索请求;以及 搜索所述时间划分索引以向所述客户端设备提供针对所述搜索请求的结果。
29.根据权利要求28所述的系统,其中所述收集所述至少一个时间序列数据流进一步包括采用脚本执行包括以下至少一个的动作收集、预处理和向所述计算设备递送所述至少一个数据流。
30.根据权利要求28所述的系统,其中所述服务器设备的所述动作进一步包括确定与所述至少一个时间序列数据流对应的至少一个域。
31.根据权利要求28所述的系统,其中所述动作进一步包括采用所述经聚合数据的至少一个特征来确定每个具有时间戳的事件的至少一个边界。
32.根据权利要求28所述的系统,其中所述具有时间戳的事件表示行为的统计和模式中的至少一个。
33.根据权利要求28所述的系统,其中所述服务器设备的所述动作进一步包括按照每个具有时间戳的事件的对应域对具有时间戳的事件进行分类。
34.根据权利要求28所述的方法,其中所述服务器设备的所述动作进一步包括对利用未知时间戳格式在域中被分类的每个事件的所述时间戳进行内插。
35.根据权利要求28所述的系统,其中所述服务器设备的所述动作进一步包括至少部分地基于时间戳将每个具有时间戳的事件分配给时间划分索引。
36.根据权利要求28所述的系统,其中所述时间序列数据流包括以下至少一个服务器日志,事务记录,以及记录 的测量。
全文摘要
本发明涉及时间序列搜索引擎。根据本发明的方法和装置基于搜索而提供组织、编制索引、搜索和呈现时间序列数据的能力。时间序列数据通常是一个或多个连续流中出现的具有时间戳的记录的序列,其表示某些类型的活动。在一个实施方式中,利用规格化时间戳将时间序列数据组织为离散事件,并且通过时间和关键字对这些事件编制索引。接收搜索请求,并且整体或部分地基于时间索引机制、关键字索引机制或搜索时计算的统计索引来检索相关事件信息。
文档编号G06F17/30GK102831214SQ201210293010
公开日2012年12月19日 申请日期2007年10月5日 优先权日2006年10月5日
发明者M·鲍姆, D·卡拉索, R·达斯, R·格林, B·哈尔, N·米利, B·墨菲, S·索尔金, A·斯特克特, E·M·斯旺 申请人:斯普兰克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1