CN109564568B - 用于分布式数据集索引的装置、方法和机器可读存储介质 - Google Patents

用于分布式数据集索引的装置、方法和机器可读存储介质 Download PDF

Info

Publication number
CN109564568B
CN109564568B CN201880002400.2A CN201880002400A CN109564568B CN 109564568 B CN109564568 B CN 109564568B CN 201880002400 A CN201880002400 A CN 201880002400A CN 109564568 B CN109564568 B CN 109564568B
Authority
CN
China
Prior art keywords
data
value
index
unit
values
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.)
Active
Application number
CN201880002400.2A
Other languages
English (en)
Other versions
CN109564568A (zh
Inventor
B.P.鲍曼
G.L.基纳
S.E.克吕格
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.)
Seth Research Institute
Original Assignee
Seth Research Institute
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 Seth Research Institute filed Critical Seth Research Institute
Priority to CN202010824407.1A priority Critical patent/CN111966684B/zh
Publication of CN109564568A publication Critical patent/CN109564568A/zh
Application granted granted Critical
Publication of CN109564568B publication Critical patent/CN109564568B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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
    • 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/2219Large Object storage; Management thereof
    • 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
    • G06F16/2255Hash tables
    • 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/23Updating
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/381Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using identifiers, e.g. barcodes, RFIDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/20Comparing separate sets of record carriers arranged in the same sequence to determine whether at least some of the data in one set is identical with that in the other set or sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Library & Information Science (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种装置,包括处理器,用于接收搜索标准,该搜索标准包括用于在数据字段内搜索的数据值;响应于接收到查询指令,并且对于超级单元内的每个数据单元,通过将数据值与对应单元索引中指示的值的范围进行比较来执行指定的搜索,以确定数据单元是否包括满足搜索标准的数据记录,并且响应于确定数据单元包括这样的数据记录,使用单元索引中的唯一值索引来搜索数据单元的数据记录,以识别满足搜索标准的一个或多个数据记录;以及响应于识别满足搜索标准的至少一个数据记录,提供至少数据单元包括满足搜索标准的至少一个数据记录的指示。

Description

用于分布式数据集索引的装置、方法和机器可读存储介质
相关申请的交叉引用
本申请要求下列申请的优先权的权益:2017年2月13日提交的美国临时申请序列号62/458,162;2017年12月11日提交的美国申请序列号15/838,110;2017年12月11日提交的美国申请序列号15/838,175;2017年12月11日提交的美国申请序列号15/838,195;以及2017年12月11日提交的美国申请序列号15/838,211。美国临时申请序列号62/458,162、美国申请序列号15/838,110、美国申请序列号15/838,175、美国申请序列号15/838,195和美国申请序列号15/838,211的公开内容出于所有目的以其各自整体通过引用合并于此。
技术领域
本文中描述的各种实施例一般地涉及设备间协调,以改进由多个节点设备存储的数据集的分布式索引。
背景技术
大数据集(例如,通常被称之为“大数据”)的分析的执行正在诸如模拟、过程监视、决策制定、行为建模和做预测之类的领域中变得越来越普遍。这样的分析通常由不同数量的可用节点设备的网格来执行,而数据集通常被存储在存储设备的单独的集合内。这导致如下的挑战:使得能够针对这样的大数据集高效地生成索引,以使得能够跨网格的多个节点设备高效搜索这样的大数据集,以使得特定的数据的片段能够被高效地定位和检索。
发明内容
本发明内容不旨在仅识别所描述主题的关键或必要特征,其也不旨在被孤立地使用以确定所描述主题的范围。通过参考本专利的整个说明书的适当部分、任何或所有附图和每个权利要求,应该理解本主题。
一种装置,包括:多个节点设备中的第一节点设备的处理器,以及用于存储指令的第一节点设备的存储设备,当所述指令由处理器执行时,使处理器执行操作,所述操作包括:在第一节点设备处接收多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中,每个超级单元包括多个数据单元,多个数据单元中的每个数据单元包括多个数据记录,以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合。还可以使处理器在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合的第一数据字段和通过字段的集合的第二数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于所接收的超级单元中的第一数据单元内的每个数据记录,使处理器:从第一数据字段检索数据值,并且从第二数据字段检索数据值;基于从第一数据字段检索的数据值来确定数据记录的第一数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第一数据字段检索到数据值;响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到对应于第一数据单元的第一单元索引的第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值来排序,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的搜索;基于从第二数据字段检索的数据值,确定数据记录的第二数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第二数据字段检索到数据值;以及响应于确定数据记录的第二数据字段存储唯一数据值,将数据记录的标识符添加到第一单元索引的第二唯一值索引,其中第二唯一值索引内的数据记录的标识符基于第二数据字段中的对应唯一数据值来排序,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的搜索。可以进一步使处理器在对应于所接收的超级单元的超级单元索引内生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及对第一数据单元的数据记录内的第二数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准中指定的值是否存在于第一数据单元的任何数据记录的第一和第二数据字段中的一个内;向控制设备提供对指向要在其处存储超级单元、超级单元索引和第一单元索引的数据文件内的位置的第一指针的请求;在第一节点设备处并从控制设备接收第一指针;以及向至少一个数据设备并且至少部分地与所述多个节点设备中的其他节点设备并行地传输超级单元、超级单元索引和第一单元索引,与用于存储超级单元、超级单元索引和第一单元索引的指令,其中超级单元存储在由第一指针指向的位置处开始的数据文件中,其中超级单元索引和第一单元索引存储在数据文件中超级单元之后的位置处。
一种计算机程序产品,其有形地实现在非暂时性机器可读存储介质中,所述计算机程序产品包括可操作以使多个节点设备中的第一节点设备的处理器执行操作的指令,所述操作包括:在第一节点设备处接收多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中,每个超级单元包括多个数据单元,多个数据单元中的每个数据单元包括多个数据记录,以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合。还可以使处理器在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于所接收的超级单元中的第一数据单元内的每个数据记录,使处理器:从第一数据字段检索数据值,并且从第二数据字段检索数据值;基于从第一数据字段检索的数据值来确定数据记录的第一数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第一数据字段检索到数据值;响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到对应于第一数据单元的第一单元索引的第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值来排序,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的搜索;基于从第二数据字段检索的数据值,确定数据记录的第二数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第二数据字段检索到数据值;以及响应于确定数据记录的第二数据字段存储唯一数据值,将数据记录的标识符添加到第一单元索引的第二唯一值索引,其中第二唯一值索引内的数据记录的标识符基于第二数据字段中的对应唯一数据值来排序,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的搜索。可以进一步使处理器在对应于所接收的超级单元的超级单元索引内生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及对第一数据单元的数据记录内的第二数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准中指定的值是否存在于第一数据单元的任何数据记录的第一和第二数据字段中的一个内;向控制设备提供对指向要在其处存储超级单元、超级单元索引和第一单元索引的数据文件内的位置的第一指针的请求;在第一节点设备处并从控制设备接收第一指针;以及向至少一个数据设备并且至少部分地与所述多个节点设备中的其他节点设备并行地传输超级单元、超级单元索引和第一单元索引,与用于存储超级单元、超级单元索引和第一单元索引的指令,其中超级单元存储在由第一指针指向的位置处开始的数据文件中,其中超级单元索引和第一单元索引存储在数据文件中超级单元之后的位置处。
除了第一数据单元之外,接收的超级单元还可以包括第二数据单元;可以使处理器在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以在第一单元索引内生成附加的唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索;处理器的第一处理器核可以索引第一数据单元内的多个数据记录;以及处理器的第二处理器核可以至少部分地与由第一处理器核对第一数据单元内的多个数据记录的索引并行地索引第二数据单元内的多个数据记录。
可以使处理器:对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
在每次从多个数据记录中的数据记录的第一数据字段和第二数据字段检索数据值之后,可以使处理器执行操作,所述操作包括:搜索与数据记录的标识符相关的第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否包括已经存在于第一二叉树内的重复数据值;响应于确定从第一数据字段检索的数据值是尚未存在于第一二叉树内的唯一数据值,将从第一数据字段检索的数据值添加到第一二叉树;搜索与数据记录的标识符相关的第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否包括已经存在于第二二叉树内的重复数据值;以及响应于确定从第二数据字段检索的数据值是尚未存在于第二二叉树内的唯一数据值,将从第二数据字段检索的数据值添加到第二二叉树。还可以使处理器执行操作,所述操作包括:基于第一二叉树的有序遍历生成第一唯一值索引,以及基于第二二叉树的有序遍历生成第二唯一值索引。
在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后,可以使处理器执行操作,所述操作包括:响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引。在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后,可以使处理器执行操作,所述操作包括:响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并将数据记录的标识符添加到所添加的重复值索引。重复值索引的第一和第二集合内的每个重复值索引可以包括数据记录的标识符。
可以使处理器至少部分地与由多个节点设备中的其他节点设备向控制设备传输资源的可用性并行地向控制设备传输第一节点设备的资源的当前可用性的指示,以使得控制设备能够确定是否代替将超级单元分配给多个节点设备中的另一个节点设备而将超级单元分配给第一节点设备。还可以使处理器执行操作,所述操作包括:在第一节点设备处并从控制设备接收指向要从其检索超级单元的数据文件内的位置的第二指针;以及向至少数据设备上并且至少部分地与多个节点设备中的其他节点设备并行地传输用于向第一节点设备提供超级单元的指令。
可以使处理器执行操作,所述操作包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将该至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
可以使处理器执行操作,所述操作包括:响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
使处理器执行操作,所述操作包括:解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及响应于确定查询指令确实包括用于执行任务的任务指令,执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务。
一种计算机实现的方法,包括:在多个节点设备中的第一节点设备处接收多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录;以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合。该方法还可以包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于所接收的超级单元中的第一数据单元内的每个数据记录,所述操作包括:从第一数据字段检索数据值,并且从第二数据字段检索数据值;基于从第一数据字段检索的数据值来确定数据记录的第一数据字段是否存储唯一数据值,其中尚未从第一数据单元的任何数据记录的第一数据字段检索到数据值;响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到对应于第一数据单元的第一单元索引的第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值来排序,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的搜索;基于从第二数据字段检索的数据值,确定数据记录的第二数据字段是否存储唯一数据值,其中尚未从第一数据单元的任何数据记录的第二数据字段检索到数据值;以及响应于确定数据记录的第二数据字段存储唯一数据值,将数据记录的标识符添加到第一单元索引的第二唯一值索引,其中第二唯一值索引内的数据记录的标识符基于第二数据字段中的对应唯一数据值来排序,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的搜索。
该方法可以进一步包括:在对应于所接收的超级单元的超级单元索引内生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及对第一数据单元的数据记录内的第二数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准中指定的值是否存在于第一数据单元的任何数据记录的第一和第二数据字段中的一个内;向控制设备提供对指向要在其处存储超级单元、超级单元索引和第一单元索引的数据文件内的位置的第一指针的请求;在第一节点设备处并从控制设备接收第一指针;以及向至少一个数据设备并且至少部分地与所述多个节点设备中的其他节点设备并行地传输超级单元、超级单元索引和第一单元索引,与用于存储超级单元、超级单元索引和第一单元索引的指令,其中超级单元存储在由第一指针指向的位置处开始的数据文件中,其中超级单元索引和第一单元索引存储在数据文件中超级单元之后的位置处。
除了第一数据单元之外,接收的超级单元还可以包括第二数据单元;方法可以包括:在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以在第一单元索引内生成附加的唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索;处理器的第一处理器核可以索引第一数据单元内的多个数据记录;以及处理器的第二处理器核可以至少部分地与由第一处理器核对第一数据单元内的多个数据记录的索引并行地索引第二数据单元内的多个数据记录。
方法可以包括:对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
方法可以包括:在每次从多个数据记录中的数据记录的第一数据字段和第二数据字段检索数据值之后执行操作,所述操作包括:搜索与数据记录的标识符相关的第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否包括已经存在于第一二叉树内的重复数据值;响应于确定从第一数据字段检索的数据值是尚未存在于第一二叉树内的唯一数据值,将从第一数据字段检索的数据值添加到第一二叉树;搜索与数据记录的标识符相关的第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否包括已经存在于第二二叉树内的重复数据值;以及响应于确定从第二数据字段检索的数据值是尚未存在于第二二叉树内的唯一数据值,将从第二数据字段检索的数据值添加到第二二叉树。该方法还可以包括:基于第一二叉树的有序遍历生成第一唯一值索引,以及基于第二二叉树的有序遍历生成第二唯一值索引。
方法可以包括:在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后,执行操作,所述操作包括:响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引。该方法还可以包括:在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后执行操作,所述操作包括:响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并将数据记录的标识符添加到所添加的重复值索引。重复值索引的第一和第二集合内的每个重复值索引包括数据记录的标识符。
方法可以包括:至少部分地与由多个节点设备中的其他节点设备向控制设备传输资源的可用性并行地向控制设备传输第一节点设备的资源的当前可用性的指示,以使得控制设备能够确定是否代替将超级单元分配给多个节点设备中的另一个节点设备而将超级单元分配给第一节点设备。该方法还可以包括:在第一节点设备处并从控制设备接收指向要从其检索超级单元的数据文件内的位置的第二指针;以及向至少数据设备上并且至少部分地与多个节点设备的其他节点设备并行地传输用于向第一节点设备提供超级单元的指令。
方法可以包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将该至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
方法可以包括:响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
方法可以包括:解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及响应于确定查询指令确实包括用于执行任务的任务指令,执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务。
一种装置,可以包括多个节点设备中的第一节点设备的处理器,以及用于存储指令的第一节点设备的存储设备,当所述指令由处理器执行时,使处理器执行操作,所述操作包括:在第一节点设备处存储多个超级单元中的第一超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录;以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合。还可以使处理器:针对第一超级单元内的每个数据单元存储对应于数据单元的单元索引,其中单元索引可以包括存储在数据单元内的数据记录之中的字段的集合中的第一数据字段内的值的范围的指示;以及对应于第一数据字段的第一唯一值索引,其中对于被存储在数据单元内的数据记录之中的第一数据字段内的每个数据值,第一唯一值索引包括数据单元内的单个数据记录的标识符,其中数据值被存储在第一数据字段内。还可以使处理器在第一节点设备处从控制设备并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足指定搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段内搜索的至少一个数据值。还可以使处理器响应于接收到查询指令并且对于第一超级单元内的每个数据单元,使处理器执行指定搜索的操作,所述操作包括将数据值与在对应的单元索引中指示的值的范围进行比较,以确定数据单元是否包括满足指定搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足指定搜索标准的至少一个数据记录,使用至少第一唯一值索引来执行对数据单元的数据记录的搜索以识别满足搜索标准的一个或多个数据记录。还可以使处理器响应于识别满足指定搜索标准的至少一个数据记录,使处理器执行操作,所述操作包括:生成指示包括满足指定搜索标准的至少一个数据记录的第一超级单元的结果数据;以及将结果数据提供给控制设备。
一种计算机程序产品,其有形地实现在非暂时性机器可读存储介质中,所述计算机程序产品可以包括可操作以使多个节点设备中的第一节点设备的处理器执行操作的指令,所述操作包括:在第一节点设备处存储多个超级单元中的第一超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录,以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合。还可以使处理器:针对第一超级单元内的每个数据单元存储对应于数据单元的单元索引,其中单元索引可以包括存储在数据单元内的数据记录之中的字段的集合中的第一数据字段内的值的范围的指示;以及对应于第一数据字段的第一唯一值索引,其中对于被存储在数据单元内的数据记录之中的第一数据字段内的每个数据值,第一唯一值索引包括数据单元内的单个数据记录的标识符,其中数据值被存储在第一数据字段内。还可以使处理器在第一节点设备处从控制设备并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足指定搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段内搜索的至少一个数据值。还可以使处理器响应于接收到查询指令并且对于第一超级单元内的每个数据单元,使处理器执行指定搜索的操作,所述操作包括将数据值与在对应的单元索引中指示的值的范围进行比较,以确定数据单元是否包括满足指定搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足指定搜索标准的至少一个数据记录,使用至少第一唯一值索引来执行对数据单元的数据记录的搜索以识别满足搜索标准的一个或多个数据记录。还可以使处理器响应于识别满足指定搜索标准的至少一个数据记录,使处理器执行操作,所述操作包括:生成指示包括满足指定搜索标准的至少一个数据记录的第一超级单元的结果数据;以及将结果数据提供给控制设备。
第一超级单元的多个数据单元可以包括第一数据单元和第二数据单元;可以使处理器在第一执行线程上在第一数据单元内执行指定的搜索;并且可以使处理器在第二执行线程上在第二数据单元内执行指定的搜索。还可以使处理器将处理器的单独处理器核分配给第一和第二执行线程中的每个。
对应于第一超级单元的数据单元的单元索引可以包括重复值索引的第一集合,其中对于被存储于在第一唯一值索引中识别的数据记录的第一数据字段内的至少一个数据值,重复值索引的第一集合的重复值索引包括数据单元内的附加数据记录的至少一个标识符,其中数据值也被存储在第一数据字段内。可以使处理器响应于识别满足指定搜索标准的数据单元内的至少一个数据记录来执行操作,所述操作包括:针对识别也满足指定搜索标准的数据单元的一个或多个附加数据记录的重复值索引在重复值索引的第一集合内搜索;以及生成结果数据以指示一个或多个附加数据记录。
单元索引可以包括第二唯一值索引,所述第二唯一值索引对应于数据单元的数据记录内的字段的集合中的第二数据字段;对于被存储在数据单元内的数据记录之中的第二数据字段内的每个数据值,第二唯一值索引包括数据单元内的单个数据记录的标识符,其中数据值被存储在第二数据字段内;单元索引可以包括重复值索引的第二集合,其中对于被存储于在第二唯一值索引中识别的数据记录的第二数据字段内的至少一个数据值,重复值索引的第二集合的重复值索引包括数据单元内的附加数据记录的至少一个标识符,其中数据值也被存储在第一数据字段内;第一唯一值索引可以包括第一唯一值索引中包括的数据记录的标识符的计数;第二唯一值索引可以包括第二唯一值索引中包括的数据记录的标识符的计数;重复值索引的第一集合内的每个重复值索引可以包括重复值索引中包括的数据记录的标识符的计数;重复值索引的第二集合内的每个重复值索引可以包括重复值索引中包括的数据记录的标识符的计数;以及搜索标准可以包括要在第二数据字段内搜索的至少一个数据值。可以使处理器执行操作,所述操作包括:分析第一唯一值索引、第二唯一值索引、重复值索引的第一集合内的每个重复值索引以及重复值索引的第二集合内的每个重复值索引内的数据记录的标识符的计数,以确定第一数据字段和第二数据字段的数据值的基数的相对度;以及基于第一数据字段和第二数据字段的数据值的基数的相对度来确定是否要开始用第一唯一值索引或第二唯一值索引对数据单元内的数据记录执行指定搜索。
使处理器执行操作,所述操作包括:解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及响应于确定查询指令确实包括用于执行任务的任务指令,可以使处理器执行操作,所述操作包括:执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务,以及生成结果数据以包括任务的执行的结果,作为超级单元包括满足指定搜索标准的至少一个数据记录的指示。
可以使处理器执行操作,所述操作包括:在第一节点设备处存储对应于第一超级单元的第一超级单元索引,其中第一超级单元索引可以包括存储在第一超级单元的多个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将搜索标准的至少一个数据值与第一超级单元索引中指示的值的范围进行比较,以确定第一超级单元是否包括满足指定搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录;以及在确定第一超级单元确实包括满足指定搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录时,调节对第一超级单元内的每个数据单元的指定搜索的操作的执行。
第一节点设备可以包括控制器,并且控制器可以包括控制器处理器和用于存储其他指令的控制器存储设备,当所述其他指令由控制器处理器执行时,使控制器处理器执行操作以用作控制设备。所述操作可以包括:在第一节点设备处并从多个节点设备中的第二节点设备接收对应于由第二节点设备存储的第二超级单元的第二超级单元索引,其中第二超级单元索引可以包括存储在第二超级单元的至少一个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将数据值与第二超级单元索引中指示的值的范围进行比较,以确定第二超级单元是否包括满足指定搜索标准的第二超级单元的至少一个数据单元内的至少一个数据记录;以及响应于确定第二超级单元包括满足指定搜索标准的至少一个数据记录,将查询指令传输到第二节点设备以使得第二节点设备能够在第二超级单元的至少一个数据单元内执行指定搜索。
可以使处理器执行操作,所述操作包括:在对应于第一超级单元内的多个数据单元中的数据单元的每个单元索引内存储唯一值向量,所述唯一值向量可以包括被存储在对应数据单元内的数据记录之中的第一数据字段内的每个数据值的单个实例,其中每个单元索引内的唯一值向量内的数据值的单个实例被按值来排序;响应于接收到查询指令,将搜索标准的至少一个数据值与每个单元索引内的唯一值向量内的数据值的单个实例中的至少一个进行比较,以确定第一超级单元是否包括满足指定搜索标准的至少一个数据单元;以及在确定第一超级单元确实包括满足指定搜索标准的至少一个数据单元时,调节对第一超级单元内的每个数据单元的指定搜索的操作的执行。
使处理器在第一节点设备处从由至少一个数据设备维护的数据文件接收第一超级单元。还可以使处理器在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于数据单元内的每个数据记录,可以使处理器:从第一数据字段检索数据值;基于从第一数据字段检索的数据值,确定数据记录的第一数据字段是否存储尚未由处理器从数据单元的任何数据记录的第一数据字段检索的唯一数据值;以及响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值的排序被排序到标识符的向量中,选择所述唯一数据值以使得能够使用第一唯一值索引来执行对数据单元的数据记录的搜索。可以进一步使处理器在对应于超级单元的超级单元索引内生成数据单元的数据记录内的第一数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准的至少一个数据值是否存在于数据单元的任何数据记录的第一数据字段内。
一种计算机实现的方法,可以包括:在多个节点设备中的第一节点设备处存储多个超级单元中的第一超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元可以包括多个数据单元;多个数据单元中的每个数据单元可以包括多个数据记录;以及多个数据记录中的每个数据记录可以包括在其处存储数据集的数据值的字段的集合。该方法还可以包括针对第一超级单元内的每个数据单元存储对应于数据单元的单元索引,其中单元索引包括:存储在数据单元内的数据记录之中的字段的集合中的第一数据字段内的值的范围的指示;以及对应于第一数据字段的第一唯一值索引,其中对于被存储在数据单元内的数据记录之中的第一数据字段内的每个数据值,第一唯一值索引包括数据单元内的单个数据记录的标识符,其中数据值被存储在第一数据字段内。该方法还可以包括:在第一节点设备处从控制设备并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足指定搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准可以包括要在第一数据字段内搜索的至少一个数据值。该方法可以进一步包括响应于接收到查询指令并且对于第一超级单元内的每个数据单元来执行指定搜索的操作,所述操作包括:将搜索标准的至少一个数据值与在对应的单元索引中指示的值的范围进行比较,以确定数据单元是否包括满足指定搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足指定搜索标准的至少一个数据记录,使用至少第一唯一值索引来执行对数据单元的数据记录的搜索以识别满足搜索标准的一个或多个数据记录。该方法可以进一步包括:响应于识别满足指定搜索标准的至少一个数据记录来执行操作,所述操作包括:生成指示包括满足指定搜索标准的至少一个数据记录的第一超级单元的结果数据;以及将结果数据提供给控制设备。
第一超级单元的多个数据单元可以包括第一数据单元和第二数据单元,并且方法可以包括:在第一节点设备的处理器的第一执行线程上在第一数据单元内执行指定的搜索,并且在处理器的第二执行线程上在第二数据单元内执行指定的搜索。该方法还可以包括将处理器的单独处理器核分配给第一和第二执行线程中的每个。
对应于第一超级单元的数据单元的单元索引可以包括重复值索引的第一集合,其中对于被存储于在第一唯一值索引中识别的数据记录的第一数据字段内的至少一个数据值,重复值索引的第一集合内的重复值索引包括数据单元内的附加数据记录的至少一个标识符,其中数据值也被存储在第一数据字段内。方法可以包括:响应于识别满足指定搜索标准的数据单元内的至少一个数据记录来执行操作,所述操作包括:在重复值索引的第一集合内搜索识别也满足指定搜索标准的数据单元的一个或多个附加数据记录的重复值索引;以及生成结果数据以指示一个或多个附加数据记录。
单元索引可以包括第二唯一值索引,所述第二唯一值索引对应于数据单元的数据记录内的字段的集合中的第二数据字段;对于被存储在数据单元内的数据记录之中的第二数据字段内的每个数据值,第二唯一值索引包括数据单元内的单个数据记录的标识符,其中数据值被存储在第二数据字段内;单元索引可以包括重复值索引的第二集合,其中对于被存储在第二唯一值索引中识别的数据记录的第二数据字段内的至少一个数据值,重复值索引的第二集合的重复值索引包括数据单元内的附加数据记录的至少一个标识符,其中数据值也被存储在第一数据字段内;第一唯一值索引可以包括第一唯一值索引中包括的数据记录的标识符的计数;第二唯一值索引可以包括第二唯一值索引中包括的数据记录的标识符的计数;重复值索引的第一集合内的每个重复值索引可以包括重复值索引中包括的数据记录的标识符的计数;重复值索引的第二集合内的每个重复值索引可以包括重复值索引中包括的数据记录的标识符的计数;以及搜索标准可以包括要在第二数据字段内搜索的至少一个数据值。方法可以包括:分析第一唯一值索引、第二唯一值索引、重复值索引的第一集合内的每个重复值索引以及重复值索引的第二集合内的每个重复值索引内的数据记录的标识符的计数,以确定第一数据字段和第二数据字段的数据值的基数的相对度;以及基于第一数据字段和第二数据字段的数据值的基数的相对度来确定是否要开始用第一唯一值索引或第二唯一值索引对数据单元内的数据记录执行指定搜索。
方法可以包括:解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及响应于确定查询指令确实包括用于执行任务的任务指令而执行操作,所述操作包括:在第一节点设备处执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务,以及生成结果数据以包括任务的执行的结果,作为超级单元包括满足指定搜索标准的至少一个数据记录的指示。
方法可以包括:在第一节点设备处存储对应于第一超级单元的第一超级单元索引,其中第一超级单元索引可以包括存储在第一超级单元的多个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将搜索标准的至少一个数据值与第一超级单元索引中指示的值的范围进行比较,以确定第一超级单元是否包括满足指定搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录;以及在确定第一超级单元确实包括满足指定搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录时,调节对第一超级单元内的每个数据单元的指定搜索的操作的执行。
第一节点设备可以包括控制器,并且控制器可以包括控制器处理器和用于存储其他指令的控制器存储设备,当所述其他指令由控制器处理器执行时,使控制器处理器执行操作以用作控制设备。所述操作可以包括:在第一节点设备处并从多个节点设备中的第二节点设备接收对应于由第二节点设备存储的第二超级单元的第二超级单元索引,其中第二超级单元索引可以包括存储在第二超级单元的至少一个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将搜索标准的至少一个数据值与第二超级单元索引中指示的值的范围进行比较,以确定第二超级单元是否包括满足指定搜索标准的第二超级单元的至少一个数据单元内的至少一个数据记录;以及响应于确定第二超级单元包括满足指定搜索标准的至少一个数据记录,将查询指令传输到第二节点设备以使得第二节点设备能够在第二超级单元的至少一个数据单元内执行指定搜索。
方法可以包括:在对应于第一超级单元内的多个数据单元中的数据单元的每个单元索引内存储唯一值向量,所述唯一值向量可以包括被存储在对应数据单元内的数据记录之中的第一数据字段内的每个数据值的单个实例,其中每个单元索引内的唯一值向量内的数据值的单个实例被按值来排序;响应于接收到查询指令,将搜索标准的至少一个数据值与每个单元索引内的唯一值向量内的数据值的单个实例中的至少一个进行比较,以确定第一超级单元是否包括满足指定搜索标准的至少一个数据单元;以及在确定第一超级单元确实包括满足指定搜索标准的至少一个数据单元时,调节对第一超级单元内的每个数据单元的指定搜索的操作的执行。
方法可以包括在第一节点设备处从由至少一个数据设备维护的数据文件接收第一超级单元。该方法还可以包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于数据单元内的每个数据记录,该方法可以包括:从第一数据字段检索数据值;基于从第一数据字段检索的数据值,确定数据记录的第一数据字段是否存储尚未由第一节点设备的处理器从数据单元的任何数据记录的第一数据字段检索的唯一数据值;以及响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值的排序被排序到标识符的向量中,选择所述唯一数据值以使得能够使用第一唯一值索引来执行对数据单元的数据记录的搜索。该方法可以进一步包括:在对应于超级单元的超级单元索引内生成数据单元的数据记录内的第一数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准的至少一个数据值是否存在于数据单元的任何数据记录的第一数据字段内。
一种装置,可以包括多个节点设备中的第一节点设备的处理器,以及用于存储指令的第一节点设备的存储设备,当所述指令由处理器执行时,使处理器执行操作,所述操作包括:在第一节点设备处存储多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元可以包括多个数据单元;多个数据单元中的每个数据单元可以包括多个数据记录;以及多个数据记录中的每个数据记录可以包括在其处存储数据集的数据值的数据字段的集合。还可以使处理器执行操作,所述操作包括:在第一节点设备处通过第一数据单元在单个读取遍次中通过数据字段的集合中的第一数据字段和通过数据字段的集合中的第二数据字段索引超级单元的第一数据单元内的多个数据记录,其中对于第一数据单元内的每个数据记录,使处理器:从第一数据字段和第二数据字段检索数据值;执行操作以生成第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否可以包括唯一值或重复值,所述操作包括:搜索第一二叉树,以确定从第一数据字段检索的数据值是否可以包括已经存在于第一二叉树内的重复数据值或者尚未存在于第一二叉树内的唯一值,以及响应于确定从第一数据字段检索的数据值是唯一值,将从第一数据字段检索的数据值添加到第一二叉树;以及执行操作以生成第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否可以包括唯一值或重复值,所述操作包括:搜索第二二叉树,以确定从第二数据字段检索的数据值是否可以包括已经存在于第二二叉树内的重复数据值或者尚未存在于第二二叉树内的唯一值,以及响应于确定从第二数据字段检索的数据值是唯一值,将从第二数据字段检索的数据值添加到第二二叉树。可以进一步使处理器执行操作,所述操作包括:基于第一二叉树的有序遍历,生成与第一二叉树内的唯一数据值相关联的数据记录的索引的第一唯一值索引,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的二进制搜索;基于第二二叉树的有序遍历,生成与第二二叉树内的唯一数据值相关联的数据记录的索引的第二唯一值索引,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的二进制搜索;在对应于超级单元的超级单元索引内以及从第一和第二二叉树的有序遍历,生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及第一数据单元的数据记录内的第二数据字段的数据值的范围的指示;以及将超级单元索引提供给控制设备以使得能够由控制设备使用超级单元索引。
一种计算机程序产品,其有形地实现在非暂时性机器可读存储介质中,所述计算机程序产品包括可操作以使多个节点设备中的第一节点设备的处理器执行操作的指令,所述操作包括:在第一节点设备处存储多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元可以包括多个数据单元;多个数据单元中的每个数据单元可以包括多个数据记录;以及多个数据记录中的每个数据记录可以包括在其处存储数据集的数据值的数据字段的集合。还可以使处理器执行操作,所述操作包括:在第一节点设备处,通过第一数据单元在单个读取遍次中通过数据字段的集合中的第一数据字段和通过数据字段的集合中的第二数据字段索引超级单元的第一数据单元内的多个数据记录,其中对于第一数据单元内的每个数据记录,使处理器:从第一数据字段和第二数据字段检索数据值;执行操作以生成第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否可以包括唯一值或重复值,所述操作包括:搜索第一二叉树,以确定从第一数据字段检索的数据值是否可以包括已经存在于第一二叉树内的重复数据值或者尚未存在于第一二叉树内的唯一值,以及响应于确定从第一数据字段检索的数据值是唯一值,将从第一数据字段检索的数据值添加到第一二叉树;以及执行操作以生成第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否可以包括唯一值或重复值,所述操作包括:搜索第二二叉树,以确定从第二数据字段检索的数据值是否可以包括已经存在于第二二叉树内的重复数据值或者尚未存在于第二二叉树内的唯一值,以及响应于确定从第二数据字段检索的数据值是唯一值,将从第二数据字段检索的数据值添加到第二二叉树。可以进一步使处理器执行操作,所述操作包括:基于第一二叉树的有序遍历,生成与第一二叉树内的唯一数据值相关联的数据记录的索引的第一唯一值索引,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的二进制搜索;基于第二二叉树的有序遍历,生成与第二二叉树内的唯一数据值相关联的数据记录的索引的第二唯一值索引,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的二进制搜索;在对应于超级单元的超级单元索引内以及从第一和第二二叉树的有序遍历,生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及第一数据单元的数据记录内的第二数据字段的数据值的范围的指示;以及将超级单元索引提供给控制设备以使得能够由控制设备使用超级单元索引。
除了第一数据单元之外,超级单元还可以包括第二数据单元;可以使处理器在第一执行线程上索引第一数据单元内的多个数据记录,以生成对应于第一数据单元的第一单元索引;以及可以使处理器在第二执行线程上至少部分地与第一数据单元的多个数据记录的索引并行地在单个读取遍次中通过数据字段的集合中的第一数据字段和通过数据字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以生成对应于第二数据单元的第二单元索引,其中第二单元索引包括唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索。可以使处理器将处理器的单独处理器核分配给第一和第二执行线程中的每个。
可以使处理器执行操作,所述操作包括:对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
可以使处理器执行操作,所述操作包括:分析第一数据字段的数据类型和数据大小,以确定是否要在对应于第一数据单元的第一单元索引内生成唯一值向量;以及响应于确定要生成唯一值向量,使处理器经由第一二叉树的有序遍历来检索第一二叉树内的唯一值,以及生成唯一值向量以包括排序为按有序遍历排序的第一二叉树内的唯一值。
可以使处理器执行操作,所述操作包括:分析第一数据字段的数据类型和数据大小,以确定是否要在对应于第一数据单元的第一单元索引内生成散列值向量;以及响应于确定要生成散列值向量,使处理器从第一二叉树内的每个唯一值生成散列值,以及生成散列值向量以包括按值排序的散列值。
在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后,使处理器执行操作,所述操作包括:响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引。在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后,使处理器执行操作,所述操作包括:响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并且将数据记录的标识符添加到所添加的重复值索引。第一唯一值索引可以数据记录的标识符的向量;第二唯一值索引可以包括数据记录的标识符的向量;以及重复值索引的第一和第二集合内的每个重复值索引可以包括数据记录的标识符的向量。
第一唯一值索引可以包括第一唯一值索引中包括的数据记录的索引的计数;第二唯一值索引可以包括第二唯一值索引中包括的数据记录的索引的计数;重复值索引的第一集合内的每个重复值索引可以包括重复值索引中包括的数据记录的索引的计数;以及重复值索引的第二集合内的每个重复值索引可以包括重复值索引中包括的数据记录的索引的计数。
可以使处理器执行操作,所述操作包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准可以包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将该至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
可以使处理器执行操作,所述操作包括:响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
一种计算机实现的方法,包括:在第一节点设备处存储多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录;以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的数据字段的集合。该方法还可以包括:在第一节点设备处,通过第一数据单元在单个读取遍次中通过数据字段的集合中的第一数据字段和通过数据字段的集合中的第二数据字段索引超级单元的第一数据单元内的多个数据记录,其中所述操作可以包括:对于第一数据单元内的每个数据记录,从第一数据字段和第二数据字段检索数据值;执行操作以生成第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否可以包括唯一值或重复值,所述操作包括:搜索第一二叉树,以确定从第一数据字段检索的数据值是否可以包括已经存在于第一二叉树内的重复数据值或者尚未存在于第一二叉树内的唯一值,以及响应于确定从第一数据字段检索的数据值是唯一值,将从第一数据字段检索的数据值添加到第一二叉树;以及执行操作以生成第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否可以包括唯一值或重复值,所述操作包括:搜索第二二叉树,以确定从第二数据字段检索的数据值是否可以包括已经存在于第二二叉树内的重复数据值或者尚未存在于第二二叉树内的唯一值,以及响应于确定从第二数据字段检索的数据值是唯一值,将从第二数据字段检索的数据值添加到第二二叉树。该方法可以进一步包括:基于第一二叉树的有序遍历,生成与第一二叉树内的唯一数据值相关联的数据记录的索引的第一唯一值索引,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的二进制搜索;基于第二二叉树的有序遍历,生成与第二二叉树内的唯一数据值相关联的数据记录的索引的第二唯一值索引,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的二进制搜索;在对应于超级单元的超级单元索引内以及从第一和第二二叉树的有序遍历,生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及第一数据单元的数据记录内的第二数据字段的数据值的范围的指示;以及将超级单元索引提供给控制设备以使得能够由控制设备使用超级单元索引。
除了第一数据单元之外,超级单元还可以包括第二数据单元;并且方法可以包括:在第一执行线程上索引第一数据单元内的多个数据记录,以生成对应于第一数据单元的第一单元索引;以及在第二执行线程上至少部分地与索引第一数据单元的多个数据记录并行地在单个读取遍次中通过数据字段的集合中的第一数据字段和通过数据字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以生成对应于第二数据单元的第二单元索引,其中第二单元索引包括唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索。该方法还可以包括将处理器的单独处理器核分配给第一和第二执行线程中的每个。
方法可以包括:对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
方法可以包括:分析第一数据字段的数据类型和数据大小,以确定是否要在对应于第一数据单元的第一单元索引内生成唯一值向量;以及响应于确定要生成唯一值向量,使处理器执行操作,所述操作包括经由第一二叉树的有序遍历来检索第一二叉树内的唯一值,以及生成唯一值向量以包括排序为按有序遍历排序的第一二叉树内的唯一值。
方法可以包括:分析第一数据字段的数据类型和数据大小,以确定是否要在对应于第一数据单元的第一单元索引内生成散列值向量;以及响应于确定要生成散列值向量,使处理器执行操作,所述操作包括从第一二叉树内的每个唯一值生成散列值,以及生成散列值向量以包括按值排序的散列值。
方法可以包括:在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后执行操作,所述操作包括:响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引。该方法还可以包括:在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后执行操作,所述操作包括:响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并且将数据记录的标识符添加到所添加的重复值索引。第一唯一值索引可以包括数据记录的标识符的向量;第二唯一值索引可以包括数据记录的标识符的向量;以及重复值索引的第一和第二集合内的每个重复值索引可以包括数据记录的标识符的向量。
第一唯一值索引可以包括第一唯一值索引中包括的数据记录的索引的计数;第二唯一值索引可以包括第二唯一值索引中包括的数据记录的索引的计数;重复值索引的第一集合内的每个重复值索引可以包括重复值索引中包括的数据记录的索引的计数;以及重复值索引的第二集合内的每个重复值索引可以包括重复值索引中包括的数据记录的索引的计数。
方法可以包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准可以包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将该至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
方法可以包括:响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
一种装置,包括多个节点设备中的第一节点设备的处理器,以及用于存储指令的第一节点设备的存储设备,当所述指令由处理器执行时,使处理器执行操作,所述操作包括:在第一节点设备处存储多个超级单元中的第一超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录;以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的数据字段的集合。还可以使处理器:针对第一超级单元内的每个数据单元存储对应于数据单元的单元索引,其中单元索引可以包括对应于数据字段的集合中的第一数据字段的第一散列值向量,并且所述第一散列值向量可以包括从存储在第一数据字段内的数据值之中的每个唯一值生成的散列值;并且在第一节点设备处从控制设备并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准可以包括要在第一数据字段内搜索的至少一个数据值。还可以使处理器响应于接收到查询指令并且对于第一超级单元内的每个数据单元,使处理器执行搜索的操作,所述操作包括:从搜索标准的至少一个数据值中的第一数据值生成第一散列值;将第一散列值与对应的单元索引中的第一散列值向量内的散列值进行比较,以确定数据单元是否包括满足至少第一数据值的搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足搜索标准的至少一个数据记录,搜索数据单元的数据记录以识别满足搜索标准的一个或多个数据记录。可以进一步使处理器响应于识别了满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录,使处理器执行操作,所述操作包括:生成指示第一超级单元包括满足至少第一数据值的搜索标准的至少一个数据记录的结果数据;以及将结果数据提供给控制设备。
一种计算机程序产品,其有形地实现在非暂时性机器可读存储介质中,所述计算机程序产品可以包括可操作以使多个节点设备的第一节点设备的处理器执行操作的指令,所述操作包括:在第一节点设备处存储多个超级单元中的第一超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录;以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的数据字段的集合。还可以使处理器:针对第一超级单元内的每个数据单元存储对应于数据单元的单元索引,其中单元索引可以包括对应于数据字段的集合中的第一数据字段的第一散列值向量,并且第一散列值向量可以包括从存储在第一数据字段内的数据值之中的每个唯一值生成的散列值;并且在第一节点设备处从控制设备并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准可以包括要在第一数据字段内搜索的至少一个数据值。还可以使处理器响应于接收到查询指令并且对于第一超级单元内的每个数据单元,使处理器执行搜索的操作,所述操作包括:从搜索标准的至少一个数据值中的第一数据值生成第一散列值;将第一散列值与对应的单元索引中的第一散列值向量内的散列值进行比较,以确定数据单元是否包括满足至少第一数据值的搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足搜索标准的至少一个数据记录,搜索数据单元的数据记录以识别满足搜索标准的一个或多个数据记录。可以进一步使处理器响应于识别了满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录,使处理器执行操作,所述操作包括:生成指示第一超级单元包括满足至少第一数据值的搜索标准的至少一个数据记录的结果数据;以及将结果数据提供给控制设备。
对应于第一超级单元内的数据单元的单元索引中的每个可以包括对应于数据字段的集合中的第二数据字段的第二散列值向量,其中第二散列值向量可以包括从存储在第二数据字段内的数据值之中的每个唯一值生成的散列值。响应于识别满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录并且对于至少一个数据单元内的每个数据单元,可以使处理器执行搜索的操作,所述操作包括:从搜索标准的至少一个数据值中的第二数据值生成第二散列值;将第二散列值与对应的单元索引中的第二散列值向量内的散列值进行比较,以确定数据单元是否包括满足至少第一数据值和第二数据值的搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足至少第一数据值和第二数据值的搜索标准的至少一个数据记录,搜索数据单元的数据记录以识别满足至少第一数据值和第二数据值的搜索标准的一个或多个数据记录。还可以使处理器在识别了满足第一数据值和第二数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录时,调节结果的生成和传输。
可以使处理器执行操作,所述操作包括:在第一执行线程上执行对应于第一数据字段的搜索,并且至少部分地与在第一线程上执行搜索并行地在第二执行线程上执行对应于第二数据字段的搜索。还可以使处理器将处理器的单独处理器核分配给第一和第二执行线程中的每个。
对应于第一超级单元内的数据单元的单元索引中的每个可以包括对应于第一数据字段的唯一值向量,其中唯一值向量可以包括存在于对应的数据单元的数据记录之中的第一数据字段内的每个数据值的单个实例,其中每个数据值的单个实例被按值排序。响应于识别了满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录并且对于至少一个数据单元内的每个数据单元,可以使处理器执行搜索的操作,所述操作包括:将搜索标准的至少一个数据值的第一数据值与唯一值向量内的数据值的单个实例进行比较,以确定数据单元是否包括满足至少第一数据值的搜索标准的至少一个数据记录;并且在经由与第一散列值向量的比较以及与唯一值向量的比较确定数据单元包括满足搜索标准的至少一个数据记录时,调节对数据单元的数据记录的搜索。
可以使处理器执行操作,所述操作包括:解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及响应于确定查询指令确实包括用于执行任务的任务指令来执行操作,所述操作包括:执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务;以及生成结果数据以包括任务的执行的结果,作为超级单元包括满足搜索标准的至少一个数据记录的指示。
可以使处理器执行操作,所述操作包括:在第一节点设备处存储对应于第一超级单元的第一超级单元索引,其中第一超级单元索引可以包括存储在第一超级单元的多个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将搜索标准的至少一个数据值与第一超级单元索引中指示的值的范围进行比较,以确定第一超级单元是否包括满足搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录;以及在确定第一超级单元确实包括满足搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录时,调节对第一超级单元内的每个数据单元的搜索的操作的执行。
第一节点设备可以包括控制器,并且控制器可以包括控制器处理器和用于存储其他指令的控制器存储设备,当所述其他指令由控制器处理器执行时,使控制器处理器执行操作以用作控制设备。所述操作可以包括:在第一节点设备处并从多个节点设备中的第二节点设备接收对应于由第二节点设备存储的第二超级单元的第二超级单元索引,其中第二超级单元索引可以包括存储在第二超级单元的至少一个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将数据值与第二超级单元索引中指示的值的范围进行比较,以确定第二超级单元是否包括满足搜索标准的第二超级单元的至少一个数据单元内的至少一个数据记录;以及响应于确定第二超级单元包括满足搜索标准的至少一个数据记录,将查询指令传输到第二节点设备以使得第二节点设备能够在第二超级单元的至少一个数据单元内执行搜索。
可以使处理器在第一节点设备处从由至少一个数据设备维护的数据文件接收第一超级单元。还可以使处理器在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于数据单元内的每个数据记录,使处理器执行操作,所述操作包括:从第一数据字段检索数据值;基于从第一数据字段检索的数据值,确定数据记录的第一数据字段是否存储尚未由处理器从数据单元的任何数据记录的第一数据字段检索的唯一数据值;以及响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中对应的唯一数据值的排序来排序,选择所述唯一数据值以使得能够使用第一唯一值索引来执行对数据单元的数据记录的搜索。可以进一步使处理器在对应于超级单元的超级单元索引内生成数据单元的数据记录内的第一数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准的至少一个数据值是否存在于数据单元的任何数据记录的第一数据字段内。
使处理器执行操作,所述操作包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地从至少一个数据设备接收第一超级单元的数据值的流;在第一节点设备处至少部分地与多个节点设备中的其他节点设备并行地并且根据至少一个规则从数据值的流生成第一超级单元的多个数据单元,其中从由规则组成的组选择至少一个规则,所述由规则组成的组从由数据单元的最小数据大小、数据单元的最大数据大小、数据单元的最小的数据记录的数量、数据单元的最大的数据记录的数量以及数据字段的集合的规范组成的组选择;以及在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地索引第一超级单元的多个数据单元中的每个数据单元内的多个数据记录。
一种计算机实现的方法,包括:在多个节点设备中的第一节点设备处存储多个超级单元中的第一超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:多个超级单元被分布在多个节点设备之中;每个超级单元包括多个数据单元;多个数据单元中的每个数据单元包括多个数据记录;以及多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合。该方法还可以包括:针对第一超级单元内的每个数据单元存储对应于数据单元的单元索引,其中单元索引包括对应于数据字段的集合中的第一数据字段的第一散列值向量,并且第一散列值向量包括从存储在第一数据字段内的数据值之中的每个唯一值生成的散列值;以及在第一节点设备处从控制设备并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段内搜索的至少一个数据值。该方法还可以包括响应于接收到查询指令并且对于第一超级单元内的每个数据单元执行搜索的操作,所述操作包括:从搜索标准的至少一个数据值中的第一数据值生成第一散列值;将第一散列值与对应的单元索引中的第一散列值向量内的散列值进行比较,以确定数据单元是否包括满足至少第一数据值的搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足搜索标准的至少一个数据记录,搜索数据单元的数据记录以识别满足搜索标准的一个或多个数据记录。该方法可以进一步包括:响应于识别了满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录来执行操作,所述操作包括:生成指示第一超级单元包括满足至少第一数据值的搜索标准的至少一个数据记录的结果数据,以及将结果数据提供给控制设备。
对应于第一超级单元内的数据单元的单元索引中的每个可以包括对应于数据字段的集合中的第二数据字段的第二散列值向量,其中第二散列值向量包括从存储在第二数据字段内的数据值之中的每个唯一值生成的散列值。该方法可以包括:响应于识别满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录并且对于至少一个数据单元内的每个数据单元来执行搜索的操作,所述操作包括:从搜索标准的至少一个数据值中的第二数据值生成第二散列值;将第二散列值与对应的单元索引中的第二散列值向量内的散列值进行比较,以确定数据单元是否包括满足至少第一数据值和第二数据值的搜索标准的至少一个数据记录;以及响应于确定数据单元包括满足至少第一数据值和第二数据值的搜索标准的至少一个数据记录,搜索数据单元的数据记录以识别满足至少第一数据值和第二数据值的搜索标准的一个或多个数据记录。该方法还可以包括:在识别了满足第一数据值和第二数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录时,调节结果的生成和传输。
方法可以包括:在第一执行线程上执行对应于第一数据字段的搜索,并且至少部分地与在第一线程上执行搜索并行地在第二执行线程上执行对应于第二数据字段的搜索。该方法还可以包括:将处理器的单独处理器核分配给第一和第二执行线程中的每个。
对应于第一超级单元内的数据单元的单元索引中的每个可以包括对应于第一数据字段的唯一值向量,其中唯一值向量包括存在于对应的数据单元的数据记录之中的第一数据字段内的每个数据值的单个实例,其中每个数据值的单个实例被按值排序。该方法可以包括:响应于识别了满足至少第一数据值的搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录并且对于至少一个数据单元内的每个数据单元来执行搜索的操作,所述操作包括:将搜索标准的至少一个数据值中的第一数据值与唯一值向量内的数据值的单个实例进行比较,以确定数据单元是否包括满足至少第一数据值的搜索标准的至少一个数据记录;以及在经由与第一散列值向量的比较以及与唯一值向量的比较确定数据单元包括满足搜索标准的至少一个数据记录时,调节对数据单元的数据记录的搜索。
方法可以包括:解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及响应于确定查询指令确实包括用于执行任务的任务指令来执行操作,所述操作包括:执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务;以及生成结果数据以包括任务的执行的结果,作为超级单元包括满足搜索标准的至少一个数据记录的指示。
方法可以包括:在第一节点设备处存储对应于第一超级单元的第一超级单元索引,其中第一超级单元索引包括存储在第一超级单元的多个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将搜索标准的至少一个数据值与第一超级单元索引中指示的值的范围进行比较,以确定第一超级单元是否包括满足搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录;并且在确定第一超级单元确实包括满足搜索标准的第一超级单元的至少一个数据单元内的至少一个数据记录时,调节对第一超级单元内的每个数据单元的搜索的操作的执行。
第一节点设备可以包括控制器,所述控制器包括控制器处理器和用于存储其他指令的控制器存储设备,当所述其他指令由控制器处理器执行时,使控制器处理器执行操作以用作控制设备。所述操作可以包括:在第一节点设备处并从多个节点设备中的第二节点设备接收对应于由第二节点设备存储的第二超级单元的第二超级单元索引,其中第二超级单元索引包括存储在第二超级单元的至少一个数据单元内的第一数据字段内的值的范围的指示;响应于接收到查询指令,将数据值与第二超级单元索引中指示的值的范围进行比较,以确定第二超级单元是否包括满足搜索标准的第二超级单元的至少一个数据单元内的至少一个数据记录;以及响应于确定第二超级单元包括满足搜索标准的至少一个数据记录,将查询指令传输到第二节点设备以使得第二节点设备能够在第二超级单元的至少一个数据单元内执行搜索。
方法可以包括:在第一节点设备处从由至少一个数据设备维护的数据文件接收第一超级单元。该方法还可以包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于数据单元内的每个数据记录,该方法可以包括:从第一数据字段检索数据值;基于从第一数据字段检索的数据值,确定数据记录的第一数据字段是否存储尚未由第一节点设备的处理器从数据单元的任何数据记录的第一数据字段检索的唯一数据值;以及响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应的唯一数据值的排序来排序,选择所述唯一数据值以使得能够使用第一唯一值索引来执行对数据单元的数据记录的搜索。该方法可以包括:在对应于超级单元的超级单元索引内生成数据单元的数据记录内的第一数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准的至少一个数据值是否存在于数据单元的任何数据记录的第一数据字段内。
方法可以包括:在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地从至少一个数据设备接收第一超级单元的数据值的流;在第一节点设备处至少部分地与多个节点设备中的其他节点设备并行地并且根据至少一个规则从数据值的流生成第一超级单元的多个数据单元,其中从由规则组成的组选择至少一个规则,所述由规则组成的组从由数据单元的最小数据大小、数据单元的最大数据大小、数据单元的最小的数据记录的数量、数据单元的最大的数据记录的数量以及数据字段的集合的规范组成的组选择;以及在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地索引第一超级单元的多个数据单元中的每个数据单元内的多个数据记录。
在参考以下说明书、权利要求和附图时,前述内容连同其他特征和实施例将变得更加显而易见。
附图说明
结合附图描述本公开:
图1图示了根据本技术的一些实施例的提供计算系统的硬件部件的图示的框图。
图2图示了根据本技术的一些实施例的示例网络,其包括通过交换系统并经由网络彼此通信的示例设备的集合。
图3图示了根据本技术的一些实施例的通信协议系统的概念模型的表示。
图4图示了根据本技术的一些实施例的包括多种控制和工作者节点的通信网格计算系统。
图5图示了根据本技术的一些实施例的示出用于在节点的故障之后调整通信网格或通信网格中的工作项目的示例过程的流程图。
图6图示了根据本技术的一些实施例的包括控制节点和工作者节点的通信网格计算系统的一部分。
图7图示了根据本技术的一些实施例的示出用于执行数据分析或处理项目的示例过程的流程图。
图8图示了根据本技术的实施例的包括事件流处理引擎(ESPE)的部件的框图。
图9图示了根据本技术的一些实施例的示出包括由事件流处理引擎执行的操作的示例过程的流程图。
图10图示了根据本技术的实施例的在发布设备和多个事件订阅设备之间对接的ESP系统。
图11图示了根据一些方面的示出生成和使用机器学习模型的示例过程的流程图。
图12图示了基于神经网络的示例机器学习模型。
图13A和13B各自图示了分布式处理系统的示例实施例。
图14A图示了在节点设备的网格的节点设备之中分发数据集的部分的示例实施例。
图14B图示了与节点设备的网格交换的数据文件内的图14A的数据集的数据和索引的组织的示例实施例。
图14C图示了由节点设备存储的数据集的一部分内的数据值的组织的示例实施例。
图15A图示了利用在节点设备的网格的节点设备之中分发的数据集来组装、索引、搜索和执行操作的示例。
图15B图示了使用多线程处理来执行图15A的操作的示例。
图16A图示了组装和索引节点设备内的数据集的一部分的示例。
图16B图示了组装和索引节点设备内的另一数据集的一部分的替代示例。
图17A、图17B和图17C一起图示了组装和索引节点设备内的图16A的数据集的一部分的示例。
图18图示了组装和索引节点设备内的数据集的一部分的替代示例。
图19A、图19B和图19C一起图示了组装和索引节点设备内的数据集的一部分的另一替代示例。
图20A、图20B、图20C、图20D、图20E和图20F一起图示了在节点设备内的图16A的数据集的一部分内进行搜索的示例。
图21图示了在节点设备内的图19A-C的数据集的一部分内进行搜索的替代示例。
图22图示了执行任务指令以利用节点设备内的数据集的一部分的所识别的数据记录来执行操作的示例。
图23A和图23B一起图示了生成和使用数据集索引以在数据集内搜索的逻辑流程的示例实施例。
图24A和图24B一起图示了将数据集的部分分配给节点设备并控制搜索的执行的逻辑流程的示例实施例。
图25A和图25B一起图示了在节点设备内生成数据集索引的一部分的逻辑流程的示例实施例。
图26A、图26B、图26C、图26D、图26E和图26F一起图示了执行搜索的搜索的逻辑流程的示例实施例。
具体实施方式
本文描述的各种实施例一般地涉及设备间协调以改进分布式索引,其中并行处理被用于访问数据集的数据。数据集的数据可以被划分为多个超级单元,并且每个超级单元内的数据可以进一步被划分为多个数据单元。在每个数据单元内,数据可以被组织成数据记录的集合,每个数据记录包括填充有数据值的数据字段的相同集合。对于每个超级单元,可以生成索引的集合,通过所述索引的集合可以更快速地访问超级单元内的数据,包括对应于超级单元的整体的超级单元索引和各自对应于超级单元内的数据单元中的一个的一个或多个单元索引。在每个单元索引内,对应的数据单元内的数据记录可以被发现存在于数据字段的所选择的子集内的数据值索引。对于每个所选数据字段,每个单元索引内的唯一值索引可以指示存在于对应的数据单元内的数据记录中的至少一个的数据字段内的数据值中的每个,并且一个或多个重复值索引可以识别被发现包含唯一值索引中识别的数据值中的任何数据值的重复的数据记录。另外,在每个单元索引内,并且对于所选数据字段中的每个,单元可以是发现存在的最高和最低数据值的指示。另外,在每个超级单元索引内,可以跨对应的超级单元内的一个或多个数据单元针对每个所选数据字段指示最高和最低数据值。
在被生成之后,超级单元索引和单元索引然后可以被用于提高效率,响应于包括指定一个或多个离散数据值和/或一个或多个指定的数据字段内的数据值的范围作为搜索标准的搜索指令的查询,可以以该效率来搜索跨数据集的整体的数据记录。更具体地,响应于这样的查询,可以分析指定的一个或多个数据字段的超级单元索引内的最高和最低数据值的指示,以识别可能具有满足搜索标准的数据记录的数据集的一个或多个候选超级单元。然后,对于每个候选超级单元,可以分析指定的一个或多个数据字段的单元索引内的最高和最低数据值的指示,以识别可能具有满足搜索标准的数据记录的一个或多个候选数据单元。在这样缩小到候选数据单元之后,然后可以在每个候选数据单元内执行对满足搜索标准的数据记录的搜索。
数据集的数据可以是多种类型的数据(例如,社会统计数据、商业运营数据、来自大规模实验的传感器的原始数据、财务数据、医学治疗分析数据、来自地质或气象仪器的数据、从因特网附接的设备收集的数据流等)中的任何一种。数据集的大小可以足够大,使得使用单个处理设备访问和/或处理数据集可能被认为是非常不切实际的。实际上,可能的是,数据集也随时间足够频繁地变化(例如,每小时、每天、每周等被更新),使得使用单个处理设备访问和/或处理数据集所需的时间的长度将产生在可以完成这样的操作之前将已经过时的结果。因此,可以认为非常希望使用能够支持单个设备或互连设备的组(有时被称为设备的“网格”)内的多个执行的线程的多个处理器核以分布式并且至少部分并行的方式访问和/或处理数据集,每个互连设备包括一个或多个处理器,每个处理器可以包括多个处理器核。
因此,数据集可以跨多个节点设备被分布,每个节点设备可以存储一个或多个完整的超级单元。在一些实施例中,由多个节点设备对数据集的这样的存储可以作为持久存储数据集以用于对多个节点设备的本地访问的部分,以使得数据集能够对于处理要在多个节点设备之中以分布式并行方式执行的操作保持易于可用。在其他实施例中,可以将数据集从在其处可以持久存储数据集的一个或多个数据设备临时提供给多个节点设备用于这样的处理。在又一些其他实施例中,数据集可以在一段时间内在多个节点设备内被建立,和/或根据在多个节点设备处从一个或多个数据设备接收的数据值在多个节点设备内反复地更新。
设想的是,数据集可以具有足够的大小,以便需要被划分成许多超级单元,并且进一步需要将每个超级单元划分为许多数据单元。另外,每个数据单元可以包含许多数据记录,在所述数据记录内可以组织数据值以占据许多数据字段。在其中将数据组织成二维阵列(例如,组织成行和列的阵列)的实施例中,数据记录中的每个可以被实现为分布在数据单元和超级单元之中的许多行中的行,并且数据字段中的每个可以对应于每行内存在的许多列中的列。为了提高可以以其在数据集内搜索和访问数据的效率,可以以如下方式在多个节点设备之中分配超级单元索引和单元索引,在所述方式中,每个超级单元索引可以与其对应的超级单元一起被存储在节点设备内并且每个单元索引可以与其对应的数据单元一起被存储。至少部分地为了避免其中任何一个超级单元索引可以在多于一个节点设备之中被分割以及以其他方式在多于一个节点设备之中共享的情况,可以强制要求不允许超级单元在两个或更多个节点设备之中被分割,使得每个超级单元的整体必须被存储在单个节点设备内。
作为将每个超级单元索引与其对应的超级单元以及将每个单元索引与其对应的数据单元保持在一起的部分,设备之间的数据集的超级单元的每次传递可以伴随有其对应的超级单元索引以及对应于超级单元内的数据单元的单元索引的传递。因此,在其中数据集被持久存储在一个或多个数据设备内并被暂时提供给多个节点设备的实施例中,每个节点设备可以接收一个或多个整个超级单元连同对应的一个或多个超级单元索引和对应于所接收的一个或多个超级单元内的数据单元中的每个的单元索引。替代地,在其中数据集可以被提供给多个节点设备而没有任何伴随的超级单元索引或单元索引的实施例中,包括其中多个节点设备根据随时间接收的数据值组装和/或更新数据集的实施例,多个节点设备可以生成对应的超级单元索引和单元索引。
尽管生成包括所有数据字段的索引也许是可能的,但是可以设想的是,数据字段的相对小的子集的数据值可以被用于包括用于在数据集内搜索的指令的查询中指定的搜索标准中。在一些实施例中,在这样的搜索标准中使用的数据字段的子集可以是公知的,并且可以由存储为规则数据的规则明确指定。在其他实施例中,这样的规则数据可以替代地或附加地指定规则和/或启发式算法,以基于先前查询的历史和/或其他因素来识别数据字段的子集。无论其中指定和/或识别数据字段的子集的方式如何,由多个节点设备生成单元索引和超级单元索引在范围方面可以被限于数据集的数据字段的这样的子集。
根据数据集生成索引可以以根据在单元索引对应数据单元的数据字段的子集内找到的数据值生成每个单元索引开始。可能认为期望跨多个执行的线程在每个节点设备内执行可能是多个单元索引的事物的生成,以导致在节点设备内以及在多个节点设备之中至少部分并行生成单元索引。更具体地,在每个节点设备内,每个单元索引的生成可以作为单独的进程来执行,其中这样的进程分布在多个执行的线程之中,达到由每个节点设备的(一个或多个)处理器的可用处理器核支持的程度。
在生成每个单元索引时,检索对应单元的数据记录内的数据字段的子集中的数据值。作为用于提高以其生成每个单元索引的效率的另一措施,可以在通过对应数据单元的数据记录的单个读取遍次中执行多个数据字段的数据值的这样的检索。对于要生成的每个单元索引,可以针对单个对应数据单元的数据记录内的数据字段的子集的每个数据字段生成单独的二叉树。当生成每个这样的二叉树时,可以根据一个或多个规则来对被识别为存在于数据字段的子集的对应数据字段内的各种数据值进行排序,所述一个或多个规则可以基于数据字段内的数据的类型来选择。此外,当生成每个这样的二叉树时,二叉树可以被用于识别被识别为存在于对应数据字段内的数据值中的任何数据值的任何重复。当识别数据字段内的数据值之中的重复时,可以生成将重复数据值的每个实例与其中存在重复数据值的数据记录的标识符相关的表和/或其他数据结构。
利用针对单个数据单元如此生成的数据字段的子集的每个数据字段的二叉树,可以在来自每个二叉树的对应单元索引内生成单独的唯一值的索引。在每个唯一值索引内,在其内识别每个唯一数据值的数据记录的标识符可以按照对应于在生成对应二叉树期间唯一数据值被排序成的次序的次序来排列。每个唯一值索引的生成可能需要对对应二叉树的有序遍历。每个唯一值索引还可以包括和/或伴随有唯一数据值的计数、在对应数据单元的数据记录的对应数据字段内识别的最高和最低唯一数据值的指示、和/或从唯一数据值生成的最高和最低散列值。
在一些实施例中,唯一值索引中的一个或多个可以包括和/或伴随有唯一数据值的向量或其他数据结构,其也按照对应于在生成对应二叉树期间唯一数据值被排序成的次序的次序来排列。替代地或附加地,唯一值索引中的一个或多个可以包括和/或伴随有从唯一数据值导出的有序散列值的向量或其他数据结构。在这样的实施例中的一些实施例中,对是否唯一值的向量和/或是否散列值的向量针对单元索引内的每个唯一值索引来生成的确定可以基于对应数据字段内的数据值的所识别的数据类型。作为数值和/或固定长度文本串的示例,唯一数据值的向量可以被生成。然而,可以生成可变数据大小和/或大数据大小的数据,诸如音频和/或视频流或可变长度的文本串、从数据值中的每个导出的散列值的向量。
在已经生成一个或多个表或其他数据结构以指示在一个或多个数据字段内识别的数据值的重复的情况下,可以使用这样的一个或多个表或其他数据结构来生成单元索引内的重复值的一个或多个索引。在一些实施例中,可以针对单个重复数据值单独生成每个重复值索引,并且可以指定其中存在数据值的每个重复的对应数据单元内的一个或多个数据记录。每个这样的重复值索引还可以包括对应数据单元的数据记录的对应数据字段内的数据值的重复的计数。
在针对超级单元的每个数据单元生成单元索引之后,超级单元的索引的生成可以以对应的超级单元索引的生成继续。与对于单元索引的生成一样,可能认为期望跨多个执行的线程在每个节点设备内执行可能是多个超级单元索引的事物的生成,以导致在节点设备内以及在多个节点设备之中至少部分并行生成超级单元索引。更具体地,在每个节点设备内,每个超级单元索引的生成可以作为单独的进程来执行,并且在多个执行的线程之中分布,达到由每个节点设备的(一个或多个)处理器的可用处理器核支持的程度。
可以生成每个超级单元索引以包括跨对应超级单元内的数据单元的数据字段的子集的每个数据字段内识别的最高和最低数据值的指示。另外,可以生成每个超级单元索引以包括从每个数据单元的唯一数据值生成的最高和最低散列值之中的最高最低散列值的指示。在针对超级单元索引内的数据字段生成最高和最低数据值的每个指示时,可以检索对应超级单元的数据单元中的一个的单元索引中的每个内的数据字段的最高和最低数据值,并且可以选择检索的数据值之中的最高和最低数据值。更具体地,可以使用超级单元的数据单元之中的数据字段的每个单元索引内指示的最高值和最低值来生成二叉树,并且然后可以从二叉树识别贯穿超级单元的数据记录内的数据字段的最高值和最低值。可以使用类似的方法来生成最高和最低散列值的每个指示。在已经针对每个数据单元生成单元索引的情况下,并且在已经针对节点设备内的每个超级单元生成超级单元索引的情况下,对存储在节点设备内的数据集的部分进行索引,使得在超级单元中的每个内搜索数据记录可以被更高效且快速地执行。
多个节点设备可以由结合到多个节点设备中的一个中的控制设备或控制器来控制。这样的控制设备或控制器可以控制数据集的超级单元可以以其在多个节点设备之中分布的方式。更具体地,在多个节点设备由一个或多个数据设备以数据集的整体提供数据集的情况下,控制设备或控制器可以确定要将数据集的哪些超级单元提供给节点设备中的每个。替代地,在要由多个节点设备根据由多个节点设备随时间从一个或多个数据设备收集的数据值生成数据集的情况下,控制设备或控制器可以确定要在每个节点设备内生成的每个超级单元的数量和/或大小。控制设备或控制器的这样的确定可以基于当前可用的处理、存储设备、网络和/或可以由节点设备中的每个反复地提供给控制设备或控制器的其他资源的指示。替代地或附加地,这样的确定可以基于用于在多个节点设备之中实现数据集的分布的规则和/或算法,其结合一定程度的冗余以避免由于在节点设备中的一个或多个内发生故障而导致的数据的丢失。
控制设备或控制器可以用作来自请求设备的查询的接收器,其中每个查询可以包括用于在数据集内针对满足指定搜索标准的(一个或多个)数据记录执行搜索的指令。在一些实施例中,控制设备或控制器可以简单地将查询中继到多个节点设备中的每个节点设备。替代地,控制设备或控制器可以基于超级单元的分布和多个节点设备之中的超级单元的冗余副本来选择多个节点设备的子集以中继查询,以至少减少使多于一个节点设备参与确定相同超级单元是否是候选超级单元的实例。无论控制设备或控制器是将查询中继到所有的多个节点设备还是仅中继到所选择的子集,接收查询的每个节点设备然后可以执行各种操作以识别可能具有一个或多个数据单元的任何候选超级单元,所述一个或多个数据单元可能具有一个或多个满足指定搜索标准的数据记录。然后,存储至少一个候选超级单元的每个节点设备可以执行操作以识别可能具有满足指定条件的一个或多个数据记录的每个任何候选超级单元内的任何候选数据单元。
在其他实施例中,可以是控制设备或控制器执行确定哪些超级单元是候选超级单元所需的操作,作为减少可以向其中继查询的节点设备的数量的部分。为了支持这一点,多个节点设备中的节点设备中的每个可以提供其生成和/或存储到控制设备或控制器的超级单元索引中的每个。在接收到查询时,控制设备或控制器然后可以使用由多个节点设备提供的超级单元索引的集合以识别一个或多个候选超级单元,每个候选超级单元可以包括一个或多个数据单元,每个数据单元可以包括满足搜索标准的一个或多个数据记录。然后,控制设备或控制器可以将查询中继到存储候选超级单元的多个节点设备的子集。然后,接收查询的每个节点设备可以执行操作以识别可能具有满足指定条件的一个或多个数据记录的任何候选超级单元内的任何候选数据单元。控制设备或控制器可以基于超级单元的分布和多个节点设备之中的超级单元的冗余副本来进一步减少多个节点设备的子集,以至少减少使多于一个节点设备参与确定相同候选超级单元是否是候选超级单元的实例。
无论是控制设备或控制器执行用于识别候选超级单元的操作,还是至少节点设备的子集执行这样的操作,识别候选超级单元可能需要将被指定为查询中的搜索标准的一个或多个离散的数据值和/或数据值的范围与每个超级单元索引中定义的数据值的(一个或多个)范围进行比较,其中每个超级单元索引中定义的数据值的范围(一个或多个)具有最高和最低数据值的指示。作为示例,如果查询的搜索标准指示要求特定数据值或特定数据值的范围内的数据值存在于满足搜索标准的任何数据记录的特定数据字段中,并且如果由查询如此指定的这样的数据值或数据值的范围完全落在由特定数据字段的超级单元索引中指示的最高和最低数据值定义的数据值的范围之外,那么对应的超级单元不能是候选超级单元。此外,在其中超级单元索引包括由特定数据字段的最高和最低散列值定义的散列值的范围的指示以及其中查询指定一个或多个离散数据值作为搜索标准的实施例中,可以根据每个这样的特定数据值生成散列值,并且可以将每个这样的散列值与超级单元索引中指示的散列值的范围进行比较,作为对应的超级单元是否可以是候选超级单元的附加测试。类似地,在存储一个或多个候选超级单元的每个节点设备内,识别每个候选超级单元内的候选数据单元可能需要将指定为查询中的搜索标准的数据值和/或数据值的范围与每个单元索引中定义的数据值的(一个或多个)范围进行类似的比较,其中每个单元索引中定义的数据值的(一个或多个)范围具有最高和最低数据值的指示。此外,候选数据单元的这样的识别可能附加地需要将根据指定为查询中的搜索标准的(一个或多个)特定数据值生成的(一个或多个)散列值与可以在每个单元索引中定义的散列值的(一个或多个)范围进行比较,其中可以在每个单元索引中定义的散列值的(一个或多个)范围具有最高和最低散列值的指示。
如前面描述的超级单元索引和单元索引的生成一样,可以认为期望执行操作以跨多个执行的线程识别候选超级单元和/或候选数据单元以导致操作的至少部分并行执行,以识别候选超级单元和/或候选数据单元。因此,在控制设备或控制器内执行候选超级单元的识别的情况下,可以在针对每个超级单元索引的单独处理中执行这样的操作,并且在由控制设备或控制器的(一个或多个)处理器的可用处理器核支持的多个线程之中分布这样的操作。替代地,在由多个节点设备的至少子集执行候选超级单元的识别的情况下,可以在针对每个超级单元索引的单独进程中执行这样的操作,并且在由对应的节点设备中的每个的(一个或多个)处理器的可用处理器核支持的多个线程之中分布这样的操作。类似地,在被识别为存储至少一个候选超级单元的节点设备中的每个内,可以在针对对应于候选超级单元的数据单元的每个单元索引的单独的进程中执行用于识别候选数据单元的操作,并且每个这样的单独进程可以被分布在由对应节点设备中的每个的(一个或多个)处理器的可用处理器核支持的多个线程之中。向其中继查询和其中尚未识别出候选数据单元的每个节点设备可以向控制设备或控制器传输尚未找到满足搜索标准的数据记录的指示,并且然后可以停止采取响应于接收查询的任何进一步动作。
在其中已经识别了至少一个候选数据单元的每个节点设备中,然后可以搜索每个这样的候选数据内的数据记录以识别满足搜索标准的一个或多个数据记录。在其中候选数据单元的单元索引内的数据字段的唯一值索引不包括或不伴随有唯一数据值或根据唯一数据值生成的散列值的向量或其他数据结构的实施例中,包括每个唯一数据值的数据记录的标识符和/或一个或多个重复值索引可以被用于引导搜索候选数据单元内的数据记录。然而,在其中候选数据单元的单元索引内的数据字段的唯一值索引确实包括或伴随有唯一数据值或从其生成的散列值的向量或其他数据结构的实施例中,这样的向量或者数据结构可以被用于确定候选数据单元中是否存在满足搜索标准的任何数据记录。如果确定在其中向量或其他数据结构是根据唯一数据值生成的散列值的实施例中存在至少一个这样的数据记录,则可以执行在数据记录之中的搜索以检索一个或多个满足搜索标准的数据记录。相反,如果确定在其中向量或其他数据结构具有唯一数据值的实施例中存在至少一个这样的数据记录,那么由于向量或其他数据结构内的唯一数据值中的每个已经通过唯一值索引与其存在于其中的数据记录相关联,因此可以避免执行这样的搜索的需要。
可以在执行与每个数据字段相关联的每个搜索时采用多种搜索算法中的任何一种。替代地或附加地,可以使用搜索算法的组合,其中初始搜索算法被用于识别满足特定数据字段的搜索标准的第一数据记录,并且然后不同的搜索算法可以被用于搜索满足特定数据字段的搜索标准的任何更多数据记录。在搜索标准涉及多于一个数据字段的情况下,对于每个候选数据单元,可以对唯一数据值的计数和每个数据值的重复进行分析,以针对搜索标准中涉及的数据字段中的每个确定候选数据单元内的数据记录之中的数据值的基数的相对度。然后,对于每个候选数据单元,可以基于相对基数进行要以其来搜索多于一个数据字段的次序的确定,作为搜索满足搜索标准的数据记录的部分。向其中继查询和至少一个候选数据单元中被识别但是其中没有找到满足搜索标准的数据记录的每个节点设备可以向控制设备或控制器传输尚未找到满足搜索标准的数据记录的指示,并且然后可以停止采取响应于接收查询的任何进一步动作。
在其中识别了满足搜索标准的至少一个数据记录的每个节点设备中,响应于已经识别了满足查询中指定的搜索标准的至少一个数据记录,可以采取多种动作中的任何一种,并且所采取的特定动作可以取决于查询中包括的进一步指令。作为示例,在查询包括对哪些数据记录满足搜索标准的指示的请求的情况下,其中找到这样的数据记录中的至少一个的每个节点设备可以将位域或其他数据结构传输到识别存储在节点设备内的满足搜索标准的一个或多个数据记录的控制设备或控制器。在查询包括对要从满足搜索标准的任何数据记录检索的一个或多个数据值的请求的情况下,其中找到这样的数据记录中的至少一个的每个节点设备可以将来自每个这样的数据记录的所请求的数据值传输到控制设备或控制器,或者可以将每个这样的数据记录的整体传输到控制设备或控制器。在查询包括用于利用从满足搜索标准的任何数据记录检索的数据值执行一个或多个处理操作的进一步指令的情况下,其中找到这样的数据记录中的至少一个的每个节点设备可以对这样的指定数据值执行指定的处理操作,并且可以将指定处理操作的结果的指示传输到控制设备或控制器。
如前面描述的用于识别候选超级单元和/或候选数据单元的操作的执行一样,可以认为期望执行每个候选数据单元内的数据记录的搜索,以及跨多个执行的线程利用从满足搜索标准的数据记录检索的数据值执行任何指定的处理操作。因此,在被识别为存储至少一个候选数据单元的节点设备中的每个内,用于搜索候选数据单元内的数据记录的操作可以在每个候选数据单元的单独进程中执行,并且每个这样的单独进程可以被分布在由对应节点设备中的每个的(一个或多个)处理器的可用处理器核支持的多个线程之中。此外,在被识别为存储其中识别了满足搜索标准的至少一个数据记录的至少一个候选数据单元的节点设备中的每个内,在接收到的要利用来自这样的数据记录的数据值执行的查询中指定的任何处理操作可以在每个这样的候选数据单元的单独进程中被执行,并且每个这样的单独进程还可以被分布在由对应节点设备中的每个的(一个或多个)处理器的可用处理器核所支持的多个线程之中。
应当注意,尽管在本文中相当详细地明确讨论了二叉树的使用,用于区分唯一值和重复值、识别最高值和最低值以及对值进行排序,但是在执行这些操作中的一个或多个时,可以采用其他方法,代替使用二叉树或者与二叉树结合。作为示例,跳过列表可以被用于执行这些功能中的一个或多个。此外,尽管在本文中相当详细地明确讨论了二进制搜索技术的使用,以执行数据单元的搜索,以识别满足搜索标准的数据记录,但是在执行这样的搜素时可以采用其他方法,代替二进制搜索技术或者与二进制搜索技术结合。作为示例,跳过列表可以与二进制搜索技术结合使用。
一般参考本文中使用的符号和术语,跟随的详细描述的部分可以根据由机器的处理器或多个联网机器的处理器执行的程序进程来呈现。由本领域技术人员使用这些程序描述和表示来最有效地将他们的工作的实质传达给本领域其他技术人员。进程在此并且通常被认为是导致期望结果的自洽的操作的序列。这些操作是需要对物理量的物理操纵的操作。通常,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和以其他方式操纵的电、磁或光通信的形式。有时,主要出于通用的原因,将所传送的事物称为位、值、元素、符号、字符、术语、数字或诸如此类,这证明是方便的。然而,应该注意,所有的这些和类似术语都与适当的物理量相关联,并且仅仅是应用于那些量的方便标签。
此外,这些操纵通常以诸如相加或比较的术语来指代,其通常与由人类操作员执行的心理操作相关联。然而,在本文中描述的形成一个或多个实施例的部分的操作中的任何操作中,在大多数情况下,人类操作员的这样的能力不是必需的或者期望的。而是,这些操作是机器操作。用于执行各种实施例的操作的有用机器包括由根据本文的教导写的存储在其中的例程选择性地激活或配置的机器,和/或包括为所需目的而专门构建的装置。各种实施例还涉及用于执行这些操作的装置或系统。这些装置可以为所需目的而专门构造,或者可以包括通用计算机。多种这些机器所需的结构将从给出的描述显现。
现在参考附图,其中相同的参考标号贯穿始终被用于指代相同的元素。在以下描述中,出于解释的目的,阐述了多个具体细节以便提供对其的透彻理解。然而,可以显而易见的是,可以在没有这些具体细节的情况下实施新颖的实施例。在其他情况下,以框图的形式示出公知的结构和设备,以便促进其描述。意图是要涵盖权利要求的范围内的所有修改、等同物和替代物。
可以以各种配置提供在附图中的一些中描绘的系统。在一些实施例中,系统可以被配置为分布式系统,其中系统的一个或多个部件跨云计算系统和/或雾计算系统中的一个或多个网络来分布。
图1是根据本技术的实施例的提供数据传输网络100的硬件部件的图示的框图。数据传输网络100是可以被用于处理其中需要大量的计算机处理周期的大量的数据的专用计算机系统。
数据传输网络100还可以包括计算环境114。计算环境114可以是处理在数据传输网络100内接收的数据的专用计算机或其他机器。数据传输网络100还包括一个或多个网络设备102。网络设备102可以包括尝试与计算环境114通信的客户端设备。例如,除了其他原因之外,网络设备102还可以向计算环境114发送数据以进行处理,可以向计算环境114发送信号以控制计算环境的不同方面或其正在处理的数据。网络设备102可以通过多个方式(诸如例如通过一个或多个网络108)与计算环境114交互。如图1中所示,计算环境114可以包括一个或多个其他系统。例如,计算环境114可以包括数据库系统118和/或通信网格120。
在其他实施例中,网络设备可以经由网络108向计算环境114一次全部或在一段时间内流式传输(例如,使用参考图8-10进一步描述的事件流处理(ESP))提供大量的数据。例如,网络设备102可以包括网络计算机、传感器、数据库或可以向计算环境114传输或以其他方式提供数据的其他设备。例如,网络设备可以包括局域网设备,诸如路由器、集线器、交换机或其他计算机联网设备。这些设备可以提供多种存储的或生成的数据,诸如网络数据或特定于网络设备本身的数据。网络设备还可以包括监视它们的环境的传感器或用于收集关于该环境或那些设备的数据的其他设备,并且这样的网络设备可以提供它们随时间收集的数据。网络设备还可以包括物联网内的设备,诸如家庭自动化网络内的设备。这些设备中的一些可以被称为边缘设备,并且可以涉及边缘计算电路系统。数据可以由网络设备直接传输到计算环境114或者传输到网络附加数据存储设备(诸如网络附加数据存储设备110)用于存储,使得之后可以由计算环境114或数据传输网络100的其他部分检索数据。
数据传输网络100还可以包括一个或多个网络附加数据存储设备110。网络附加数据存储设备110被用于将要由计算环境114处理的数据以及由计算系统生成的任何中间或最终数据存储在非易失性存储器中。然而,在某些实施例中,计算环境114的配置允许执行其操作,使得中间和最终数据结果可以仅被存储在易失性存储器(例如,RAM)中,而不需要将中间或最终数据结果存储到非易失性类型的存储器(例如,磁盘)。这在某些情况下(诸如当计算环境114从用户接收临时(ad hoc)查询时以及当需要即时(on-the-fly)生成通过处理大量的数据而生成的响应时)可能是有用的。在该非限制性情况下,计算环境114可以被配置成将处理的信息保留在存储器内,使得可以以不同的细节的级别为用户生成响应,以及允许用户交互地查询该信息。
网络附加数据存储设备可以存储以多种不同方式组织的和来自多种不同源的多种不同类型的数据。例如,网络附加数据存储设备可以包括位于计算环境114内的除了主存储设备之外的存储设备,该存储设备可由位于其中的处理器直接访问。除了其他类型之外,网络附加数据存储设备还可以包括二级、三级或辅助存储设备,诸如大型硬盘驱动器、服务器、虚拟存储器。存储设备可以包括便携式或非便携式存储设备、光学存储设备、以及能够存储包含数据的各种其他介质。机器可读存储介质或计算机可读存储介质可以包括非暂时性介质,其中可以存储数据,并且不包括载波和/或瞬时电子信号。非暂时性介质的示例可以包括例如磁盘或磁带、诸如压缩盘或数字通用盘的光学存储介质、闪存、存储器或存储器设备。计算机程序产品可以包括代码和/或机器可执行指令,所述代码和/或机器可执行指令可以表示进程、函数、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容被耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段被传递、转发或传输,除了其他之外,所述手段还包括存储器共享、消息传递、令牌传递、网络传输。此外,数据存储设备可以保存多种不同类型的数据。例如,网络附加数据存储设备110可以保存非结构化(例如,原始)数据,诸如制造数据(例如,包含识别正在用每个产品的参数数据(诸如颜色和型号)制造的产品的记录的数据库)或产品销售数据库(例如,包含识别各个产品销售的细节的各个数据记录的数据库)。
非结构化数据可以以不同的形式(诸如平面文件或数据记录的集合体)被呈现给计算环境114,并且可以具有数据值和伴随的时间戳。计算环境114可以被用于以多种方式来分析非结构化数据,以确定用于(例如,分层地)结构化该数据的最佳方式,使得结构化数据适于用户希望对数据执行的进一步分析的类型。例如,在被处理之后,非结构化时间戳数据可以按时间被聚合(例如,聚合成每日时间段单元)以生成时间序列数据和/或根据一个或多个维度(例如,参数、属性和/或变量)分层结构化。例如,数据可以被存储在分层数据结构(诸如ROLAP或MOLAP数据库)中,或者可以以另一种表格形式(诸如以平面分层形式)被存储。
数据传输网络100还可以包括一个或多个服务器群106。计算环境114可以将选择通信或数据路由到的一个或多个服务器群106或服务器群内的一个或多个服务器。服务器群106可以被配置成以预定方式提供信息。例如,服务器群106可以响应于通信来访问要传输的数据。服务器群106可以与数据传输网络100内的每个其他设备(诸如计算环境114)分离地被容纳,和/或可以是设备或系统的部分。
服务器群106可以托管多种不同类型的数据处理作为数据传输网络100的部分。服务器群106可以从网络设备、从计算环境114、从云网络116或从其他源接收多种不同的数据。数据可以已经作为来自控制数据库的输入从一个或多个传感器被获得或收集,或者可以已经作为来自外部系统或设备的输入被接收。服务器群106可以通过基于由服务器群实现的一个或多个规则将原始数据转换为处理的数据来帮助处理数据。例如,可以分析传感器数据以确定随时间的环境中的变化或实时的环境中的变化。
数据传输网络100还可以包括一个或多个云网络116。云网络116可以包括提供云服务的云基础设施系统。在某些实施例中,由云网络116提供的服务可以包括按需使得对云基础设施系统的用户可用的大量的服务。云网络116在图1中被示出为被连接到计算环境114(并因此具有计算环境114作为其客户端或用户),但是云网络116可以被连接到图1中的设备中的任何设备或由图1中的设备中的任何设备使用。由云网络提供的服务可以动态扩展,以满足其用户的需求。云网络116可以包括一个或多个计算机、服务器和/或系统。在一些实施例中,组成云网络116的计算机、服务器和/或系统与用户自身的内部(on-premise)计算机、服务器和/或系统不同。例如,云网络116可以托管应用,并且用户可以经由诸如因特网的通信网络按需订购和使用该应用。
虽然图1中的每个设备、服务器和系统被示出为单个设备,但是将理解,可以代之以使用多个设备。例如,网络设备的集合可以被用于从单个用户传输各种通信,或者远程服务器140可以包括服务器堆栈。作为另一示例,数据可以被将处理,作为计算环境114的部分。
数据传输网络100内的每个通信(例如,在客户端设备之间、在服务器106与计算环境114之间或在服务器与设备之间)可以通过一个或多个网络108发生。网络108可以包括多种不同类型的网络中的一个或多个,包括无线网络、有线网络或有线和无线网络的组合。合适的网络的示例包括因特网、个域网、局域网(LAN)、广域网(WAN)或无线局域网(WLAN)。无线网络可以包括无线接口或无线接口的组合。作为示例,一个或多个网络108中的网络可以包括短程通信信道,诸如BLUETOOTH®通信信道或BLUETOOTH®低能量通信信道。有线网络可以包括有线接口。可以使用路由器、接入点、桥、网关或诸如此类来实现有线和/或无线网络,以连接网络114中的设备,如将参考图2进一步描述的那样。一个或多个网络108可以被完全结合在内联网、外联网或其组合内,或可以包括内联网、外联网或其组合。在一个实施例中,两个或更多个系统和/或设备之间的通信可以通过安全通信协议来实现,所述安全通信协议诸如安全套接字层(SSL)或传输层安全性(TLS)。此外,可以加密数据和/或交易细节。
一些方面可以利用物联网(IoT),其中物品(例如,机器、设备、电话、传感器)可以被连接到网络,并且来自这些物品的数据可以在物品内和/或物品的外部被收集和处理。例如,IoT可以在许多不同的设备中包括传感器,并且可以应用高价值分析来识别隐藏的关系并产生(drive)提高的效率。这可以适用于大数据分析和实时(例如,ESP)分析二者。这将在下面参考图2进一步被描述。
如所指出的那样,计算环境114可以包括通信网格120和传输网络数据库系统118。通信网格120可以是用于处理大量的数据的基于网格的计算系统。传输网络数据库系统118可以被用于管理、存储和检索大量的数据,所述数据被分发到和存储在一个或多个网络附加数据存储设备110或驻留在传输网络数据库系统118内的不同位置处的其他数据存储中。基于网格的计算系统120和传输网络数据库系统118中的计算节点可以共享相同的处理器硬件,诸如位于计算环境114内的处理器。
图2图示了根据本技术的实施例的示例网络,所述示例网络包括通过交换系统并经由网络彼此通信的示例设备的集合。如所指出的那样,数据传输网络100内的每个通信可以通过一个或多个网络发生。系统200包括网络设备204,所述网络设备204被配置成通过多种类型的通信信道与多种类型的客户端设备(例如客户端设备230)通信。
如图2中所示,网络设备204可以通过网络(例如,经由基站210的蜂窝网络)传输通信。通信可以经由基站210被路由到另一网络设备,诸如网络设备205-209。通信还可以经由基站210被路由到计算环境214。例如,网络设备204可以从其周围环境或从其他网络设备(诸如网络设备205-209)收集数据并将该数据传输到计算环境214。
尽管网络设备204-209在图2中分别被示出为移动电话、膝上型计算机、平板计算机、温度传感器、运动传感器和音频传感器,但是网络设备可以是对检测它们的环境的方面敏感的传感器或包括对检测它们的环境的方面敏感的传感器。例如,除了其他之外,网络设备还可以包括传感器,诸如水传感器、功率传感器、电流传感器、化学传感器、光学传感器、压力传感器、地理或位置传感器(例如,GPS)、速度传感器、加速度传感器、流速传感器。除了其他之外,可以被感测的特性的示例还包括力、扭矩、载荷、应变、位置、温度、气压、流体流动、化学性质、电阻、电磁场、辐射、辐照度、接近度、声学、湿度、距离、速度、振动、加速度、电位、电流。传感器可以被安装到用作多种不同类型的系统(例如,石油钻井操作)的部分的各种部件。网络设备可以检测并记录与其监视的环境有关的数据,并将该数据传输到计算环境214。
如所指出的那样,根据某些实施例,可以包括收集要处理和/或传输到计算环境的数据的各种传感器的一种类型的系统包括石油钻井系统。例如,一个或多个钻井操作传感器可以包括表面传感器,所述表面传感器测量钩载荷、流体速率、井筒的里面和外面的温度和密度、立管压力、表面扭矩、钻杆的转速、穿透的速率、机械比能等;以及井下传感器,所述井下传感器测量钻头的转速、流体密度、井下扭矩、井下振动(轴向、切向、横向)、施加在钻头处的重量、环形压力、压差、方位角、倾角、井眼曲率(dog leg severity)、测量深度、垂直深度、井下温度等。除了由传感器直接收集的原始数据外,其他数据可以包括由传感器开发的参数或由客户端或其他控制设备分配给系统的参数。例如,一个或多个钻井操作控制参数可以控制诸如泥浆马达速度与流量比、钻头直径、预测地层顶部、地震数据、天气数据等的设置。可以使用诸如地球模型、天气模型、地震模型、井底组件模型、井平面模型、环形摩擦模型等物理模型来生成其他数据。除了传感器和控制设置之外,还可以将例如穿透的速率、机械比能、钩载荷、流入流体速率、流出流体速率、泵压力、表面扭矩、钻杆的转速、环形压力、环形摩擦压力、环形温度、等效循环密度等的预测输出存储在数据仓库中。
在另一个示例中,根据某些实施例,可以包括收集要处理和/或传输到计算环境的数据的各种传感器的另一种类型的系统包括家庭自动化或在不同环境中(诸如办公空间、学校、公共空间、体育场馆或多种其他场所)的类似自动化网络。这样的自动化网络中的网络设备可以包括允许用户访问、控制和/或配置位于用户的家中的各种家用电器(例如,电视、收音机、灯、风扇、加湿器、传感器、微波炉、熨斗以及/或者诸如此类)或位于用户的家的外面的各种家用电器(例如,外部运动传感器、外部照明、车库门开启器、喷洒器系统或者诸如此类)的网络设备。例如,网络设备102可以包括可以与家用电器耦合的家庭自动化开关。在另一个实施例中,网络设备可以允许用户访问、控制和/或配置设备,诸如办公室相关设备(例如,复印机、打印机或传真机)、音频和/或视频相关设备(例如,接收器、扬声器、投影仪、DVD播放器或电视)、媒体回放设备(例如,压缩盘播放器、CD播放器或者诸如此类)、计算设备(例如,家用计算机、膝上型计算机、平板计算机、个人数字助理(PDA)、计算设备或可穿戴设备)、照明设备(例如,灯或嵌入式照明)、与安全系统相关联的设备、与报警系统相关联的设备、可以在汽车中操作的设备(例如,无线电设备、导航设备)以及/或者诸如此类。可以以原始形式从这样的各种传感器收集数据,或者可以由传感器处理数据以创建参数或其他数据,所述参数或其他数据由传感器基于原始数据来开发或由客户端或其他控制设备分配给系统。
在另一示例中,根据某些实施例,可以包括收集要处理和/或传输到计算环境的数据的各种传感器的另一种类型的系统包括电力或能量网格。多种不同的网络设备可以被包括在能量网格中,除了其他之外,还诸如一个或多个发电厂、能量场(例如,除了其他之外,风电场、太阳能场)能量存储设施、工厂、消费者的家庭和企业内的各种设备。这样的设备中的一个或多个可以包括一个或多个传感器,所述一个或多个传感器检测能量增益或损耗、电输入或输出或损耗、以及多种其他效率。这些传感器可以收集数据以通知用户能量网格和网格内的各个设备可以如何运行以及可以如何使它们更高效。
网络设备传感器还可以在将数据传输到计算环境114之前或者在决定是否要将数据传输到计算环境114之前对其收集的数据执行处理。例如,网络设备可以例如通过比较根据数据计算的数据或值并将该数据与一个或多个阈值比较来确定收集的数据是否满足某些规则。网络设备可以使用该数据和/或比较来确定是否应该将数据传输到计算环境214以用于进一步使用或处理。
计算环境214可以包括机器220和240。尽管计算环境214在图2中被示出为具有两个机器220和240,但是计算环境214可以仅具有一个机器或者可以具有多于两个机器。组成计算环境214的机器可以包括专用计算机、服务器或被配置成单独和/或共同处理大量的数据的其他机器。计算环境214还可以包括存储设备,该存储设备包括结构化数据(诸如以一个或多个分层组织的数据)或非结构化数据的一个或多个数据库。数据库可以与计算环境214内的处理设备通信以将数据分发给它们。由于网络设备可以将数据传输到计算环境214,因此该数据可以由计算环境214接收并且随后存储在那些存储设备内。由计算环境214使用的数据还可以被存储在数据存储设备235中,所述数据存储设备235也可以是计算环境214的一部分或被连接到计算环境214。
计算环境214可以经由一个或多个路由器225或其他网络间或网络内连接部件与各种设备通信。例如,计算环境214可以经由一个或多个路由器225与设备230通信。计算环境214可以收集、分析和/或存储来自或关于通信的数据、客户端设备操作、客户端规则和/或存储在一个或多个数据存储设备235处的用户相关联的动作。除了其他之外,这样的数据还可以影响到计算环境214内的设备的通信路由、如何在计算环境214内存储或处理数据。
值得注意的是,各种其他设备可以进一步被用于影响在计算环境214内的设备之间以及在计算环境214内的设备与计算环境214的外部的设备之间的通信路由和/或处理。例如,如图2中所示,计算环境214可以包括web服务器240。因此,计算环境214可以检索感兴趣的数据,诸如客户端信息(例如,产品信息、客户端规则等)、技术产品细节、新闻、当前或预测的天气等。
除了计算环境214收集要处理的数据(例如,如从诸如传感器的网络设备以及客户端设备或其他源接收)作为大数据分析项目的部分之外,它还可以实时接收数据作为流式传输分析环境的部分。如所指出的那样,可以使用如经由不同种类的网络或本地传送的多种源来收集数据。可以基于实时流式传输来接收这样的数据。例如,当传感器连续感测、监视和跟踪它们的环境中的变化时,网络设备可以周期性地从网络设备传感器接收数据。计算环境214内的设备还可以对其接收的数据执行预分析,以确定接收的数据是否应当作为正在进行的项目的部分被处理。无论接收的源或方法或时间如何,由计算环境214接收和收集的数据都可以在一段时间内被处理,以便客户端基于客户端的需要和规则来确定结果数据。
图3图示了根据本技术的实施例的通信协议系统的概念模型的表示。更具体地,图3标识了对应于各种连接部件的开放系统交互模型中的计算环境的操作。模型300示出了例如诸如计算环境314(或图2中的计算环境214)的计算环境可以如何与其网络中的其他设备通信,以及控制如何执行以及在什么条件下执行计算环境与其他设备之间的通信。
模型可以包括层301-307。所述层以堆栈来排列。堆栈中的每个层都服务于比其高一层的层(除了应用层之外,应用层是最高层),并且由其下面一层的层服务(除了物理层之外,物理层是最低层)。物理层是最低层,因为其接收和传输原始的数据的位,并且是通信系统中离用户最远的层。另一方面,应用层是最高层,因为其直接与软件应用交互。
如所指出的那样,模型包括物理层301。物理层301表示物理通信,并且可以定义该物理通信的参数。例如,这样的物理通信可以以电、光或电磁信号的形式出现。物理层301还定义了可以控制数据传输网络内的通信的协议。
链路层302定义用于跨网络传输(即,移动)数据的链路和机制。链路层302管理诸如在网格计算环境内的节点到节点通信。链路层302可以检测并纠正错误(例如,物理层301中的传输错误)。链路层302还可以包括媒体访问控制(MAC)层和逻辑链路控制(LLC)层。
网络层303定义用于在网络内路由的协议。换言之,网络层协调跨相同网络(例如,诸如网格计算环境)中的节点传输数据。网络层303还可以定义用于在网络内构建本地寻址的过程。
传输层304可以管理数据的传输以及该数据的传输和/或接收的质量。传输层304可以提供用于传输数据的协议,诸如例如传输控制协议(TCP)。传输层304可以组装和分解数据帧用于传输。传输层还可以检测在其下面的层中发生的传输错误。
会话层305可以建立、维护和管理网络上的设备之间的通信连接。换言之,会话层控制网络上的网络设备之间的对话或通信的性质。会话层还可以建立检查点、中止(adjournment)、终止和重启过程。
表示层306可以为应用和网络层之间的通信提供转换。换言之,该层可以基于已知被应用层或网络层接受的数据类型和/或编码来加密、解密和/或格式化数据。
应用层307直接与软件应用和最终用户交互,并管理它们之间的通信。应用层307可以使用应用来标识目的地、本地资源状态或可用性和/或通信内容或格式化。
网络内连接部件321和322被示出为分别在较低层(诸如物理层301和链路层302)中操作。例如,集线器可以在物理层中操作,交换机可以在链路层中操作,并且路由器可以在网络层中操作。网络间连接部件323和328被示出为在较高层(诸如层303-307)上操作。例如,路由器可以在网络层中操作,并且网络设备可以在传输层、会话层、表示层和应用层中操作。
如所指出的那样,在各种实施例中,计算环境314可以与各种层中的一个、多个、所有或任何层交互和/或在其上操作。例如,计算环境314可以与集线器(例如,经由链路层)交互,以便调整集线器与哪些设备通信。物理层可以由链路层服务,因此物理层可以从链路层实现这样的数据。例如,计算环境314可以控制其将从哪些设备接收数据。例如,如果计算环境314知道某个网络设备已经关闭、损坏或以其他方式变得不可用或不可靠,则计算环境314可以指示集线器阻止任何数据从该网络设备被传输到计算环境314。这样的过程可能有益于避免接收不准确或已经受到不受控制的环境影响的数据。作为另一示例,计算环境314可以与桥、交换机、路由器或网关通信,并且影响部件将系统(例如,系统200)内的哪个设备选择作为目的地。在一些实施例中,计算环境314可以通过经过路由或修改现有通信与在特定层上操作的设备交换通信来与各种层交互。在另一个实施例中,诸如在网格计算环境中,节点可以基于由模型内的其他层提供的某些参数或信息来确定应该如何路由环境内的数据(例如,哪个节点应该接收某些数据)。
如所指出的那样,计算环境314可以是通信网格环境的一部分,其通信可以如图3的协议中所示来实现。例如,参考回到图2,机器220和240中的一个或多个可以是通信网格计算环境的部分。网格化计算环境可以在具有非交互式工作负载的分布式系统中使用,其中数据驻留在机器或计算节点上的存储器中。在这样的环境中,分析代码而不是数据库管理系统控制由节点执行的处理。通过将数据预分发到网格节点来使数据共位(co-locate),并且每个节点上的分析代码将本地数据加载到存储器中。每个节点可以被分配特定任务,诸如处理项目的一部分,或者被指派以组织或控制网格内的其他节点。
图4图示了根据本技术的实施例的包括多种控制和工作者节点的通信网格计算系统400。通信网格计算系统400包括三个控制节点和一个或多个工作者节点。通信网格计算系统400包括控制节点402、404和406。控制节点经由通信路径451、453和455被通信地连接。因此,控制节点可以向彼此传输信息(例如,与通信网格或通知相关的信息)和从彼此接收信息。尽管通信网格计算系统400在图4中被示出为包括三个控制节点,但是通信网格可以包括多于或少于三个控制节点。
通信网格计算系统(或仅“通信网格”)400还包括一个或多个工作者节点。图4中示出的是六个工作者节点410-420。尽管图4示出了六个工作者节点,但是根据本技术的实施例的通信网格可以包括多于或少于六个工作者节点。除了其他之外,通信网格中包括的工作者节点的数量还可以取决于由通信网格正在处理的项目或数据集多大、每个工作者节点的容量、为通信网格指定的用于完成项目的时间。通信网格400内的每个工作者节点可以被(有线或无线地,并且直接地或间接地)连接到控制节点402-406。因此,每个工作者节点可以从控制节点接收信息(例如,用于对项目执行工作的指令),并且可以向控制节点传输信息(例如,来自对项目执行的工作的结果)。此外,工作者节点可以(直接或间接地)彼此通信。例如,工作者节点可以在彼此之间传输数据,所述数据与正在执行的作业或者由该工作者节点正在执行的作业内的单独任务有关。然而,在某些实施例中,工作者节点可以例如不被(通信地或以其他方式)连接到某些其他工作者节点。在实施例中,工作者节点可能仅能够与控制其的控制节点通信,并且可能无法与通信网格中的其他工作者节点通信,无论它们是由控制该工作者节点的控制节点控制的其他工作者节点,还是由通信网格中的其他控制节点控制的工作者节点。
控制节点可以与外部设备连接,所述控制节点可以与所述外部设备通信(例如,网格用户,诸如服务器或计算机,可以连接到网格的控制器)。例如,服务器或计算机可以连接到控制节点,并且可以将项目或作业传输到节点。项目可以包括数据集。数据集可以具有任何大小。一旦控制节点接收到包括大数据集的这样的项目,控制节点就可以分发与要由工作者节点执行的数据集相关的数据集或项目。替代地,对于包括大数据集的项目,可以由除控制节点之外的机器(例如,采用HADOOP®分布式文件系统或HDFS的HADOOP®标准兼容数据节点)接收或存储数据集。
除了其他职责之外,控制节点还可以维护网格中的节点的状态的知识(即,网格状态信息)、接受来自客户端的工作请求、跨工作者节点细分工作、协调工作者节点。工作者节点可以接受来自控制节点的工作请求,并向控制节点提供由工作者节点执行的工作的结果。网格可以从单个节点(例如,机器、计算机、服务器等)开始。该第一节点可以被分配成主控制节点或者可以作为主控制节点开始,所述主控制节点将控制进入网格的任何附加节点。
当提交项目用于执行(例如,通过网格的客户端或控制器)时,可以将所述项目分配给节点的集合。在将节点分配给项目之后,可以创建数据结构(即,通信器)。可以由项目使用通信器来在每个节点上运行的项目代码之间共享信息。可以在每个节点上创建通信句柄(handle)。例如,句柄是对在单个节点上的单个进程内是有效的通信器的引用,并且当请求节点之间的通信时可以使用句柄。
可以将控制节点(诸如控制节点402)指定为主控制节点。服务器、计算机或其他外部设备可以连接到主控制节点。一旦控制节点接收到项目,主控制节点就可以将项目的部分分发给其工作者节点以供执行。例如,当在通信网格400上启动项目时,主控制节点402控制要为项目执行的工作,以便按照请求或指示完成项目。主控制节点可以基于各种因素将工作分发给工作者节点,所述因素诸如项目的哪些子集或部分可以被最有效并且在适当的时间的量内完成。例如,工作者节点可以对已经在工作者节点本地(例如,存储在工作者节点上)的数据的一部分执行分析。主控制节点还在每个工作者节点执行并完成其作业之后协调和处理由每个工作者节点执行的工作的结果。例如,主控制节点可以从一个或多个工作者节点接收结果,并且控制节点可以组织(例如,收集和组装)所接收的结果并编译它们以产生从最终用户接收的项目的完整结果。
可以将任何剩余的控制节点(诸如控制节点404和406)分配为项目的备份控制节点。在实施例中,备份控制节点可以不控制项目的任何部分。代之以,备份控制节点可以用作主控制节点的备份,并且如果主控制节点将出故障,则备份控制节点作为主控制节点接管。如果通信网格将仅包括单个控制节点,并且控制节点将出故障(例如,控制节点被关闭或中断),那么通信网格作为整体可能出故障,并且正在通信网格上运行的任何项目或作业都可能出故障并且可能无法完成。虽然项目可能被再次运行,但是这样的故障可能导致项目的完成中的延迟(在一些情况下严重延迟,例如隔夜延迟)。因此,具有多个控制节点(包括备份控制节点)的网格可能是有益的。
例如,为了将另一节点或机器添加到网格,主控制节点可以打开一对监听套接字。套接字可以被用于接受来自客户端的工作请求,并且第二套接字可以被用于接受来自其他网格节点的连接。可以向主控制节点提供将参与网格中的其他节点(例如,其他机器、计算机、服务器)的列表,以及每个节点将在网格中填充的角色。在启动主控制节点(例如,网格上的第一节点)时,主控制节点可以使用网络协议来在网格中的每个其他节点上启动服务器进程。例如,除了其他之外,命令行参数还可以向每个节点通知一条或多条信息,诸如:节点将在网格中具有的角色、主控制节点的主机名、主控制节点正在其上接受来自对等节点的连接的端口号。除了其他之外,信息还可以在配置文件中提供、通过安全外壳隧道传输、从配置服务器恢复。虽然网格中的其他机器最初可能不知道关于网格的配置,但是该信息也可以由主控制节点发送到每个其他节点。随后还可以将网格信息的更新发送到那些节点。
对于添加到网格的除了主控制节点之外的任何控制节点,控制节点可以打开三个套接字。第一套接字可以接受来自客户端的工作请求,第二套接字可以接受来自其他网格成员的连接,并且第三套接字可以连接(例如,永久地)到主控制节点。当控制节点(例如,主控制节点)接收来自另一个控制节点的连接时,所述控制节点首先检查以查看对等节点是否在网格中的配置节点的列表中。如果所述对等节点不在列表上,则控制节点可以清除连接。如果所述对等节点在列表上,则控制节点然后可以尝试认证连接。如果认证是成功的,则除了其他信息之外,认证的节点还可以向其对等体传输信息,诸如节点正在针对连接监听的端口号、节点的主机名、关于如何认证节点的信息。当节点(诸如新的控制节点)接收到关于另一个活跃节点的信息时,所述节点将检查以查看其是否已经具有到该另一个节点的连接。如果所述节点不具有到该节点的连接,则其然后可以建立到该控制节点的连接。
添加到网格的任何工作者节点可以建立到网格上的主控制节点和任何其他控制节点的连接。在建立连接之后,所述工作者节点可以向网格(例如,任何控制节点(包括主控制节点和备份控制节点二者)、或控制网格的服务器或用户)认证自己。在成功认证之后,工作者节点可以接受来自控制节点的配置信息。
当节点加入通信网格时(例如,当节点被通电或连接到网格上的现有节点或二者时),节点被分配(例如,由网格的操作系统)通用唯一标识符(UUID)。该唯一标识符可以帮助其他节点和外部实体(设备、用户等)以识别节点并区分所述节点与其他节点。当节点被连接到网格时,节点可以与网格中的其他节点共享其唯一标识符。由于每个节点可以共享其唯一标识符,因此每个节点可以知道网格上的每个其他节点的唯一标识符。唯一标识符还可以指定网格内的节点(例如,备份控制节点)中的每个的分层。例如,备份控制节点中的每个的唯一标识符可以被存储在备份控制节点的列表中,以指示备份控制节点将以其来接管出故障的主控制节点以成为新的主控制节点的次序。然而,还可以使用除了使用节点的唯一标识符之外的方法来确定节点的分层。例如,分层可以是预定的,或者可以基于其他预定因素来分配。
网格可以在任何时间添加新机器(例如,从任何控制节点发起)。在将新节点添加到网格时,控制节点可以首先将新节点添加到其网格节点的表中。然后,控制节点还可以关于新节点来通知每个其他控制节点。接收通知的节点可以确认它们已经更新了它们的配置信息。
主控制节点402可以例如将一个或多个通信传输到备份控制节点404和406(以及例如传输到通信网格内的其他控制节点或工作者节点)。除了其他协议之外,这样的通信还可以以固定的时间间隔周期性地在项目的执行的已知固定阶段之间发送。由主控制节点402传输的通信可以具有各种类型,并且可以包括多种类型的信息。例如,主控制节点402可以传输通信网格的快照(例如,状态信息),使得备份控制节点404总是具有通信网格的最近快照。快照或网格状态可以包括例如网格的结构(包括例如网格中的工作者节点、节点的唯一标识符、或它们与主控制节点的关系)以及项目的状态(包括例如项目的每个工作者节点的部分的状态)。快照还可以包括从通信网格中的工作者节点接收的分析或结果。备份控制节点可以接收和存储从主控制节点接收的备份数据。备份控制节点可以传输对来自主控制节点的这样的快照(或其他信息)的请求,或者主控制节点可以周期性地向备份控制节点发送这样的信息。
如所指出的那样,如果主控制节点出故障,则备份数据可以允许备份控制节点作为主控制节点接管,而无需网格从头开始启动项目。如果主控制节点出故障,则将作为主控制节点接管的备份控制节点可以检索从主控制节点接收的快照的最新版本,并使用快照从由备份数据指示的项目的阶段继续项目。这可以防止项目作为整体的失败。
备份控制节点可以使用各种方法来确定主控制节点已经出故障。在这样的方法的一个示例中,主控制节点可以向备份控制节点传输(例如,周期性地)指示主控制节点正在工作并且尚未出故障的通信,诸如心跳通信。如果备份控制节点在某个预定时间段内尚未接收到心跳通信,则备份控制节点可以确定主控制节点已经出故障。替代地,备份控制节点还可以从主控制节点本身(在其出故障之前)或从主控制节点已经出故障的工作者节点(例如因为主控制节点已经未能与工作者节点通信)接收通信。
可以执行不同的方法来确定备份控制节点的集合(例如,备份控制节点404和406)中的哪个备份控制节点将接管出故障的主控制节点402并成为新的主控制节点。例如,可以基于备份控制节点基于它们的唯一标识符的排序或“分层”来选择新的主控制节点。在替代实施例中,可以由通信网格中的另一个设备或者从外部设备(例如,系统基础设施或最终用户,诸如控制通信网格的服务器或计算机)将备份控制节点指派为新的主控制节点。在另一替代实施例中,可以基于带宽或关于通信网格的其他统计来指定作为新的主控制节点接管的备份控制节点。
通信网格内的工作者节点也可能出故障。如果工作者节点出故障,则可以在可操作的工作者节点之中重新分发由出故障的工作者节点正在执行的工作。在替代实施例中,主控制节点可以向仍然在通信网格上的可操作的工作者节点中的每个传输通信,即工作者节点中的每个也可能有目的地(purposefully)出故障。在工作者节点中的每个出故障后,它们可以各自检索它们的最近保存的它们的状态的检查点,并从该检查点重新启动项目,以最小化正在执行的项目上的丢失进度。
图5图示了示出根据本技术的实施例的示例过程500的流程图,该示例过程500用于在节点出故障之后调整通信网格或通信网格中的工作项目。过程可以包括例如接收网格状态信息,所述网格状态信息包括由通信网格中的节点正在执行的项目的一部分的项目状态,如操作502中所述。例如,控制节点(例如,连接到主控制节点的备用控制节点和通信网格上的工作者节点)可以接收网格状态信息,其中网格状态信息包括主控制节点的项目状态或工作者节点的项目状态。主控制节点的项目状态和工作者节点的项目状态可以包括由通信网格中的主节点和工作者节点正在执行的项目的一个或多个部分的状态。过程还可以包括存储网格状态信息,如操作504中所述。例如,控制节点(例如,备份控制节点)可以在控制节点内本地存储所接收的网格状态信息。替代地,可以将网格状态信息发送到另一个设备以进行存储,其中控制节点可以具有对信息的访问权。
过程还可以包括在操作506中接收对应于通信网格中的节点的故障通信。例如,节点可以接收包括主控制节点已经出故障的指示、提示备份控制节点接管主控制节点的故障通信。在替代实施例中,节点可以接收工作者节点已经出故障、提示控制节点重新分配由工作者节点正在执行的工作的故障。过程还可以包括重新分配由出故障的节点正在执行的节点或项目的一部分,如操作508中所述。例如,控制节点可以在收到故障通信时基于故障通信将备份控制节点指定为新的主控制节点。如果出故障的节点是工作者节点,则控制节点可以使用通信网格的快照来识别出故障的工作者节点的项目状态,其中出故障的工作者节点的项目状态包括在故障时间时由出故障的工作者节点正在执行的项目的一部分的状态。
过程还可以包括基于重新分配来接收更新的网格状态信息,如操作510中所述,并且基于更新的网格状态信息将指令的集合传输到通信网格中的一个或多个节点,如操作512中所述。更新的网格状态信息可以包括主控制节点的更新的项目状态或工作者节点的更新的项目状态。可以将更新的信息传输到网格中的其他节点以更新它们的陈旧的存储信息。
图6图示了根据本技术的实施例的包括控制节点和工作者节点的通信网格计算系统600的一部分。为了说明的目的,通信网格600计算系统包括一个控制节点(控制节点602)和一个工作者节点(工作者节点610),但是通信网格600计算系统可以包括更多的工作者节点和/或控制节点。控制节点602经由通信路径650被通信地连接到工作者节点610。因此,控制节点602可以经由路径650向工作者节点610传输信息(例如,与通信网格或通知相关的信息),并从工作者节点610接收信息。
类似于图4,通信网格计算系统(或仅“通信网格”)600包括数据处理节点(控制节点602和工作者节点610)。节点602和610包括多核数据处理器。每个节点602和610包括网格使能软件部件(GESC)620,所述网格使能软件部件(GESC)620在与该节点相关联的数据处理器上执行,并且与也与该节点相关联的缓冲存储器622对接。每个节点602和610包括数据库管理软件(DBMS)628,所述数据库管理软件(DBMS)628在控制节点602处的数据库服务器(未示出)上执行和在工作者节点610处的数据库服务器(未示出)上执行。
每个节点还包括数据存储设备624。类似于图1中的网络附加数据存储设备110和图2中的数据存储设备235,数据存储设备624被用于存储要由计算环境中的节点处理的数据。数据存储设备624还可以将在被处理之后由计算系统生成的任何中间或最终数据存储在例如非易失性存储器中。然而,在某些实施例中,网格计算环境的配置允许执行其操作,使得中间和最终数据结果可以仅被存储在易失性存储器(例如,RAM)中,而无需将中间或最终数据结果存储到非易失性类型的存储器。将这样的数据存储在易失性存储器中可能在某些情况下(诸如当网格从客户端接收查询(例如临时查询)时以及当需要快速或即时生成通过处理大量的数据而生成的响应时)是有用的。在这样的情况下,网格可以被配置成将数据保留在存储器内,使得可以以不同的细节的级别生成响应,并且使得客户端可以交互地查询该信息。
每个节点还包括用户定义的函数(UDF)626。UDF提供用于DBMS 628将数据传递到存储在由DBMS管理的数据存储设备624中的数据库或从存储在由DBMS管理的数据存储设备624中的数据库接收数据的机制。例如,可以由DBMS调用UDF 626以向GESC提供数据用于处理。UDF 626可以与GESC建立套接字连接(未示出)以传递数据。替代地,UDF 626可以通过将数据写入到由UDF和GESC二者都可访问的共享存储器来将数据传递到GESC。
节点602和620处的GESC 620可以经由网络(诸如图1中所示的网络108)被连接。因此,节点602和620可以使用预定的通信协议(诸如例如消息传递接口(MPI))经由网络彼此通信。每个GESC 620可以与在另一节点处的GESC参与点对点通信,或者经由网络与多个GESC进行集体通信。每个节点处的GESC 620可以包含相同(或几乎相同)的软件指令。每个节点可以能够作为控制节点或工作者节点操作。控制节点602处的GESC可以通过通信路径652与客户端设备630通信。更具体地,控制节点602可以与由客户端设备630托管的客户端应用632通信以接收查询并在处理大量的数据之后对那些查询做出响应。
DBMS 628可以控制在节点602或610内的数据库或数据结构(未示出)的创建、维护和使用。数据库可以组织存储在数据存储设备624中的数据。在控制节点602处的DBMS 628可以接受对数据的请求并传递针对该请求的适当数据。利用这样的过程,数据的集合可以跨多个物理位置被分发。在该示例中,每个节点602和610将由管理系统管理的总数据的一部分存储在其相关联的数据存储设备624中。
此外,DBMS可以负责使用复制技术来防止数据丢失。复制包括提供存储在一个或多个其他节点上的一个节点上的数据的备份副本。因此,如果一个节点出故障,则可以从驻留在另一个节点处的复制副本来恢复来自出故障的节点的数据。然而,如本文关于图4所描述的那样,通信网格中的每个节点的数据或状态信息也可以与网格上的每个节点共享。
图7图示了根据本技术的实施例的示出用于在网格计算系统内执行项目的示例方法700的流程图。如关于图6所描述的那样,在控制节点处的GESC可以与客户端设备(例如,客户端设备630)传输数据,以接收对执行项目的查询并且在已经处理了大量的数据之后对那些查询做出响应。查询可以被传输到控制节点,其中查询可以包括对执行项目的请求,如操作702中所描述的那样。查询可以包含关于要在项目中执行的数据分析的类型以及项目是否应该使用基于网格的计算环境来执行的指令,如操作704中所示。
为了启动项目,控制节点可以确定查询是否请求使用基于网格的计算环境来执行项目。如果确定为否,那么控制节点在单独环境中(例如,在控制节点处)启动项目的执行,如操作710中所描述的那样。如果确定为是,则控制节点可以在基于网格的计算环境中启动项目的执行,如操作706中所描述的那样。在这样的情况下,请求可以包括请求的网格的配置。例如,请求可以包括在执行项目时要在网格中使用的多个控制节点和多个工作者节点。在已经完成项目之后,控制节点可以传输由网格产生的分析的结果,如操作708中所描述的那样。无论项目是在单独环境还是基于网格的环境中执行,控制节点都提供项目的结果,如操作712中所描述的那样。
如关于图2所指出的那样,在本文中描述的计算环境可以收集要处理的数据(例如,如从诸如传感器的网络设备(诸如图2中的网络设备204-209)、以及客户端设备或其他源接收的数据),以作为数据分析项目的部分来处理,并且数据可以被实时接收,作为流式传输分析环境(例如,ESP)的部分。可以使用如经由不同种类的网络或本地传送(诸如基于实时流式传输)的多种源来收集数据。例如,当传感器连续感测、监视和跟踪它们的环境中的变化时,网络设备可以周期性地从网络设备传感器接收数据。更具体地,越来越多的分布式应用通过在将数据分发给地理上分布的接收者之前对数据应用查询来开发或产生来自分布式源的连续流数据。事件流处理引擎(ESPE)可以在接收到数据时连续地对数据应用查询,并确定哪些实体应该接收数据。客户端或其他设备还可以订阅ESPE或处理ESP数据的其他设备,使得它们可以在处理之后基于例如由处理引擎确定的实体来接收数据。例如,图2中的客户端设备230可以在计算环境214中订阅ESPE。在另一个示例中,关于图10进一步描述的事件订阅设备1024a-c也可以订阅ESPE。ESPE可以确定或定义来自网络设备或其他发布者(例如,图2中的网络设备204-209)的输入数据或事件流如何被转换成将由订阅者(诸如例如图2中的客户端设备230)消费的有意义的输出数据。
图8图示了根据本技术的实施例的包括事件流处理引擎(ESPE)的部件的框图。ESPE 800可以包括一个或多个项目802。项目可以被描述为由ESPE 800管理的引擎模型中的第二级容器,其中项目的线程池大小可以由用户来定义。一个或多个项目802中的每个项目可以包括一个或多个连续查询804,所述连续查询804包含数据流,所述数据流是传入事件流的数据转换。一个或多个连续查询804可以包括一个或多个源窗口806和一个或多个导出窗口808。
ESPE可以在与某些事件相关的一段时间内接收流式传输数据,诸如由一个或多个网络设备感测的事件或其他数据。ESPE可以执行与处理由一个或多个设备创建的数据相关联的操作。例如,ESPE可以从图2中所示的一个或多个网络设备204-209接收数据。如所指出的那样,网络设备可以包括感测它们的环境的不同方面的传感器,并且可以基于那些感测到的观察随时间收集数据。例如,ESPE可以在图2中所示的机器220和240中的一个或多个内实现。ESPE可以通过ESP应用在这样的机器内实现。ESP应用可以将具有其自己的专用的一个或多个线程池的ESPE嵌入到其应用空间中,其中主应用线程可以执行特定于应用的工作,并且ESPE至少通过在处理对象中创建模型的实例来处理事件流。
引擎容器是管理一个或多个项目802的资源的模型中的顶层容器。在说明性实施例中,例如,对于ESP应用的每个实例,可能只有一个ESPE 800,并且ESPE 800可以具有唯一的引擎名称。另外,一个或多个项目802可以各自具有唯一的项目名称,并且每个查询可以具有唯一的连续查询名称并且以一个或多个源窗口806的唯一命名的源窗口开始。ESPE800可以是持久的,或可以不是持久的。
连续查询建模涉及定义针对事件流操纵和转换的窗口的有向图。事件流操纵和转换的上下文中的窗口是事件流处理模型中的处理节点。连续查询中的窗口可以对流经窗口的数据执行聚合、计算、模式匹配和其他操作。连续查询可以被描述为源、关系、模式匹配和程序窗口的有向图。一个或多个源窗口806和一个或多个导出窗口808表示连续执行的查询,当新事件块流式传输通过ESPE 800时,所述查询生成对查询结果集的更新。例如,有向图是由边缘连接的节点的集合,其中边缘具有与它们相关联的方向。
事件对象可以被描述为作为字段的集合可访问的数据的分组,其中字段中的至少一个被定义为密钥或唯一标识符(ID)。可以使用多种格式(包括二进制、字母数字、XML等)来创建事件对象。每个事件对象可以包括被指定为事件的主要标识符(ID)的一个或多个字段,因此ESPE 800可以支持对事件的操作代码(操作码),包括插入、更新、更新插入(upsert)和删除。如果密钥字段已存在,则更新插入操作码更新事件;否则,插入事件。为了说明,事件对象可以是字段值的集合的打包二进制表示,并且包括与事件相关联的元数据和字段数据二者。元数据可以包括指示事件是否表示插入、更新、删除或更新插入的操作码,指示事件是否是来自保留策略管理的正常、部分更新或保留生成事件的标志的集合,以及可以被用于延迟测量的微秒时间戳的集合。
事件块对象可以被描述为事件对象的分组或包。事件流可以被描述为事件块对象的流。一个或多个连续查询804的连续查询使用一个或多个源窗口806和一个或多个导出窗口808将由发布到ESPE 800中的流式传输事件块对象构成的源事件流转换为一个或多个输出事件流。连续查询也可以被认为是数据流建模。
一个或多个源窗口806位于有向图的顶部处,并且没有窗口馈入它们中。事件流被发布到一个或多个源窗口806中,并且从那里事件流可以被引导到如由有向图定义的连接窗口的下一个集合。一个或多个导出窗口808都是实例化的窗口,所述实例化的窗口不是源窗口并且所述实例化的窗口具有将事件流式传输到它们中的其他窗口。一个或多个导出窗口808可以对传入事件流执行计算或转换。一个或多个导出窗口808基于窗口类型(即诸如联接、过滤、计算、聚合、复制、模式匹配、程序、联合等的运算符)和窗口设置来转换事件流。当事件流被发布到ESPE 800中时,它们被连续地查询,并且这些查询中的导出窗口的得到的集合被连续地更新。
图9图示了根据本技术的一些实施例的示出包括由事件流处理引擎执行的操作的示例过程的流程图。如所指出的那样,ESPE 800(或相关联的ESP应用)定义了如何将输入事件流转换为有意义的输出事件流。更具体地,ESP应用可以定义如何将来自发布者(例如,提供感测数据的网络设备)的输入事件流转换为由订阅者消费的有意义的输出事件流(例如,正在由机器或机器的集合执行的数据分析项目)。
在应用内,用户可以在ESPE的控制下独立地或通过浏览器应用以由用户可选择的次序与在显示器中呈现给用户的一个或多个用户界面窗口交互。例如,用户可以执行ESP应用,这导致第一用户界面窗口的呈现,第一用户界面窗口可以包括多个菜单和选择器,诸如如由本领域技术人员所理解的与ESP应用相关联的下拉菜单、按钮、文本框、超链接等。如由本领域技术人员进一步理解的那样,可以并行地(例如,使用多个线程)执行各种操作。
在操作900处,ESP应用可以定义并启动ESPE,从而在诸如机器220和/或240的设备处实例化ESPE。在操作902中,创建引擎容器。为了说明,可以使用函数调用来实例化ESPE800,该函数调用将引擎容器指定为模型的管理器。
在操作904中,由ESPE 800将一个或多个连续查询804实例化为模型。可以用一个或多个专用线程池来实例化一个或多个连续查询804,当新事件流式传输通过ESPE 800时,所述专用线程池生成更新。为了说明,可以创建一个或多个连续查询804以对ESPE 800内的业务处理逻辑建模、预测ESPE 800内的事件、对ESPE 800内的物理系统建模、预测ESPE 800内的物理系统状态等。例如,如所指出的那样,ESPE 800可以被用于支持传感器数据监视和管理(例如,感测可以包括力、扭矩、载荷、应变、位置、温度、气压、流体流动、化学性质、电阻、电磁场、辐射、辐照度、接近度、声学、湿度、距离、速度、振动、加速度、电位、或电流等)。
ESPE 800可以分析和处理运动中的事件或“事件流”。代替存储数据并对存储的数据运行查询,ESPE 800可以存储查询并通过它们流式传输数据,以允许在接收数据时连续分析数据。可以基于将输入事件流转换为输出事件流的关系、模式匹配和程序算法来创建一个或多个源窗口806和一个或多个导出窗口808,以基于定义的连续查询模型和对流式传输的数据的应用来建模、模拟、评分、测试、预测等。
在操作906中,针对ESPE 800初始化发布/订阅(pub/sub)能力。在说明性实施例中,针对一个或多个项目802中的每个项目初始化pub/sub能力。为了针对ESPE 800初始化和使能pub/sub能力,可以提供端口号。pub/sub客户端可以使用运行ESPE的ESP设备的主机名和端口号来建立到ESPE 800的pub/sub连接。
图10图示了根据本技术的实施例的在发布设备1022和事件订阅设备1024a-c之间对接的ESP系统1000。ESP系统1000可以包括ESP设备或子系统851、事件发布设备1022、事件订阅设备A 1024a、事件订阅设备B 1024b和事件订阅设备C 1024c。输入事件流由发布设备1022输出到ESP设备851。在替代实施例中,输入事件流可以由多个发布设备创建。多个发布设备可以进一步将事件流发布到其他ESP设备。由ESPE 800实例化的一个或多个连续查询可以分析和处理输入事件流以形成输出到事件订阅设备A 1024a、事件订阅设备B 1024b和事件订阅设备C 1024c的输出事件流。ESP系统1000可以包括事件订阅设备的更多或更少数量的事件订阅设备。
发布-订阅是基于间接寻址的面向消息的交互范例。处理数据接收者通过订阅特定类别的事件来指定他们对从ESPE 800接收信息的兴趣,而信息源将事件发布到ESPE 800而不直接寻址接收方。ESPE 800协调交互并处理数据。在某些情况下,数据源接收已经由数据接收者接收到所发布的信息的确认。
发布/订阅API可以被描述为库,所述库使得事件发布者(诸如发布设备1022)能够将事件流发布到ESPE 800或事件订阅者(诸如事件订阅设备A 1024a、事件订阅设备B1024b和事件订阅设备C 1024c)的库,以订阅来自ESPE 800的事件流。为了说明,可以定义一个或多个发布/订阅API。使用发布/订阅API,事件发布应用可以将事件流发布到ESPE800的运行事件流处理器项目源窗口中,并且事件订阅应用可以订阅ESPE 800的事件流处理器项目源窗口。
发布/订阅API提供ESP应用与其他联网应用之间的跨平台连接性和字节顺序(endianness)兼容性,所述其他联网应用诸如在发布设备1022处实例化的事件发布应用,以及在事件订阅设备A 1024a、事件订阅设备B 1024b和事件订阅设备C 1024c中的一个或多个处实例化的事件订阅应用。
参考回到图9,操作906初始化ESPE 800的发布/订阅能力。在操作908中,启动一个或多个项目802。一个或多个启动的项目可以在ESP设备的后台中运行。在操作910中,从事件发布设备1022的一个或多个计算设备接收事件块对象。
ESP子系统800可以包括发布客户端1002、ESPE 800、订阅客户端A 1004、订阅客户端B 1006和订阅客户端C 1008。发布客户端1002可以由使用发布/订阅API在发布设备1022处执行的事件发布应用来启动。订阅客户端A 1004可以由使用发布/订阅API在事件订阅设备A 1024a处执行的事件订阅应用A来启动。订阅客户端B 1006可以由使用发布/订阅API在事件订阅设备B 1024b处执行的事件订阅应用B来启动。订阅客户端C 1008可以由使用发布/订阅API在事件订阅设备C 1024c处执行的事件订阅应用C来启动。
包含一个或多个事件对象的事件块对象从事件发布设备1022上的事件发布应用的实例被注入到一个或多个源窗口806的源窗口中。事件块对象可以例如由事件发布应用来生成,并且可以由发布客户端1002来接收。当事件块对象在ESPE 800的一个或多个源窗口806和/或一个或多个导出窗口808之间传递并被传递到订阅客户端A 1004、订阅客户端B1006和订阅客户端C 1008以及被传递到事件订阅设备A 1024a、事件订阅设备B 1024b和事件订阅设备C 1024c时,可以维护唯一ID。当由连续查询处理事件块对象时,发布客户端1002可以进一步在事件块对象中生成并包括唯一的嵌入事务ID,以及发布设备1022分配给事件块对象的唯一ID。
在操作912中,通过一个或多个连续查询804来处理事件块对象。在操作914中,将处理的事件块对象输出到事件订阅设备1024a-c的一个或多个计算设备。例如,订阅客户端A 1004、订阅客户端B 1006和订阅客户端C 1008可以分别将所接收的事件块对象发送到事件订阅设备A 1024a、事件订阅设备B 1024b和事件订阅设备C 1024c。
ESPE 800维护从事件块被发布到源窗口中的时候起接收的事件块的事件块容器(containership)方面,并在被输出到订阅者之前通过由具有各种事件转换的一个或多个连续查询804定义的有向图推进。订阅者可以通过将事件块对象的唯一ID与由订阅者接收的事件块ID进行比较来将订阅事件的组相关回到发布事件的组,发布者(诸如发布设备1022)将所述唯一ID附加到事件块对象。
在操作916中,做出关于处理是否被停止的确定。如果处理未被停止,则处理在操作910中继续,以继续从例如一个或多个网络设备接收包含事件块对象的一个或多个事件流。如果处理被停止,则处理在操作918中继续。在操作918中,停止启动的项目。在操作920中,关闭ESPE。
如所指出的那样,在一些实施例中,在接收和存储数据之后,针对分析项目来处理大数据。在其他实施例中,分布式应用通过在将数据分发给地理上分布的接收者之前对数据应用查询来处理来自分布式源的实时连续流数据。如所指出的那样,事件流处理引擎(ESPE)可以在接收到数据时连续地对数据应用查询,并确定哪些实体接收处理的数据。这允许在多种环境中被接收和/或收集的大量的数据被实时处理和分发。例如,如关于图2所示,可以从网络设备收集数据,该网络设备可以包括物联网内的设备,诸如家庭自动化网络内的设备。然而,可以从多种不同环境中的多种不同源收集这样的数据。在任何这样的情况下,本技术的实施例允许这样的数据的实时处理。
本公开的方面提供了对技术问题的技术解决方案,诸如当ESP设备出故障时出现的计算问题,这导致完全的服务中断和潜在重大数据丢失。当流式传输的数据正在支持任务关键操作(诸如支持正在进行的制造或钻井操作中的那些操作)时,数据丢失可能是灾难性的。ESP系统的实施例实现了在多个ESP设备处运行的ESPE的快速并且无缝的故障转移(failover),而没有服务中断或数据丢失,因此显着提高了依赖于数据流的现场或实时处理的可操作系统的可靠性。事件发布系统、事件订阅系统以及未在出故障的ESP设备处执行的每个ESPE都不知道出故障的ESP设备或不受出故障的ESP设备影响。ESP系统可以包括数千个事件发布系统和事件订阅系统。ESP系统将故障转移逻辑和感知保持在外发消息(out-messaging)网络连接器和外发消息网络设备的边界内。
在一个示例实施例中,提供了一种系统,用于在事件流处理(ESP)事件块时支持故障转移。该系统包括但不限于外发消息网络设备和计算设备。计算设备包括但不限于处理器和可操作地耦合到处理器的计算机可读介质。处理器被配置成执行ESP引擎(ESPE)。计算机可读介质具有存储在其上的指令,当由处理器执行时,所述指令使计算设备支持故障转移。从ESPE接收包括唯一标识符的事件块对象。确定计算设备的第一状态为活跃或待机。当第一状态是活跃的时,确定计算设备作为新活跃或非新活跃的第二状态。当计算设备从待机状态被切换到活跃状态时,确定是新活跃的。当第二状态是新活跃的时,确定唯一标识上次发布的事件块对象的上次发布的事件块对象标识符。从由计算设备可访问的非暂时性计算机可读介质选择下一个事件块对象。下一个事件块对象具有大于所确定的上次发布的事件块对象标识符的事件块对象标识符。将所选择的下一个事件块对象发布到外发消息网络设备。当计算设备的第二状态不是新活动的时,将所接收的事件块对象发布到外发消息网络设备。当计算设备的第一状态是待机时,将所接收的事件块对象存储在非暂时性计算机可读介质中。
图11是根据一些方面的用于生成和使用机器学习模型的过程的示例的流程图。机器学习是人工智能的分支,其涉及可以从数据中学习、对数据分类和关于数据做出预测的数学模型。这样的数学模型(其可以被称为机器学习模型)可以在两个或更多个类之中对输入数据分类;在两个或多个组之中聚类输入数据;基于输入数据来预测结果;识别输入数据中的模式或趋势;识别空间中的输入数据的分布;或这些的任何组合。机器学习模型的示例可以包括(i)神经网络;(ii)决策树,诸如分类树和回归树;(iii)分类器,诸如朴素偏倚分类器、逻辑回归分类器、岭回归分类器、随机森林分类器、最小绝对收缩和选择器(LASSO)分类器以及支持向量机;(iv)聚类器,诸如k-均值聚类器、均值移位聚类器和频谱聚类器;(v)因子分解器,诸如因子分解机器、主成分分析器和内核主成分分析器;以及(vi)机器学习模型的全体或其他组合。在一些示例中,神经网络可以包括深度神经网络、前馈神经网络、递归神经网络、卷积神经网络、径向基函数(RBF)神经网络、回声状态神经网络、长短期记忆神经网络、双向递归神经网络、门控神经网络、分层递归神经网络、随机神经网络、模块化神经网络、尖峰神经网络、动态神经网络、级联神经网络、神经模糊神经网络或这些的任意组合。
可以互换地使用不同的机器学习模型来执行任务。可以至少部分地使用机器学习模型执行的任务的示例包括各种类型的评分;生物信息学;化学信息学;软件工程;欺诈检测;顾客细分;生成在线推荐;自适应web站点;确定顾客终身价值;搜索引擎;实时或接近实时放置广告;对DNA序列分类;情感计算;执行自然语言处理和理解;对象识别和计算机视觉;机器人运动;玩游戏;优化和元启发式;检测网络入侵;医学诊断和监视;或预测资产(诸如机器)何时将需要维护。
可以使用任何数量和组合的工具来创建机器学习模型。用于创建和管理机器学习模型的工具的示例可以包括SAS®Enterprise Miner、SAS®Rapid Predictive Modeler和SAS®Model Manager、SAS Cloud Analytic Services (CAS)®、SAS Viya®,所有这些都由北卡罗来纳州卡里的SAS研究所公司提供。
可以通过称为训练的至少部分自动化(例如,其中很少人参与或没有人参与)过程来构建机器学习模型。在训练期间,输入数据可以被迭代地提供给机器学习模型,以使得机器学习模型能够识别与输入数据相关的模式或识别输入数据和输出数据之间的关系。通过借助训练,机器学习模型可以从未训练状态转变为训练状态。输入数据可以被分割成一个或多个训练集和一个或多个验证认证集,并且训练过程可以被重复多次。拆分可以遵循k折交叉验证规则、留一规则(leave-one-out-rule)、留p规则或保持(holdout)规则。下面关于图11的流程图描述训练和使用机器学习模型的概述。
在框1104中,接收训练数据。在一些示例中,从远程数据库或本地数据库接收、从各种数据的子集构建、或由用户输入训练数据。训练数据可以以其原始形式被用于训练机器学习模型或预处理成另一种形式,该另一种形式然后可以被用于训练机器学习模型。例如,可以将训练数据的原始形式平滑、截断、聚合、聚类或以其他方式操纵成另一种形式,该另一种形式然后可以被用于训练机器学习模型。
在框1106中,使用训练数据来训练机器学习模型。可以以监督、无监督或半监督的方式来训练机器学习模型。在监督训练中,训练数据中的每个输入与期望的输出相关。该期望的输出可以是标量、向量或不同类型的数据结构,诸如文本或图像。这可以使得机器学习模型能够学习输入和期望的输出之间的映射。在无监督的训练中,训练数据包括输入,但不包括期望的输出,使得机器学习模型必须独自在输入中找到结构。在半监督训练中,训练数据中的输入中的仅一些与期望的输出相关。
在框1108中,评估机器学习模型。例如,可以例如经由用户输入或从数据库获得评估数据集。评估数据集可以包括与期望的输出相关的输入。可以将输入提供给机器学习模型,并且可以将来自机器学习模型的输出与期望的输出进行比较。如果来自机器学习模型的输出与期望的输出紧密对应,则机器学习模型可以具有高的准确度。例如,如果来自机器学习模型的90%或更多的输出与评估数据集中的期望的输出相同,则机器学习模型可能具有高的准确度。否则,机器学习模型可能具有低的准确度。数字90%仅是示例。实际和期望的准确度百分比取决于问题和数据。
在一些示例中,如果机器学习模型对于特定任务具有不足的准确度,则过程可以返回到框1106,其中可以使用附加训练数据进一步训练机器学习模型或以其他方式修改机器学习模型以提高准确度。如果机器学习模型对于特定任务具有足够的准确度,则过程可以继续到框1110。
在框1110中,接收新数据。在一些示例中,从远程数据库或本地数据库接收、从各种数据的子集构建、或由用户输入新数据。新数据可能是机器学习模型所不知道的。例如,机器学习模型可能先前尚未处理或分析新数据。
在框1112中,训练的机器学习模型被用于分析新数据并提供结果。例如,可以将新数据作为输入提供给训练的机器学习模型。训练的机器学习模型可以分析新数据并提供结果,该结果包括将新数据分类到特定类中、将新数据聚类到特定组中、基于新数据的预测或这些的任何组合。
在框1114中,对结果进行后处理。例如,结果可以作为作业的部分与其他数据相加、与其他数据相乘或以其他方式与其他数据组合。作为另一个示例,结果可以从第一格式(诸如时间序列格式)被转换成另一种格式(诸如计数序列格式)。在后处理期间,可以对结果执行任何数量和组合的操作。
机器学习模型的更具体示例是图12中所示的神经网络1200。神经网络1200被表示为可以在彼此之间交换数据的互连神经元(诸如神经元1208)的多个层。所述层包括用于接收输入数据的输入层1202、隐藏层1204和用于提供结果的输出层1206。隐藏层1204被称为隐藏的,因为在神经网络1200的正常运转期间,所述隐藏层1204可能不是直接可观察的或者使其输入直接可访问。尽管为了示例性目的,神经网络1200被示出为具有特定数量的层和神经元,但是神经网络1200可以具有任何数量和组合的层,并且每个层可以具有任何数量和组合的神经元。
神经元和神经元之间的连接可以具有数值权重,所述数值权重可以在训练期间被调整。例如,可以将训练数据提供给神经网络1200的输入层1202,并且神经网络1200可以使用训练数据来调整神经网络1200的一个或多个数值权重。在一些示例中,神经网络1200可以使用反向传播(backpropagation)来训练。反向传播可以包括基于神经网络1200的实际输出与神经网络1200的期望的输出之间的差异来确定特定数值权重的梯度。基于所述梯度,神经网络1200的一个或多个数值权重可以被更新以减少差异,从而提高神经网络1200的准确度。该过程可以被重复多次以训练神经网络1200。例如,该过程可以被重复数百或数千次以训练神经网络1200。
在一些示例中,神经网络1200是前馈神经网络。在前馈神经网络中,每个神经元仅将输出值传播到神经网络1200的后续层。例如,数据可能仅在前馈神经网络中从一个神经元向移动一个方向(向前)到下一个神经元。
在其他示例中,神经网络1200是递归神经网络。递归神经网络可以包括一个或多个反馈回路,允许数据通过神经网络1200向前和向后两个方向传播。这可以允许信息持续存在于递归神经网络中。例如,递归神经网络可以至少部分地基于递归神经网络之前已经看到的信息来确定输出,从而使递归神经网络能够使用先前的输入来通知输出。
在一些示例中,神经网络1200通过从一个层接收数字的向量来操作;使用数值权重的矩阵、非线性的矩阵或二者将数字的向量转换为新的数字的向量;并且将新的数字的向量提供给神经网络1200的后续层。神经网络1200的每个后续层可以重复该过程,直到神经网络1200在输出层1206输出最终结果。例如,神经网络1200可以在输入层1202处接收数字的向量作为输入。神经网络1200可以将数字的向量乘以数值权重的矩阵以确定加权向量。可以在神经网络1200的训练期间调整数值权重的矩阵。神经网络1200可以使用非线性(诸如S形切线或双曲切线)来转换加权向量。在一些示例中,非线性可以包括整流线性单元,可以使用等式y=max(x,0)来表示所述整流线性单元,其中y是输出,并且x是来自加权向量的输入值。转换后的输出可以被提供给神经网络1200的后续层,诸如隐藏层1204。神经网络1200的后续层可以接收转换的输出,将转换的输出乘以数值权重的矩阵和非线性的矩阵,并且将结果提供给神经网络1200的又一层。该过程继续直到神经网络1200在输出层1206输出最终结果。
本公开的其他示例可以包括任何数量和组合的机器学习模型,所述机器学习模型具有任何数量和组合的特征。(一个或多个)机器学习模型可以以监督、半监督或无监督的方式或这些的任何组合来训练。(一个或多个)机器学习模型可以使用单个计算设备或多个计算设备(诸如上面讨论的通信网格计算系统400)来实现。
至少部分地通过使用机器学习模型来实现本公开的一些示例可以减少在分析数据时由计算设备消耗的处理迭代、时间、存储器、电力或这些的任何组合的总数。例如,神经网络可以比其他方法更容易地识别数据中的模式。这可以使得神经网络能够使用比其他方法更少的处理周期和更少的存储器来分析数据,同时获得类似或更高水平的准确度。
图13A图示了分布式处理系统2000的示例实施例的框图,该分布式处理系统2000包括一个或多个数据设备2100、形成节点设备网格2003的一个或多个节点设备2300、至少一个控制设备2500和/或由网络2999耦合的至少一个请求设备2700。图13B图示了分布式处理系统2000的替换示例实施例的框图,其中节点设备2300中的一个可以包括控制器2503以执行控制设备2500的功能。在图13A和13B的实施例二者中,(一个或多个)数据设备2100可以向(一个或多个)节点设备2300提供数据集2230(或者(一个或多个)节点设备2300可以通过其来组装数据集2230的数据值),并且(一个或多个)节点设备2300可以在控制设备2500(或控制器2503)的控制下利用数据集2230执行多种操作中的任何操作。可以响应于由请求设备2700中的一个或多个传输到控制设备2500(或控制器2503)的查询指令2710的实例来执行这样的操作,并且指示这样的操作的结果的结果数据2770可以由控制设备2500(或控制器2503)传输回到请求设备2700。为了使能由(一个或多个)节点设备2300执行这样的操作,(一个或多个)数据设备2100可以向(一个或多个)节点设备2300提供数据集索引2530。替代地,(一个或多个)节点设备2300可以生成数据集索引2530。
为了支持这样的操作,设备2100、2300、2500和/或2700可以交换数据集2230的部分、数据集索引2530的部分、查询指令2710、结果数据2770和/或关于对于数据集2230的组装、索引、搜索和/或执行操作的其他命令和/或数据。在各种实施例中,网络2999可以是可以在单个建筑物或其他相对有限的区域内扩展的单个网络、可以延伸相当长距离的连接网络的组合、和/或可以包括因特网。因此,网络2999可以基于可以通过其实现通信的多种通信技术(或其组合)中的任何通信技术,包括但不限于采用电和/或光导电缆的有线技术,以及采用红外、射频(RF)或其他形式的无线传输的无线技术。
数据集2230的数据可以是关于各种各样的主题中的任何主题的多种类型中的任何类型的数据,包括但不限于技术或科学数据、患者或社会数据、运输或活动跟踪数据、历史或实时事件数据、地质或气象数据等。如将更详细地解释的那样,可以设想的是数据集2230在大小方面可能是足够大的,使得在单个设备内存储和/或处理数据集2230的整体可能被认为至少是不切实际的(如果不是不可能的话)。因此,为了便于跨多个设备以分布式方式存储和/或处理数据集2230,可以将数据集2230划分为多个超级单元2233,所述超级单元2233可以各自被划分为多个数据单元2130,所述数据单元2130可以各自又被划分为多个数据记录2133。如还将被更详细地解释的那样,为了使能将数据集索引2530与数据集2230一起分发,数据集索引2530可以被划分为多个超级单元索引2430和单元索引2330,每个超级单元索引2430对应于超级单元2233中的一个,每个单元索引2330对应于数据单元2130中的一个。
在一些实施例中,数据设备2100可以形成多个存储设备的网格或其他类型的集合(例如,网络附加驱动器阵列等),其可以主要用于存储数据,诸如数据集2230。在这样的实施例中,数据设备2100可能能够在通过网络2999的数据传递的集合中与节点设备2300交换数据集2230的整体,所述数据传递可以由控制设备2500(或控制器2503)来协调。在数据集2230的这样的交换中,数据集索引2530可以连同数据集2230一起被交换。
然而,在其他实施例中,数据设备2100可以是多种类型中的任何类型的大量的设备,每个设备向节点设备2300提供数据值和/或数据值的流,以使得节点设备2300能够从其组装数据集2230。在这样的其他实施例中,数据设备2100中的每个可以是可以用作数据的源的多种类型中的任何类型的设备。更具体地,并且取决于数据集2230的内容,数据设备2100中的每个可以是进行物理或其他测量的多种类型中的任何类型的传感器、记录音频/视频和/或其他物理现象的多种类型中的任何类型的记录设备、提供在线服务和/或维护帐户以提供服务的多种类型中的任何类型的服务器、提供公用设施或建筑物操作服务的多种类型中的任何类型的装备、在商业或家庭环境中执行功能的多种类型中的任何类型的因特网附接设备等。在这样的其他实施例中,除了根据从数据设备2100接收的数据值和/或数据值的流组装数据集2230之外,当数据集2230被如此组装和/或更新时,节点设备2300还可以从数据集2230反复地生成数据集索引2530。
在各种实施例中,多个节点设备2300中的每个可以包括处理器2350、存储设备2360和网络接口2390中的一个或多个,以将节点设备2300中的每个耦合到网络2999。存储设备2360可以存储数据集2230的一部分、数据集索引2530的对应部分、控制例程2340和/或解析数据2310。如用虚线指示并且如将更详细解释的那样,在一些实施例中,数据集索引2530可以被结合到数据集2230中。替代地,并且如还将更详细解释的那样,无论何时和/或无论何处在设备之间交换和/或存储数据集2230时,数据集2230可以至少常规地伴随有数据集索引2530。控制例程2340可以包括在处理器2350上可操作的指令的序列,以实现用于执行各种功能的逻辑。在一些实施例中,在执行控制例程2340时,可以使节点设备2300中的每个的处理器2350操作网络接口2390,以至少部分地与节点设备2300中的其他节点设备并行地经由网络2999从数据设备2100接收数据集2230的一部分和/或数据集索引2530的对应部分。在其他实施例中,在执行控制例程2340时,可以使节点设备2300中的每个的处理器2350操作网络接口2390,以经由网络2999从一个或多个数据设备2100接收数据值或一个或多个数据值的流,并且可以至少部分地与节点设备2300中的其他节点设备并行地从所接收的数据值组装数据集2230的一部分。在这样的其他实施例中,可以使节点设备2300中的每个的处理器2350反复地生成数据集索引2530的对应部分。
无论数据集2230和/或数据集索引2530是由节点设备2300接收还是由节点设备2300生成,在进一步执行控制例程2340时,节点设备2300的至少子集的中每个的处理器2350可以从控制设备2500(或控制器2503)接收指令,以至少部分地与节点设备2300中的其他节点设备并行地对数据集2230执行一个或多个指定操作,并且经由网络2999将这样的操作的结果传输回到控制设备2500(或控制器2503)。在这样的接收的指令之中,可以是查询指令2710的中继副本,其可以包括用于至少执行对数据集2230的搜索以获得满足查询指令2710中指定的搜索标准的一个以上数据记录2133的指令。在一些实施例中,查询指令2710的实例可以附加地包括用于对通过搜索检索的数据值执行一个或多个附加处理操作的任务指令,以对其执行处理任务。
在各种实施例中,控制设备2500可以包括处理器2550、存储设备2560和用于将控制设备2500耦合到网络2999的网络接口2590中的一个或多个。存储设备2560可以存储规则数据2510、节点数据2539、控制例程2540、超级单元索引2430中的多个超级单元索引、和/或结果数据2770。控制例程2540可以包括在处理器2550上可操作的指令的序列,以实现用于执行各种功能的逻辑。在执行控制例程2540时,可以使处理器2550操作网络接口2590以协调通过网络2999在数据设备2100和节点设备2300之间的数据集2230和/或数据集索引2530的前面描述的至少部分地并行交换。此外,在执行控制例程2540时,可以使处理器2550操作网络接口2590以从请求设备2700接收查询指令2710,并且将查询指令2710中继到节点设备2300的至少子集,作为协调节点设备2300的至少子集之中的查询指令2710中请求的至少搜索的至少部分地并行执行的部分。此外,在执行控制例程2540时,可以使处理器2550操作网络接口2590以接收查询指令2710中请求的至少搜索的执行的结果的部分,并且将根据从节点设备2300的至少子集接收的结果生成的结果数据2770传输回到请求设备2700。
替代地,在其中节点设备2300中的一个包括控制器2503使得可能不存在控制设备2500的实施例中,控制器2503可以包括处理器2550和/或存储设备2560,并且代替存在用于由处理器2500使用的单独且不同的网络接口,处理器2550可以操作这样的节点设备2300的网络接口2390。如所描绘的那样,在这样的实施例中,规则数据2510、节点数据2539和控制例程2540中的每个可以被存储在这样的节点设备2300的存储设备2360内或者存储在控制器2503的单独存储设备2560内。
应该注意,图13A的分布式处理系统2000的一些实施例可以包括控制设备2500中的多个控制设备,和/或图13B的分布式处理系统2000的一些实施例可以包括多个节点设备2300,每个节点设备2300可以包括控制器2503。可能的是,提供多个控制设备2500或多个控制器2503用于在由此执行的功能中提供冗余的目的,其中一个控制设备2500或控制器2503内的故障导致由此由另一个控制设备2500或控制器2503执行的功能的接管。替代地或附加地,在图13A和13B的分布式处理系统2000的混合体(amalgam)中,可能的是,节点设备2300包括控制器2503,万一控制设备2500发生故障时接管单独且不同的控制设备2500的功能。替代地或附加地,可能的是将多个控制设备2500和/或多个控制器2503结合到分布式处理系统2000的实施例中,以与可能是请求设备2700中的多个请求设备的事物交互,以便在接收和处理从其接收的查询指令2710的多个实例时采用某种程度的并行处理,其中的每个可以包括要执行的完全不同的搜索的搜索标准和/或要对在对应的搜索中检索的数据值执行的完全不同的任务的任务指令。
在各种实施例中,请求设备2700包括处理器2750、存储设备2760、输入设备2720、显示器2780和用于将请求设备2700耦合到网络2999的网络接口2790中的一个或多个。存储设备2760可以存储查询指令2710、结果数据2700和/或控制例程2740。控制例程2740可以包括在处理器2750上可操作的指令的序列,以实现用于执行各种功能的逻辑。通过处理器2750对控制例程2740的执行可以使处理器2750操作输入设备2720和显示器2780,以提供图形用户界面(GUI)、命令行界面(CLI)和/或应用编程接口(API),操作员可以通过其输入针对来自数据集2230的数据的查询的参数,所述查询可以包括针对可能存在于数据记录2133中的一个或多个的特定数据的搜索,并且可以附加地包括要对通过搜索检索的数据值执行的任务。然后,处理器2750可以生成查询指令2710以包括基于输入的参数的机器可读指令的集合。然而,无论以其来生成查询指令2710的确切方式如何,都可以使处理器2750操作网络接口2790以将查询指令传输到控制设备2500。还可以使处理器2750操作网络接口2790以接收结果数据2770,所述结果数据2770提供由节点设备2300的至少子集执行查询指令的结果。可以进一步使处理器2750生成结果数据2700的视觉表示,并且然后操作显示器2780以在视觉上呈现视觉表示。替代地,可以使处理器2750将结果数据2700或结果数据中指示的结果的其他表示中继到另一个例程(未示出),以用作对进一步处理的输入。
应该注意,图13A或图13B的分布式处理系统2000的一些实施例可以包括请求设备2700中的多个请求设备。可能的是,图13A或图13B的分布式处理系统2000的实施例在许多机构和/或其人员之中共享,并且因此可以响应于接收到查询指令2710的多个实例而至少部分并行地常规执行多个搜索和/或其他处理任务。如较早前讨论的那样,图13A或图13B的分布式处理系统2000的这样的实施例可以将控制设备2500中的多个控制设备和/或结合的控制器2503中的多个控制器结合到节点设备2300中的多个节点设备中,以更高效地接收查询指令2710的这样的多个实例,并且作为响应,更高效地控制搜索和/或其他处理任务的执行。
图14A描绘了在节点设备2300中的多个节点设备之中的数据集2230的分发的示例实施例的各种方面。如所描绘的那样,每个节点设备2300可以存储数据集的一个或多个完整超级单元2233。更具体地,并且如在多个节点设备2300a到2300x之中描绘的那样,节点设备2300a可以配备有至少一个完整超级单元2233a,节点设备2300b可以配备有至少一个完整超级单元2233b,以此类推到节点设备2300x,所述节点设备2300x可以配备有至少一个完整超级单元2233x。将超级单元2233用作节点设备2300之中的数据集2230的分布的原子单位(atomic unit)的这样的使用可以被认为是必要的,以避免其中可能需要在两个或更多个节点设备2300之中共享对应于超级单元2233的超级单元索引2430的情况,使得可能需要招致在两个或更多个节点设备2300之中共享对这样的单元索引2430的单个副本的访问或者反复地同步其多个副本的各种复杂性。
在一些实施例中,数据集2230以其被划分为超级单元2233的方式可以基于对生成具有相对相似大小的所有的超级单元2233的要求,作为用于在节点设备2300之中相对均匀地分配由数据集2230对存储设备、处理和/或其他资源的使用的努力的部分。替代地或附加地,数据集2230以其被划分为超级单元2233的方式可以反映基于对数据集2230的数据记录2133的各种子集的需要或要求的数据集2230的数据值的划分,所述数据集2230的数据记录2133的各种子集要一起被维护在单个节点设备2300内,以使能对其执行各种操作。作为基于数据值的特性、而不是基于对生成类似大小的超级单元2233的要求划分数据集2230的结果,可以生成大小变化很大的超级单元2233,包括在节点设备2300中的一个或多个的更快的易失性存储器(例如,随机存取存储器)内可能不可存储的一个或多个超级单元2233。然而,如对本领域技术人员而言将是熟知的那样,只要被提供给节点设备2300和/或在节点设备2300内生成的超级单元2233能够以其整体被存储在节点设备的较慢的非易失性存储设备(例如,硬盘驱动器)内,那么可以采用多种虚拟存储器算法中的任何算法来导致在节点设备2300的易失性和非易失性存储设备之间交换这样的超级单元2233的部分,作为用于克服这样的限制的方式。
还如所描绘的那样,在被存储在节点设备2300a到2300x中的对应的节点设备内时,超级单元2233a到2233x中的每个超级单元可以伴随有超级单元索引2430a到2430x中的其对应的超级单元索引。因此,超级单元2233a到2233x中的一个的每个数据单元2130可以伴随有对应的单元索引2330。如先前所讨论的,这可能是由于在一些实施例中数据集2230实际上包括数据集索引2530。
图14B描绘了当数据集2230和数据集索引2530由一个或多个数据设备2100存储在一起作为数据文件2110时的组织的其他方面。如对本领域技术人员而言所熟知的那样,数据文件2110的头部可以以文件头部2111开始,所述文件头部2111可以包含如可能由通过一个或多个数据设备2100采用以存储和维护文件的文件系统所需要的关于数据文件2110的各种信息。在文件头部2111之后可以是文件数据净荷2113,其中,根据由一个或多个数据设备2100所采用的文件系统的各种要求,可以是其中包含数据文件的数据的数据文件2110的部分。如所描绘的那样,数据集2230的超级单元2233可以被散布在具有对应的超级单元索引2430和单元索引2330的数据文件2110的文件数据净荷2113内。更具体地,从朝文件数据净荷2113的头部开始,形成超级单元2233的一个或多个数据单元2130可以按顺序次序彼此相邻定位,之后是超级单元2233的超级单元索引2430。然后超级单元索引2430之后可以是对应于一个或多个数据单元2130的一个或多个单元索引2330,所述一个或多个单元索引2330可以彼此相邻并且以镜像对应的一个或多个数据单元2130的顺序次序的顺序次序定位。超级单元2233的数据单元2130、对应的超级单元索引2430和对应的单元索引2330的该非常相同的排列可以贯穿文件数据净荷2113针对数据集2230的每个超级单元2233重复。
还如所描绘的那样,当包括一个或多个超级单元2233的数据集2230的一部分被分发到节点设备2300中的一个使得节点设备2300存储数据集2230的一部分时,可以依赖于超级单元2233作为原子单位的处理,以使被传输到节点设备2300的每个超级单元2233以如下方式伴随有其对应的超级单元索引2430和对应的一个或多个单元索引2330,所述方式为保持当存储在节点设备2300内时超级单元2233、超级单元索引2430和一个或多个单元索引2330之中的该相同排列。如对本领域技术人员而言将是熟知的那样,每个超级单元2233可以以其被传输到节点设备2300的方式可能需要向节点设备2300提供指向数据文件2110的文件数据净荷2113内的超级单元2233的位置的指针以及要传送的数据的量的指示,所述要传送的数据可以包括超级单元2233连同对应的超级单元索引2430和对应的一个或多个单元索引2330。
在被存储在节点设备2300的存储设备2360内时,可以在其中以其来访问每个超级单元2233的数据的方式仍然可以基于指向超级单元2233的头部的指针的使用,连同对超级单元2233内的位置的一个或多个偏移,超级单元2233的每个数据单元2130可以在所述位置处开始。用于在由这样的指针指向的位置处开始的每个超级单元2233的数据单元2130的以及与位于数据单元2130之后的对应的超级单元索引2430和对应的一个或多个单元索引2330排列,可以呈现与在节点设备2300内执行的例程兼容的排列,所述例程可能完全尚未被写入以利用数据集索引2530。因此,尽管对应的超级单元索引2430和对应的一个或多个单元索引2330也可以存在于存储设备2360内,使得也可以使用离相同指针的偏移来访问对应的超级单元索引2430和对应的一个或多个单元索引2330,但是这样的例程可能根本不会利用这样的偏移来访问这些索引。可能的是,这样的例程(其可以是多种类型中的任何类型的例程)在较早的时间被写入,所述较早的时间早于包括数据集索引2530与数据集2230的实施。替代地或附加地,这样的例程可以包括多种数据处理实用程序中的任何数据处理实用程序,包括但不限于数据存档实用程序、数据求和与和报告实用程序和/或可以常规地访问数据集2230的整体的多种其他实用程序中的任何实用程序,使得使用数据集索引2530可能是多余的。对于这样的例程,将在该位置处开始、并且在没有其他类型的信息在数据单元2130之间插入的情况下继续的超级单元2233的数据单元2130的这样的分组在一起可以减少虚拟存储器管理系统的存储器页面交换和/或其他形式的颠簸(thrashing)。因此,在与超级单元2233相关联的指针指向其的存储设备2360内的位置处开始的以顺序次序的数据单元2130的定位可以准确地提供超级单元2233的数据的组织,在写入这样的例程时预期遇到这样的例程,从而允许这样的例程以其被设计成以其来这样做的方式成功地利用超级单元2233的数据,并且不受对应的超级单元索引2430和对应的一个或多个单元索引2330的存在的干扰。
图14C描绘了单个数据单元2130内的数据值的组织的示例实施例的各种方面,以及单个数据单元2130内的数据值可以以其在对应于单个单元索引2130的单个单元索引2330内被索引的方式的各种方面。如已经讨论的那样,并且如所描绘的那样,单个数据单元2130内的数据值可以被组织以形成多个数据记录2133,并且每个数据记录2133可以被分配唯一的记录标识符2132,诸如描述升序整数值的序列。此外,所描绘的单个数据单元2130内以及贯穿数据集2230的整体的数据记录2133中的每个可以包括相同数量的数据字段2134,在所述数据字段2134中可以存储数据值,数据字段2134中的每个可以被分配字段标签2136,所述字段标签2136在数据集2230的整体内也是相同的。因此,尽管数据单元2130内的数据值实际上可能没有以在节点设备2300的存储设备2360中形成二维阵列的方式来排列,但是记录标识符2132和字段标签2136的分配可以使得能够以非常类似于二维阵列的方式来访问数据单元2130的数据记录2133内的数据值。然而,应该注意,尽管贯穿数据集2230的整体的每个数据记录2133可以包括相同的数据字段2134的集合,但是在数据集2230的每个数据单元2130内仍然可以存在不同数量的数据记录2133。
还如所描绘的那样,并且如将更详细地解释的那样,数据单元2130内的数据记录2133的数据字段2134的子集可以在对应于数据单元2130的单元索引2330内被索引。设想的是,仅数据字段2134的子集将被采用作为针对满足搜索标准的一个或多个数据记录2133的数据集2230的搜索中的搜索标准的基础。因此,对于可以在这样的搜索中如此采用的每个数据字段2134,单元索引2330可以包括至少唯一值索引2334,并且可以附加地包括一个或多个重复值索引2337。如将更详细地解释的那样,对应于特定数据字段2134的唯一值索引2334可以包括每个数据记录2133的记录标识符2132,其中存在特定数据字段2134的唯一数据值。此外,对应于特定数据字段2134的任何重复值索引2337(如果对于特定数据字段2134存在任何重复值索引2337)可以包括每个数据记录2133的(一个或多个)记录标识符2132,其中存在特定字段2134的唯一数据值中的一个的重复。因此,在特定数据字段2134的数据值具有这样高基数使得每个数据值是唯一的情况下,那么单元索引2330将不包括特定数据字段2134的任何重复值索引。
图15A图示了对存储在节点设备2300中的一个内的数据集2230的一部分执行组装、索引、搜索、访问和/或执行处理操作的组合的示例。更具体地,图15A图示了可以在图13A或13B中的任一个的分布式处理系统2000的实施例内以其来协作地执行例程2340和2540的方式的方面,以生成和/或接收数据集2230和对应的数据集索引2530,并使用数据集索引2530来提高可以以其来以查询指令2710中指示的方式搜索和使用数据集2230的效率。
如对本领域技术人员而言可认识的那样,控制例程2340和2540中的每个(包括每个控制例程可以由其组成的部件)被选择为在无论什么类型的一个或多个处理器上是可操作的,所述一个或多个处理器被选择为实现处理器2350和/或2550中的适用的处理器。在各种实施例中,这些例程中的每个可以包括操作系统、设备驱动程序和/或应用级例程中的一个或多个(例如,在盘介质上提供的所谓的“软件套件”、从远程服务器获得的“小程序”等)。在包括操作系统的情况下,操作系统可以是适用于由处理器2350和/或2550执行的多种可用操作系统中的任何操作系统。在包括一个或多个设备驱动程序的情况下,那些设备驱动程序可以提供对多种其他部件(无论是节点设备2300、控制设备2500和/或控制器2503的硬件还是软件部件)中的任何部件的支持。
如图15B中所描绘的那样,处理器2350和/或2550可以分别包括多个处理器核2355和/或2555,和/或可以支持跨多个执行线程并行执行多个进程的其他机制。如已经讨论的那样,除了在设备之间使用并行性或代替在设备之间使用并行性,节点设备2300的处理器2350和/或控制设备2500或控制器2503的处理器2550的各种操作的执行可能需要在每个这样的设备内使用至少一定程度的并行性,以提高速度和/或效率。因此,在控制例程2540的部件2545和/或控制例程2340的部件2342、2343、2345、2346和2347中的一个或多个的执行期间,对每个单元索引2330、每个数据单元2130、每个超级单元索引2430和/或每个超级单元2233执行的操作可以各自在单独的进程中被如此执行,所述进程被分布在由处理器2350和/或2550如此支持的可用的多个执行线程之中。
返回到图15A,如也已经讨论的那样,控制设备2500或控制器2503可以协调一个或多个数据设备2100和节点设备2300之间的数据集2230和/或数据集索引2530的交换的方面,包括数据集2230(并且相应地,数据集索引2530)可以以其在节点设备2300中的多个节点设备之中分发的方式。如所描绘的那样,由每个节点设备2300的处理器2350执行的控制例程2340可以包括状态部件2349,以使每个节点设备2300的处理器2350操作其对应的网络接口2390以反复地将节点设备2300的当前状态的指示传输到控制设备2500或控制器2503。还如所描绘的那样,由控制设备2500或控制器2503的处理器2550执行的控制例程2540可以包括协调部件2549,以使处理器2550接收节点状态的这样的反复地传输的指示并且用那些接收到的指示反复地更新存储在控制设备2500或控制器2503内的节点数据2539。
基于节点数据2539内维护的节点状态的这样的反复更新的指示,可以由协调部件2549使处理器2550控制节点设备2300之中的数据集2230和数据集索引2530的对应部分的分发,以平衡由节点设备2300中的每个提供的网络、存储设备、处理和/或其他资源的利用。替代地或附加地,可以使处理器2550基于多种算法中的任何算法来控制这样的分发,通过所述算法,数据集2230的部分(并且相应地,数据集索引2530的部分)可以被分发以提供预定程度的冗余,以避免否则可能由于影响节点设备2300中的一个或多个的故障而引起的数据的丢失。在通过将数据集2230的整体连同数据集索引2530的对应部分从一个或多个数据设备2100并且传递到节点设备2300来进行这样的分发的情况下,可以使处理器2550在通过网络2999的至少部分并行的传递操作的集合中协调数据集2230的每个部分连同数据集索引2530的对应部分到每个对应节点设备2300的传递。
然而,如也已经讨论的那样,可能的是,在其他实施例中,由节点设备2300组装数据集2230,并且可以相应地由节点设备2300生成数据集索引2530。在这样的其他实施例中,可以由协调部件2549使处理器2550确定节点设备2300中的哪个或哪些将从每个数据设备2100接收数据值和/或数据值的(一个或多个)流。再次,这样的确定可以基于节点数据2539内维持的节点状态的反复地更新的指示,和/或基于多种算法中的任何算法,通过所述算法将提供预定程度的冗余以避免数据的丢失。如所描绘的那样,由每个节点设备2300的处理器2350执行的控制例程2340可以包括收集部件2341,以使每个节点设备2300的处理器2350操作其对应的网络接口2390以反复地从一个或多个数据设备2100接收数据值和/或数据值的流,并且组装数据集2230的一个或多个超级单元2233。图16A和16B各自更详细地描绘了数据值和/或数据值的(一个或多个)流的这样的接收和组装的方面。图16A描绘了组装包括整数数据值的数据集2230的示例部分的方面,并且图16B描绘了组装包括可变长度字符串的数据集2230的示例部分的方面。
转到图16A,在执行控制例程2340时,可以由收集部件2341使节点设备2300的处理器2350根据接收的数据值组装示例超级单元2233的示例数据单元2130。如所描绘的那样,所接收的数据值可以包括填充与存在于示例数据单元2130的数据记录2133中的每个中的“Job_ID(工作_ID)”的字段标签2136相关联的数据字段2134的整数值。还如所描绘的那样,示例数据单元2130的数据记录2133中的每个可以被分配记录标识符2132,通过该记录标识符2132,至少在示例数据单元2130内,能够唯一地识别描绘的数据记录2133中的每个。如所描绘的那样,如此分配的记录标识符是正整数的升序序列。然而,应该注意,可以使用多种类型中的任何类型的记录标识符。
应该注意的是,图16A和16B各自呈现数据集2230的超级单元2233内的单个数据单元2130的故意简化示例,作为用于讨论和理解的视觉辅助。设想的是,真实数据集2230将包括许多超级单元2233,每个超级单元2233将包括许多数据单元2130,每个数据单元2130将包括许多数据记录2133,每个数据记录2133将包括许多数据字段2134。因此,图16A和16B中呈现的故意简化的示例不应被视为限制的,图16A和16B中的一个贯穿本申请的其他附图使用。
在组装所描绘的示例超级单元2233的示例数据单元2130时,可以由收集部件2341使处理器2350从规则数据2510检索用于这样的组装的一个或多个规则。在一些实施例中,规则数据2510可以由控制设备2500或控制器2503在节点设备2300之中分发。在这样的规则之中,可以是要在每个数据记录2133中包括什么数据字段2134、每个数据字段2134的字段标签2136和数据类型是什么、和/或要使用什么排序顺序的记录标识符2132的规范。替代地或附加地,在这样的规则中,可以是要组装的每个数据单元2130和/或每个超级单元2233的最小和/或最大大小的规范、要包括在每个数据单元2130内的数据记录2133的最小和/或最大数量的规范、和/或要包括在每个超级单元2233内的数据单元2130的最小和/或最大数量的规范。用于生成数据单元2130和/或超级单元2233的这样的参数可以基于多种因素中的任何因素,所述因素与网络、存储设备、处理和/或由节点设备2300提供的其他资源的限制、和/或与可以由节点设备2300在数据集2230的生成之后将数据集2230传输到其的其他设备相关联的这样的限制相关联。在一些实施例中,可以基于对分布式处理系统2000的性能(例如,诸如如用于执行各种操作的时间、资源的利用、效率、数据吞吐量、处理查询的速率等的度量)的反复分析,在重复的基础上修改这样的参数,所述分析包括由节点设备2300、控制设备2500(或控制器2503)和/或网络2999提供的各种资源的效率的分析。
还如所描绘的那样,在一些实施例中,收集部件2341可以包括压缩引擎,并且可以由此使处理器2350压缩在节点设备2300内生成的每个数据单元2130。在这样做时,可以使处理器2350从规则数据2510检索一个或多个数据压缩规则。在这样的规则中,可以是要使用什么类型的压缩算法和/或用于其的参数的规范。
转到图16B中,单个数据单元2130的替代故意简化示例被呈现为视觉辅助,以图示可以以其来存储数据字段2134的数据值的示例间接方式。更具体地,与所描绘的示例数据字段2134相关联的数据的数据类型是可变长度字符串。归因于可变长度,每个数据值的数据大小(即,可以由每个数据值占用的字节、字、双字、四字等的数量)可能是完全不可预测的,和/或当对数据值中的一个或多个做出改变时,每个数据值的数据大小可以随时间改变。如所描绘的那样,在用于解决这样的问题的一种方法中,这样的可变长度数据值中的每个可以被单独地组装在一起,以形成其字符的数据值向量2135。在这些可变长度字符串否则可能被存储在其中的数据记录2133的数据字段2134中,代之以可以存在预选固定数据大小的一对整数值,其中一个这样的整数值指定离数据值向量2135的起点的偏移,可变长度字符串的对应的一个可变长度字符串在所述起点处开始,并且另一个这样的整数值指定可变长度字符串的对应的一个可变长度字符串的长度。
返回到图15A,无论数据集2230的数据单元2130和超级单元2233是在节点设备2300内被组装,还是作为完整数据集2230被提供给节点设备2300,都可以使节点设备2300生成和/或重复对应数据集索引2530的单元索引2330和超级单元索引2430的生成。换句话说,在数据集2230在节点设备2300中的多个节点设备之中被生成,使得数据集2230使得还不存在对应的数据集索引2530的情况下,生成数据集2230的一部分的多个节点设备2300的每个节点设备2300也可以生成数据集索引2530的对应部分。此外,在数据集2230作为已经完整的数据集被提供给节点设备2300中的多个节点设备但没有对应的数据集索引2530的情况下,被提供有已经完整的数据集2230的一部分的多个节点设备2300的每个节点设备2300然后可以生成数据集索引2530的对应部分。替代地,在数据集2230作为已经完整的数据集并且与对应的数据集索引2530一起被提供给节点设备2300中的多个节点设备的情况下,可能的是,没有节点设备2300需要生成对应的数据集索引2530。然而,无论数据集2230和数据集索引2530是各自由节点设备2300生成,还是各自被提供给节点设备2300,如果添加、删除或以其他方式变更数据集2230内的数据值,那么可以使节点设备2300中的一个或多个重复生成数据集索引2530的至少一部分。
如所描绘的那样,由每个节点设备2300的处理器2350执行的控制例程2340可以包括排序部件2342,以使每个节点设备2300的处理器2350检索一个或多个指定数据字段2134的数据值和对所述一个或多个指定数据字段2134的数据值排序;以及索引部件2343,以使每个节点设备2300的处理器2350基于那些数据值来生成单元索引2330和(一个或多个)超级单元索引2430。图17A-C一起更详细地描绘了数据集索引2530的一部分的这样的生成的方面。具体地,图17A描绘了数据字段2134的数据值的检索和排序以识别唯一值及其重复的方面,图17B描绘了从这样的检索和排序的数据值生成单元索引2330的唯一和重复值索引的方面,并且图17C描绘了将最高和最低数据值的指示添加到单元索引2330和超级单元索引2430的方面。
转到图17A,在执行控制例程2340以开始生成或重复生成数据集索引2530的一部分时,可以由排序部件2342使节点设备2300的处理器2350从规则数据2510检索什么数据字段2134在要为其创建索引的数据字段2134的子集内的指示。设想的是数据字段2134的相对小的子集的数据值实际上可以被用于可以在查询指令2710的实例中指定的搜索数据的搜索标准中。确切地哪些数据字段2134可能被如此使用可以基于因素的组合,包括但不限于数据集2230内的数据的性质和/或针对其创建数据集2230的目的。因此,设想的是,通过观察在随时间接收的查询指令2710的实例中指定的搜索标准中使用什么数据字段2134,可以客观地做出哪些数据字段2134要被包括在要为其生成索引的数据字段2134的子集中的确定。因此,在一些实施例中,可以使每个节点设备2300的处理器2350从规则数据2510检索什么数据字段2134要被包括在子集中的明确指示,并且这样的明确指示可以基于可以由控制设备2500或控制器2503执行的对过去的查询的过去的分析。替代地或附加地,可以使每个节点设备2300的处理器2350检索一个或多个规则(例如,统计分析规则和/或启发式算法),用于由处理器2350在对查询指令2710的所接收的实例执行其自己的分析时使用,以确定数据字段2134的子集在过去的指定时间的间隔内应该是什么。
无论要为其生成索引的数据字段2134的子集以其来确定的确切方式如何,可以由排序部件2342使每个节点设备2300的处理器2350开始或重复生成被存储在节点设备内的每个超级单元2233的每个数据单元2130的单元索引2330和(一个或多个)超级单元索引2430。如前面所讨论的那样,作为用于提高这样的生成或重复生成索引的速度和/或效率的措施,处理器2350可以被选择为是能够支持多个执行线程的类型(例如,包括多个处理器核2355),并且每个单元索引2330和/或每个超级单元索引2430的生成可以作为单独的进程来执行,其中单独的进程被分布在由处理器2350支持的多个执行线程之中。
在用于生成或重复生成单元索引2330帧的一个的每个这样的进程内,可以使处理器2350从对应于单元索引2330的数据单元2130的每个数据记录2133内检索存在于数据字段2134的子集的每个数据字段2134内的数据值。作为用于提高用于生成或重复生成单元索引2330的每个进程内的速度和/或效率的另一措施,可以使处理器2350通过对应数据单元2130内的数据记录2133在单个读取遍次中检索数据字段2134的子集的所有的数据字段2134内的数据值。对于数据字段2134的子集的每个数据字段2134,可以使用各种方法对在对应的数据单元2130内跨数据记录2133从其检索的数据值进行排序,以及区分其唯一值和重复值。虽然图17A描绘了使用二叉树(具体地,所描绘的唯一值排序树2314)作为一种方法,但是可以使用其他方法,包括但不限于多级跳过列表。
应该注意,图17A呈现了图16A中首次介绍的简化示例数据单元的单个数据字段2134的数据值的索引的故意简化示例,作为对讨论和理解的视觉辅助。再次,设想的是,真实数据集2230的真实数据单元2130将包括许多数据记录2133,每个数据记录2133将包括许多数据字段2134,其中的多个数据字段将被索引。因此,图17A中呈现的并且以图17B和17C继续的索引的故意简化示例不应被视为限制的。
以图17A继续,所描绘的唯一值排序树2314是从唯一数据值组装的,在检索那些值时,所述唯一数据值被识别为存在于单个示例数据字段2134中,而所描绘的重复值表2317是从被识别为存在的唯一数据值中的任何唯一数据值的任何重复组装的。更具体地,当从所描绘的数据单元2130的数据记录2133(以分配了记录标识符“0”的数据记录2133开始)检索存在于单个示例数据字段2134内的每个数据值时,将检索的数据值与可能已经存在于唯一值排序树2314内的数据值进行比较,以确定检索的数据值是否已经包括在唯一值排序树2314内。如果检索的数据值尚未被包括在唯一值排序树2314中,那么在已经第一次遇到检索到的数据值的意义上,所述数据值被认为是“唯一值”,并且检索到的数据值连同从其检索到数据值的数据记录2133的记录标识符2132被添加到唯一值排序树2314。
然而,如果检索到的数据值已经被包括在唯一值排序树2314中,那么在这不是第一次已经遇到检索到的数据值的意义上,所述数据值被认为是“重复值”,并且向重复值表2317添加已经检索到唯一值中的一个的重复连同从其检索到所述数据值的数据记录2133的记录标识符2132的指示。如所描绘的那样,重复值表2317可以由其中唯一值被识别为存在的数据记录2133的记录标识符2132索引,并且对于与唯一值相关联的每个这样的记录标识符2132,可以存在该唯一值的重复(如果有的话)的计数,以及其中该唯一值的重复已经被识别为存在(再次,如果有的话)的任何数据记录2133的(一个或多个)记录标识符的列表。再次,由于所描绘的示例数据单元2130的故意简化的性质,针对唯一值中的两个中的每个描绘了仅单个重复。然而,设想的是,在真实数据单元2130中,可能存在多个唯一值,每个唯一值可以具有多个重复,使得重复值表2317中的许多重复的计数对于那些唯一值而言将更高,并且使得对于重复值表2317中的那些唯一值中的每个,将存在许多记录标识符2132,以识别多个数据记录2133,其中对于那些唯一值中的每个,重复值被识别为存在。应当注意,尽管数据表的特定配置被描绘和描述为重复值表2317的示例实现,但是数据表的其他配置和/或完全不同的数据结构可以被用于存储与它们是其重复的唯一值相关、并且与重复值被识别为存在于其中的哪个数据记录(哪些数据记录)2133的指示相关的重复值的指示。此外,作为替代,可以针对每个唯一值生成完全独立的数据结构,对于所述每个唯一值,识别了至少一个重复。更广泛地,可以采用多种数据结构中的任何数据结构和/或其他技术来以针对紧凑存储来优化的形式和/或以针对快速访问来优化的形式存储重复值的这样的指示。
在生成所描绘的唯一值排序树2314和所描绘的重复值表2317时,可以使处理器2350从规则数据2510检索用于数据值的排序的各种规则。这样的检索的规则可以针对多个数据类型中的每个指定排序数据值的特定形式,包括但不限于,针对整数和/或浮点值的数字排序规则(例如,升序或降序数字次序)、针对文本的固定长度和/或可变长度字符串的文本字符排序规则(例如,字母排序、字母排序的一个或多个例外、针对不同方言(dialect)和/或语言的其他变型的排序等),和/或针对音频和/或视觉数据的排序规则(例如,按颜色、像素分辨率、声音频率、音量等排序)。这样的规则还可以指定生成唯一值排序树2314的二叉树结构的方面。替代地或附加地,在使用除二叉树之外的方法来对数据值排序和/或区分唯一值和重复值(例如,多层跳过列表)的情况下,这样的规则还可以指定使用这样的另一种方法的方面。
还如所描绘的那样,在一些实施例中,排序部件2342可以包括解压缩引擎,并且由此可以使处理器2350在其中数据单元2130被较早压缩的情况下对数据单元2130进行解压缩,作为被(例如,通过如较早讨论的可以包括压缩引擎的收集部件2341)生成的部分。在这样做时,可以使处理器2350从规则数据2510检索一个或多个数据解压缩规则。在这样的规则之中,可以是要使用什么类型的解压缩算法和/或其参数的规范。
转到图17B,在执行控制例程2340以继续生成或重复生成数据集索引2530的一部分时,可以由索引部件2343使节点设备2300的处理器2350采用唯一值排序树2314和/或重复值表2317(或者对其的替代,如已经描述的那样)以生成对应于数据单元2130的单元索引2330。更具体地,出于说明的目的,描绘了基于唯一值排序树2314和从图17A的示例数据单元2130生成的重复值表2317生成示例单元索引2330。
可以由索引部件2343使处理器2350执行唯一值排序树2314(其再次采用二叉树结构)的有序遍历,以至少检索数据记录2133的记录标识符2132,其中对于单个数据字段2134,每个唯一值被识别为存在,并且以对应于唯一值在唯一值排序树2314中被排序成其的次序的次序。然后,在单元索引2330内,可以使处理器2350生成针对单个数据记录2134的唯一值的唯一值索引2334,其可以包括唯一值的计数和/或检索的记录标识符2132,所述记录标识符2132以对应于唯一值在唯一值排序树2314中被排序成其的次序的次序排列。如所描绘的那样,在一些实施例中,在执行唯一值排序树2314的有序遍历时,处理器2350还可以检索唯一值本身,并且还以它们在唯一值排序树2314中被排序成其的次序来检索。处理器2350然后可以生成唯一值向量2335并将其添加到唯一值索引2334,其中唯一值以它们在唯一值排序树2314中被排序成其的次序排列,使得使唯一值索引2334将唯一值中的每个与其中每个被识别为存在的数据记录2133的记录标识符2132相关。
因此,当完全生成时,唯一值索引2334至少提供跨单个数据单元2130的数据记录2133的单个数据字段2134内存在的数据值之中找到多少唯一值的计数,和/或数据记录2133的记录标识符2132,其中唯一值中的每个被识别为以唯一值在唯一值排序树2314中被排序成其的次序存在。此外,唯一值索引2334可以附加地也以唯一值在唯一值排序树2314中被排序成其的次序提供唯一值本身的唯一值向量2335,从而允许每个唯一值与数据记录2133的记录标识符2132相关,其中唯一值被识别为存在。
可以由索引部件2343使处理器2350解析整个重复值表2317,以检索针对其也识别了至少一个重复的每个唯一值的记录标识符2132,以及其中至少一个重复被识别为存在的一个或多个数据记录的(一个或多个)记录标识符2132。然后,在单元索引2330内,并且对于针对其也识别了至少一个重复的每个唯一值,可以使处理器2350生成单独的重复值索引2337。在每个这样的重复值索引2337内,处理器2350可以包括其中唯一值中的一个被识别为存在的数据记录2133的记录标识符2132、唯一值的多少重复被识别的计数、以及其中唯一值的重复被识别为存在的一个或多个数据记录2133的(一个或多个)记录标识符。
因此,当完全生成时,每个重复值索引2337通过记录标识符2132、唯一值的重复的数量的计数、以及其中唯一值的每个重复被识别为存在的数据记录2133的记录标识符2132来识别重复值索引2337对应于其的唯一值。在其中唯一值索引2334包括唯一值向量2335的实施例中,其中唯一值被识别为存在的数据记录的记录标识符2132可以与唯一值索引2334一起使用以识别唯一值本身。
转到图17C,在继续执行控制例程2340以继续生成或重复生成数据集索引2530的一部分时,可以由索引部件2343使节点设备2300的处理器2350附加地采用唯一值排序树2314以识别针对单元索引2130内的单个数据字段2134识别的最高和最低唯一值。然后,处理器2350可以向单元索引2330添加单个数据字段2134的字段值范围2338的指示,其中,使用所识别的最低和最高数据值来指示被识别为存在于单个数据字段2134内的数据值的范围。
如先前所讨论的那样,可以使节点设备内的每个单元索引2330和每个超级单元索引2430的生成在单独的进程内被执行,其中这样的进程分布在由处理器2350支持的多个执行线程中。然而,实例化用于生成超级单元索引2430的每个这样的进程可以依赖于被包括在超级单元2233中的对应于超级单元索引2430的所有的数据单元2130的单元索引2330的生成。更具体地,在一些实施例中,每个超级单元索引2430可以包括在对应的单元索引2330中的每个内生成的字段值范围2338的副本,使得超级单元索引2430无法被完成,直到至少字段值范围2338已经在对应的单元索引2330中的每个内被生成。替代地,在其他实施例中,每个超级单元索引2430可以包括超级单元字段值范围2438,所述超级单元字段值范围2438指定跨超级单元索引2430对应于其的超级单元2233的所有的数据单元2130的数据记录2133被识别为存在于单个数据字段2134内的最高值和最低值。在这样的其他实施例中,可以从对应的单元索引2330中的每个的字段值范围2338生成超级单元字段值范围2438,使得超级单元索引2430再次无法被完成,直到至少字段值范围2338已经在对应的单元索引2330中的每个内被生成。
在其中超级单元索引2430将包括数据字段2134的超级单元字段值范围2438的实施例中,由来自每个对应单元索引2330的该数据字段2134的字段值范围2338指示的最高和最低数据值可以被添加到可以被用于对这样的值进行排序的数据结构,诸如另一个二叉树。此外,用于对这样的值进行排序的其他方法包括但不限于另一个多层跳过列表。在对这样的值进行这样的排序之后,排序值的最低和最高值可以由处理器2350识别并且用于生成超级单元字段值范围2438,其使用那些最高和最低数据值来指定跨对应超级单元2233内的所有数据单元2130的数据值的范围。
转到图18,呈现了从单个数据单元2130的另一个故意简化的示例的数据记录2133的单个数据字段2134的数据值生成索引的替代示例,以图示其中存在用于对数据值排序的多于一个规则的示例。所描绘的是图16B的简化数据单元2130的替代变型,其中,为了描绘的简单,字符串被直接存储在单个数据字段2134中,而不是存储在数据值向量2135内。还如所描绘的那样,代替单个唯一值排序树2314根据用于对这样的单个唯一值排序树2314的数据值进行排序的一个或多个规则从数据值来生成,一对唯一值排序树2314a和2314b被描绘为根据指定用于对数据值排序的两种不同的方法的不同规则来生成。这样的规则可以包括使用正则表达式和/或灵活地识别、解析和/或匹配字符串内的字符的模式以选择一个或多个其他规则以实现排序的其他手段。在该描绘的示例中,用于解析和排序数据值的两个不同规则或规则的集合基于名称姓名的字母排序中的差异,其中唯一值排序树2314a中存在按名字(即,按家族的个体成员的姓名)排序,以及在唯一值排序树2314b中按姓(即,按姓氏)排序。然而,用于对数据值排序的多种不同方法的这样的实例可以在多种上下文中的任何上下文中发生,其中基于这样的因素的排序中可能存在差异,包括但不限于姓名的排序中的不同文化规范(即,语言核对中的差异)、字母排序的相似字符中的语言之间的差异、跨不同文化和/或技术领域的数学等式的排序部分中的差异(即在两个行业之间或在行业与学术界之间的实施之间的差异)等。
尽管没有具体描绘,但是两个示例唯一值排序树中的每个可以用作用于生成对应的单独唯一值索引的基础。然而,单独的唯一值排序树2314a和2314b二者都可以伴随有单个共享重复值表,因为用于排序的规则中的差异将不影响任何重复值的识别和索引的生成。结果,可以生成一个或多个重复值索引的单个共享集合。
图19A-C一起更详细地描绘了从单个数据单元2130的另一个故意简化的示例的数据记录2133的单个数据字段2134的数据值生成索引的另一替代示例。描绘的是简化的数据单元2130,其中存储了可变长度字符串的另一个示例。图16B和图18的简化示例是关于名称,而图19A-C的简化示例是关于web页面的通用资源定位符(URL)。类似于图18的示例,为了描绘的简单,字符串被直接存储在单个数据字段2134中,而不是被存储在数据值向量2135中。然而,设想的是,在包括字符串(特别是长和/或可变长度字符串)的实际数据值的情况下,如图16B中所描绘的这样的间接存储可以被认为是期望的。而图19A提供了该简化数据单元2130的描绘,图19B和19C描绘了生成对应的单元索引2330和从其生成超级单元索引2430的各种方面。
转到图19B,以类似于在图17B和17C中描绘事物的方式,对应的单元索引2330已经被生成以包括唯一值索引2334和字段值范围2338。为了呈现的简单,已经省略了对数据值排序和区分唯一数据值与重复数据值的中间步骤的描绘,因为这样的步骤可以基本上类似于较早参考图17A描述的事物。同样为了呈现的简单,没有描绘重复值索引2337。
与图17B的较早示例中描绘的事物一个不同,已经用散列值向量2336替换唯一值向量2335,其中从唯一值生成的散列以如下次序来排列,所述次序基于将散列值排序成数字次序(例如,二进制、十进制、十六进制等的升序,值)而不是基于将已经使用二叉树或其他方法将数据值之中的唯一值排序成其的次序。如所描绘的那样,索引部件2343可以包括散列引擎,以从图19A中所描绘的单个数据字段2134内识别的数据值之中的每个唯一值生成散列值。
在一些实施例中,散列值的生成可以通过数据值具有可变长度和/或否则具有大数据大小的事实来提示,而由此生成的散列值能够被定义为具有预选的和相对小的数据大小,从而使得散列值更适合用于在生成更紧凑形式的向量(诸如散列值向量2336)时使用。然而,如对本领域技术人员而言将是熟知的那样,在从数据值生成散列值时,散列值之中存在冲突的可能性,其中可能存在其中散列值中的两个或更多个是相同的一个或多个实例,尽管已经从可能是也可能具有相当不同的长度的相当不同的数据值的事物生成散列值。在认识到这一点时,重复散列值可以不被包括在散列值向量2336中,使得散列值向量2336中的散列值的数量可以小于唯一数据值的数量。在认识到这一点时,并且如所描绘的那样,唯一值索引2334可以包括唯一值和散列值的单独计数。此外,由于计数中的这样的差异,以及由于散列值与唯一值被不同地排序的事实,散列值向量2334内的散列值不能与数据记录2133的记录标识符2132相关,其中唯一值中的每个被识别为存在于单个数据字段2134内,不同于图17B的示例中的唯一值向量2335内的唯一值。代之以,如将更详细地解释的那样,散列值向量2336的主要值可以作为在确定对应的数据单元2130是否包括满足在查询指令2710的实例中指定的搜索标准的数据记录2133时的辅助。
如图19B中进一步描绘的那样,单元索引2330可以附加地包括字段散列值范围2339,其中用如此生成的最高和最低散列值来指定从唯一值生成的散列值的范围。转到图19C,类似于在图17C中描绘的事物,对应于包括图17A的示例数据单元2130的超级单元2233的超级单元索引2430可以包括来自对应的单元索引2330中的每个的字段值范围2338或超级单元字段值范围2438。然而,也如图19C中所描绘的那样,超级单元索引2430可以附加地包括来自对应单元索引2330中的每个的字段散列值范围2339或者超级单元字段散列值范围2439,所述超级单元字段散列值范围2439可以以非常类似于从这样的字段值范围2338导出超级单元字段值范围2438的方式从这样的字段散列值范围2339导出。如将更详细地解释的那样,超级单元字段散列值范围2439和/或字段散列值范围2339可以被用于识别候选超级单元2233和/或候选数据单元2130中,在所述候选超级单元2233和/或候选数据单元2130中可能存在满足查询指令2710的实例中指定的搜索标准的一个或多个数据记录2130。
返回到图15A,其中在多个节点设备2300中的每个内生成的单元索引2330和(一个或多个)超级单元索引2430分别对应于存储在那些多个节点设备2300中的每个内的数据单元2130和(一个或多个)超级单元2233,完整的数据集索引2530现在存在并且连同数据集2230被分布在那些多个节点设备2300之中,从而使能数据集2230内的数据的分布式搜索和访问。如稍后将更详细地解释的那样,在一些实施例中,控制设备2500或控制器2503(连同节点设备2300)可以参与使用数据集索引2530来识别候选超级单元2233,在所述候选超级单元2233中可能存在满足查询指令2710的实例中指定的搜索标准的数据。在这样的实施例中,已经生成一个或多个超级单元索引2430的节点设备2300中的每个的处理器2350可以操作它们的对应的网络接口2390以将那些生成的超级单元索引2430传输到控制设备2500或控制器2503。然而,在其他实施例中,控制设备2500或控制器2503可以在识别候选超级单元2233中不起作用,并且代之以,这样的功能可以由节点设备2300执行。在这样的其他实施例中,没有超级单元索引2430的这样的传输可能发生。
图20A-F一起描绘了使用分布在多个节点设备2300之中的数据集索引2530的超级单元索引2430和单元索引2330作为执行也分布在多个节点设备2300之中的数据集2230的搜索的部分的示例。具体地,图20A和20B一起描绘了使用搜索标准与数据集索引2530的部分来识别候选超级单元2233和候选数据单元2130的方面,在所述候选超级单元2233和候选数据单元2130中可能存在满足搜索标准的数据记录2133。图20C、20D和20E一起描绘了使用搜索标准与数据集索引2530的其他部分来搜索满足搜索标准的(一个或多个)候选数据单元2130内的数据记录2133的方面。
转到图20A,在执行控制例程2540时,可以由查询部件2545使控制设备2500或控制器2503的处理器2550从请求设备2700接收查询指令2710的实例。如已经讨论的,查询指令2710可以包括要在数据集2230内执行对满足搜索标准的数据的搜索时使用的搜索标准的规范。更具体地,查询指令2710可以阐述作为要求存在于数据记录2133的一个或多个特定数据字段2134中的每个内以使该数据记录2133被认为满足搜索标准的一个或多个特定数据值和/或数据值的范围。更准确地说,对于被包括在搜索标准内的数据字段2134,查询指令2710可以指定数据值的范围,数据记录2133的数据字段2134内的数据值必须落入所述数据值的范围,以使该数据记录2133满足该数据字段的搜索标准。另外,查询指令2710可以指定多个离散数据值,数据记录2133的数据字段2134内的数据值必须与该数据记录2133中的一个匹配,以满足该数据字段的搜索标准。或者作为另一替代方案,查询指令2710可以指定必须与数据记录2133的数据字段2134内的数据值匹配的单个数据值,以使该数据记录2133满足该数据字段的搜索标准。在各种实施例中,查询指令2710可以使用多种脚本语言、数据库语言等中的任何语言来如此指示数据值的这样的范围、这样的大量的离散数据值和/或这样的单个数据值作为包括在搜索标准中的每个数据字段2134的搜索标准。作为示例,在使用SQL数据库语言列出多个离散数据值的情况下,可以使用WHERE IN从句。查询指令2710和/或规则数据2510还可以包括正则表达式和/或灵活地匹配字符串内的模式的其他手段,为了细化索引搜索的目的,所述手段可以被应用于搜索标准中指定的值。
设想的是,在查询指令2710中指定的用于搜索的搜索标准可以经常被指定为针对每个包括的数据字段2134指定的搜索标准的逻辑AND(与)。然而,应该注意,用于搜索的搜索标准可以被指定为针对每个包括的数据字段2134的搜索标准,其使用一个或多个其他逻辑运算符代替逻辑AND来组合或者除了逻辑AND之外还使用一个或多个其他逻辑运算符来组合。作为示例,查询指令2710的实例可以将搜索标准指定为两个数据字段2134的搜索标准的逻辑OR(或),使得如果一个数据字段2134包括与指定数据值匹配或落入该数据字段2134的指定数据值的范围内的数据值,OR如果另一数据字段2134包括与另一指定数据值匹配或落入另一指定数据值的范围内的数据值,则数据记录2133可以被视为满足搜索标准。
在一些实施例中,被提供给控制设备2500或控制器2503的查询指令2710的实例可以简单地被中继到节点设备2300。在这样的实施例中,控制设备2500或控制器2503的处理器2550可能不做出节点设备2300中的哪些节点设备将被提供查询指令2710、和/或哪些节点设备将不被如此提供的任何确定,使得每个节点设备2300的处理、存储设备、网络和/或其他资源可以被用于搜索满足搜索标准的数据记录2133中。
然而,如已经讨论的那样,在一些实施例中,数据集2230和对应的数据集索引2530可以以其被分布在节点设备2300之中的方式可以包括节点设备2300之中的超级单元2233的冗余副本的分布,以避免在节点设备2300中的一个或多个内发生故障的情况下数据的丢失。替代地或附加地,可能存在对分布在节点设备2300之中的每个超级单元2233的多个副本的其他原因,包括但不限于通过创建向其分发相同超级单元2233的节点设备2300的一个或多个相同的并排集合来使能更大的并行性和/或更高效的负载平衡。因此,可能不必将查询指令2710中继到已经向其分发了超级单元2233中的一个或多个的所有的节点设备2300以确保对数据集2230的整体执行查询指令中指定的搜索。在这样的实施例中,可以认为期望在这样的搜索中占用少于所有的这样的节点设备2300,作为用于在节点设备2300之中对多个搜索进行负载平衡的方法的部分和/或作为避免其中相同的超级单元2233正在跨多个节点设备2300参与相同的搜索的低效率的实例的部分。
如已经讨论的那样,数据集2230的哪个超级单元2233已经被分发到哪些节点设备2300的指示(包括任何冗余副本)可以被存储为节点数据2539的部分。因此,作为选择节点设备2300作为要向其中继查询指令2710的实例以便变得参与执行其中指定的搜索的节点设备的部分,可以使处理器2550从节点数据2539检索和使用这样的指示,以及由于多种可能的情况中的任何情况(包括但不限于错误状况、使其资源当前完全占用、或者出于维护或其他目的被脱机(例如,作为节点设备2300的弹性网格的实现的部分))可能知道哪些节点设备2300当前不可用的来自其的指示。在做出这样的选择时,然后可以使处理器2550将查询指令2710的实例中继到节点设备2300中的所选节点设备,如图20A中所描绘的那样,图20A描绘了将查询指令2710中继到节点设备2300a、b、e和g,但不中继到节点设备2300c、d和f。
替代地或附加地,在其中控制设备2500或控制器2503被用于识别候选超级单元的实施例中,每个候选超级单元可以包括至少一个数据单元2130,该数据单元2130可以包括满足搜索标准的至少一个数据记录2133,可以使处理器2550采用哪些超级单元2233被识别为候选超级单元的确定作为在选择要向其中继查询指令2710的实例的节点设备2300的因素。更具体地,可以由查询部件2545使处理器2550将用于定义搜索标准的一个或多个指定数据字段2134的指定数据值和/或指定数据值的范围与从节点设备2300接收的每个超级单元索引2430中包括的超级单元字段值范围2438和/或字段值范围2338进行比较。对于搜索标准中包括的每个数据字段2134,并且该数据字段2134已经被索引使得在超级单元索引2430中提供至少数据值的范围,如果这样的比较示出搜索标准的(一个或多个)指定数据值和/或(一个或多个)指定数据值的范围与针对整个对应超级单元2233或对应超级单元2233内的数据单元2130的超级单元索引2430中指示的(一个或多个)对应数据值的范围之间的至少某种程度的重叠,那么对应的超级单元2233可以由处理器2550识别为候选超级单元。
应当注意,候选超级单元以其来识别的方式受到搜索标准中使用的(一个或多个)逻辑运算符的影响。作为示例,在搜索标准用逻辑AND组合针对包括的数据字段2134中的每个的所有的单独搜索标准的情况下,如果对于被包括在搜索标准中的所有的数据字段2134满足单独的搜索标准,并且针对其有索引信息存在于对应的超级单元索引2430中,那么超级单元2233只能是候选超级单元。相比之下,并且作为另一示例,在搜索标准用逻辑OR组合包括的数据字段2134中的每个的所有的单独搜索标准的情况下,如果被包括在搜索标准中的数据字段2134中的任何数据字段满足任何单独的搜索标准,并且针对其有索引信息存在于对应的超级单元索引2430中,那么超级单元2233可以是候选超级单元。实际上,在用逻辑OR以这样的方式组合包括数据字段2134中的每个的单独的搜索标准的情况下,一旦确定包括数据字段2134中的任何一个数据字段的单独搜索标准中的任何搜索标准被满足,使用搜索标准和超级单元索引2430内的索引信息来确定对应的超级单元2233是否是候选超级单元的分析就可以被结束。
如先前所讨论的,作为用于提高这样的比较的速度和/或效率的措施,处理器2550可以被选择为是能够支持多个执行线程的类型(例如,包括多个处理器核2555),并且可以在单独的进程中执行与超级单元字段值范围2438和/或每个超级单元索引2430的字段值范围2338的这样的比较的执行,其中单独的进程被分布在由处理器2550支持的多个执行线程之中。因此,数据集2230的超级单元2233中的每个是否是候选超级单元的确定可以在单独的进程中做出。对于以确定对应超级单元2233被识别为候选超级单元而结束的每个这样的进程,可以使处理器2550将查询指令2710的实例连同哪个超级单元2233被识别为候选超级单元的指示中继到存储该识别的候选超级单元2233的节点设备2300。否则,对于以确定对应超级单元2233未被识别为候选超级单元而结束的每个这样的进程,可以不由该进程使处理器2550如此中继查询指令的实例。以该方式,每个超级单元2233是否是候选超级单元的确定可以被至少部分并行地做出,并且没有进程间依赖性。
转到图20B,已经向其中继由控制设备2500或控制器2503接收到的查询指令2710的实例的节点设备2300的示例节点设备被描绘为存储示例超级单元2233a和2233b,每个超级单元仅包括两个数据单元2130。应当注意,示例超级单元2233a和2233b是图20B中呈现的超级单元2233的故意简化示例,以图示候选超级单元2233和候选数据单元2130的示例识别。如已经讨论的那样,设想的是,真实数据集2230的真实超级单元2233将包括多个数据单元2130。
在其中控制设备2500或控制器2503不执行识别候选超级单元2233的任务的实施例中,由选择部件2345使向其中继查询指令2710的实例的节点设备2300中的每个的处理器2350执行该功能。更具体地,可以使示例节点设备2300的处理器2350将用于定义查询指令2710中的搜索标准的一个或多个指定数据字段2134的指定的数据值和/或指定的数据值的范围与对应于一个或多个指定数据字段中的每个的超级单元索引2430a中包括的超级单元字段值范围2438a和/或字段值范围2338aa和2338ab进行比较,并且与对应于一个或多个指定数据字段中的每个的超级单元索引2430b中包括的超级单元字段值范围2438b和/或字段值范围2338ba和2338bb进行比较。如所描绘的那样,这样的比较导致超级单元2233a被识别为候选超级单元2233,所述候选超级单元2233可以包括候选数据单元2130,所述候选数据单元2130可以包括可能满足搜索标准的一个或多个数据记录2133,而超级单元2233b未被识别为候选超级单元。
然而,在其中控制设备2500或控制器2503确实执行识别候选超级单元2233的任务的实施例中,然后将查询指令的实例中继到示例节点设备2300的动作可以用作超级单元2233a和2233b中的至少一个已经被识别为候选超级单元的指示。如较早讨论的那样,控制设备2500或控制器2503还可以向示例节点设备2300传输超级单元2233a是所识别的候选超级单元的指示。
无论超级单元2233a是由示例节点设备2300的处理器2350还是由控制设备2500或控制器2503的处理器2550识别为候选超级单元,可以由选择部件2345使处理器2350执行将由所接收的查询指令2710的实例指定的搜索标准与分别对应于被包括在超级单元2233a中的两个数据单元2130aa和2130ab的单元索引2330aa和2330ab中的每个内的数据值的范围的至少指示进行比较。这样的比较实质上可以类似于对超级单元索引2430执行的、超级单元2233a通过其被识别为候选超级单元的那些比较。由于超级单元2233b未被识别为候选超级单元,因此在这样的比较中不使用分别对应于两个数据单元2130ba和2130bb的单元索引2330ba和2330bb。如所描绘的那样,这样的比较导致数据单元2130ab被识别为候选数据单元2130,所述候选数据单元2130可能包括可以满足搜索标准的一个或多个数据记录2133,而数据单元2130aa未被识别为候选数据单元。
然而,如先前所讨论的那样,除了在单元索引2330中包括数据值的指示以使能以字段值范围2338的形式识别候选数据单元之外,在一些实施例中,数据集索引2530的单元索引2330可以各自包括一条或多条其他信息,每个对应的数据单元2130也可以通过所述信息被识别为候选数据单元或者被排除为不是候选超级单元。在已经讨论并且其可以被如此包括的这样的附加条的信息之中,可以是唯一值向量2335和/或散列值向量2336。
应当注意,类似于候选超级单元的识别,以其来识别候选数据单元的方式也受到搜索标准中使用的(一个或多个)逻辑运算符的影响。作为示例,在搜索标准用逻辑AND组合针对包括的数据字段2134中的每个的所有的单独搜索标准的情况下,如果对于被包括在搜索标准中的所有的数据字段2134满足单独的搜索标准,并且针对其有索引信息存在于对应的数据单元索引2330中,那么数据单元2130只能是候选数据单元。相比之下,并且作为另一示例,在搜索标准用逻辑OR组合包括的数据字段2134中的每个的所有的单独搜索标准的情况下,如果被包括在搜索标准中的数据字段2134中的任何数据字段满足任何单独的搜索标准,并且针对其有索引信息存在于对应的单元索引2330中,那么数据单元2130可以是候选数据单元。实际上,在用逻辑OR以这样的方式组合包括数据字段2134中的每个的单独的搜索标准的情况下,一旦确定包括数据字段2134中的任何一个数据字段的单独搜索标准中的任何搜索标准被满足,使用搜索标准和单元索引2330内的索引信息来确定对应的数据单元2130是否是候选数据单元的分析就可以被结束。
转到图20C,对应于示例超级单元2233a的数据单元2130ab的单元索引2330ab被描绘为附加地包括唯一值向量2335,所述唯一值向量2335包括较早被识别为存在于数据单元2130ab内的数据记录2133之中的特定数据字段2134的数量为四的唯一值。再次,示例超级单元2233a和2233b是为了说明的目的而呈现的超级单元2233的故意简化示例,并且设想的是真实超级单元2233的真实数据单元2130将具有多个数据记录2133,使得唯一值向量2335将可能包括多个唯一值(取决于其基数)。
在包括所描绘的唯一值向量2335的情况下,处理器2350附加地能够高效地将其中唯一值中的每个与针对唯一值向量2335对应于其的特定数据字段2134在查询指令2710的实例中指定的一个或多个数据值或数据值的范围进行比较。如所描绘的那样,向量数据结构的使用使得唯一值向量2335的至少相当大的部分能够被加载在处理器2350的高速缓存2356的单个高速缓存线2357内,从而允许更快地进行与其中唯一值的这样的比较。此外,在唯一值向量2335包括其中唯一值全部都具有相同的数据大小(例如,全部占用字节、字、双字,四字等)的数据类型的唯一值的情况下,向量数据结构的使用使能利用单指令多数据(SIMD)指令和/或可以由节点设备2300的处理器2300中的每个的一个或多个处理器核2355支持的其他SIMD特征。通过这样的比较,处理器2350能够确定数据单元2130ab的数据记录2133中的任何数据记录的对应数据字段2134中是否存在满足针对对应数据字段2134的搜索标准的任何值。结果,处理器2350能够使用唯一值向量2335作为分析的部分,通过该分析可以将数据单元2130ab排除作为候选数据单元,并且如果未如此排除,则处理器2350能够确认是否存在满足针对至少对应数据字段2134的搜索标准的至少一个数据记录2133。在其中对应的数据单元2130被压缩使得由于需要解压缩如此搜索的每个数据单元2130而导致作为其中搜索的部分的访问对应数据单元2130所需的时间可能会显著增加的实施例中,在单元索引2330中包括唯一值向量对于更快速地执行这样的搜索而言可能变得甚至更有价值。
实际上,如果被包括在搜索标准中的每个数据字段2134具有对应的唯一值向量2335,那么满足针对所有的包括的数据字段2134的搜索标准的数据记录2133可以仅从这样的唯一值向量2355的这样的分析被识别,而不访问数据单元2130ab内的数据记录2133中的任何数据记录本身,这可以显著提高可以以其识别这样的数据记录2133的速度。结果,可以生成搜索位域2370,其包括存在于数据单元2130ab内每个数据记录2133的位值。搜索位域2370的位中的每个可以被设置为“0”或“1”值,以指示其对应的数据记录2133是否已经被识别为满足搜索标准。在查询指令2710仅请求什么数据记录2133满足搜索标准的指示的情况下,则如所描绘的那样,可以由搜索部件2346使处理器2350将搜索位域2370传输到控制设备2500或控制器2503,其中其可以被直接包括在作为对查询指令2710的响应而被传输到请求设备2700的结果数据2770中。应当注意,尽管在本文中讨论了位域2370如被生成以提供每个数据单元2130内的哪些数据记录2133被识别为或者未被识别为满足搜索标准的指示,但是可以使用多种其他数据结构中的任何数据结构,其中哪些数据记录2133确实满足和/或不满足搜索标准的指示可以以多种方式中的任何方式指示。作为示例,可以生成包括满足搜索标准的数据记录2133的记录标识符2132的向量、链表或其他数据结构。
在查询指令2710请求提供满足搜索标准的数据记录2133中的每个(或至少从其请求的数据值的子集)而不是识别哪些数据记录2133满足搜索标准的位域或其他数据结构的情况下,可以由搜索部件2346使处理器2350访问数据单元2130ab以访问每个这样的数据记录2133,并且然后将那些数据记录2133中的每个(或从其请求的数据值的子集)传输到控制设备2500或控制器2503,以被包括在传输到请求设备2700的结果数据2770中。
转到图20D、20E和20F,呈现了替代情况的方面,其中对应于示例超级单元2233a的数据单元2130ab的单元索引2330ab不包括诸如图20C中描绘的唯一值向量2335的附加信息。在该替代情况下,没有具有搜索与数据单元2130ab分离的向量数据结构中的唯一值的能力的益处,数据单元2130ab在被识别为如关于图20B所讨论的候选数据单元之后,必须自己搜索,以最终确定其中是否存在满足搜索标准的任何数据记录2133。
更具体地转到图20D,其中由查询指令2710的接收的实例指定的搜索标准包括多于一个数据字段2134的数据值,并且其中搜索标准要求满足与所有的那些数据字段2134相关联的搜索标准(即,其中逻辑AND被用于组合与所有的那些数据字段2134相关联的搜索标准),可以由搜索部件2346使处理器部件2350针对每个这样的数据字段2134检索唯一值索引2334中的唯一值的计数和来自可以存在于数据单元2130ab的单元索引2330ab中的任何对应的重复值索引2337的其任何重复的任何计数。然后,处理器2350可以分析搜索标准中包括的数据字段2134中的每个的这样的计数,以确定存在于那些数据字段2134中的每个内的数据值的基数的相对度。处理器2350然后可以基于其中存在的数据值的相对基数确定以其来搜索那些数据字段2134中的每个的次序。更具体地,如果应该证明其中没有数据记录2133满足搜索标准的情况,则处理器2350可以以其中数据值表现出最高基数的数据字段2134开始这样的搜索,以最快地排除不满足搜索标准的数据单元2130ab的数据记录2133,作为用于更高效和快速地排除数据单元2130ab作为候选数据单元的方法的部分。
应当注意,在唯一值索引2334中的唯一值的计数和/或在任何对应的重复值索引2337中的其任何重复的计数的这样的使用也可以被用于在其中存在被包括在搜索标准中的多于一个数据字段2134的唯一值向量2335的情况下确定在执行搜索(如关于图20C被讨论的)时要使用哪个唯一值向量2335中。尽管使用唯一值向量2335来执行搜索可能比直接搜索数据记录2133快相当多,但是仍可能认为期望使用唯一值向量2335导出搜索的次序以甚至更快地排除数据单元2130和/或者甚至更快地缩小可能仍满足搜索标准的数据记录2133的数量。
更具体地转到图20E,作为刚刚关于图20D描述的方法的部分,为了更快地排除不满足搜索标准的数据记录2133,当数据字段2134中的一个内的数据值的每个搜索被完成时,可以使处理器2350生成中间搜索位域2370。在每个这样的中间搜索位域2370中,单个位可以针对数据单元2130ab内的每个数据记录2133存在,并且可以指示找到数据记录2133中的哪些数据记录在对应的数据字段2134中具有满足针对该数据字段2134的搜索标准的数据值。
在搜索标准要求满足与搜索标准中包括的所有的数据字段2134相关联的搜索标准的情况下(即,其中逻辑AND被用于组合与所有的那些数据字段2134相关联的搜索标准),当搜索每个数据字段2134时,至少这样的中间位域2370的子集可以被用于实现数据记录2133的搜索的逐步缩小。更具体地,当完成数据字段2134的每次搜索时,导致生成中间搜索位域的对应的一个搜索位域,处理器2350可以将在涉及下一个数据字段2134的搜索中搜索的数据记录2133缩小到被指示满足在涉及先前数据字段2134的搜索中生成的中间搜索位域2370中的搜索标准的仅那些数据记录2133。以该方式,涉及数据字段2134的另一个数据字段的每个后续搜索包括越来越少数量的要搜索的数据记录2133(从而变得越来越快)。然后,涉及每个不同数据字段2134的搜索继续,直到不再有满足到目前为止已经搜索的所有数据字段2134的搜索标准的任何数据记录2134,使得数据单元2130ab中可能不存在满足搜索标准中包含的所有的数据字段2134的所有的搜索标准的数据记录2133;或者直到不存在针对其需要另一搜索的更多数据字段2134,使得可能存在确实满足所有的数据字段2134的所有的搜索标准的一个或多个数据记录2133。在后者的情况下,其中存在确实满足搜索标准的整体的数据记录2133中的至少一个,则可以生成指示确实如此满足搜索标准的数据记录2133的得到的搜索位域。得到的搜索位域2370、如此识别为满足搜索标准的数据记录2133和/或每个这样的数据记录2133的数据值的子集然后可以由处理器2350传输到控制设备2500或控制器2503,以包含在传输到请求设备2700的结果数据2770中。
然而,在搜索标准采用一个或多个其他逻辑运算符来组合与多个数据字段2134中的每个相关联的搜索标准的情况下(例如,逻辑OR),那么中间搜索位域2370可以被用于以任何方式缩小通过数据字段2134的这样的搜索。代之以,可以针对搜索标准中包括的数据字段2134中的对应的一个数据字段单独生成每个中间搜索位域2370,并且然后可以以采用搜索标准中指定的一个或多个逻辑运算符用于组合搜索标准中包括的数据字段2134的搜索标准的方式组合所得到的多个中间搜索位域2370的位。
图20F描绘了通过数据单元2130ab的数据记录2133结合其单个数据字段2134执行搜索的方面。应当注意,涉及仅单个数据字段2134的搜索的该描绘为了说明的目的用于提供直接搜索数据记录2133的故意简化示例。无论搜索标准是否包括仅单个数据字段2134使得可以有通过数据记录2133的仅单个搜索,或者搜索标准包括数据字段2134中的多于一个,使得可以有通过数据记录2133的多个搜索,如图20F中描绘的这样的细节是适用的。设想的是,在查询指令2710的实例中提供的真实搜索标准将通常包括多个数据字段2134的指定数据值和/或数据值的范围。
在一些实施例中,结合单个数据字段2134的每个搜索可以作为按记录标识符2132的次序引导的二进制搜索来执行,所述记录标识符2132在与单个数据字段2134相关联的唯一值索引2334中提供。在这样的实施例的一些实施例中,二进制搜索的使用可以贯穿搜索的整体继续。然而,在这样的实施例的其他实施例中,在采用二进制搜索来定位满足单个数据字段2134的搜索标准的单个数据字段2134内的第一唯一数据值之后,然后可以使用跳过列表搜索、顺序向前或后向遍历、或多种其他搜索技术中的任何技术,包括使用正则表达式和/或可以被应用于固定或可变长度字符数据类型的索引字段值的灵活地匹配在字符串内模式的其他手段,以定位满足单个数据字段2134的搜索标准的单个数据字段内的一个或多个后续唯一值。对于被识别为包括满足单个数据字段2134的搜索标准的单个数据字段2134中的唯一数据值的任何数据记录2133,可以在搜索位域2370中进行其指示,如先前讨论的那样。另外,在识别出任何这样的唯一值并且存在对应于该唯一值的重复值索引2337的情况下,也可以在搜索位域2370中进行包括该唯一值的重复的一个或多个数据记录2134的指示。
转到图21,呈现了单元索引2330的替代示例,所述单元索引2330包括除了唯一值索引2334和/或重复值索引2337的附加信息,通过该附加信息,对应的数据单元2130能够被排除作为候选数据单元。更具体地,呈现了从图19A-C中的示例数据单元2130生成的单元索引2330,以提供使用散列值来确定图19A-C的数据单元2130是否是由查询指令2710的实例指定的搜索中的候选数据单元的示例。
如较早参考图19A-C所讨论的那样,在数据字段2134的数据值各自占据大量的存储空间的情况下和/或在数据字段2134的数据值具有可变长度(例如,文本串、音频数据、视频数据等)的情况下,生成或使用其中这样的数据值帧的多个数据值被组合以形成向量数据结构的唯一值向量2335可能被认为是不切实际的。因此,如也讨论的,可以从这样的庞大(unwieldy)的数据值中的每个生成较小和固定数据大小的每个的散列值,并且然后可以组合这样的散列值以形成散列值向量2336。替代地或附加地,如此生成的最高和最低散列值可以被用于定义字段散列值范围2339。
此外,非常类似于在多个单元索引2330的字段值范围2338中指定的最高和最低唯一值可以以其被用于在对应超级单元索引2430内形成超级单元字段值范围2438的方式,多个单元索引2330的字段散列值范围2339中的最高和最低散列值可以被用于在对应的超级单元索引2430内形成超级单元字段散列值范围2439(参见图19C)。在查询指令的实例中指定的搜索标准指定的数据字段2134的一个或多个数据值(每个数据值被明确指定为离散值,而不通过指定范围)的情况下,可以生成每个指定的数据值的散列值,并且所得到的一个或多个散列值可以各自与包括在针对该指定数据字段2134的超级单元索引2430中的超级单元字段散列值范围2439进行比较,作为确定对应超级单元2233是否是候选超级单元的部分。
更具体地返回到图21,可以由选择部件2345使处理器2350类似地使用所描绘的字段散列值范围2339与从搜索标准中针对特定数据字段2134指定的一个或多个离散数据值生成的一个或多个散列值进行比较,作为确定在执行对其数据记录2133的任何搜索之前对应数据单元2130是否被排除作为候选数据单元的部分。这可以与也使处理器2350类似地也使用字段值范围2338与搜索标准中指定的单个数据值进行比较,作为确定是否如此排除对应数据单元2130的部分一起完成。应当注意,在一些实施例中,其中指定数据字段2134的数据值具有庞大的大小和/或可变长度,使得涉及数据值中的一个的每个比较可能消耗比涉及由其生成的散列值的每个比较多相当多的处理和/或存储资源,可以在涉及唯一值的(一个或多个)比较之前执行涉及散列值的(一个或多个)比较。为对应的超级单元2130提供被排除的机会,这可以被认为是期望的,这可以允许完全避免涉及唯一值的(一个或多个)比较。
假设通过涉及值的范围的这样的比较,对应数据单元2130不排除作为候选数据单元,则可以将从特定数据字段2134的搜索标准中指定的数据值生成的每个散列值与对应于特定数据字段2134的散列值向量2336内的散列值进行比较,以再次确定对应的数据单元2130是否被排除作为候选数据单元。如先前所讨论的那样,散列值向量2336内的散列值可以按它们的值以升序或降序排列。这使得二进制搜索(或其他类型的搜索)能够在散列值向量2336内被执行,以确定在特定数据字段2134的搜索标准中指定的每个离散的单个数据值是否存在于散列值向量2336内,作为确定对应的数据单元2130是否被排除作为候选数据单元的部分。如所描绘的那样,向量数据结构的使用使得散列值向量2336的至少相当大部分能够被加载在处理器2350的高速缓存2356的单个高速缓存线2357内,从而允许更快速地执行这样的搜索。此外,由于散列值向量2336包括全部具有相同数据大小的散列值,向量数据结构的使用使能利用SIMD指令和/或可以由节点设备2300的处理器2300中的每个的一个或多个处理器核2355支持的其他SIMD特征。
如先前所讨论的那样,在唯一值向量2335内,以反映记录标识符2132在唯一值索引2334内以其来组织的次序的次序来组织唯一值,从而将唯一值中的每个与唯一值存在于其中的数据记录的记录标识符2132相关。然而,也如先前所讨论的那样,散列值根据它们的值以不同的次序(例如,按值的升序或降序)来组织以使得散列值向量2336的搜索能够被更高效地执行的事实导致散列值向量2336内的散列值没有与记录标识符2132如此相关。结果,尽管散列值向量2336可以被用作另一种机制,通过该机制排除其对应的数据单元2130作为候选数据单元2130,但是散列值向量2336不能够被用作用于以与唯一值向量2335可以以其来使用的方式相同的方式来搜索满足搜索标准的对应的数据单元2130的数据记录2133的机制。因此,假设对应的数据单元2130不被排除作为候选数据单元,则将需要执行需要访问对应的数据单元2130内的数据记录2133的搜索,除非还存在对应的唯一值向量2335,代替对数据记录2133进行这样的直接访问,所述唯一值向量2335可以被用于执行搜索。
简要参考回到使用唯一值向量2335(如关于图20C所描述的)和散列值向量2336(如关于图21所描述的)来缩小候选数据单元的以上的讨论,在其中可以在搜索标准中包括的一个或多个数据字段2134的单元索引2330中提供唯一值向量2335和散列值向量2336二者的情况下,如果在搜索标准中使用用于组合针对不同数据字段2134的单独搜索标准的逻辑运算符是逻辑OR,则可能的是放弃使用唯一值向量2335和散列值向量2336中的一个或另一个。如由本领域技术人员将认识到的那样,这是因为逻辑OR运算符指示候选数据单元2130可以保持候选数据单元(即,可以不被排除作为候选数据单元),只要该特定数据字段2134的唯一值向量2335和散列值向量2336中的一个或另一个不能排除该候选数据单元2130,就满足特定数据字段2134的单独搜索标准。在一些实施例中,在搜索标准对逻辑OR进行这样的使用的情况下,可以使节点设备2300的处理器2350利用这样的情况以通过如此放弃使用一个或多个数据字段的唯一值向量2335或散列值向量2336中的一个或另一个来提高以其执行搜索的速度和/或效率。
返回到图15A,如已经讨论的那样,在完成搜索满足由接收到的查询指令2710的实例指定的搜索标准的数据记录2133的数据集2230时,节点设备2300可以向控制设备2500或控制器2503提供指示哪些数据记录2133满足搜索标准的位域、或者满足搜索标准的数据记录2133中的每个的数据值中的至少一些(如果不是那些数据记录2133中的每个的整体)。在接收到这样的位域或这样的数据值时,可以由查询部件2545使控制设备2500或控制器2503的处理器2550组合这样的提供的搜索的结果以形成结果数据2770,并且然后响应于查询指令2710将结果数据2770传输到请求设备2700。
然而,在一些实施例中,除了提供对数据记录2133的搜索的搜索标准之外,查询指令2710还可以包括指定要对可能被识别为满足指定搜索标准的任何数据记录2133的数据值执行的一个或多个操作的可执行任务指令。在这样的实施例中,可以在节点设备2300中的每个内执行这样的指定的一个或多个操作,其中在存储在其中的超级单元2233内识别这样的数据记录2133中的至少一个,并且这些操作也可以在执行识别了这样的记录中的至少一个的搜索的每个对应节点设备内的(一个或多个)相同执行线程上执行。
图22描绘了在节点设备2300内执行这样的操作的方面,其中至少一个数据记录2133被识别为满足由处理器2350在其中执行的搜索的搜索标准。在执行控制例程2340时,可以由执行部件2347使示例节点设备2300的处理器2350采用存在满足超级单元2233的数据单元2130内的搜索标准的至少一个数据记录2133的搜索位域2370中的指示以检索一个或多个数据记录2133。然后,可以由执行部件2347使处理器2350执行查询指令2710内的任务指令,以由此对检索的数据记录2133的数据值执行一个或多个操作。如先前所讨论的那样,作为用于提高执行来自查询指令2710的任务指令的速度和/或效率的措施,对每个检索的数据记录2133或者对可以从其检索查询指令2710的任务指令的每个数据单元2130的检索的数据记录2133的任务指示的执行可以在单独的进程中执行,其中单独的进程被分布在由处理器2350支持的多个执行线程之中。作为完成了对每个这样的数据记录2133的任务指令的执行的结果,和/或作为完成了对每个数据单元2130的数据记录2133的任务指令的执行的结果,可以由执行部件2347使处理器2350将结果的指示传输到控制设备2500或控制器2503,以与来自其他节点设备2300的对应结果组合,以形成传输到请求设备2700的结果数据2770。
返回到图15A和15B,在各种实施例中,处理器2350和2550中的每个可以包括各种各样的商业上可获得的处理器中的任何处理器。此外,这些处理器部件中的一个或多个可以包括多个处理器、多线程处理器、多核处理器(无论多个处理器核共存于相同管芯上还是单独的管芯上)、和/或多个物理上分离的处理器通过其链接的一些其他各种的多处理器架构。
然而,在特定实施例中,可以选择节点设备2300中的每个的处理器2350以并行地高效地对数据集或数据集索引的多个部分执行处理任务。作为示例,处理器2350可以包括单指令多数据(SIMD)架构,可以包括多个处理器核,和/或可以包括用于支持每个处理器核的多个同时执行线程的能力。
在各种实施例中,存储设备2360和2560中的每个可以基于各种各样的信息存储技术中的任何技术,包括需要不间断提供电力的易失性技术、和/或包括需要使用可能是或可能不是可移动的机器可读存储介质的技术。因此,这些存储设备中的每个可以包括各种各样的类型(或类型的组合)的存储设备的任何存储设备,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM),可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、聚合物存储器(例如,铁电聚合物存储器)、双向(ovonic)存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、一个或多个单独的铁磁盘驱动器、非易失性存储类存储器、组织成一个或多个阵列的多个存储设备(例如,组织成独立磁盘阵列的冗余阵列或RAID阵列的多个铁磁盘驱动器)、或分层或阵列)。冗余的存储设备的集合,其中非易失性存储设备在错误状态或电力故障的情况下用于保存易失性存储设备的内容(例如,伴随RAM的存储级存储器)。应当注意,尽管这些存储设备中的每个被描绘为单个块,但是这些存储设备中的一个或多个可以包括可以基于不同存储技术的多个存储设备。因此,例如,这些所描绘的存储设备中的每个中的一个或多个可以表示通过其可以在某种形式的机器可读存储介质上存储和传送程序和/或数据的光学驱动器或闪存卡读取器、用于在相对延长的时间段内本地存储程序和/或数据的铁磁盘驱动器、以及使能对程序和/或数据的相对快访问的一个或多个易失性固态存储器设备(例如,SRAM或DRAM)的组合。还应注意,这些存储设备中的每个可以由基于相同的存储技术的多个存储部件构成,但是由于使用中的专门化而可以单独维护这些存储设备中的每个(例如,一些DRAM设备用作主存储设备而其他DRAM设备用作图形控制器的不同帧缓冲器)。
然而,在特定实施例中,用于存储数据集和/或数据集索引的一部分的节点设备2300中的一个或多个的存储设备2360可以用RAID级别的独立盘的冗余阵列(RAID)来实现,所述RAID级别的独立盘的冗余阵列(RAID)被选择以提供容错以防止这些数据集中的一个或多个的丢失和/或在访问这些数据集中的一个或多个时提供提高的速度。
在各种实施例中,输入设备2720可以是多种类型中的任何类型的输入设备,每个输入设备可以采用各种各样的输入检测和/或接收技术中的任何技术。这样的输入设备的示例包括但不限于麦克风、遥控器、触控笔、读卡器、指纹读取器、虚拟现实交互手套、图形输入板、操纵杆、键盘、视网膜扫描仪、触摸屏的触摸输入部件、轨迹球、环境传感器和/或相机或相机阵列,以监视人的移动,以接受由这些人经由手势和/或面部表情提供的命令和/或数据。在各种实施例中,显示器2780可以是多种类型中的任何类型的显示设备,每个显示设备可以采用各种各样的视觉呈现技术中的任何技术。这样的显示设备的示例包括但不限于阴极射线管(CRT)、电致发光(EL)面板、液晶显示器(LCD)、气体等离子显示器等。在一些实施例中,请求设备2700的显示器2780可以是触摸屏显示器,使得输入设备2720可以被结合到显示器2780中。在这样的实施例中,输入设备2720可以分别是显示器2780的触敏部件。
在各种实施例中,网络接口2390和2590可以采用各种各样的通信技术中的任何技术,使得这些设备能够如已经描述的那样被耦合到其他设备。这些接口中的每个包括提供必要的功能中的至少一些以使能这样的耦合的电路系统。然而,这些接口中的每个还可以至少部分地用由处理器部件的对应的处理器部件执行的指令的序列来实现(例如,以实现协议栈或其他特征)。在采用导电电缆和/或光导电缆的情况下,这些接口可以采用符合多种工业标准中的任何标准的定时和/或协议,包括但不限于RS-232C、RS-422、USB、以太网(IEEE-802.3)或IEEE-1394。在需要使用无线传输的情况下,这些接口可以采用符合多种行业标准中的任何标准的定时和/或协议,包括但不限于IEEE 802.11a、802.11ad、802.11ah、802.11ax、802.11b、802.11g、802.16、802.20(通常称为“移动宽带无线接入”);蓝牙;ZigBee;或蜂窝无线电话服务,诸如具有通用分组无线电服务(GSM /GPRS)的GSM、CDMA/1xRTT、全球演进的增强数据速率(EDGE)、仅演进数据/优化(EV-DO)、数据和语音的演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行链路分组接入(HSUPA)、4G LTE、5G、NVMe、PCIe等。
然而,在特定实施例中,节点设备2300中的一个或多个的网络接口2390可以用多个基于铜或基于光纤的网络接口端口来实现,以在与一个或多个数据设备2100交换超级单元2233中的一个或多个时提供冗余和/或并行路径。
图23A和23B一起图示了逻辑流程3100的示例实施例。逻辑流程3100可以表示通过本文中描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流程3100可以图示由处理器2350和2550在执行控制例程2340和2540时执行的操作,和/或由节点设备2300、控制设备2500和/或控制器2503中的至少一个的(一个或多个)其他部件执行的操作。
在3110处,多个节点设备中的每个的处理器(例如,多个节点设备2300中的每个的处理器2350)可以根据从用作数据源的一个或多个数据设备(例如,一个或多个数据设备2100)接收的数据值和/或数据值的(一个或多个)流生成数据记录(例如,数据记录2133)。在3112处,多个节点设备中的每个的处理器可以将所生成的数据记录分组到数据单元(例如,数据单元2130)中。如已经讨论的那样,处理器可以根据一个或多个规则如此生成数据记录和对数据记录分组,所述规则指定诸如在每个数据记录中要提供什么数据字段、数据字段的字段标签、要包括在每个数据单元中的数据记录的最小和/或最大数量、和/或每个数据单元的最小和/或最大数据大小的参数。
在3114处,多个节点设备中的每个的处理器可以针对每个生成的数据单元生成对应的单元索引(例如,单元索引2330)。如已经讨论的那样,在每个节点设备内,其中每个单元索引的生成可以在单独的进程内执行,并且那些单独的进程可以被分布在由其处理器支持的多个执行线程之中。
在3116处,多个节点设备中的每个的处理器可以将每个节点设备内的生成的数据单元中的多个数据单元分组到一个或多个超级单元(例如,超级单元2233)中。在3118处,多个节点设备中的每个的处理器可以并且以对应于在3116处将多个数据单元分组到一个或多个超级单元的方式将来自单元索引的数据值的范围的指示分组到一个或多个超级单元索引中。如已经讨论的那样,处理器可以根据一个或多个规则对数据单元如此分组,所述规则指定诸如要包括在每个超级单元中的数据单元的最小和/或最大数量、和/或每个超级单元的最小和/或最大数据大小的参数。
如已经讨论的那样,在一些实施例中,控制设备(例如,控制设备2500)或结合到多个节点设备中的一个中的控制器(例如,结合到节点设备2300中的一个中的控制器2503)可以参与响应于可以以查询指令的实例(例如,查询指令2710的实例)的形式接收的数据集的查询。更具体地,在这样的实施例中,控制设备或控制器可以执行操作以识别一个或多个候选超级单元,所述候选超级单元可以包括一个或多个数据单元,所述数据单元可以包括满足在查询指令的实例中指定的搜索标准的一个或多个数据记录。为了支持控制设备或控制器在这样的实施例中执行这样的功能,在3120处,多个节点设备中的每个的处理器可以将它们生成的(一个或多个)超级单元索引传输到控制设备或控制器。
在3130处,控制设备或控制器的处理器(例如,处理器2550)可以从请求设备(例如,请求设备2700中的一个)接收查询指令的实例。查询指令可以包括用于搜索可能满足搜索标准的数据集内的数据记录的搜索标准。如已经讨论的那样,这样的搜索标准可以包括要在数据集的数据记录的一个或多个指定数据字段内搜索的单个数据值、多个离散数据值和/或数据值的范围的规范。
在3132处,控制设备或控制器的处理器可以选择要向其中继所接收的查询指令的实例的多个节点设备中的一个或多个节点设备。在其中控制设备或控制器不执行识别候选超级单元的功能但是其中每个超级单元的多个副本被分布在多个节点设备之中的实施例中,控制设备或控制器的处理器可以使用每个超级单元以其在多个节点设备之中被分布的方式的存储的指示和/或每个节点设备的当前状态的反复更新和存储的指示,作为在选择要向其中继所接收的查询指令的实例的一个或多个节点设备时的因素。然而,在其中控制设备或控制器确实执行识别候选超级单元的功能的实施例中,在选择要向其中继所接收的查询指令的实例的节点设备之前,控制设备或控制器的处理器可以使用搜索标准与在超级单元索引中提供的(一个或多个)超级单元字段值范围和/或(一个或多个)超级单元字段散列值范围(例如,超级单元索引2430内的超级单元字段值范围2438和/或超级单元字段散列值范围2439)来识别一个或多个候选超级单元(如果有的话),所述超级单元索引从多个节点设备接收。然后,控制设备或控制器的处理器可以使用一个或多个超级单元的识别作为在选择要向其中继所接收的查询指令的实例的节点设备时的另一个因素。
在3140处,控制设备或控制器的处理器然后可以将所接收的查询指令的实例传输到所选择的节点设备。如已经讨论的那样,在其中控制设备或控制器执行识别候选超级单元的功能的实施例中,控制设备或控制器的处理器还可以向所选择的节点设备传输由所选择的节点设备中的每个存储的哪个超级单元(哪些超级单元)已经被识别为候选超级单元的指示。
在3150处,对于每个候选超级单元,所选择的节点设备的中每个的处理器可以识别可能包括可能满足搜索标准的一个或多个数据记录的一个或多个候选数据单元。更具体地,节点设备中的每个的处理器可以使用搜索标准与在单元索引中提供的(一个或多个)字段值范围和/或(一个或多个)字段散列值范围(例如,在单元索引2330内的字段值范围2338和/或字段散列值范围2339)来识别一个或多个候选数据单元(如果有的话),所述单元索引对应于被识别为候选超级单元的(一个或多个)超级单元内的数据单元。在其中控制设备或控制器不执行识别候选超级单元的功能的实施例中,所选择的节点设备中的每个的处理器可以在识别候选数据单元之前这样做。更具体地,在识别候选数据单元之前,所选择的节点设备中的每个的处理器可以使用搜索标准与在所选择的节点设备中的每个内的超级单元索引中提供的(一个或多个)字段值范围和/或(一个或多个)字段散列值范围,以识别一个或多个候选超级单元(如果有的话)。
在3152处,其中识别了至少一个候选数据单元的所选择的节点设备中的每个的处理器可以使用唯一值向量(如果有的话)和/或唯一值索引来对满足搜索标准的每个候选数据单元内的数据记录执行(一个或多个)搜索。如已经讨论的那样,在唯一值向量在对应于候选数据单元的单元索引中是可获得的情况下,可以使用这样的唯一值向量来执行对满足搜索标准的数据记录的搜索的至少部分。
在3154处,如果存在任何这样的任务指令,则所选择的节点设备中的每个的处理器可以在所接收的查询指令的实例内执行任务指令,用于对被识别为满足搜索标准的数据记录的数据值执行任务的一个或多个处理操作。在3160处,所选择的节点设备中的每个的处理器可以将搜索的结果和/或任务的执行的结果传输到控制设备或控制器。
在3170处,控制设备或控制器的处理器可以将从所选择的节点设备中的每个接收的搜索的结果和/或任务的执行的结果组装成对从请求设备接收的查询指令的实例的响应。在3172处,控制设备或控制器的处理器可以将组装的响应传输到请求设备。
图24A和24B一起图示了逻辑流程3200的示例实施例。逻辑流程3200可以表示通过本文中描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流程3200可以图示由处理器2550在执行控制例程2540时执行的操作,和/或由控制设备2500或控制器2503的(一个或多个)其他部件执行的操作。
在3210处,控制设备的或结合到多个节点设备中的节点设备中的控制器的处理器(例如,控制设备2500的或结合到节点设备2300中的一个中的控制器2503的处理器2550)可以从多个节点设备中的每个节点设备反复地接收状态的指示。如已经讨论的那样,这样的状态的指示可以是要执行处理操作的节点设备中的每个的可用性的指示,并且这样的可用性的指示可以包括由节点设备中的每个提供的处理、存储设备、网络和/或其他资源的可用性的程度的指示。如已经讨论的那样,控制设备或控制器的处理器可以用反复地接收的节点设备状态的指示来反复地更新节点数据(例如,节点数据2539)。
在3212处,控制设备的处理器可以使用多个节点设备中的节点设备中的每个的状态的这样的指示来将数据集的超级单元(例如,数据集2230的超级单元2233)的分配导出到节点设备中的每个。换句话说,控制设备或控制器的处理器可以导出数据集将以其在多个节点设备之中被分布的方式。如已经解释的那样,在其中要由多个节点设备生成数据集的实施例中,控制设备或控制器的处理器可以导出在节点设备中的每个内要生成什么超级单元的分布。然而,在其中要向多个节点设备提供完整数据集的实施例中,控制设备的处理器可以导出要向节点设备中的每个提供什么超级单元的分布。
在3214处,控制设备或控制器的处理器可以存储所导出的每节点分配的指示(即,所导出的分布的指示),并且可以作为节点数据的另一部分来这样做。在3216处,控制设备或控制器的处理器可以向多个节点设备中的每个节点设备传输向其分配哪些超级单元的指示。
在3220处,控制设备或控制器的处理器可以从规则数据(例如,规则数据2510)检索一个或多个规则,所述规则可以提供数据集的超级单元的数据单元内的数据记录内的哪些数据字段(例如,数据单元2130的数据记录2133内的数据字段2134的哪些数据字段)被选择以被索引的明确指示。替代地或附加地,控制设备或控制器的处理器可以检索一个或多个规则,用于由控制设备或控制器的处理器在基于过去搜索和/或各种启发式算法中使用的过去搜索标准的存储历史来确定这样的数据字段中的哪些要被选择以被索引时使用,或者用于由节点设备的处理器在这样做时使用。在其中所检索的一个或多个规则用于由控制设备或控制器的处理器自己在确定要选择这样的数据字段中的哪些以被索引时使用的实施例中,则处理器可以继续使用所检索的一个或多个规则来这样做。在3222处,控制设备或控制器的处理器然后可以向节点设备传输如此选择这样的数据字段中的哪些数据字段的指示(无论是由一个或多个规则明确指定,还是由处理器确定),以使得节点设备能够为其生成索引。替代地或附加地,处理器可以向多个节点设备传输一个或多个检索到的规则用于由节点设备的处理器在确定这样的数据字段中的哪些数据字段要被选择以被索引时使用,以使得多个节点设备中的每个节点设备的处理器能够这样做。
再次,如已经讨论的那样,在一些实施例中,控制设备或控制器可以参与响应于可以以查询指令的实例(例如,查询指令2710的实例)的形式接收的数据集的查询。更具体地,在这样的实施例中,控制设备或控制器的处理器可以执行操作以识别一个或多个候选超级单元,所述候选超级单元可以包括一个或多个数据单元,所述数据单元可以包括满足在查询指令的实例中指定的搜索标准的一个或多个数据记录。为了支持控制设备或控制器在这样的实施例中执行这样的功能,在3230处,在由节点设备生成和/或重复生成数据集索引的单元索引和超级单元索引(例如,数据集索引2530的单元索引2330和超级单元索引2430)之后,控制设备或控制器的处理器可以针对数据集的每个超级单元从多个节点设备接收生成的(或重新生成的)超级单元索引。在3232处,在这样的实施例中,控制设备或控制器的处理器可以存储超级单元索引。
在3240处,控制设备或控制器的处理器可以从请求设备(例如,请求设备2700中的一个)接收查询指令的实例。查询指令可以包括用于搜索可能满足搜索标准的数据集内的数据记录的搜索标准。如已经讨论的那样,这样的搜索标准可以包括要在数据集的数据记录的一个或多个指定数据字段内搜索的单个数据值、多个离散数据值和/或数据值的范围的规范。另外,对于其中数据类型是固定长度或可变长度的字符串的数据字段,搜索标准可以进一步包括正则表达式和/或灵活地匹配这样的字符串内的模式的其他手段。
在3242处,控制设备或控制器的处理器可以选择要向其中继所接收的查询指令的实例的多个节点设备中的一个或多个节点设备。再次,在其中控制设备或控制器不执行识别候选超级单元的功能但是其中每个超级单元的多个副本被分布在多个节点设备之中的实施例中,控制设备或控制器的处理器可以使用每个超级单元以其在多个节点设备之中被分布的方式的存储的指示和/或每个节点设备的当前状态的反复更新和存储的指示,作为在选择要向其中继所接收的查询指令的实例的一个或多个节点设备时的因素。然而,在其中控制设备或控制器确实执行识别候选超级单元的功能的实施例中,在选择要向其中继所接收的查询指令的实例的节点设备之前,控制设备或控制器的处理器可以使用搜索标准与在超级单元索引中提供的(一个或多个)字段值范围和/或(一个或多个)字段散列值范围来识别一个或多个候选超级单元(如果有的话),所述超级单元索引从多个节点设备接收。然后,控制设备或控制器的处理器可以使用一个或多个超级单元的识别作为在选择要向其中继所接收的查询指令的实例的节点设备时的另一个因素。
在3250处,在其中控制设备或控制器确实执行识别候选超级单元的功能的实施例中,控制设备或控制器的处理器可以检查是否已经选择要将所接收的查询指令的实例中继到的任何节点设备。如果尚未选择节点设备(例如,由于处理器已经确定不存在候选超级单元),那么在3254处,处理器可以向请求设备传输在数据集中没有满足搜索标准的可用数据记录的指示。然而,已经选择了至少一个节点设备,则在3252处,处理器可以将所接收的查询指令的实例传输到所选择的节点设备。如已经讨论的那样,在其中控制设备或控制器执行识别候选超级单元的功能的实施例中,控制设备或控制器的处理器还可以向所选择的节点设备传输由所选择的节点设备中的每个存储的哪个超级单元(哪些超级单元)已经被识别为候选超级单元的指示。
图25A和25B一起图示了逻辑流程3300的示例实施例。逻辑流程3300可以表示通过本文中描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流程3300可以图示由处理器2350在执行控制例程2340时执行的操作,和/或由节点设备2300中的至少一个的(一个或多个)其他部件执行的操作。
在3310处,多个节点设备中的每个的处理器(例如,多个节点设备2300中的每个的处理器2350)可以从结合到相同节点设备或另一节点设备中的控制设备或控制器(例如,从控制设备2500、或从结合到另一节点设备2300或相同节点设备2300的控制器2503)接收一个或多个规则,所述规则可以提供来自数据集的一部分的节点设备内存储的一个或多个超级单元的数据单元内的数据记录内的哪些数据字段(例如,数据集2230的数据单元2130的数据记录2133内的数据字段2134的哪些数据字段)被选择以被索引的明确指示。替代地或附加地,节点设备的处理器可以从控制设备或控制器接收一个或多个规则,用于由节点设备的处理器在基于过去搜索和/或各种启发式算法中使用的过去搜索标准的存储历史来确定这样的数据字段中的哪些要被选择以被索引时使用。在3312处,在其中所接收的一个或多个规则用于由节点设备的处理器自己在确定要选择这样的数据字段中的哪些以被索引时使用的实施例中,则处理器可以继续使用所接收的一个或多个规则来这样做。
在3320处,节点设备的处理器可以解析存储在节点设备内的每个超级单元的每个数据单元内的所选择的数据字段,以检索所选择的数据字段的数据值。如已经讨论的那样,作为用于提高针对每个数据单元生成对应的单元索引(例如,单元索引2330中的一个)的速度和/或效率的措施,解析以检索所有的所选择的数据字段的数据值可以通过每个数据单元内的所有的数据记录在单个读取遍次中执行。
在3322处,节点设备的处理器可以单独地针对存储在节点设备内的每个数据单元内的每个所选择的数据字段,使用从数据字段检索的数据值跨数据单元内的所有的数据记录来生成二叉树(例如,唯一值排序树2314中的一个)。在这样做时,处理器可以识别(即,区分)在数据单元的数据记录内的数据字段内第一次遇到的数据值中的唯一数据值与这样的唯一数据值的重复。如已经讨论的并且如对本领域技术人员而言将是熟知的那样,生成二叉树的过程提供了如下机会:确定来自数据记录中的每个数据记录的每个数据值与数据字段是否是第一次遇到的数据值,使得其被添加到二叉树,以及之前已经遇到过哪个这样的数据值,使得其已经在二叉树中。如已经讨论的并且也如对本领域技术人员而言将是熟知的那样,生成二叉树的过程提供了用于以升序或降序对唯一值排序的机会。另外,并且也如先前讨论的那样,当识别每个唯一值并将其添加到二叉树时,该唯一值可以在二叉树内与记录标识符(例如,记录标识符2132中的一个)相关,所述记录标识符识别标识在从其检索唯一值的数据单元内的数据记录。因此,在被完全生成时,二叉树包括唯一值而不包括它们的重复。代之以,在3324处,对于已经被存储在二叉树中的唯一值中的一个的被识别的每个重复,将重复值的指示添加到所有识别的重复值的表(例如,重复值表2317中的一个)。在这样的重复值表内,从其检索重复值的数据记录的记录标识符被存储,并与数据记录的记录标识符相关,其中重复值是重复的唯一值。此外,在这样的重复值表内,可以是有多少每个唯一值的重复的计数。
在3330处,节点设备的处理器可以从每个二叉树生成单元索引内的对应唯一值索引(例如,唯一值索引2334),所述单元索引对应于从其检索二叉树内的唯一值的数据单元。在每个这样的唯一值索引中,至少唯一值的记录标识符以对应于当唯一值被添加到二叉树时唯一值以其来排序的次序的次序来排列。在3332处,节点设备的处理器还可以从每个二叉树检索在对应数据单元内的数据记录之中的对应数据字段中识别的最高和最低唯一值的指示,并且可以使用最高值和最低值来生成唯一值的范围(即,字段值范围2338中的一个)的指示。如已经讨论的并且如对本领域技术人员而言将是熟知的那样,可以通过执行二叉树的有序遍历以排序的次序来检索二叉树内的唯一值和它们的对应的记录标识符。如也已经讨论的那样,每个唯一值索引还可以包括在对应数据单元的数据记录之中的对应数据字段内的识别的唯一值的计数。
应再次注意,二叉树的这样的使用只是用于识别唯一值和其重复以及对唯一值进行排序的一种方法。再次,其他实施例是可能的,其中可以使用可以基于(一个或多个)其他数据结构的其他方法,包括但不限于多层跳过列表等。
在3340处,对于每个数据单元,节点设备的处理器可以检查被选择以被索引的数据字段中的任何数据字段是否具有要针对其生成唯一值向量(例如,唯一值向量2335中的一个)的数据类型。如果是,那么在3342处,处理器可以针对对应的单元索引内的每个这样的数据字段如此生成唯一值向量。如已经讨论的那样,处理器可以检索一个或多个规则和/或可以由控制设备或控制器提供一个或多个规则,所述规则指定要针对其生成唯一值向量的一个或多个数据类型。作为示例,可能认为期望针对数据单元的数据字段中的每个的唯一值生成唯一值向量,所述数据单元的数据字段被选择以被索引,其中数据类型使得每个数据值具有相同的和/或相对小的数据大小(例如,所有都是字节、字、双字、四字、单精度浮点值、双精度浮点值、八字符文本字符串等)。
在3350处,对于每个数据单元,节点设备的处理器可以检查被选择以被索引的数据字段中的任何数据字段是否具有要针对其生成散列值向量(例如,散列值向量2336中的一个)的数据类型。如果否,那么在3360处,节点设备的处理器可以从每个重复值表生成单元索引内的一个或多个对应的重复值索引(例如,重复值索引2337中的一个或多个),所述单元索引对应于从其检索由重复值重复的唯一值的数据单元。在每个这样的重复值索引中,至少包括被重复的唯一值的记录标识符、唯一值本身、或与唯一值的对应关系的另一形式,连同该唯一值的每个重复的记录标识符。替代地或附加地,每个重复值索引与其对应的唯一值的对应关系可以通过指向重复值索引的多种类型中的任何类型的指针或者重复值索引的相对定位来维持,所述相对定位诸如相对于唯一值索引内的对应的唯一值的偏移。如已经讨论的那样,每个重复值索引还可以包括唯一值的重复的计数。
然而,如果在3350处,存在被选择以被索引的一个或多个数据字段,所述数据字段具有要针对其生成散列值向量的数据类型,那么在3352处,节点设备的处理器可以从每个这样的数据字段中识别的每个唯一值生成散列值。然后,对于每个这样的数据字段,可以将从其唯一值生成的散列值排序为升序或降序,并且可以由处理器将散列值中的唯一散列值与其重复区分开。如已经讨论的那样,这可以在3354处通过使用从这样的数据字段的唯一值生成的散列值来完成,以生成散列值的二叉树(即,散列二叉树)。再次,应当注意,如在较早描述的唯一值的识别和排序中,二叉树的使用只是一种方法,并且在其他实施例中可以使用可能涉及(一个或多个)其他数据结构的其他方法。
在3356处,节点设备的处理器可以从每个散列二叉树生成单元索引内的对应的散列值向量,所述单元索引对应于从其检索唯一值并用于生成散列值的数据单元。与每个唯一值向量内的唯一值一样,每个散列值向量内的散列值可以以散列值在散列二叉树内被排序成其的次序来排列。在3358处,节点设备的处理器还可以从每个散列二叉树检索在对应数据单元内的数据记录之中的对应数据字段中识别的最高和最低唯一散列值的指示,并且可以使用最高和最低散列值来生成唯一散列值的范围(即,字段散列值范围2339中的一个)的指示。然后,在3360处,处理器可以继续生成(一个或多个)重复值索引。
在3370处,对于存储在节点设备内的每个超级单元,节点设备的处理器可以从由对应于对应超级单元的数据单元的单元索引中指示的最高和最低唯一值(例如,字段值范围2338)所定义的唯一值的范围的指示,以及从也可以被提供的由那些相同单元索引中的最高和最低散列值(例如,字段散列值范围2339)所定义的散列值的范围的任何指示,生成对应的超级单元索引(例如,超级单元索引2430中的一个)。更具体地,对于每个超级单元索引,以及对于已经被选择以被索引的每个数据字段,处理器可以从最高和最低唯一值的每个对应单元索引中的对应指示生成另一个二叉树(或者再次,一些其他数据结构)。处理器然后可以从每个这样的二叉树(或其他数据结构)跨对应超级单元的所有数据单元内的所有数据记录识别在对应数据字段内找到的最高和最低唯一值,并且可以使用这样的最高值和最低值来在超级单元索引内生成贯穿对应超级单元的针对该数据字段的唯一值的范围(即,超级单元字段值范围2438中的一个)的指示。在被选择以被索引的数据字段之中存在任何数据字段的情况下,对于所述数据字段,在对应超级单元内的数据单元的单元索引内提供了字段散列值范围,处理器可以类似地在超级单元索引内生成贯穿对应超级单元内的针对该数据字段的唯一散列值的范围(即,超级单元字段散列值范围2439中的一个)的指示。
图26A、26B、26C、26D、26E和26F一起图示了逻辑流程3400的示例实施例。逻辑流程3400可以表示由本文中描述的一个或多个实施例执行的操作中的一些或全部。更具体地,逻辑流程3400可以图示由处理器2350在执行控制例程2340时执行的操作和/或由节点设备2300中的至少一个的(一个或多个)其他部件执行的操作。
在3410处,多个节点设备的每个节点设备的处理器(例如,多个节点设备2300中的每个的处理器2350)可以从控制设备或结合到相同节点设备或另一节点设备中的控制器(例如,从控制设备2500,或从结合到另一节点设备2300或相同节点设备2300中的控制器2503)接收查询指令的实例(例如,从请求设备2700中的一个接收的查询指令2710的实例),所述查询指令可以从请求设备被传输到控制设备或控制器。查询指令可以包括用于搜索可能满足搜索标准的数据集内的数据记录的搜索标准。如已经讨论的那样,这样的搜索标准可以包括要在数据集的数据记录的一个或多个指定数据字段内搜索的单个数据值、多个离散数据值和/或数据值的范围的规范。
如已经讨论的那样,在一些实施例中,控制设备或控制器可以通过执行操作以识别数据集中的一个或多个候选超级单元来参与响应于接收的查询指令的实例,所述候选超级单元可以包括一个或多个数据单元,所述数据单元可以包括满足在查询指令的实例中指定的搜索标准的一个或多个数据记录(例如,数据集2230的超级单元2233的候选超级单元,所述超级单元2233可以包括一个或多个数据单元2130,所述数据单元2130可以包括一个或多个数据记录2133)。在这样的实施例中,控制设备或控制器可以连同查询指令一起提供存储在节点设备内的哪个超级单元(哪些超级单元)被控制设备或控制器识别的指示。在这样的实施例中,在3410处,在接收到查询指令和节点设备内的哪个超级单元(哪些超级单元)已经被识别为候选超级单元的伴随指示之后,在3426处,处理器可以继续执行操作以识别候选数据单元。
然而,在其中控制设备或控制器不执行用于识别候选超级单元的操作的其他实施例中,被提供有查询指令的节点设备中的每个内的处理器可以执行这样的操作以识别可能存在于可能被存储在其中的一个或多个超级单元之中的任何候选超级单元。更准确地说,在这样的其他实施例中,在3420处,并且在3426处执行用于识别候选数据单元的操作之前,节点设备的处理器可以使用搜索标准与在超级单元索引中的每个中提供的(一个或多个)超级单元字段值范围和/或(一个或多个)超级单元字段散列值范围(例如,超级单元索引2430内的超级单元字段值范围2438和/或超级单元字段散列值范围2439)来确定对应的超级单元是否是候选超级单元,所述超级单元索引对应于存储在节点设备内的超级单元。在3422处,在存储在节点设备内的所有的超级单元的(一个或多个)超级单元索引已经被如此分析之后,节点设备的处理器可以检查存储在节点设备内的一个或多个超级单元中的任何超级单元是否已经被识别为候选超级单元。如果存储在节点设备内的超级单元没有已经被识别为候选超级单元,那么在3424处,处理器可以将节点设备不具有满足搜索标准的可用数据记录的指示传输到控制设备或控制器。然而,如果存储在节点设备内的至少一个超级单元已经被识别为候选超级单元,那么在3426处,处理器可以继续执行操作以识别候选数据单元。
在3426处,节点设备的处理器可以使用搜索标准与在单元索引中的每个中提供的(一个或多个)字段值范围和/或(一个或多个)字段散列值范围(例如,单元索引2330内的字段值范围2338和/或字段散列值范围2339)来确定对应的数据单元是否是候选数据单元,所述单元索引对应于存储在节点设备内的候选数据单元的数据单元。在3428处,在存储在节点设备内的候选超级单元内的所有的数据单元的(一个或多个)单元索引已经被如此分析之后,节点设备的处理器可以检查存储在节点设备内的候选超级单元内的一个或多个数据单元中的任何数据单元是否已经被识别为候选数据单元。如果存储在节点设备内的这样的数据单元没有已经被识别为候选数据单元,那么在3424处,处理器可以将节点设备不具有满足搜索标准的可用数据记录的指示传输到控制设备或控制器。然而,如果存储在节点设备内的至少一个数据单元已经被识别为候选数据单元,那么处理器可以继续执行用于缩小的操作,并且然后搜索满足搜索标准的数据记录。
在3430处,节点设备的处理器可以检查对应于候选数据单元中的一个的单元索引中的任何单元索引是否包括针对搜索标准中包括的数据字段中的任何数据字段的散列值向量(例如,散列值向量2336中的一个)。如果是,那么在3432处,处理器可以使用这样的散列值向量来缩小候选数据单元的集合。更具体地,在搜索标准指定一个或多个离散数据值而不是数据值的范围作为候选数据单元的单元索引中那里针对其的散列值向量的单独数据字段的搜索标准的部分的情况下,处理器可以从一个或多个离散数据值中的每个生成散列值,并且然后可以将那些散列值与散列值向量内的散列值进行比较,以确定是否能够排除候选数据单元中的一个或多个作为具有满足搜索标准的任何数据记录(即,排除继续成为候选数据单元)。在一些实施例中,如果针对搜索标准中包括的多于一个的数据字段存在散列值向量,其中针对那些数据字段中的每个的搜索标准包括一个或多个离散数据值而没有数据值的范围,那么处理器可以检索每个候选数据单元的数据记录内的每个这样的数据字段内存在的唯一值的计数。如先前讨论的那样,数据单元内的唯一值索引可以包括这样的计数(例如,唯一值索引2334)。处理器可以使用那些检索的计数来确定这样的数据字段中的每个的数据值的相对基数。然后,处理器可以以基于相对基数的次序执行刚刚描述的散列值的比较,以对应于其中数据值显示最高基数的这样的数据字段中的一个数据字段的散列值向量开始,并且然后以基数递减的次序继续到这样的数据字段中的其他数据字段。由于对应于每个数据字段的散列值向量被用于缩小候选数据单元,因此由于涉及越来越窄的候选数据单元的集合,对应于下一个数据字段的散列值向量的使用能够被更快速地和/或更高效地执行。以该方式,可以更快地执行候选数据单元的缩小。
在3434处,处理器可以检查候选数据单元是否已经被缩小到其中不再有任何候选数据单元剩余的程度。如果没有候选数据单元剩余,那么在3436处,处理器可以向控制设备或控制器传输节点设备不具有满足搜索标准的可用数据记录的指示。然而,如果在存储在节点设备内的数据单元之中剩余至少一个候选数据单元,那么处理器可以继续执行用于缩小的更多操作,并且然后搜索满足搜索标准的数据记录。
在3440处,节点设备的处理器可以检查对应于针对候选数据单元中的一个的单元索引中的任何单元索引是否包括搜索标准中包括的数据字段中的任何数据字段的唯一值向量(例如,唯一值向量2335中的一个)。如果是,那么在3442处,处理器可以使用这样的唯一值向量来缩小候选数据单元的集合。更具体地,处理器可以将针对搜索标准内的每个这样的数据字段指定的数据值与唯一值向量内的唯一值进行比较,以确定候选数据单元中的一个或多个是否能够被排除作为具有满足搜索标准的任何数据记录(即,排除继续成为候选数据单元)。在一些实施例中,如果针对搜索标准中包括的多于一个的数据字段存在唯一值向量,那么处理器可以检索每个候选数据单元的数据记录内的每个这样的数据字段内存在的唯一值的计数。再次,数据单元内的唯一值索引可以包括这样的计数。处理器可以使用那些检索的计数来确定这样的数据字段中的每个的数据值的相对基数。然后,处理器可以以基于对应的数据字段的相对基数的次序执行刚刚描述的唯一值的比较,以对应于其中数据值显示最高基数的这样的数据字段中的一个数据字段的唯一值向量开始,并且然后以基数递减的次序继续到这样的数据字段中的其他数据字段。由于对应于每个数据字段的唯一值向量被用于缩小候选数据单元,因此由于涉及越来越窄的候选数据单元的集合,对应于下一个数据字段的唯一值向量的使用能够被更快速地和/或更高效地执行。以该方式,可以更快地执行候选数据单元的缩小。
在3444处,处理器可以检查候选数据单元是否已经被缩小到其中不再有任何候选数据单元剩余的程度。如果没有候选数据单元剩余,那么在3446处,处理器可以向控制设备或控制器传输节点设备不具有满足搜索标准的可用数据记录的指示。然而,如果在存储在节点设备内的数据单元之中剩余至少一个候选数据单元,那么处理器可以继续执行操作以搜索满足搜索标准的数据记录。更具体地,在3450处,处理器可以使用在3442处刚刚使用的相同的唯一值向量来缩小候选数据单元,以然后搜索和识别针对其存在唯一值向量的满足搜索标准中包括的针对至少数据字段的搜索标准剩余候选数据单元内的数据记录。换句话说,处理器可以重新使用相同的唯一值向量来缩小剩余候选数据单元中的每个内的候选数据记录。然后,处理器可以继续执行进一步的操作,以搜索通过和/或缩小到目前为止满足搜索标准的数据记录(即,进一步缩小候选数据记录)。应当注意,候选记录的缩小可以具有进一步缩小候选数据单元的效果,其中存在其中数据记录的缩小导致其中候选数据单元不再具有任何候选数据记录的情况。
简要参考回到在3442处使用唯一值向量来缩小候选数据单元以及在3450处搜索剩余候选数据单元内的数据记录(即,缩小候选数据记录)的以上的讨论,尽管这两个活动被描绘为单独并且顺序地执行的步骤,但是其他实施例是可能的,其中两个活动可以至少部分地被同时执行。更具体地,可以通过每个唯一值向量进行单个读取遍次,作为使用其中的唯一值来至少部分并行地既缩小候选数据单元又搜索数据记录(即缩小候选数据记录)的部分,并且由此避免对唯一值向量中的每个的重复访问。
简要参考回到使用唯一值向量和散列值向量来缩小候选数据单元的以上的讨论,并且如先前讨论的那样,在其中可以在搜索标准中包括的一个或多个数据字段的单元索引中提供唯一值向量和散列值向量二者的情况下,如果在搜索标准中使用用于组合针对不同数据字段的单独搜索标准的逻辑运算符是逻辑OR,则可能的是放弃使用唯一值向量和散列值向量中的一个或另一个。如由本领域技术人员将认识到的那样,这是因为逻辑OR运算符指示候选数据单元可以保持候选数据单元(即,可以不被排除作为候选数据单元),只要该特定数据字段的唯一值向量和散列值向量中的一个或另一个不能排除该候选数据单元,就满足特定数据字段的单独搜索标准。在一些实施例中,在搜索标准对逻辑OR进行这样的使用的情况下,可以使节点设备的处理器利用这样的情况以通过如此放弃使用一个或多个数据字段的唯一值向量或散列值向量中的一个或另一个来提高以其执行搜索的速度和/或效率。
在3460处,处理器可以检查是否存在尚未被搜索的包括在搜索标准中的剩余任何数据字段,并且已经被索引使得至少存在单元索引内存在的唯一值索引。如果是,那么在3461处,处理器可以检查是否存在仅一个这样的剩余未搜索数据字段。如果是,那么在3462处,处理器可以直接搜索剩余候选数据单元内的数据记录内的这样的剩余未搜索数据字段,以识别满足这样的剩余未搜索数据字段的搜索标准的剩余候选数据单元内的数据记录。在这样做时,处理器可以采用在剩余候选数据单元中的每个内的哪些数据记录在这样的剩余未搜索数据字段内具有唯一数据值的指示。如已经讨论的那样,处理器可以采用多种方法中的任何方法来执行这样的搜索,所述方法包括但不限于基于二进制搜索或跳过列表的方法中的一种或两种。另外,如较早前描述的那样,在能够通过使用对应于一个或多个其他数据字段的唯一值向量执行搜索的情况下,使得剩余候选数据单元中的每个内的候选数据记录已经被缩小到至少某种程度,处理器可以利用这样的缩小来减少在3462处直接搜索的数据记录的数量。并且因此,在3462处直接搜索数据记录可以用于进一步缩小候选数据记录。
然而,如果在3461处,存在包括在搜索标准中的多于一个的尚未被搜索的数据字段,并且已经被索引使得至少存在单元索引内存在的唯一值索引,那么在3463处,处理器可以检索在剩余候选数据单元中的每个的数据记录内的每个这样的数据字段内存在的唯一值的计数。再次,数据单元内的唯一值索引可以包括这样的计数。处理器可以使用那些检索的计数来确定针对这样的数据字段中的每个的数据值的相对基数。在3464处,处理器然后可以以基于对应的数据字段的相对基数的次序执行类似于在3462处刚刚描述的事物的搜索,以其中数据值显示最高基数的这样的数据字段中的一个数据字段开始,并且然后以基数递减的次序继续到这样的数据字段中的其他数据字段。以该方式,可以更快地执行候选数据记录的缩小。
无论使节点设备的处理器在3462处对单个数据字段还是在3464处对多个数据字段执行这样的搜索,候选数据记录的这样的缩小可能导致候选数据单元的缩小。在3465处,处理器可以检查候选数据单元是否已经被缩小到其中不再有任何候选数据单元剩余的程度。如果没有候选数据单元剩余,那么在3466处,处理器可以向控制设备或控制器传输节点设备不具有满足搜索标准的可用数据记录的指示。然而,如果在存储在节点设备内的数据单元之中剩余至少一个候选数据单元,那么处理器可以继续执行多个操作以搜索和/或缩小满足搜索标准的数据记录。
在3470处,处理器可以检查是否存在尚未被搜索的包括在搜索标准中的剩余任何数据字段,并且尚未被被索引,使得没有在单元索引内存在的索引信息。如果是,那么在3472处,处理器可以直接搜索剩余候选数据单元内的数据记录内的这样的剩余未搜索数据字段,以识别满足这样的剩余未搜索数据字段的搜索标准的剩余候选数据单元内的数据记录。另外,如较早前描述的那样,在能够通过使用对应于一个或多个其他数据字段的唯一值向量和/或唯一值索引执行搜索的情况下,使得剩余候选数据单元中的每个内的候选数据记录已经被缩小到至少某种程度,处理器可以利用这样的缩小来减少在3472处直接搜索的数据记录的数量。并且因此,在3472处直接搜索数据记录可以用于仍然进一步缩小候选数据记录。以该方式,可以更快地执行候选数据记录的进一步缩小。
再次,候选数据记录的这样的缩小可能导致候选数据单元的缩小。在3474处,处理器可以检查候选数据单元是否已经被缩小到其中不再有任何候选数据单元剩余的程度。如果没有候选数据单元剩余,那么在3476处,处理器可以向控制设备或控制器传输节点设备不具有满足搜索标准的可用数据记录的指示。然而,如果在存储在节点设备内的数据单元之中剩余至少一个候选数据单元,那么处理器可以继续执行操作以向控制设备或控制器提供来自节点设备内的搜索的结果的指示。
在3480处,节点设备的处理器可以检查所接收的查询指令的实例是否包括用于对数据记录的数据值执行任务的一个或多个处理操作的任务指令,所述数据记录的数据值在刚刚执行的搜索中被识别为满足搜索标准。如果否,那么在3482处,处理器可以向控制设备或控制器传输搜索的结果的指示。如已经讨论的那样,在查询指令请求哪些数据记录满足搜索标准的指示的情况下,可以将指示节点设备内至少哪些数据记录满足搜索标准的位域或其他数据结构传输到控制设备或控制器。然而,如已经讨论的那样,在查询指令请求满足搜索标准的每个记录的数据值的至少子集的情况下,满足搜索标准的那些数据值或每个数据记录的整体可以被传输到控制设备或控制器。
然而,如果在3480处,所接收的查询指令的实例确实包括用于执行这样的处理操作的任务指令,那么在3484处,处理器可以执行任务指令以对在搜索中被识别为满足搜索标准的数据记录的数据值执行任务的操作。在这样做时,对每个这样的数据记录的数据值的任务指令的执行,或对其中找到满足搜索标准的至少一个数据记录的每个数据单元的数据记录的任务指令的执行可以在单独的进程中执行,并且那些进程可以跨由处理器支持的多个执行线程被分布。在任务指令的多个实例的这样的至少部分并行执行之后和/或在任务指令的多个实例的这样的至少部分并行执行期间,处理器可以向控制设备或控制器传输任务的执行的结果的指示。
应该注意,作为对描述为在3432、3442和/或3463处发生的唯一值的计数的检索和分析的单独执行的替代,代之以,处理器可以针对每个候选数据单元检索从所有唯一值索引可用的唯一值的所有计数,所述唯一值索引可能存在于搜索标准中包括的数据字段中的任何数据字段的每个对应单元索引2330内,并且可以单独地针对每个候选数据单元基于相对基数来导出数据字段的次序。然后,当确定要对多个数据字段以其来使用散列值向量的次序时,当确定要对多个数据字段以其来使用唯一值向量的次序时,和/或当确定在直接搜索数据记录的同时要以其来继续通过多个数据字段的次序时,可以依赖于针对每个候选数据单元的这样的次序。
在各种实施例中,设备之中的处理和/或存储资源的划分,和/或支持设备之中的通信的API架构,可以被配置为和/或选择为符合多种用于分布式处理的标准中的任何标准,包括但不限于IEEE P2413、ALLJOYN4标准、IOTIVITY™标准等。作为示例,可以采用API的子集和/或这样的标准中的一个或多个的其他架构特征来实现本文中描述的相对最小程度的协调,以提供并行化数据的处理时的更高效率,同时最小化可能导致过程之中的不期望的序列化的实例的协调信息的交换。然而,应该注意,(一个或多个)数据集的数据集部分的存储、检索和/或处理的并行化不依赖于现有API架构和/或支持通信协议,也不受现有API架构和/或支持通信协议约束。更广泛地,经由被绑定到现有API架构或协议的网络,可以在存储、传输和/或分发中以其来组织(一个或多个)数据集的方式中没有任何内容。
一些系统可能使用HADOOP®框架,一种用于在分布式计算环境中存储和分析大数据的开源框架。一些系统可能使用云计算,所述云计算可以使能对可配置计算资源(例如,网络、服务器、存储设备、应用和服务)的共享池的无处不在的、方便的、按需网络访问,其可以以最少的管理工作或服务提供商交互来快速供应和发布。如由本领域技术人员所理解的那样,一些网格系统可以被实现为多节点HADOOP®聚类。APACHE™ HADOOP®框架是用于分布式计算的开源软件框架。
至少部分地通过使用机器学习模型来实现一些示例可以减少在分析数据时由计算设备所消耗的处理迭代、时间、存储器、电力或这些的任何组合的总数。一些机器学习方法可以用机器学习专用处理器(例如,非通用CPU)来更高效和快速地执行和处理。例如,这些处理器中的一些可以包括图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、Google的张量处理单元(TPU)和/或使用半导体(例如,硅(Si)、砷化镓(GaAs))器件实现一个或多个神经网络的一些其他机械学习专用处理器。
以上已经描述的事物包括所公开的架构的示例。当然,不可能描述部件和/或方法的每个可想到的组合,但是本领域普通技术人员可以认识到许多其他组合和排列是可能的。因此,新颖架构旨在包括落入所附权利要求的精神和范围内的所有这样的变更、修改和变化。

