CN113806401A - 数据流处理 - Google Patents

数据流处理 Download PDF

Info

Publication number
CN113806401A
CN113806401A CN202110651377.3A CN202110651377A CN113806401A CN 113806401 A CN113806401 A CN 113806401A CN 202110651377 A CN202110651377 A CN 202110651377A CN 113806401 A CN113806401 A CN 113806401A
Authority
CN
China
Prior art keywords
batch
field
data
particular field
inferred
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110651377.3A
Other languages
English (en)
Inventor
S·J·迈克纳马拉
E·W·德雷斯齐恩斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN113806401A publication Critical patent/CN113806401A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据流处理。更具体而言,公开了用于将数据流中的数据分区为批并基于每个批的字段值来推断用于各个批的模式的技术。即使不同批的数据记录是从共同的数据流或共同的数据源接收到的,系统也可以推断出与不同批的数据记录对应的不同模式。系统可以通过确定字段包含单个值还是多个值来推断模式。然后,系统确定与值相关联的(一个或多个)字段类型。然后将这些确定存储在为每个批生成的字典中。

Description

数据流处理
技术领域
本公开涉及处理数据流中的数据。特别地,本公开涉及对在数据流中接收的数据记录的逐批分析,以基于逐批生成数据存储模式。
背景技术
数据存储系统一般根据预定义的模式将数据存储在数据结构中。预定义的模式定义了由数据结构实例化的参数、参数类型和值类型。由数据存储系统接收的数据一般必须与数据库模式兼容,以便可以将数据存储在数据库的已建立结构中。
当应用于例如具有数十、数百或数千个参数/值对(有时俗称“大数据”)的数据流时,使用以单一模式配置存储数据的数据库在存储时或查询数据时可能具有挑战性。而且,在使用单个模式的数据库中存储数据也可以在多租户存储环境中带来挑战。例如,各种租户可能不会都以相同的方式收集数据或定义参数类型,也不一定以与数据库模式一致的格式收集数据。通过要求租户调整其数据收集和数据对象定义以匹配数据库模式,这会给系统的租户带来不便。当从租户接收的数据以与数据库模式不一致的方式结构化时,租户数据与数据库模式之间的差异也会造成数据存储的错误。
本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有说明,否则不应仅由于将本节中所述的任何方法包括在本节中而将其视为有资格作为现有技术。
附图说明
在附图的各图中,通过示例而非限制的方式图示了实施例。应当注意的是,在本公开中对“实施例”或“一个实施例”的引用不一定是指同一个实施例,并且它们意味着至少一个。在附图中:
图1是根据一个或多个实施例的将数据流处理成批、基于数据批本身推断字段类型和参数值并根据其自己推断出的模式存储与每个批相关联的经处理数据的示意图;
图2图示了根据一个或多个实施例的用于从数据流生成数据批并推断与每个批对应的模式的系统;
图3图示了根据一个或多个实施例的用于处理数据流的示例操作集合,其可以包括在逐批的基础上识别数据内的字段并推断字段类型;
图4图示了根据一个或多个实施例的用于批建立索引过程的示例操作集合;
图5图示了根据一个实施例的针对从公共源接收的数据推断出的不同模式的一个示例实施例,每个公共源包括不同的参数值对;以及
图6示出了图示根据一个或多个实施例的计算机系统的框图。
具体实施方式
在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供透彻的理解。可以在没有这些具体细节的情况下实践一个或多个实施例。一个实施例中描述的特征可以与另一个实施例中描述的特征组合。在一些示例中,参考框图形式描述了众所周知的结构和设备,以避免不必要地混淆本发明。
1.总体概述
2.系统体系架构
3.数据流处理
4.示例实施例
5.计算机网络和云网络
6.其它事项;扩展
7.硬件概述
1.总体概述
本文描述的一个或多个实施例包括将来自数据流的数据分区为批,并且基于每个批的字段值来推断各个批的模式。即使不同批的数据记录是从公共数据流或公共数据源接收到的,系统也可以推断与不同批的数据记录对应的不同模式。在示例中,系统可以分析第一批的数据记录以针对一个或多个参数的对应的第一集合来推断一个或多个字段类型的第一集合(有时等效地称为“参数类型”)。然后,系统可以分析不同的第二批的数据记录并且针对一个或多个参数的对应的第二集合推断一个或多个字段类型的第二集合。在一个示例中,特定字段(在本文中也称为“参数”)可以与基于第一批的数据记录的单个值/单个类型和基于数据记录的第二集合的多个值/多个类型相关联。在另一个示例中,即使第一批的数据记录和第二批的数据记录是从同一数据流接收的,或者甚至是从公共数据源接收的,参数的第一集合和参数的第二集合也不必相同。
虽然本文描述的实施例可以应用于各种数据流和数据记录中的任何一个,但是将在网站上的用户行为的上下文中呈现一些具体示例。数据记录存储在用户会话期间用户在网站上的行为(例如,访问的页面、浏览的产品、参与的页面对象或其它类似的用户-站点交互的序列)。会话可以被定义为在不活动时段或终止事件(诸如注销)后终止的预定的时间段或活动时段。
这些技术具有多个技术优点。例如,因为推断出字段类型并且随着接收到数据而对数据建立索引,所以实现本文描述的技术的系统可以实时地处理和存储数据。因为这些技术也不能强迫遵循预定模式,所以本文的系统和方法提高了许多类型的数据存储系统中的便利性、存储效率和查询速度。这些技术在逐批的基础上被应用时的另一个优点是,即使对于从同一个流或从同一个数据源接收到的数据,字段和字段类型也可以在批之间改变。这可以进一步提高存储和查询效率,同时还保留在强制执行模式时否则可能丢失的数据,从而也提高了所存储数据的准确性。
在本“总体概述”部分中可以不包括本说明书中描述的和/或权利要求中阐述的一个或多个实施例。
2.0系统体系架构
图1是本文描述的技术的一个实施例的示意图。如图所示,系统(在这个示例中,是基于云的多租户存储系统)可以接收数据流。在这个示例中,数据流由三个单独的子流“A”、“B”和“C”组成,每个子流由单独的数据源(即,订阅本公开的数据处理系统的不同账户)生成。这些子流中的每个子流可以具有不同的数据和不同格式化的数据记录,它们可以彼此不同。系统根据子流A、B或C对子流进行分区,从而在它们到达时将相同的子流记录分组在一起。系统以对应的批存储来自每个子流的数据记录。然后使用以下描述的技术分析与每个批对应的数据记录,以识别与数据记录相关联的字段和对应的字段类型。系统可以为每个批与识别出的字段和推断出的字段类型相关联地对值建立索引。
可以重复这个过程以生成和分析每个子流的相继批。例如,系统可以对子流A的第一批A1执行本文描述的操作,然后对子流A的第二批A2重复该过程。即使第一和第二批A源自相同的子流A(即,相同的数据源),对第二批A2执行的操作也可以推断出与针对批A1推断出的字段类型不同的字段类型。以这种方式,本文描述的系统和方法能够分析反映不同批的数据记录中的差异的数据。
图2图示了根据一个或多个实施例的系统200。如图2中所示,系统200包括客户端202A、202B、数据处理应用204、数据储存库228和外部数据流源230A、230B。在一个或多个实施例中,系统200可以包括比图2中所示的组件更多或更少的组件。图2中所示的组件可以是彼此本地或彼此远离的。图2中所示的组件可以在软件和/或硬件中实现。每个组件可以分布在多个应用和/或机器上。多个组件可以组合到一个应用和/或机器中。关于一个组件描述的操作可以替代地由另一个组件执行。
在一些实施例中,数据处理应用204提供可以将传入的数据流划分为批、分析批以推断值类型(即,单值或多值)并推断字段类型(例如,整数、字符串、ID)的组件。数据处理应用204可以将与每个批相关联的数据记录转换成与推断出的值和字段类型对应的数据结构(也称为转换成“推断出的模式”)。
在一个或多个实施例中,数据处理应用204是指被配置为执行本文描述的操作的硬件和/或软件。下面参考图3描述用于推断入站数据流的模式的操作的示例(以及其它功能)。
在实施例中,数据处理应用204被实现在一个或多个数字设备上。术语“数字设备”一般而言是指包括处理器的任何硬件设备。数字设备可以指执行应用或虚拟机的物理设备。数字设备的示例包括计算机、平板电脑、笔记本电脑、台式机、上网本、服务器、web服务器、网络策略服务器、代理服务器、通用机器、特定于功能的硬件设备、硬件路由器、硬件交换机、硬件防火墙、硬件防火墙、硬件网络地址翻译器(NAT)、硬件负载平衡器、大型机、电视机、内容接收器、机顶盒、打印机、移动电话、智能电话、个人数字助理(“PDA”)、无线接收器和/或发送器、基站、通信管理设备、路由器、交换机、控制器、接入点和/或客户端设备。
在一些实施例中,数据处理应用204是云服务,诸如软件即服务(SaaS)或web服务。诸如客户端202A、202B之类的客户端可以与数据处理应用204交互。客户端202A、202B的示例可以包括通信地耦合到网络的web浏览器、移动应用或其它软件应用。客户端可以使用一个或多个通信协议(诸如HTTP和/或互联网协议(IP)套件的其它通信协议)与云服务交互。在其它实施例中,数据处理应用204可以是用户本地可访问的,诸如台式机或其它独立应用。
数据处理应用204的示例组件包括数据分区引擎206、批存储库208、字段分析引擎210、数据索引引擎216、前端接口224和动作接口226。
数据分区引擎206接收数据的流并对流执行一个或多个分区操作。在一些示例中,数据流是表示用户在网站上的动作的值的流。例如,包括表示用户标识符、网站标识符、用户访问的网站内的页面的标识符、对页面采取的动作(即,点击)、时间、日期以及其它信息的值的数据的流可以由数据分区引擎206作为一个或多个数据记录接收。其它类型的数据也可以被传输到系统200并由系统200处理。
数据分区引擎206可以执行一个或多个分区,以便将传入的数据流划分和/或细分为多个批和/或子批。在一个示例中,数据分区引擎206可以通过识别数据记录中的值来对数据流进行分区,这可以被用于将相关记录一起分组为批。这可以包括根据网站所有者(例如,“账户”)标识符或其它类似的准则对记录进行分区。
与批相关联的传入数据记录被存储在与数据分区引擎206相关联的临时存储器结构(例如,高速缓存或其它易失性存储器结构)中。在识别出分区准则后,数据分区引擎将数据记录传递到批存储库208。
批存储库208是将多个分区的数据记录作为批存储的存储器结构。即,由数据分区引擎206分区的数据记录可以被存储在批存储库208的存储地址处(例如,在存储器结构的块地址中),以便可以由数据处理应用204的其它元件来分析该批。在一些示例中,批存储库208可以是闪存或具有足够容量以存储期望数量的数据记录的另一种固态存储器(例如,SRAM、DRAM、磁存储器、光存储器)。批存储库208可以被配置为存储多个批,每个批可以与特定数据源相关联并且被存储在存储器结构内的地址块或地址的其它指派的范围内。以这种方式,可以将来自多个不同源的数据累积到对应的单独批中,以便为每个批推断模式。
在一些示例中,批存储库208被配置为存储为数据处理应用204的其它组件高效执行分析操作而选择的多个数据记录。例如,可以选择批尺寸(以及因此批存储库208的存储器配置)以供机器学习分析引擎210的优化操作或所分析数据的后续查询。例如,批数据存储库208可以被配置为在第一批中存储数据记录,直到满足第一批的数据记录容量阈值为止。这个阈值可以具有允许的可变性范围,以防止用户会话在会话过程中途(mid-session)终止。在一个示例中,批数据存储库208可以被配置为存储与数十万个用户会话对应的数据记录。在其它示例中,收集批,直到在该批的已存储数据记录中检测到(一个或多个)值类型或(一个或多个)字段类型的过渡为止。例如,来自特定流的第一批可以与字段类型的第一集合相关联。在系统检测到字段类型已在流中间改变为与第一集合不同的字段类型的第二集合后,可以启动来自特定流的第二批。
字段分析引擎210可以包括一个或多个经训练的机器学习模型或其它分析算法,这些模型或算法分析所存储的批中的数据记录的字段以推断值类型(例如,单值或多值)和与数据记录相关联的字段类型。在图2中所示的示例中,字段分析引擎210被示为具有两个组件。
单值/多值检测引擎212确定批中数据记录中的值是与单个值还是与多个值对应。例如,单值/多值检测引擎212可以检测可以被用于在多值字段中将值彼此分隔开的字符(诸如逗号、分号和/或引号)的存在。在一个示例中,单值/多值检测引擎212可以使用正则表达式(REGEX)分析技术来确定值类型。在另一个示例中,单值/多值检测引擎212可以使用经训练的机器学习模型来确定值类型。
字段分析引擎210的字段类型推断引擎214可以使用经训练的机器学习模型来确定与给定批内的值相关联的字段类型。在一个示例中,字段类型推断引擎214可以包括朴素贝叶斯分类器,其被训练以确定与特定值相关联的字段类型(或与多值字段中的多个值相关联的字段类型)。示例字段类型可以包括字符串、日期/时间、整数、十进制等。例如,在用已知字段类型的各种观察训练字段类型推断引擎214后,字段类型推断引擎214可以被应用于一批数据,以确定与该批的各种值相关联的字段类型。
数据索引引擎216包括数据结构转换器218和字典/索引生成器220。数据索引引擎216的这些组件执行可以重新定向或重新格式化批的接收到的值的功能。数据索引引擎216还执行生成汇总和/或表征批内的数据的数据结构的功能。这些数据结构可以启用和/或提高可以对各种批执行的各种操作和分析的效率。
数据索引引擎216的数据结构转换器218可以重新格式化批的数据记录,以提高数据批的分析和/或查询的便利性。例如,在一些实施例中,系统接收数据流,其中以“行”配置来组织数据。在这个示例的实施例中,与每个用户会话相关联的字段值被布置在对应的行中。在这个行配置中跨多个用户会话的特定字段值的查询一般将访问每一行,以识别针对每个用户会话的被查询的字段值。除了被查询的字段外,这还涉及许多字段值的消耗。为了克服这种计算效率低的方法,数据结构转换器218可以通过将参数组织为列并且将每个参数的对应值组织在对应行中来从行朝向到列朝向重新格式化数据结构。以这种方式,可以高效地访问与每个参数对应的所有值。与行定向的数据结构常常需要访问许多与感兴趣的字段附带的字段值相比,这需要显著更少的时间和显著更少的计算资源。列朝向还通过减少冗余数据的存在来提高存储效率。例如,一些字段值在会话过程中可能不会显著改变(例如,设备类型)。可以以高效的方式对这些“静态”参数值进行编码,以使相同的参数值不会重复(和冗余地)被存储。
字典/索引生成器220为每个批生成与数据记录中的字段对应的所有值的字典。字典/索引生成器220通过识别每个参数在批中已获取的值并将它们存储在单独的字典数据结构中来实现此目的。字典/索引生成器220生成前向索引,并为每个参数计算每个值的出现频率。索引生成器还生成反向索引,该索引将每个字典值映射到前向索引中的序数位置。字典/索引生成器220将字典、前向索引和反向索引存储在对应的存储器结构中。
前端接口224管理数据处理应用204与客户端202A、202B之间的交互。例如,客户端可以通过前端接口224提交执行各种功能的请求并查看结果。在这种上下文中,客户端可以是由人类用户(诸如系统管理员、市场营销计划或数据专家)操作的计算设备。在另一种上下文中,客户端202A、202B可以是另一个应用,诸如外壳(shell)或客户端应用。
在一些实施例中,前端接口224是多层应用中的表示层。前端接口224可以处理从诸如客户端202A、202B之类的客户端接收到的请求,并将来自其它应用层的结果翻译成客户端可以理解或处理的格式。前端接口224可以被配置为渲染用户接口元素并经由用户接口元素接收输入。例如,前端接口224可以生成网页和/或其它图形用户接口(GUI)对象。诸如web浏览器之类的客户端应用可以根据互联网协议(IP)套件的协议访问和渲染交互式显示。附加地,或者可替代地,前端接口224可以提供其它类型的用户接口,包括被配置为促进用户与应用之间的通信的硬件和/或软件。示例接口包括但不限于GUI、web接口、命令行接口(CLI)、触觉接口和语音命令接口。示例用户接口元素包括但不限于复选框、单选按钮、下拉列表、列表框、按钮、切换开关、文本字段、日期和时间选择器、命令行、滑块、页面和表单。
在实施例中,以不同的语言指定前端接口224的不同组件。用户接口元素的行为以动态编程语言(诸如JavaScript)指定。用户接口元素的内容以标记语言(诸如超文本标记语言(HTML)或XML用户接口语言(XUL))指定。用户接口元素的布局以样式表语言(诸如级联样式表(CSS))指定。可替代地,前端接口224以一种或多种其它语言(诸如Java、C或C++)指定。
在一些实施例中,动作接口226提供用于使用计算资源(例如,外部资源230A、230B)执行动作的接口。动作接口226可以包括API、CLI或用于调用执行动作的功能的其它接口。可以通过可以在数据处理应用204外部的云服务或其它应用来提供这些功能中的一个或多个。例如,系统200的一个或多个组件可以调用客户端应用的API,该API在网站上记录用户行为,并将那些行为作为数据流传输到数据处理应用204。这仅仅是一个示例,并且在其它示例中,所执行的动作可以因实施方式而异。
在一些实施例中,可以基于从数据处理应用204接收到的输出来自动触发动作。例如,动作接口226可以触发已经根据本文的技术进行分析的批从批存储库208到数据储存库228的传送。在另一个示例中,动作接口226可以在批的“完成”(即,多个数据记录满足完整批的阈值)后触发数据索引引擎216和字段分析引擎210的操作。附加地,或者可替代地,可以响应于通过前端接口224接收到的客户端请求而触发动作。
在一些实施例中,数据储存库228存储由数据处理应用204的组件生成和/或以其它方式访问的数据。示例数据可以包括但不限于经训练的ML模型、由数据处理应用204完成处理的数据的批、批字典和索引、与经处理的数据批相关的元数据和/或所存储的查询。
数据储存库228可以是用于存储数据的任何类型的存储单元和/或设备(例如,文件系统、数据库、表的集合或任何其它存储机构)。另外,数据储存库228可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是或可以不是相同的类型或位于相同的物理站点。另外,数据储存库228可以与系统200的一个或多个其它组件一起在相同的计算系统上被实现或执行。可替代地或附加地,数据储存库228可以在与系统200的一个或多个其它组件分离的计算系统上被实现或执行。数据储存库228可以经由直接连接或经由网络通信地耦合到系统200中示出的一个或多个组件。
在一些实施例中,外部资源230A、230B是数据处理应用204外部的网络服务。示例云服务可以包括但不限于企业网站、社交媒体平台、电子邮件服务、短消息传递服务、企业管理系统和/或云应用。动作接口226可以用作用于调用云服务的API端点。例如,动作接口226可以生成出站请求,该出站请求符合外部资源230A、230B可摄取的协议。动作接口226可以处理并翻译入站请求以允许由数据处理应用204的其它组件进行进一步处理。动作接口226可以存储、协商和/或以其它方式管理用于访问外部资源230A、230B的认证信息。示例认证信息可以包括但不限于数字证书、加密密钥、用户名和密码。动作接口226可以在请求中包括认证信息以调用通过外部资源230A、230B提供的功能。
与计算机网络和微服务应用相关的附加的实施例和/或示例在以下标题为“计算机网络和云网络”的第5.0节和标题为“微服务应用”的第6.0节中进行描述。
3.0数据流处理
图3图示了根据一个或多个实施例的用于推断用于一批数据的数据模式的示例操作集合。图3中所示的一个或多个操作可以被修改、重新布置或省略。因而,图3中所示的特定操作顺序不应当被解释为限制一个或多个实施例的范围。
图3中所示的方法300通过在数据流中接收数据记录的集合开始(操作304)。数据流涵盖可以由方法300中所示的操作进行操作的数据记录的任何通信。在一个示例中,数据流可以是不一定由既定的终止事件终止的“未绑定”数据流。
未绑定数据流的一个示例包括存储对交互式数据资源采取的动作的数据记录的流。经由数据流接收的数据记录可以包括字段(可替代地“参数”)/值对。与强制执行参数、参数类型和值类型的固定集合的传统系统不同,本公开的数据记录没有严格地受到监管。更确切地说,参数和值可以是多种类型中的任何一种。
在一个示例中,经由数据流接收的数据记录可以与针对用户的会话相关联。在一些示例中,会话定义用户与网站或其它交互式计算资源进行交互的时间窗口。会话可以被描述为不活动时段之间的活动时段、从发起活动(例如,登录)到终止活动(例如,注销)的时间段,或者仅活动时间的既定时段。在时间窗口到期后(或超过不活动的阈值时段后),可以“关闭”特定用户的数据记录并经由数据流将其传输到系统。在传输记录之后同一用户的活动可以存储在单独的记录中。
在一个示例中,数据记录可以存储在会话期间执行的用户行为。用户行为的示例包括用户与计算资源的活动元素之间的交互,诸如“单击”或将鼠标悬停在交互元素上。在网页交互的实施例中,数据记录还可以指示由用户遍历的网站和/或网页、网站所有者的身份、用户标识符(例如,对于那个用户和/或用户会话唯一的访客标识符)、与用户动作相关联的日期和时间、采取的动作(例如,所浏览的物品、所选择的物品、放置在购物车中的物品)和/或其它用户行为。
与用户会话相关联的不同于用户行为数据的数据也可以被包括在对应的数据记录内。例如,表征用户到特定网站所采取的路径的“推荐”(referral)数据可以被包括在会话的数据记录内。“推荐”数据的示例可以包括用户到数据资源所采取的路径的指示。例如,用户可以经由广告活动链接、第三方广告或促销、web浏览器搜索或其它直接访问(例如,接入(engage)书签)或者接入由网站所有者本身提供的链接(例如,嵌入在直接标记电子邮件或先前购买确认电子邮件中的链接)来访问数据资源(例如,网站)。用于这些推荐路径中的一个或多个的字段/值对可以包括在用于用户会话的数据记录中。在另一个示例中,“上下文”数据也可以存储在数据记录中。例如,页面标题、页面内容、用户地理位置、与所浏览页面上的产品相关的市场营销活动标识符以及其它信息可以存储在数据记录中。
在系统与未绑定数据流交互的示例中,将接收到的数据记录划分为数据批(操作308)。在一个示例中,数据批是数据记录的集合,其中记录的数量满足阈值,或者记录的数量在上限和下限之间。在一些示例中,可以选择尺寸(即,批中的记录的数量)以优化系统的一个或多个操作。例如,可以选择构成数据批的数据记录的数量,以优化该批到不同存储结构的传送或优化查询操作。
在一些示例中,可以基于与交互式数据资源的所有者或管理员对应的账户标识符(例如,用于管理网站的实体的账户标识符)将数据记录分区为一个或多个批。例如,系统可以在传入的数据记录中检查数据记录的字段中或数据分组的包头中的标识符(例如,账户标识符)。系统可以将具有共同标识符的数据记录分组到对应的批中。这个过程可以继续进行,直到数据记录的数量满足要完成的批的阈值为止,这时将启动用于标识符的新批。基于数据源(例如,账户标识符)对记录进行分区使得能够对多源数据流中来自不同数据源的数据记录进行分区。对于单源数据流(或对多源流中来自一个源的记录进行子分区的示例中),系统可以基于与一个或多个记录相关联的时间戳、与一个或多个记录相关联的会话标识符和/或与一个或多个记录相关联的用户标识符对数据记录进行分区。
在另一个示例中,批还可以(至少部分地)基于完成的用户会话,以使批仅包括满足“关闭”准则的整个用户会话。这防止将用户会话的第一部分指派给一个批并且将用户会话的第二部分指派给另一个批。
在存储器中存储足够的记录以完成一个或多个批(例如,在工作存储器中存储阈值数量的记录)后,系统发起分析以推断用于每个批的记录的模式(操作312)。如本文所使用的,模式是指与批的数据记录相关联的字段(参数)类型和对应的值类型。
如上面所指示的,为第一批推断的第一模式可以与为第二批推断的第二模式不同(例如,不同的字段类型、不同的值类型)。在一些示例中,可以针对具有不同来源(例如,不同的数据网站、不同的数据源)的批推断不同的模式。在一些其它示例中,可以为来自共同源的不同批推断不同的模式。
在后一种类型的图示中,网站可以提供文档记录第一时间段期间的用户行为并作为第一批收集的数据记录。如同本文呈现的任何示例一样,网站可以根据自己的准则而不是根据系统指示或要求的准则来收集数据并配置所提供的数据记录(例如,所记录的参数、参数类型)。该网站随后可以提供文档记录在与第一时间段不同的第二时间段期间作为第二批收集的用户行为的数据记录。即使与第一批和第二批相关联的记录来自共同的源,为每一批中的数据记录推断的模式也可以彼此不同。
一旦数据已经被分区为批(操作308)并且发起了模式推断分析(操作312),系统就识别与批的数据记录相关联的字段(操作316)。在一些示例中,数据源向系统提供字段位置(例如,作为记录中的位偏移量)和相关联的字段标签。数据源可以提供这个信息以存储在与数据源关联的简档中,或作为经由具有数据记录的数据流传输的元数据。在其它示例中,可以使用IP协议元数据来检测一些字段和对应的字段值。这方面的说明是使用IP地址来确定数据源的地理位置。
系统可以可选地执行各种初步数据准备操作,作为发起每批分析(操作312)或识别批中的字段(操作316)的一方面。例如,系统可以为每一批生成字典,其中记录用于每个字段的所有值。索引和反向索引也可以被生成以伴随字典。在另一个示例中,数据准备操作还包括将批中的字段值从“行”朝向转换成“列”朝向。如上所述,通过在单个列中组织用于给定参数的所有值,这提高了存储效率并减少了查询时间。
在一些示例中,在执行进一步的模式推断操作之前,将与批的数据记录相关联的值接收为(或转换成)字符串类型字段值。如下所述,在执行字段类型和值类型推断操作后,可以更新批的字段类型并将其存储在字典中。
系统执行推断与一个或多个批相关联的字段类型和值类型(即,单或多值)操作。在一个示例中,系统确定每个识别出的字段是与具有单个值还是多个值的值相关联(操作320)。在一些示例中,可以为记录中的所有字段假定(presume)多个值。但是,这增加了每个字段的存储要求,从而降低了存储效率并增加了分析和存储批的计算资源。因为将字段编码为单个值提高存储和查询效率,所以在一些实施例中执行操作320以在适当时应用这个有利条件。
可以使用多种技术中的任何一种来推断字段是可以保存单个值还是多个值。例如,系统可以使用各种技术来检测用于分隔值的字符的存在。值分隔字符的存在指示字段中有多个值,而值分隔字符的不存在指示该字段仅与单个值相关联。值分隔字符的示例包括但不限于逗号和/或分号。在其它示例中,即使引号内存在值分隔字符,值周围的引号也可以指示单个(字符串)值。
用于检测值分隔字符的存在的技术的示例包括但不限于被训练为识别一个或多个值分隔字符的存在的机器学习模型。在一个示例中,可以在操作320中应用贝叶斯分类器(例如,朴素贝叶斯分类器)以检测一个或多个值分离字符的存在。在另一个示例中,可以使用正则表达式模型(“REGEX”或“REGEX Parson”)在数据记录的批中搜索这些字符。
因为本文描述的实施例针对由“账户”(例如,交互式计算资源)分区的数据的逐批推断模式,所以使用与每个个体账户对应的观察类似地训练机器学习模型。以这种方式,系统可以根据对每个账户特有的命名法、术语和数据模式准确地推断模式。
在操作320确定特定字段与单个值相关联的情况下,系统推断与该字段相关联的字段类型(操作324)。值类型包括但不限于整数值、十进制值、字符串值、日期/时间值、标识符(例如,用户名)值等。系统可以使用正则表达式模型、经训练的机器学习模型或统计采样模型来基于与该批数据记录中的字段相关联的值来推断字段类型。在一些情况下,字段类型可以在一批数据记录内有所不同。在一些示例中,可以将针对特定字段的多数字段类型均匀地应用于批内的字段。在其它示例中,可以假定与多数字段类型不一致的值是错误的,并且从分析中将其省略。
在操作320确定特定字段与多个值相关联的情况下,系统推断与多值字段相关联的多种类型的值(操作328)。系统可以使用已经被训练为基于与字段相关联的值来区分类型的机器学习模型。例如,机器学习模型可以被训练为区分数据/时间值、数字值、用户标识符值和/或字符串值,并将对应的类型与值已存储在其中的数据记录字段相关联。
系统分析数据记录以确定是否要分析批中的任何附加字段(操作332)。系统对批的记录中的其它字段执行操作316至328。
在为批中的字段指派字段类型之后,系统对批中的数据建立索引(操作336)。在图4中以示例方法400图示了建立索引过程的示例操作。例如,通过将推断的(一个或多个)字段类型和(一个或多个)值类型应用于每个数据记录中的每个字段,将数据记录转换成推断的模式(操作404)。类似地,字典中存储的数据记录的值从初始字符串字段类型被转换成通过方法300的执行而推断出的类型(操作408)。字典、前向索引和反向索引也被通过方法300的执行而生成的任何数据操作地更新(操作412)。
可以针对每一批执行方法300(和方法400),以便由系统以支持实时数据处理、存储和查询的格式记录对字段类型和值类型的改变。
批及其对应的索引数据可以被传输到数据存储系统以用于后续查询(操作340)。在一些示例中,系统通过传输批数据、其模式及其关联的索引数据(字典、前向索引、反向索引)的二进制表示来执行这个操作。
4.示例实施例
为了清楚的目的,下面描述详细的示例。以下描述的组件和/或操作应当被理解为一个可能不适用于某些实施例的具体示例。因而,以下描述的组件和/或操作不应当被解释为限制任何权利要求的范围。
图5是示意性场景500,其被提供用于图示和解释的便利。数据记录508、512和516的第一批504存储在从“点击”数据流开始的第一用户会话期间中识别出的各种用户行为。在这个示例中,客户“435”已访问记录508、512中的各个页面(“店面”和“主板交易”)。客户“435”还向购物车添加了价格为($50.00)的物品(“主板”),如记录516所示。
因为没有预先确定的模式就将数据记录508,512和516提供给系统,所以系统随后对批504执行模式推断操作。推断操作的结果在推断表520中示出。记录508、512、516中提供的面向行的数据被转换成列朝向。如图所示,这种向列朝向的转换将字段标签(其可以与账户简档相关联地存储)垂直地布置在列524中。为了清楚起见,省略了用于每个字段的值。字段类型推断在列528中示出。假定每个字段类型在批处理推断520中仅保持单个值,而不包含多个值。
数据记录532、536和540的第二批506存储在第二用户会话期间识别出的各种用户行为。在数据记录532中,客户“435”已经打开了重新定向活动电子邮件并访问了针对鼠标、键盘和监视器的项目。在记录536中,客户435接入并发送电子邮件,并且在记录540中,客户查看显示外围设备的页面。这个第二批506的模式推断544包括新字段“电子邮件”和“活动”,为了便于说明,在列548中用下划线标出了这些字段。在第一批504的数据记录508、512、516中未检测到这些新字段。“项目”字段的字段类型已从模式推断520中的单值字符串类型改变为模式推断544中的多值字符串类型。字段类型的这种改变反映了客户经由重定向电子邮件查看的多个项目。此外,因为客户没有在购物车中放置任何物品,所以存在于第一模式推断520中的“价格”字段没有出现在第二模式推断544中。
因此,字段推断适应数据记录中的改变,以便反映用户行为的改变,而不会给数据源增加复杂而不灵活的模式。
6.计算机网络和云网络
在一个或多个实施例中,计算机网络提供节点集合之间的连接性。节点可以是在彼此本地的和/或彼此远离。节点通过链路的集合连接。链路的示例包括同轴电缆、非屏蔽双绞线、铜缆、光纤和虚拟链路。
节点子集实现计算机网络。这样的节点的示例包括交换机、路由器、防火墙和网络地址转换器(NAT)。另一个节点子集使用计算机网络。这样的节点(也称为“主机”)可以执行客户端进程和/或服务器进程。客户端进程做出对计算服务(诸如,特定应用的执行和/或特定量的数据的存储)的请求。服务器进程通过执行所请求的服务和/或返回对应的数据来响应。
计算机网络可以是物理网络,包括通过物理链路连接的物理节点。物理节点是任何数字设备。物理节点可以是特定于功能的硬件设备,诸如硬件交换机、硬件路由器、硬件防火墙和硬件NAT。附加地或替代地,物理节点可以是被配置为执行各种虚拟机和/或执行相应功能的应用的通用机器。物理链路是连接两个或更多个物理节点的物理介质。链路的示例包括同轴电缆、非屏蔽绞合电缆、铜缆和光纤。
计算机网络可以是覆盖网络。覆盖网络是在另一个网络(诸如,物理网络)之上实现的逻辑网络。覆盖网络中的每个节点对应于底层网络中的相应节点。因此,覆盖网络中的每个节点与覆盖地址(寻址到覆盖节点)和底层地址(寻址实现覆盖节点的底层节点)两者相关联。覆盖节点可以是数字设备和/或软件进程(诸如虚拟机、应用实例或线程)。连接覆盖节点的链路被实现为通过底层网络的隧道。隧道任一端处的覆盖节点将它们之间的底层多跳路径视为单个逻辑链路。隧道处理(tunneling)通过封装和解封装来执行。
在实施例中,客户端可以位于计算机网络的本地和/或远离计算机网络。客户端可以通过其它计算机网络(诸如专用网络或互联网)访问计算机网络。客户端可以使用通信协议(诸如超文本传输协议(HTTP))将请求传送到计算机网络。通过诸如客户端接口(诸如web浏览器)、程序接口或应用编程接口(API)之类的接口来传送请求。
在实施例中,计算机网络提供客户端和网络资源之间的连接。网络资源包括被配置为执行服务器进程的硬件和/或软件。网络资源的示例包括处理器、数据存储装置、虚拟机、容器和/或软件应用。网络资源在多个客户端之间共享。客户端彼此独立地从计算机网络请求计算服务。网络资源按需动态分配给请求和/或客户端。分配给每个请求和/或客户端的网络资源可以基于例如(a)由特定客户端请求的计算服务,(b)由特定租户请求的聚合计算服务和/或(c)计算机网络的所请求的聚合计算服务来扩大或缩小。这种计算机网络可以被称为“云网络”。
在实施例中,服务提供商向一个或多个最终用户提供云网络。云网络可以实现各种服务模型,包括但不限于软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。在SaaS中,服务提供商向最终用户提供使用服务提供商的正在网络资源上执行的应用的能力。在PaaS中,服务提供商向最终用户提供将定制应用部署到网络资源上的能力。可以使用由服务提供商支持的编程语言、库、服务和工具来创建定制应用。在IaaS中,服务提供商向最终用户提供供应由网络资源提供的处理、存储、网络和其它基本计算资源的能力。可以在网络资源上部署任何任意应用,包括操作系统。
在实施例中,计算机网络可以实现各种部署模型,包括但不限于私有云、公共云和混合云。在私有云中,网络资源被供应给一个或多个实体的特定组独占使用(如本文所使用的术语“实体”是指企业、组织、个人或其它实体)。网络资源可以在特定实体组的处所本地和/或远离特定实体组的处所。在公共云中,云资源被供应给彼此独立的多个实体(也称为“租户”或“客户”)。计算机网络及其网络资源由与不同租户对应的客户端访问。这样的计算机网络可以被称为“多租户计算机网络”。几个租户可以在不同时间和/或相同时间使用相同的特定网络资源。网络资源可以在租户的处所本地和/或远离租户的处所。在混合云中,计算机网络包括私有云和公共云。私有云和公共云之间的接口允许数据和应用的可移植性。存储在私有云处的数据和存储在公共云处的数据可以通过接口交换。在私有云处实现的应用和在公共云处实现的应用可能具有彼此依赖性。可以通过接口执行从私有云处的应用到公共云处的应用(反之亦然)的调用。
在实施例中,多租户计算机网络的租户彼此独立。例如,一个租户的业务或操作可以与另一个租户的业务或操作分离。不同的租户可能对计算机网络具有不同的网络要求。网络要求的示例包括处理速度、数据存储量、安全要求、性能要求、吞吐量要求、时延要求、弹性要求、服务质量(QoS)要求、租户隔离和/或一致性。相同计算机网络可能需要实现由不同租户所要求的不同网络要求。
在一个或多个实施例中,在多租户计算机网络中,实现租户隔离以确保不同租户的应用和/或数据彼此不共享。可以使用各种租户隔离方法。
在实施例中,每个租户与租户ID相关联。多租户计算机网络的每个网络资源用租户ID标记。仅当租户和特定网络资源与相同租户ID相关联时,才允许该租户访问特定网络资源。
在实施例中,每个租户与租户ID相关联。由计算机网络实现的每个应用用租户ID标记。附加地或替代地,由计算机网络存储的每个数据结构和/或数据集用租户ID标记。仅当租户和特定应用、数据结构和/或数据集与相同租户ID相关联时,才允许租户访问特定应用、数据结构和/或数据集。
作为示例,由多租户计算机网络实现的每个数据库可以用租户ID标记。只有与对应租户ID相关联的租户才可以访问特定数据库的数据。作为另一个示例,由多租户计算机网络实现的数据库中的每个条目可以用租户ID标记。只有与对应租户ID相关联的租户才可以访问特定条目的数据。但是,数据库可以由多个租户共享。
在实施例中,订阅列表指示哪些租户有权访问哪些应用。对于每个应用,存储被授权访问该应用的租户的租户ID列表。仅当租户的租户ID被包含在与特定应用对应的订阅列表中时,才允许该租户访问特定应用。
在实施例中,与不同租户对应的网络资源(诸如数字设备、虚拟机、应用实例和线程)被隔离到由多租户计算机网络维护的特定于租户的覆盖网络。作为示例,来自租户覆盖网络中的任何源设备的数据包可以仅被发送到相同租户覆盖网络内的其它设备。封装隧道用于禁止从租户覆盖网络上的源设备到其它租户覆盖网络中的设备的任何传输。具体而言,从源设备接收的数据包被封装在外部数据包内。外部数据包从第一封装隧道端点(与租户覆盖网络中的源设备通信)发送到第二封装隧道端点(与租户覆盖网络中的目的地设备通信)。第二封装隧道端点对外部数据包进行解封装,以获得由源设备发送的原始数据包。原始数据包从第二封装隧道端点发送到相同特定覆盖网络中的目的地设备。
7.其它事项;扩展
实施例针对具有一个或多个设备的系统,一个或多个设备包括硬件处理器并且被配置为执行本文描述的和/或以下权利要求中任一项所述的任何操作。
在实施例中,非暂态计算机可读存储介质包括指令,当由一个或多个硬件处理器执行时,所述指令使得执行本文描述的和/或权利要求中任一项所述的任何操作。
根据一个或多个实施例,可以使用本文描述的特征和功能的任何组合。在前面的说明书中,已经参考因实现而异的许多具体细节描述了实施例。因此,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指标以及申请人预期作为本发明的范围的内容是从本申请中发出的权利要求集合的字面和等同范围,以这种权利要求发出的具体形式,包括任何后续的更正。
8.硬件概述
根据一个实施例,本文描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行本技术,或者可以包括被永久性地编程以执行本技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)、现场可编程门阵列(FPGA)或网络处理单元(NPU),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行本技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC、FPGA或NPU与定制的编程组合来实现本技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。
例如,图6是图示可以在其上实现本发明的实施例的计算机系统600的框图。计算机系统600包括总线602或用于传送信息的其它通信机制以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
计算机系统600还包括耦合到总线602用于存储信息和要由处理器604执行的指令的主存储器606,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器606也可以用于存储在要由处理器604执行的指令的执行期间的临时变量或其它中间信息。当这种指令被存储在处理器604可访问的非暂态存储介质中时,这种指令使计算机系统600成为被定制用于执行指令中指定的操作的专用机器。
计算机系统600还包括耦合到总线602用于存储静态信息和处理器604的指令的只读存储器(ROM)608或其它静态存储设备。诸如磁盘或光盘之类的存储设备610被提供并且被耦合到总线602,以用于存储信息和指令。
计算机系统600可以经由总线602耦合到用于向计算机用户显示信息的显示器612,诸如阴极射线管(CRT)。包括字母数字键和其它键的输入设备614耦合到总线602,用于将信息和命令选择传送到处理器604。另一种类型的用户输入设备是光标控件616,诸如鼠标、轨迹球或光标方向键,用于向处理器604传送方向信息和命令选择并且用于控制显示器612上的光标移动。这种输入设备典型地具有两个轴(第一轴(例如,x)和第二轴(例如,y))上的两个自由度,以允许设备在平面中指定位置。
计算机系统600可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,所述定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合使计算机系统600成为专用机器或将计算机系统800编程为专用机器。根据一个实施例,本文的技术由计算机系统800响应于处理器604执行主存储器606中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备610)读取到主存储器606中。在主存储器606中包含的指令序列的执行使处理器604执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
如本文使用的术语“存储介质”是指存储有使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔模式的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带、内容可寻址存储器(CAM)和三态内容可寻址存储器(TCAM)。
存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含有总线602的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些。
各种形式的介质可以涉及将一条或多条指令的一个或多个序列携带到处理器604以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统600本地的调制解调器可以在电话线上接收数据并使用红外线发射器将数据转换为红外线信号。红外线检测器可以接收红外线信号中携带的数据,并且适当的电路系统可以将数据放置在总线602上。总线602将数据携带到主存储器606,处理器604从主存储器606中检索并执行指令。由主存储器606接收的指令可以可选地在由处理器604执行之前或之后存储在存储设备610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口618可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口618发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路620典型地通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路620可以通过本地网络622提供到主计算机624或到由互联网服务提供商(ISP)626操作的数据设备的连接。ISP 626又通过现在通常称为“互联网”628的全球分组数据通信网络提供数据通信服务。本地网络622和互联网628都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路620上并且通过通信接口618的信号是传输介质的示例形式,这些信号将数字数据携带到计算机系统600或携带来自计算机系统600的数字数据。
计算机系统600可以通过(一个或多个)网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在互联网示例中,服务器630可以通过互联网628、ISP 626、本地网络622和通信接口618传输对于应用程序的所请求代码。
接收到的代码可以在它被接收时由处理器604执行,和/或存储在存储设备610或其它非易失性存储装置中以供以后执行。
在前述说明书中,已经参考可以随实施方式而异的许多具体细节描述了本发明的实施例。因而,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指标以及申请人预期作为本发明的范围的内容是从本申请中发出的权利要求集合的字面和等同范围,以这种权利要求发出的具体形式,包括任何后续的更正。

Claims (25)

1.一种方法,包括:
将多个数据记录分区为多个批,包括(a)第一批数据记录和(b)第二批数据记录;
至少通过以下方式处理第一批:
识别与第一批对应的第一多个字段,所述第一多个字段包括特定字段;
分析第一批中与所述特定字段相关联的第一值集合,以确定与所述特定字段对应的一个或多个字段类型的第一推断集合;
与(a)所述特定字段和(b)字段类型的第一推断集合的相应推断字段类型相关联地对第一值集合建立索引;
至少通过以下方式处理第二批:
识别与第二批对应的第二多个字段,所述第二多个字段包括所述第一多个字段中包括的相同特定字段;
分析第二批中与所述特定字段相关联的第二值集合,以确定与所述特定字段对应的一个或多个字段类型的第二推断集合,
其中与所述特定字段对应的一个或多个字段类型的第一推断集合不同于与所述特定字段对应的一个或多个字段类型的第二推断集合;以及
与(a)所述特定字段和(b)字段类型的第二推断集合的相应推断字段类型相关联地对第二值集合建立索引。
2.如权利要求1所述的方法,其中:
与所述特定字段对应的第一推断字段类型集合包括两个或更多个字段类型;以及
与所述特定字段对应的第二推断字段类型集合由单个字段类型组成。
3.如权利要求1所述的方法,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
在第一批的同一数据记录中检测与所述特定字段对应的至少两个值。
4.如权利要求1所述的方法,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
识别与所述特定字段对应的多个字段类型;以及
通过应用机器学习模型来推断所述多个字段类型中的每个字段类型的类型。
5.如权利要求1所述的方法,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
使用统计采样选择第一批的值;以及
将正则表达式分析应用于该值以确定该值的类型。
6.如权利要求1所述的方法,其中还包括在数据流中接收所述多个数据记录,其中与经由数据流接收附加数据记录并发地将所述多个数据记录分区为第一批和第二批。
7.如权利要求1所述的方法,还包括基于所述第一多个字段来推断用于第一批的第一模式,以及基于所述第二多个字段来推断用于第二批的第二模式。
8.如权利要求1所述的方法,还包括:
在分区操作之前,在单个数据流中接收多个数据记录,其中将所述多个数据记录中的特定记录分区为第二批是基于满足第一批的数据记录容量阈值。
9.如权利要求1所述的方法,其中所述多个数据记录是在单个数据流中接收的,其中所述第一多个字段与所述第二多个字段完全相同,并且其中与所述第一多个字段对应的第一类型集合和与所述第二多个字段对应的第二类型集合不完全相同。
10.一种或多种存储指令的非暂态计算机可读介质,所述指令在由一个或多个硬件处理器执行时使得执行包括以下的操作:
将多个数据记录分区为多个批,包括(a)第一批数据记录和(b)第二批数据记录;
至少通过以下方式处理第一批:
识别与第一批对应的第一多个字段,所述第一多个字段包括特定字段;
分析第一批中与所述特定字段相关联的第一值集合,以确定与所述特定字段对应的一个或多个字段类型的第一推断集合;
与(a)所述特定字段和(b)字段类型的第一推断集合的相应推断字段类型相关联地对第一值集合建立索引;
至少通过以下方式处理第二批:
识别与第二批对应的第二多个字段,所述第二多个字段包括所述第一多个字段中包括的相同特定字段;
分析第二批中与所述特定字段相关联的第二值集合,以确定与所述特定字段对应的一个或多个字段类型的第二推断集合,
其中与所述特定字段对应的一个或多个字段类型的第一推断集合不同于与所述特定字段对应的一个或多个字段类型的第二推断集合;以及
与(a)所述特定字段和(b)字段类型的第二推断集合的相应推断字段类型相关联地对第二值集合建立索引。
11.如权利要求10所述的一种或多种介质,其中:
与所述特定字段对应的第一推断字段类型集合包括两个或更多个字段类型;以及
与所述特定字段对应的第二推断字段类型集合由单个字段类型组成。
12.如权利要求10所述的一种或多种介质,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
在第一批的同一数据记录中检测与所述特定字段对应的至少两个值。
13.如权利要求10所述的一种或多种介质,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
识别与所述特定字段对应的多个字段类型;以及
通过应用机器学习模型来推断所述多个字段类型中的每个字段类型的类型。
14.如权利要求10所述的一种或多种介质,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
使用统计采样选择第一批的值;以及
将正则表达式分析应用于该值以确定该值的类型。
15.如权利要求10所述的一种或多种介质,其中还包括在数据流中接收所述多个数据记录,其中与经由数据流接收附加数据记录并发地将所述多个数据记录分区为第一批和第二批。
16.如权利要求10所述的一种或多种介质,还包括基于所述第一多个字段来推断用于第一批的第一模式,以及基于所述第二多个字段来推断用于第二批的第二模式。
17.如权利要求10所述的一种或多种介质,还包括:
在分区操作之前,在单个数据流中接收多个数据记录,其中将所述多个数据记录中的特定记录分区为第二批是基于满足第一批的数据记录容量阈值。
18.如权利要求10所述的一种或多种介质,其中所述多个数据记录是在单个数据流中接收的,其中所述第一多个字段与所述第二多个字段完全相同,并且其中与所述第一多个字段对应的第一类型集合和与所述第二多个字段对应的第二类型集合不完全相同。
19.一种系统,包括:
至少一个设备,其包括硬件处理器;
该系统被配置为执行包括以下的操作:
将多个数据记录分区为多个批,包括(a)第一批数据记录和(b)第二批数据记录;
至少通过以下方式处理第一批:
识别与第一批对应的第一多个字段,所述第一多个字段包括特定字段;
分析第一批中与所述特定字段相关联的第一值集合,
以确定与所述特定字段对应的一个或多个字段类型的第一推断集合;
与(a)所述特定字段和(b)字段类型的第一推断集合的相应推断字段类型相关联地对第一值集合建立索引;
至少通过以下方式处理第二批:
识别与第二批对应的第二多个字段,所述第二多个字段包括所述第一多个字段中包括的相同特定字段;
分析第二批中与所述特定字段相关联的第二值集合,
以确定与所述特定字段对应的一个或多个字段类型的第二推断集合,
其中与所述特定字段对应的一个或多个字段类型的第一推断集合不同于与所述特定字段对应的一个或多个字段类型的第二推断集合;以及
与(a)所述特定字段和(b)字段类型的第二推断集合的相应推断字段类型相关联地对第二值集合建立索引。
20.如权利要求19所述的系统,其中:
与所述特定字段对应的第一推断字段类型集合包括两个或更多个字段类型;以及
与所述特定字段对应的第二推断字段类型集合由单个字段类型组成。
21.如权利要求19所述的系统,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
在第一批的同一数据记录中检测与所述特定字段对应的至少两个值。
22.如权利要求19所述的系统,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
识别与所述特定字段对应的多个字段类型;以及
通过应用机器学习模型来推断所述多个字段类型中的每个字段类型的类型。
23.如权利要求19所述的系统,其中分析第一批中与所述特定字段相关联的第一值集合以确定与所述特定字段对应的一个或多个字段类型的第一推断集合包括:
使用统计采样选择第一批的值;以及
将正则表达式分析应用于该值以确定该值的类型。
24.如权利要求19所述的系统,其中还包括在数据流中接收所述多个数据记录,其中与经由数据流接收附加数据记录并发地将所述多个数据记录分区为第一批和第二批。
25.如权利要求19所述的系统,还包括基于所述第一多个字段来推断用于第一批的第一模式,以及基于所述第二多个字段来推断用于第二批的第二模式。
CN202110651377.3A 2020-06-12 2021-06-11 数据流处理 Pending CN113806401A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/900,357 2020-06-12
US16/900,357 US11556563B2 (en) 2020-06-12 2020-06-12 Data stream processing