Claims (30)

1.一种用于数据集索引的装置,包括:多个节点设备中的第一节点设备的处理器,以及用于存储指令的第一节点设备的存储设备,当所述指令由处理器执行时,使处理器执行操作,所述操作包括:
在第一节点设备处接收多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:
多个超级单元被分布在多个节点设备之中;
每个超级单元包括多个数据单元;
多个数据单元中的每个数据单元包括多个数据记录;以及
多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合;
在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合的第一数据字段和通过字段的集合的第二数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于所接收的超级单元中的第一数据单元内的每个数据记录,使处理器:
从第一数据字段检索数据值,并且从第二数据字段检索数据值;
基于从第一数据字段检索的数据值来确定数据记录的第一数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第一数据字段检索到数据值;
响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到对应于第一数据单元的第一单元索引的第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值来排序,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的搜索;
基于从第二数据字段检索的数据值,确定数据记录的第二数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第二数据字段检索到数据值;以及
响应于确定数据记录的第二数据字段存储唯一数据值,将数据记录的标识符添加到第一单元索引的第二唯一值索引,其中第二唯一值索引内的数据记录的标识符基于第二数据字段中的对应唯一数据值来排序,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的搜索;
在对应于所接收的超级单元的超级单元索引内生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及第一数据单元的数据记录内的第二数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准中指定的值是否存在于第一数据单元的任何数据记录的第一和第二数据字段中的一个内;
向控制设备提供对指向要在其处存储超级单元、超级单元索引和第一单元索引的数据文件内的位置的第一指针的请求;
在第一节点设备处并从控制设备接收第一指针;以及
向至少一个数据设备并且至少部分地与所述多个节点设备中的其他节点设备并行地传输超级单元、超级单元索引和第一单元索引,与用于存储超级单元、超级单元索引和第一单元索引的指令,其中超级单元存储在由第一指针指向的位置处开始的数据文件中,其中超级单元索引和第一单元索引存储在数据文件中超级单元之后的位置处。
2.如权利要求1所述的装置,其中:
除了第一数据单元之外,接收的超级单元还包括第二数据单元;
使处理器在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以在第一单元索引内生成附加的唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索;
处理器的第一处理器核索引第一数据单元内的多个数据记录;以及
处理器的第二处理器核至少部分地与由第一处理器核对第一数据单元内的多个数据记录的索引并行地索引第二数据单元内的多个数据记录。
3.如权利要求1所述的装置,其中,使处理器:
对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;
执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;
将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;
对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;
执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及
将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
4.如权利要求1所述的装置,其中,使处理器执行操作,所述操作包括:
在每次从多个数据记录中的数据记录的第一数据字段和第二数据字段检索数据值之后,使处理器执行操作,所述操作包括:
搜索与数据记录的标识符相关的第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否包括已经存在于第一二叉树内的重复数据值;
响应于确定从第一数据字段检索的数据值是尚未存在于第一二叉树内的唯一数据值,将从第一数据字段检索的数据值添加到第一二叉树;
搜索与数据记录的标识符相关的第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否包括已经存在于第二二叉树内的重复数据值;以及
响应于确定从第二数据字段检索的数据值是尚未存在于第二二叉树内的唯一数据值,将从第二数据字段检索的数据值添加到第二二叉树;
基于第一二叉树的有序遍历生成第一唯一值索引,以及
基于第二二叉树的有序遍历生成第二唯一值索引。
5.如权利要求4所述的装置,其中:
在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后,使处理器执行操作,所述操作包括:
响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;
响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及
响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引;
在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后,使处理器执行操作,所述操作包括:
响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;
响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及
响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并将数据记录的标识符添加到所添加的重复值索引;以及
重复值索引的第一和第二集合内的每个重复值索引包括数据记录的标识符。
6.如权利要求1所述的装置,其中,使处理器至少部分地与由多个节点设备中的其他节点设备向控制设备传输资源的可用性并行地向控制设备传输第一节点设备的资源的当前可用性的指示,以使得控制设备能够确定是否代替将超级单元分配给多个节点设备中的另一个节点设备而将超级单元分配给第一节点设备。
7.如权利要求6所述的装置,其中,使处理器执行操作,所述操作包括:
在第一节点设备处并从控制设备接收指向要从其检索超级单元的数据文件内的位置的第二指针;以及
向至少一个数据设备并且至少部分地与多个节点设备中的其他节点设备并行地传输用于向第一节点设备提供超级单元的指令。
8.如权利要求1所述的装置,其中,使处理器执行操作,所述操作包括:
在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;
将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及
响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将所述至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
9.如权利要求8所述的装置,其中,使处理器执行操作,所述操作包括:
响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二唯一值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及
在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
10.如权利要求8所述的装置,其中,使处理器执行操作,所述操作包括:
解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及
响应于确定查询指令确实包括用于执行任务的任务指令,执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务。
11.一种非暂时性机器可读存储介质,包括可操作以使多个节点设备中的第一节点设备的处理器执行操作的指令,所述操作包括:
在第一节点设备处接收多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:
多个超级单元被分布在多个节点设备之中;
每个超级单元包括多个数据单元;
多个数据单元中的每个数据单元包括多个数据记录;以及
多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合;
在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于所接收的超级单元中的第一数据单元内的每个数据记录,使处理器:
从第一数据字段检索数据值,并且从第二数据字段检索数据值;
基于从第一数据字段检索的数据值来确定数据记录的第一数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第一数据字段检索到数据值;
响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到对应于第一数据单元的第一单元索引的第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值来排序,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的搜索;
基于从第二数据字段检索的数据值,确定数据记录的第二数据字段是否存储唯一数据值,其中尚未由处理器从第一数据单元的任何数据记录的第二数据字段检索到数据值;以及
响应于确定数据记录的第二数据字段存储唯一数据值,将数据记录的标识符添加到第一单元索引的第二唯一值索引,其中第二唯一值索引内的数据记录的标识符基于第二数据字段中的对应唯一数据值来排序,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的搜索;
在对应于所接收的超级单元的超级单元索引内生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及第一数据单元的数据记录内的第二数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准中指定的值是否存在于第一数据单元的任何数据记录的第一和第二数据字段中的一个内;
向控制设备提供对指向要在其处存储超级单元、超级单元索引和第一单元索引的数据文件内的位置的第一指针的请求;
在第一节点设备处并从控制设备接收第一指针;以及
向至少一个数据设备并且至少部分地与所述多个节点设备中的其他节点设备并行地传输超级单元、超级单元索引和第一单元索引,与用于存储超级单元、超级单元索引和第一单元索引的指令,其中超级单元存储在由第一指针指向的位置处开始的数据文件中,其中超级单元索引和第一单元索引存储在数据文件中超级单元之后的位置处。
12.如权利要求11所述的机器可读存储介质,其中:
除了第一数据单元之外,接收的超级单元还包括第二数据单元;
使处理器在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以在第一单元索引内生成附加的唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索;
处理器的第一处理器核索引第一数据单元内的多个数据记录;以及
处理器的第二处理器核至少部分地与由第一处理器核对第一数据单元内的多个数据记录的索引并行地索引第二数据单元内的多个数据记录。
13.如权利要求11所述的机器可读存储介质,其中:
由第一节点设备接收的超级单元包括多于一个数据单元;
并且
使处理器:
对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;
执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;
将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;
对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;
执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及
将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
14.如权利要求11所述的机器可读存储介质,其中,使处理器执行操作,所述操作包括:
在每次从多个数据记录中的数据记录的第一数据字段和第二数据字段检索数据值之后,使处理器执行操作,所述操作包括:
搜索与数据记录的标识符相关的第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否包括已经存在于第一二叉树内的重复数据值;
响应于确定从第一数据字段检索的数据值是尚未存在于第一二叉树内的唯一数据值,将从第一数据字段检索的数据值添加到第一二叉树;
搜索与数据记录的标识符相关的第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否包括已经存在于第二二叉树内的重复数据值;以及
响应于确定从第二数据字段检索的数据值是尚未存在于第二二叉树内的唯一数据值,将从第二数据字段检索的数据值添加到第二二叉树;
基于第一二叉树的有序遍历生成第一唯一值索引,以及
基于第二二叉树的有序遍历生成第二唯一值索引。
15.如权利要求14所述的机器可读存储介质,其中:
在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后,使处理器执行操作,所述操作包括:
响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;
响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及
响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引;
在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后,使处理器执行操作,所述操作包括:
响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;
响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及
响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并将数据记录的标识符添加到所添加的重复值索引;以及
重复值索引的第一和第二集合内的每个重复值索引包括数据记录的标识符。
16.如权利要求11所述的机器可读存储介质,其中,使处理器至少部分地与由多个节点设备中的其他节点设备向控制设备传输资源的可用性并行地向控制设备传输第一节点设备的资源的当前可用性的指示,以使得控制设备能够确定是否代替将超级单元分配给多个节点设备中的另一个节点设备而将超级单元分配给第一节点设备。
17.如权利要求16所述的机器可读存储介质,其中,使处理器执行操作,所述操作包括:
在第一节点设备处并从控制设备接收指向要从其检索超级单元的数据文件内的位置的第二指针;以及
向至少一个数据设备并且至少部分地与多个节点设备中的其他节点设备并行地传输用于向第一节点设备提供超级单元的指令。
18.如权利要求11所述的机器可读存储介质,其中,使处理器执行操作,所述操作包括:
在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;
将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及
响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将所述至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
19.如权利要求18所述的机器可读存储介质,其中,使处理器执行操作,所述操作包括:
响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二唯一值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及
在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
20.如权利要求18所述的机器可读存储介质,其中,使处理器执行操作,所述操作包括:
解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及
响应于确定查询指令确实包括用于执行任务的任务指令,执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务。
21.一种用于数据集索引的计算机实现的方法,包括:
在多个节点设备中的第一节点设备处接收多个超级单元中的超级单元,数据集从由至少一个数据设备维护的数据文件被划分为所述多个超级单元,其中:
多个超级单元被分布在多个节点设备之中;
每个超级单元包括多个数据单元;
多个数据单元中的每个数据单元包括多个数据记录;以及
多个数据记录中的每个数据记录包括在其处存储数据集的数据值的字段的集合;
在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地通过多个数据单元中的每个数据单元在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引多个数据单元中的每个数据单元内的多个数据记录,其中对于所接收的超级单元中的第一数据单元内的每个数据记录,所述方法包括:
从第一数据字段检索数据值,并且从第二数据字段检索数据值;
基于从第一数据字段检索的数据值来确定数据记录的第一数据字段是否存储唯一数据值,其中尚未从第一数据单元的任何数据记录的第一数据字段检索到数据值;
响应于确定数据记录的第一数据字段存储唯一数据值,将数据记录的标识符添加到对应于第一数据单元的第一单元索引的第一唯一值索引,其中第一唯一值索引内的数据记录的标识符基于第一数据字段中的对应唯一数据值来排序,以使得能够使用第一唯一值索引来执行对第一数据单元的数据记录的第一数据字段内的数据值的搜索;
基于从第二数据字段检索的数据值,确定数据记录的第二数据字段是否存储唯一数据值,其中尚未从第一数据单元的任何数据记录的第二数据字段检索到数据值;以及
响应于确定数据记录的第二数据字段存储唯一数据值,将数据记录的标识符添加到第一单元索引的第二唯一值索引,其中第二唯一值索引内的数据记录的标识符基于第二数据字段中的对应唯一数据值来排序,以使得能够使用第二唯一值索引来执行对第一数据单元的数据记录的第二数据字段内的数据值的搜索;
在对应于所接收的超级单元的超级单元索引内生成第一数据单元的数据记录内的第一数据字段的数据值的范围的指示,以及第一数据单元的数据记录内的第二数据字段的数据值的范围的指示,以使得能够使用超级单元索引来确定搜索标准中指定的值是否存在于第一数据单元的任何数据记录的第一和第二数据字段中的一个内;
向控制设备提供对指向要在其处存储超级单元、超级单元索引和第一单元索引的数据文件内的位置的第一指针的请求;
在第一节点设备处并从控制设备接收第一指针;以及
向至少一个数据设备并且至少部分地与所述多个节点设备中的其他节点设备并行地传输超级单元、超级单元索引和第一单元索引,与用于存储超级单元、超级单元索引和第一单元索引的指令,其中超级单元存储在由第一指针指向的位置处开始的数据文件中,其中超级单元索引和第一单元索引存储在数据文件中超级单元之后的位置处。
22.如权利要求21所述的计算机实现的方法,其中:
除了第一数据单元之外,接收的超级单元还包括第二数据单元;
所述方法包括在单个读取遍次中通过字段的集合中的第一数据字段和通过字段的集合中的第二数据字段索引第二数据单元内的多个数据记录,以在第一单元索引内生成附加的唯一值索引,以使能对第二数据单元内的数据记录的第一数据字段和第二数据字段中的至少一个内的数据值的二进制搜索;
处理器的第一处理器核索引第一数据单元内的多个数据记录;以及
处理器的第二处理器核至少部分地与由第一处理器核对第一数据单元内的多个数据记录的索引并行地索引第二数据单元内的多个数据记录。
23.如权利要求21所述的计算机实现的方法,包括:
对于超级单元内的每个数据单元,将第一数据字段的数据值的范围的最高数据值和最低数据值添加到第三二叉树;
执行第三二叉树的有序遍历,以识别超级单元内的数据单元之中的第一数据字段的最高和最低数据值;
将超级单元内的数据单元之中的第一数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第一数据字段的值的范围;
对于超级单元内的每个数据单元,将第二数据字段的数据值的范围的最高数据值和最低数据值添加到第四二叉树;
执行第四二叉树的有序遍历,以识别超级单元内的数据单元之中的第二数据字段的最高和最低数据值;以及
将超级单元内的数据单元之中的第二数据字段的最高值和最低值的指示添加到超级单元索引,以指定其中超级单元的第二数据字段的值的范围。
24.如权利要求21所述的计算机实现的方法,包括:
在每次从多个数据记录中的数据记录的第一数据字段和第二数据字段检索数据值之后执行操作,所述操作包括:
搜索与数据记录的标识符相关的第一数据单元的第一数据字段的唯一数据值的第一二叉树,以确定从第一数据字段检索的数据值是否包括已经存在于第一二叉树内的重复数据值;
响应于确定从第一数据字段检索的数据值是尚未存在于第一二叉树内的唯一数据值,将从第一数据字段检索的数据值添加到第一二叉树;
搜索与数据记录的标识符相关的第一数据单元的第二数据字段的唯一数据值的第二二叉树,以确定从第二数据字段检索的数据值是否包括已经存在于第二二叉树内的重复数据值;以及
响应于确定从第二数据字段检索的数据值是尚未存在于第二二叉树内的唯一数据值,将从第二数据字段检索的数据值添加到第二二叉树;
基于第一二叉树的有序遍历生成第一唯一值索引,以及
基于第二二叉树的有序遍历生成第二唯一值索引。
25.如权利要求24所述的计算机实现的方法,包括:
在每次从多个数据记录中的数据记录的第一数据字段检索数据值之后执行操作,所述操作包括:
响应于确定数据记录的第一数据字段存储重复数据值,在第一单元索引内搜索重复值索引的第一集合,以确定重复值的第一集合内是否已经存在重复值索引;
响应于识别第一集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及
响应于确定重复值的重复值索引的第一集合之中不存在现有重复值索引,将重复值索引添加到重复值的第一集合,并将数据记录的标识符添加到所添加的重复值索引;
在每次从多个数据记录中的数据记录的第二数据字段检索数据值之后执行操作,所述操作包括:
响应于确定数据记录的第二数据字段存储重复数据值,用第一单元索引搜索重复值索引的第二集合,以确定重复值的第二集合内是否已经存在重复值索引;
响应于识别第二集合内的重复值的现有重复值索引,将数据记录的标识符添加到所识别的现有重复值索引;以及
响应于确定重复值的重复值索引的第二集合之中不存在现有重复值索引,将重复值索引添加到重复值的第二集合并将数据记录的标识符添加到所添加的重复值索引;以及
其中,重复值索引的第一和第二集合内的每个重复值索引包括数据记录的标识符。
26.如权利要求21所述的计算机实现的方法,包括至少部分地与由多个节点设备中的其他节点设备向控制设备传输资源的可用性并行地向控制设备传输第一节点设备的资源的当前可用性的指示,以使得控制设备能够确定是否代替将超级单元分配给多个节点设备中的另一个节点设备而将超级单元分配给第一节点设备。
27.如权利要求26所述的计算机实现的方法,包括:
在第一节点设备处并从控制设备接收指向要从其检索超级单元的数据文件内的位置的第二指针;以及
向至少一个数据设备并且至少部分地与多个节点设备中的其他节点设备并行地传输用于向第一节点设备提供超级单元的指令。
28.如权利要求21所述的计算机实现的方法,包括:
在第一节点设备处并且至少部分地与多个节点设备中的其他节点设备并行地接收查询指令,所述查询指令指定要针对满足搜索标准的数据记录对数据集执行的搜索的搜索标准,其中搜索标准包括要在第一数据字段和第二数据字段中的至少一个内搜索的至少一个数据值;
将至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以确定超级单元是否包括满足搜索标准的任何数据记录;以及
响应于确定超级单元的至少一个数据单元内的至少一个数据记录确实包括满足搜索标准的数据记录,将所述至少一个数据值与由超级单元索引指定的第一数据字段的值的范围和第二数据字段的值的范围中的至少一个进行比较,以至少确定第一数据单元是否包括满足搜索标准的任何数据记录。
29.如权利要求28所述的计算机实现的方法,包括:
响应于确定至少第一数据单元确实包括满足搜索标准的数据记录,使用第一唯一值索引和第二唯一值索引中的至少一个以对第一数据单元的数据记录执行二进制搜索,以识别满足搜索标准的第一数据单元的一个或多个数据记录;以及
在识别了满足搜索标准的第一数据单元的数据记录时,针对识别满足搜索标准的第一数据单元的一个或多个附加数据记录的重复值索引来搜索重复值索引的第一集合和重复值索引的第二集合中的至少一个。
30.如权利要求28所述的计算机实现的方法,包括:
解析查询指令以确定查询指令是否包括用于对从被识别为满足搜索标准的一个或多个数据记录检索的数据执行任务的任务指令;以及
响应于确定查询指令确实包括用于执行任务的任务指令,执行指令以至少部分地与多个节点设备中的至少一个其他节点设备并行地执行任务。
CN201880002400.2A 2017-02-13 2018-01-30 用于分布式数据集索引的装置、方法和机器可读存储介质 Active CN109564568B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010824407.1A CN111966684B (zh) 2017-02-13 2018-01-30 用于分布式数据集索引的装置、方法和计算机程序产品

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201762458162P 2017-02-13 2017-02-13
US62/458162 2017-02-13
US15/838,110 US9977805B1 (en) 2017-02-13 2017-12-11 Distributed data set indexing
US15/838211 2017-12-11
US15/838,211 US9977807B1 (en) 2017-02-13 2017-12-11 Distributed data set indexing
US15/838,175 US10002146B1 (en) 2017-02-13 2017-12-11 Distributed data set indexing
US15/838,195 US10013441B1 (en) 2017-02-13 2017-12-11 Distributed data set indexing
US15/838195 2017-12-11
US15/838175 2017-12-11
US15/838110 2017-12-11
PCT/US2018/015919 WO2018148059A1 (en) 2017-02-13 2018-01-30 Distributed data set indexing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010824407.1A Division CN111966684B (zh) 2017-02-13 2018-01-30 用于分布式数据集索引的装置、方法和计算机程序产品

Publications (2)

Publication Number Publication Date
CN109564568A CN109564568A (zh) 2019-04-02
CN109564568B true CN109564568B (zh) 2020-10-23

Family

ID=62125354

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880002400.2A Active CN109564568B (zh) 2017-02-13 2018-01-30 用于分布式数据集索引的装置、方法和机器可读存储介质
CN202010824407.1A Active CN111966684B (zh) 2017-02-13 2018-01-30 用于分布式数据集索引的装置、方法和计算机程序产品

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010824407.1A Active CN111966684B (zh) 2017-02-13 2018-01-30 用于分布式数据集索引的装置、方法和计算机程序产品

Country Status (5)

Country Link
US (5) US10013441B1 (zh)
EP (2) EP3449355B1 (zh)
CN (2) CN109564568B (zh)
CA (2) CA3040729C (zh)
WO (1) WO2018148059A1 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10291494B2 (en) * 2016-04-20 2019-05-14 Cisco Technology, Inc. Distributing data analytics in a hierarchical network based on computational complexity
US10242055B2 (en) * 2016-12-07 2019-03-26 Medallia, Inc. Dual filter histogram optimization
US11514346B2 (en) * 2017-04-24 2022-11-29 Google Llc Contextual situation analysis
WO2019051615A1 (en) * 2017-09-18 2019-03-21 Rubikloud Technologies Inc. METHOD AND SYSTEM FOR HIERARCHICAL PREDICTION
US10528556B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
US10855767B1 (en) * 2018-03-05 2020-12-01 Amazon Technologies, Inc. Distribution of batch data to sharded readers
US10848411B2 (en) * 2018-03-05 2020-11-24 Rohde & Schwarz Gmbh & Co. Kg Test system and method for triggering or searching in input data decoded with a user defined protocol
EP3871091B1 (en) * 2018-10-22 2023-09-06 Microsoft Technology Licensing, LLC Distributed database-driven resource management and locking in a cloud native mobile core network node architecture
US10484532B1 (en) * 2018-10-23 2019-11-19 Capital One Services, Llc System and method detecting fraud using machine-learning and recorded voice clips
US10997375B2 (en) * 2018-11-14 2021-05-04 Bank Of America Corporation System for selective data capture and translation
JP7502297B2 (ja) * 2018-12-05 2024-06-18 サフラン パッセンジャー イノベーションズ, エルエルシー マルチバンド無線ネットワークにおける無線送信機管理およびリソース最適化のための方法及び装置
CN109783052B (zh) * 2018-12-27 2021-11-12 深圳市轱辘车联数据技术有限公司 数据排序方法、装置、服务器及计算机可读存储介质
WO2020153934A1 (en) * 2019-01-21 2020-07-30 Hewlett-Packard Development Company, L.P. Fault prediction model training with audio data
US10990574B2 (en) 2019-02-20 2021-04-27 Bank Of America Corporation Distributed indexing architecture for databases
US11520826B2 (en) 2019-02-20 2022-12-06 Bank Of America Corporation Data extraction using a distributed indexing architecture for databases
CN110120972A (zh) * 2019-04-19 2019-08-13 浙江省气象台 分布式存储网格气象数据读取方法及读取系统
CN110061986B (zh) * 2019-04-19 2021-05-25 长沙理工大学 一种基于遗传算法和anfis相结合的网络入侵异常检测方法
CN110309146A (zh) * 2019-05-09 2019-10-08 全知科技(杭州)有限责任公司 一种支持双向索引的值域数据索引库建立方法
DE102019210225A1 (de) * 2019-07-10 2021-01-14 Robert Bosch Gmbh Verfahren und Vorrichtung zur Analyse dienste-orientierter Kommunikation
CN110471935B (zh) * 2019-08-15 2022-02-18 上海达梦数据库有限公司 一种数据操作的执行方法、装置、设备和存储介质
US11711382B2 (en) * 2019-11-27 2023-07-25 Clarity Consulting Corporation Method and system of deducing state logic data within a distributed network
US11449548B2 (en) 2019-11-27 2022-09-20 Elasticsearch B.V. Systems and methods for enriching documents for indexing
US11138200B1 (en) 2019-12-04 2021-10-05 Tubular Labs, Inc. Efficient aggregation of time series data
US20210200717A1 (en) * 2019-12-26 2021-07-01 Oath Inc. Generating full metadata from partial distributed metadata
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US11385874B2 (en) * 2020-02-03 2022-07-12 Sap Se Automatic type determination for database programming
CN111580881B (zh) * 2020-04-30 2023-06-16 支付宝(杭州)信息技术有限公司 文件加载方法、装置和电子设备
CN111753930B (zh) * 2020-06-01 2024-02-13 安徽理工大学 基于双视图标签弹性特征学习的手写体数字识别方法
WO2022000375A1 (en) * 2020-07-01 2022-01-06 Paypal, Inc. Graph storage in database
CN111813580B (zh) * 2020-07-24 2022-07-15 成都信息工程大学 一种基于矩阵表示的分布式模型训练优化方法
US11397746B2 (en) * 2020-07-30 2022-07-26 Tableau Software, LLC Interactive interface for data analysis and report generation
CN111881145A (zh) * 2020-07-31 2020-11-03 北京致远互联软件股份有限公司 业务数据表的处理方法、装置、服务器及存储介质
CN114329098A (zh) * 2020-09-29 2022-04-12 上海岑洋软件科技有限公司 安防智能搜索引擎的实现方法
CN112416926B (zh) * 2020-11-02 2024-07-19 浙商银行股份有限公司 支持国产cpu simd指令的分布式数据库高性能执行器设计方法
US11615782B2 (en) * 2020-11-12 2023-03-28 Sony Interactive Entertainment Inc. Semi-sorted batching with variable length input for efficient training
US20220245104A1 (en) * 2021-02-02 2022-08-04 Maxlinear, Inc. Hashing for deduplication through skipping selected data
CN113064909B (zh) * 2021-06-03 2021-10-22 广州宸祺出行科技有限公司 一种数据同步校验方法、装置
CN113254241B (zh) * 2021-06-25 2021-09-21 中国空气动力研究与发展中心计算空气动力研究所 一种应用于cfd高性能计算的数据跨进程传输方法
CN113254511B (zh) * 2021-07-15 2021-10-12 北京华品博睿网络技术有限公司 一种分布式向量检索系统及方法
US12050576B2 (en) * 2021-08-30 2024-07-30 Datadog, Inc. Analytics database and monitoring system for structuring and storing data streams
CN113836186B (zh) * 2021-09-28 2023-10-10 北京环境特性研究所 基于es搜索引擎的仿真数据查询方法及装置
US12001529B1 (en) * 2021-11-05 2024-06-04 Validate Me LLC Counting machine for manufacturing and validating event-relevant identities via an ensemble network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009026946A1 (en) * 2007-08-29 2009-03-05 Lifescan Scotland Limited A data management system and method
CN103294702A (zh) * 2012-02-27 2013-09-11 上海淼云文化传播有限公司 一种数据处理方法、装置及系统

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960194A (en) 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
JP3607107B2 (ja) 1998-03-13 2005-01-05 株式会社東芝 データ管理装置
US6185552B1 (en) 1998-03-19 2001-02-06 3Com Corporation Method and apparatus using a binary search engine for searching and maintaining a distributed data structure
US6438562B1 (en) * 1999-08-24 2002-08-20 Oracle Corporation Parallel index maintenance
EP1316011A4 (en) * 2000-06-30 2008-01-23 Information Bionics Inc SHEET MEMORY CELLS AND SHEET MEMORY CELL GENERATIONS
US6978265B2 (en) 2001-01-16 2005-12-20 Lakeside Software, Inc. System and method for managing information for a plurality of computer systems in a distributed network
US7421436B2 (en) * 2001-12-21 2008-09-02 International Business Machines Corporation Decentralized many-to-many relationship management in an object persistence management system
US7849075B2 (en) * 2003-09-15 2010-12-07 Ab Initio Technology Llc Joint field profiling
US8392400B1 (en) 2005-12-29 2013-03-05 Amazon Technologies, Inc. Method and apparatus for stress management in a searchable data service
US7792864B1 (en) * 2006-06-14 2010-09-07 TransUnion Teledata, L.L.C. Entity identification and/or association using multiple data elements
US20080082490A1 (en) 2006-09-28 2008-04-03 Microsoft Corporation Rich index to cloud-based resources
US8229902B2 (en) * 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
US7827160B2 (en) 2007-03-30 2010-11-02 Sap Ag Managing distributed index data
US8335776B2 (en) 2008-07-02 2012-12-18 Commvault Systems, Inc. Distributed indexing system for data storage
US8478775B2 (en) * 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US20100114970A1 (en) 2008-10-31 2010-05-06 Yahoo! Inc. Distributed index data structure
KR101266358B1 (ko) 2008-12-22 2013-05-22 한국전자통신연구원 다중 길이 시그니처 파일 기반 분산 색인 시스템 및 방법
US8370315B1 (en) * 2010-05-28 2013-02-05 Symantec Corporation System and method for high performance deduplication indexing
US8989739B2 (en) * 2010-09-08 2015-03-24 Panasonic Intellectual Property Corporation Of America Connection method, communication system, mobile terminal, information forwarding device, and server
US8442988B2 (en) * 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
US8775486B2 (en) 2011-04-04 2014-07-08 Symantec Corporation Global indexing within an enterprise object store file system
US20130151535A1 (en) 2011-12-09 2013-06-13 Canon Kabushiki Kaisha Distributed indexing of data
US9465861B2 (en) 2012-01-31 2016-10-11 International Business Machines Corporation Retrieving indexed data from a dispersed storage network
US8990664B2 (en) 2012-01-31 2015-03-24 Cleversafe, Inc. Identifying a potentially compromised encoded data slice
US20130204905A1 (en) * 2012-02-07 2013-08-08 Google Inc. Remapping locality-sensitive hash vectors to compact bit vectors
US8930375B2 (en) 2012-03-02 2015-01-06 Cleversafe, Inc. Splitting an index node of a hierarchical dispersed storage index
US8950009B2 (en) 2012-03-30 2015-02-03 Commvault Systems, Inc. Information management of data associated with multiple cloud services
EP2665215A1 (en) * 2012-05-14 2013-11-20 Gemalto M2M GmbH Method of detecting a jamming transmitter affecting a communication user equipment, device and user equipment and system with the user equipment
US8965921B2 (en) 2012-06-06 2015-02-24 Rackspace Us, Inc. Data management and indexing across a distributed database
US9594814B2 (en) * 2012-09-07 2017-03-14 Splunk Inc. Advanced field extractor with modification of an extracted field
US9323767B2 (en) 2012-10-01 2016-04-26 Longsand Limited Performance and scalability in an intelligent data operating layer system
US8914419B2 (en) * 2012-10-30 2014-12-16 International Business Machines Corporation Extracting semantic relationships from table structures in electronic documents
US9736147B1 (en) * 2013-04-08 2017-08-15 Titanium Crypt, Inc. Artificial intelligence encryption model (AIEM) with device authorization and attack detection (DAAAD)
US8694503B1 (en) * 2013-07-31 2014-04-08 Linkedin Corporation Real-time indexing of data for analytics
EP3217293B1 (en) * 2014-11-07 2019-05-08 Hitachi, Ltd. Method for retrieving encrypted graph, system for retrieving encrypted graph, and computer
US10108666B2 (en) * 2015-03-10 2018-10-23 Oracle International Corporation Adaptive handling of skew for distributed joins in a cluster

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009026946A1 (en) * 2007-08-29 2009-03-05 Lifescan Scotland Limited A data management system and method
CN103294702A (zh) * 2012-02-27 2013-09-11 上海淼云文化传播有限公司 一种数据处理方法、装置及系统