Publications (1)

Publication Number Publication Date
CN113806401A true CN113806401A (zh) 2021-12-17

Family

ID=76392202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110651377.3A Pending CN113806401A (zh) 2020-06-12 2021-06-11 数据流处理

Country Status (3)

Country Link
US (1) US11556563B2 (zh)
EP (1) EP3923157B1 (zh)
CN (1) CN113806401A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114356985B (zh) * 2021-12-24 2024-04-02 深圳市傲天科技股份有限公司 信息估计方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735890A (zh) * 2003-10-23 2006-02-15 微软公司 存储和检索在定义类型的数据库存储外的用户定义类型的字段的系统和方法
CN101271472A (zh) * 2003-09-15 2008-09-24 Ab开元软件公司 数据处理方法、软件和数据处理系统
CN102982065A (zh) * 2003-09-15 2013-03-20 起元科技有限公司 数据处理方法、数据处理装置及计算机可读存储介质
CN103220231A (zh) * 2012-01-19 2013-07-24 上海未来宽带技术股份有限公司 一种HiNOC数据流处理系统及方法
US20150026167A1 (en) * 2012-09-07 2015-01-22 Splunk Inc. Discovering fields to filter data returned in response to a search
US20160042015A1 (en) * 2014-08-07 2016-02-11 Netflix, Inc. Activity information schema discovery and schema change detection and notification
CN106062751A (zh) * 2014-03-07 2016-10-26 起元科技有限公司 对与数据类型有关的数据剖析操作的管理
CN108351898A (zh) * 2015-10-30 2018-07-31 安客诚公司 用于结构化多字段文件布局的自动化解释
US20200012647A1 (en) * 2018-07-06 2020-01-09 Open Text Sa Ulc Adaptive Big Data Service

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI483138B (zh) 2012-10-12 2015-05-01 Acer Inc 遠端動態資料的處理與驗證方法、系統,以及電腦可讀記錄媒體
JP6080940B2 (ja) 2013-02-28 2017-02-15 株式会社日立国際電気 人物検索方法及びホーム滞留人物検索装置
US10038968B2 (en) 2013-07-17 2018-07-31 PlaceIQ, Inc. Branching mobile-device to system-namespace identifier mappings
WO2016118979A2 (en) * 2015-01-23 2016-07-28 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US11366801B1 (en) 2018-12-11 2022-06-21 Amazon Technologies, Inc. Highly available storage using independent data stores
US11574465B2 (en) * 2018-12-21 2023-02-07 Climate Llc In-season field level yield forecasting
US11538105B2 (en) 2020-08-24 2022-12-27 Block, Inc. Cryptographic-asset collateral management

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101271472A (zh) * 2003-09-15 2008-09-24 Ab开元软件公司 数据处理方法、软件和数据处理系统
CN102982065A (zh) * 2003-09-15 2013-03-20 起元科技有限公司 数据处理方法、数据处理装置及计算机可读存储介质
CN1735890A (zh) * 2003-10-23 2006-02-15 微软公司 存储和检索在定义类型的数据库存储外的用户定义类型的字段的系统和方法
CN103220231A (zh) * 2012-01-19 2013-07-24 上海未来宽带技术股份有限公司 一种HiNOC数据流处理系统及方法
US20150026167A1 (en) * 2012-09-07 2015-01-22 Splunk Inc. Discovering fields to filter data returned in response to a search
CN106062751A (zh) * 2014-03-07 2016-10-26 起元科技有限公司 对与数据类型有关的数据剖析操作的管理
US20160042015A1 (en) * 2014-08-07 2016-02-11 Netflix, Inc. Activity information schema discovery and schema change detection and notification
CN108351898A (zh) * 2015-10-30 2018-07-31 安客诚公司 用于结构化多字段文件布局的自动化解释
US20200012647A1 (en) * 2018-07-06 2020-01-09 Open Text Sa Ulc Adaptive Big Data Service