Also Published As

Publication number Publication date
CA3040729A1 (en) 2018-08-16
EP3449355A1 (en) 2019-03-06
EP3449355A4 (en) 2019-11-20
US9977805B1 (en) 2018-05-22
EP3828693B1 (en) 2024-03-06
EP3828693A1 (en) 2021-06-02
CN109564568A (zh) 2019-04-02
EP3449355B1 (en) 2021-02-24
US10013441B1 (en) 2018-07-03
US10002146B1 (en) 2018-06-19
CN111966684B (zh) 2024-05-07
US20180276259A1 (en) 2018-09-27
CA3040729C (en) 2019-08-06
US9977807B1 (en) 2018-05-22
US10303670B2 (en) 2019-05-28
CA3026034A1 (en) 2018-08-16
WO2018148059A1 (en) 2018-08-16
CN111966684A (zh) 2020-11-20
CA3026034C (en) 2019-06-11

Similar Documents

Publication Publication Date Title
CN109564568B (zh) 用于分布式数据集索引的装置、方法和机器可读存储介质
US10185722B2 (en) Distributed data set encryption and decryption
US10983957B2 (en) Distributed columnar data set storage
US10803023B2 (en) Techniques for reading from and writing to distributed data stores
CN110710153B (zh) 第一节点设备、可读存储介质和计算机实现的方法
CA3154474C (en) Distributed columnar data set storage and retrieval
US11113064B2 (en) Automated concurrency and repetition with minimal syntax
US20220083709A1 (en) Two-level paralleliztion of goodness-of-fit tests for spatial process models

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
GR01 Patent grant
GR01 Patent grant