Also Published As

Publication number Publication date
US20210390119A1 (en) 2021-12-16
US11556563B2 (en) 2023-01-17
EP3923157B1 (en) 2024-05-01
EP3923157A1 (en) 2021-12-15

Similar Documents

Publication Publication Date Title
US12013852B1 (en) Unified data processing across streaming and indexed data sets
US11474673B1 (en) Handling modifications in programming of an iterative message processing system
US11113353B1 (en) Visual programming for iterative message processing system
US11194552B1 (en) Assisted visual programming for iterative message processing system
US11886440B1 (en) Guided creation interface for streaming data processing pipelines
US11636105B2 (en) Generating a subquery for an external data system using a configuration file
US11614923B2 (en) Dual textual/graphical programming interfaces for streaming data processing pipelines
WO2020220216A1 (en) Search time estimate in data intake and query system
US9911143B2 (en) Methods and systems that categorize and summarize instrumentation-generated events
US11675816B1 (en) Grouping evens into episodes using a streaming data processor
US11676072B1 (en) Interface for incorporating user feedback into training of clustering model
US20220121708A1 (en) Dynamic data enrichment
US11755531B1 (en) System and method for storage of data utilizing a persistent queue
US10880366B1 (en) Enabling stateless status checks using collector redirection
US11546380B2 (en) System and method for creation and implementation of data processing workflows using a distributed computational graph
US20230023645A1 (en) Machine learning techniques for schema mapping
US11663172B2 (en) Cascading payload replication
US11843622B1 (en) Providing machine learning models for classifying domain names for malware detection
US11567735B1 (en) Systems and methods for integration of multiple programming languages within a pipelined search query
US11481554B2 (en) Systems and methods for training and evaluating machine learning models using generalized vocabulary tokens for document processing
KR20240004875A (ko) 사용자 내비게이션 추천들에 대한 인간 판독가능 설명들의 구성
US11748634B1 (en) Systems and methods for integration of machine learning components within a pipelined search query to generate a graphic visualization
EP3923157B1 (en) Data stream processing
US11537611B2 (en) Generating filtered data sets for efficient query execution
US11989592B1 (en) Workload coordinator for providing state credentials to processing tasks of a data processing pipeline

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination