CN115769196B - 管理实时数据流处理 - Google Patents

管理实时数据流处理 Download PDF

Info

Publication number
CN115769196B
CN115769196B CN202180042569.2A CN202180042569A CN115769196B CN 115769196 B CN115769196 B CN 115769196B CN 202180042569 A CN202180042569 A CN 202180042569A CN 115769196 B CN115769196 B CN 115769196B
Authority
CN
China
Prior art keywords
data
query
user
processing hardware
time
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
CN202180042569.2A
Other languages
English (en)
Other versions
CN115769196A (zh
Inventor
帕文·埃达拉
乔纳森·福布斯
易阳
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202310947385.1A priority Critical patent/CN116860808A/zh
Publication of CN115769196A publication Critical patent/CN115769196A/zh
Application granted granted Critical
Publication of CN115769196B publication Critical patent/CN115769196B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented 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/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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • 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/25Integrating or interfacing systems involving database management systems
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种管理数据(12)处理的方法(300)包括从数据查询系统(150)的用户(10)接收数据查询(170),该数据查询的数据存储在与数据查询系统通信的数据存储器(142)中。该方法还包括接收指示数据查询的上时间边界的停滞参数(174)。上时间边界将查询响应(172)限制为数据存储内比上时间边界更早的数据。该方法还包括确定存储在数据存储器内的数据是否满足停滞参数。当数据存储器内的数据的部分未满足停滞参数时,该方法包括生成排除数据的未满足停滞参数的部分的查询响应。

Description

管理实时数据流处理
技术领域
本公开涉及管理实时数据流处理。
背景技术
随着今天的应用产生大量的数据,分析工具已经变得更加强大。换句话说,这些分析工具可以从丰富的数据深度提取,以支持它们的功能。在数据量巨大的情况下,诸如仪表板,实时警报和其它数据可视化的分析工具正被用户更频繁地部署,以理解他们的数据。随着这种使用的增加,一些分析工具需要最小的延迟,同时希望分析实时或接近实时的数据。由于支持这些工具的数据经常被存储在分布式系统(例如,云存储)中,因此这些分布式存储系统正在寻址方式以满足这些需求,尤其是当它们存储的数据可以作为连续数据流到达时。
发明内容
本发明的一个方面提供了一种用于管理数据处理的方法。该方法包括在在数据处理硬件处,从数据查询系统的用户接收数据查询,所述数据查询的数据存储在与所述数据查询系统通信的数据存储器中。所述方法还包括在所述数据处理硬件处,接收指示所述数据查询的上时间边界的停滞参数,所述上时间边界将查询响应限制到所述数据存储器内的比所述上时间边界早的数据。该方法还包括由数据处理硬件确定存储在所述数据存储器内的所述数据是否满足所述停滞参数。当所述数据存储器内的所述数据的一部分不满足所述停滞参数时,该方法包括所述数据处理硬件生成所述查询响应,所述查询响应排除所述数据的比所述停滞参数的所述上时间边界更近地写入所述数据存储器的所述一部分。
本公开的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,接收所述停滞参数包括,从所述数据查询系统的所述用户接收所述停滞参数。该方法可以包括:由数据处理硬件通过接收来自用户的用户数据来确定停滞参数的上时间边界;将接收到的用户数据摄入到所述数据存储器中,以在第一时间形成一个或多个日志文件;在第二时间将所述一个或多个日志文件转换为列数据格式,所述列数据格式对于相应的查询被优化;确定所述第一时间与所述第二时间之间的时间差;以及将所述时间差分配给所述停滞参数的所述上时间边界。
在一些示例中,该方法包括:由数据处理硬件识别用于存储在所述数据存储装置内的所述数据的日志文件;以及由数据处理硬件确定所述日志文件内最接近地匹配所述停滞参数的所述上时间边界的相应时间戳。在该示例中,每个日志文件包括多行数据,所述多行数据中的每行数据包括时间戳。同样在该示例中,对于查询响应,该方法包括由所述数据处理硬件读取日志文件中的数据,所述数据比最接近地匹配所述停滞参数的所述上时间边界的时间戳更早。这里,时间戳可以指示所述数据存储器在相应日志文件中生成所述相应数据行的时间。
在一些配置中,该方法包括在数据处理硬件处从所述用户接收数据集合,由所述数据处理硬件将所述数据集合摄入到所述数据存储器中,以及由所述数据处理硬件为所述数据集合生成一个或多个日志文件。在这种配置中,每个日志文件包括对应于来自所述数据集合的数据的数据行,并且其中生成所述一个或多个日志文件为相应日志文件内的每行数据生成时间戳。
本公开的另一方面提供了一种用于管理数据处理的方法。该方法包括在数据处理硬件处接收查询,所述查询请求存储在存储系统中的相应时间间隔的数据。该方法还包括由所述数据处理硬件确定所述相应时间间隔的任何部分是否对应于从先前查询缓存的静态数据。静态数据对应于在所述存储系统的存储操作期间保持不变的存储数据。当所述相应时间间隔的一部分对应于从所述先前查询缓存的静态数据时,该方法包括由所述数据处理硬件生成对所述查询的相应响应,所述查询包括对应于所述相应时间间隔的所述一部分的缓存的静态数据,而不对所述存储系统的所述相应时间间隔的所述一部分内的存储数据执行读取操作。
该方面可以包括一个或多个以下可选特征。在一些实施方式中,该方法包括:在数据处理硬件处接收初始查询,该初始查询请求在初始时间间隔存储在所述存储系统中的数据;由数据处理硬件确定在所述初始时间间隔存储在所述存储系统中的所述数据的部分包括静态数据;由数据处理硬件生成对所述初始查询的响应,所述初始查询包括所请求的数据并且包括与所述初始时间间隔的相应静态数据相对应的数据的所述一部分。数据处理硬件缓存对应于所述初始时间间隔的静态数据的所述数据的所述一部分。这里,确定在所述初始时间间隔存储在所述存储系统中的所述数据的所述一部分包括静态数据包括,标识与存储在所述存储系统中的所述数据的列格式相关联的时间戳,所述时间戳指示给定列中的所述存储数据的最后修改日期。可选地,确定在所述初始时间间隔存储在所述存储系统中的所述数据的所述一部分包括静态数据包括,确定与所述存储系统中的存储数据的给定列相关联的时间戳满足静态数据阈值,所述时间戳指示所述给定列中的所述存储数据的最后修改日期,所述静态数据阈值指示所述给定列中的所述存储数据在所述存储系统的未来存储操作期间保持不变的可能性。
在一些配置中,生成对所述查询的所述相应响应包括,在所述相应时间间隔内但不在对应于从所述先前查询缓存的所述静态数据的所述相应时间间隔的所述一部分内,在所述存储系统对所存储的数据执行读取操作。当所述相应时间间隔的任何部分未能对应于从先前查询缓存的静态数据时,该方法可以包括由所述数据处理硬件确定在所述相应时间间隔存储在所述存储系统中的数据的一部分包括静态数据。这里,该方法还可以包括:由所述数据处理硬件生成对所述相应查询的所述相应响应,所述相应查询包括所请求的数据并且包括对应于所述相应时间间隔的所述相应静态数据的数据的所述一部分;以及由所述数据处理硬件缓存对应于所述相应时间间隔的静态数据的所述数据的所述一部分。
在一些示例中,所述存储操作包括存储来自所述存储系统的用户的实时数据的连续数据流。该方法由所述数据处理硬件将对所述查询的相应响应传送到数据分析系统,所述数据分析系统被配置为生成用于所述相应响应的图形表示。
本公开的另一方面提供了一种用于管理数据处理的系统。该系统包括数据处理硬件和与所述数据处理硬件通信的存储器硬件。所述存储器硬件存储当在所述数据处理硬件上执行时使所述数据处理硬件执行操作的指令。所述操作包括从数据查询系统的用户接收数据查询,所述数据查询的数据存储在与所述数据查询系统通信的数据存储器中。所述操作还包括接收指示所述数据查询的上时间边界的停滞参数。所述上时间边界将查询响应限制到所述数据存储器内的比所述上时间边界早的数据。该操作还包括确定存储在所述数据存储器内的所述数据是否满足所述停滞参数。当所述数据存储器内的所述数据的一部分不满足所述停滞参数时,操作包括生成所述查询响应,所述查询响应排除所述数据的比所述停滞参数的所述上时间边界更近地写入所述数据存储器的所述一部分。
本公开的这一方面的实现可以包括一个或多个以下可选特征。在一些实施方式中,接收所述停滞参数包括,从所述数据查询系统的所述用户接收所述停滞参数。该系统可以包括:通过从用户接收用户数据,将接收到的用户数据摄入到所述数据存储器中,以在第一时间形成一个或多个日志文件,在第二时间将一个或多个日志文件转换为列数据格式,为相应的查询优化列数据格式,确定第一时间和第二时间之间的时间差,来确定所述停滞参数的上时间边界。以及将所述时间差分配给所述停滞参数的所述上时间边界。
在一些示例中,该系统包括识别用于存储在所述数据存储装置内的所述数据的日志文件,确定所述日志文件内最接近地匹配所述停滞参数的所述上时间边界的相应时间戳,以及对于查询响应,读取日志文件中的数据,所述数据比最接近地匹配所述停滞参数的所述上时间边界的时间戳更早。在该示例中,每个日志文件包括多行数据,所述多行数据中的每行数据包括时间戳。这里,时间戳可以指示所述数据存储器在相应日志文件中生成所述相应数据行的时间。
在一些配置中,该系统包括从所述用户接收数据集合,将所述数据集合摄入到所述数据存储器中,为所述数据集合生成一个或多个日志文件。在该配置中,每个日志文件包括对应于来自所述数据集合的数据的数据行,并且其中生成所述一个或多个日志文件为相应日志文件内的每行数据生成时间戳。
本公开的又一方面提供了一种用于管理数据处理的系统。该系统包括数据处理硬件和与所述数据处理硬件通信的存储器硬件。所述存储器硬件存储当在所述数据处理硬件上执行时使所述数据处理硬件执行操作的指令。所述操作包括接收查询,所述查询请求存储在存储系统中的相应时间间隔的数据。所述操作还包括确定所述相应时间间隔的任何部分是否对应于从先前查询缓存的静态数据。静态数据对应于在所述存储系统的存储操作期间保持不变的存储数据。当所述相应时间间隔的一部分对应于从所述先前查询缓存的静态数据时,所述操作包括生成对所述查询的相应响应,所述查询包括对应于所述相应时间间隔的所述一部分的缓存的静态数据,而不对所述存储系统的所述相应时间间隔的所述一部分内的存储数据执行读取操作。
本公开的这一方面的实施方式可以包括一个或多个以下可选特征。在一些示例中,该系统包括:接收初始查询,该初始查询请求在初始时间间隔存储在所述存储系统中的数据;确定在所述初始时间间隔存储在所述存储系统中的所述数据的部分包括静态数据;生成所述对初始查询的响应,所述初始查询包括所请求的数据并且包括与所述初始时间间隔的相应静态数据相对应的数据的所述一部分;以及缓存对应于所述初始时间间隔的静态数据的所述数据的所述一部分。这里,确定在所述初始时间间隔存储在所述存储系统中的所述数据的所述一部分包括静态数据包括,标识与存储在所述存储系统中的所述数据的列格式相关联的时间戳,所述时间戳指示给定列中的所述存储的数据的最后修改日期。可选地,确定在所述初始时间间隔存储在所述存储系统中的所述数据的所述一部分包括静态数据包括,确定与所述存储系统中的存储数据的给定列相关联的时间戳满足静态数据阈值,所述时间戳指示所述给定列中的所述存储数据的最后修改日期,所述静态数据阈值指示所述给定列中的所述存储数据在所述存储系统的未来存储操作期间保持不变的可能性。
在一些配置中,生成对查询的所述相应响应包括在所述相应时间间隔内但不在对应于从所述先前查询缓存的所述静态数据的所述相应时间间隔的所述一部分内,在所述存储系统对所存储的数据执行读取操作。当所述相应时间间隔的任何部分未能对应于从先前查询缓存的静态数据时,系统可以包括:确定在所述相应时间间隔存储在所述存储系统中的数据的一部分包括静态数据;生成对相应查询的相应响应,所述相应查询包括所请求的数据并且包括对应于所述相应时间间隔的所述相应静态数据的数据的所述一部分;以及缓存对应于所述相应时间间隔的静态数据的所述数据的所述一部分。存储操作可以包括存储来自所述存储系统的用户的实时数据的连续数据流。所述系统可以包括将对所述查询的相应响应传送到数据分析系统,所述数据分析系统被配置为生成用于所述相应响应的图形表示。
本公开的一个或多个实现的细节在附图和以下描述中阐述。从说明书和附图以及从权利要求书中,其它方面,特征和优点将是显而易见的。
附图说明
图1是示例数据管理环境的示意图。
图2A是图1的数据管理环境的示例数据管理器的示意图。
图2B是图2A的数据管理器的示例摄入器的示意图。
图2C和2D是用于图2A的数据管理器的示例转换器的示意图。
图2E是图2A的数据管理器的示例操作器的示意图。
图2F是用于图2A的数据管理器的示例缓存器的示意图。
图3和4是数据处理方法的操作的安排示例的流程图。
图5是可用于实现本文所述的系统和方法的示例性计算设备的示意图。
在各个附图中相同的附图标记表示相同的元件。
具体实施方式
实时应用实时生成大量数据,并将这些数据推送到数据仓库进行存储和执行未来的数据分析。例如,一些应用可以基于存储在数据仓库中的数据生成仪表板(即,可视化分析),实时警报或其它分析。当与存储在数据仓库中的数据相关的查询发生时,这些查询通常需要最小的延迟(Latency),来使仪表板或其它基于数据操作的分析能够传达准确的信息。这种查询过程在几毫秒内执行查询并不罕见。因此,启用查询的数据存储系统的目标是数据仓库中的数据具有能够尽可能快地查询的格式。
通常,当应用运行快速查询时,这些应用往往使用称为列数据管理(columnardata management)的技术。通常,数据到达存储系统是以面向行(row-oriented)的格式摄入(ingestion)的。对于列数据管理技术,需要将面向行格式的数据转换为列格式。将面向行的格式转换为列格式的是处理器密集型过程(即,对诸如CPU的处理资源的高要求)。此外,数据摄入过程本身是一个处理器密集型过程。由于这两种类型的处理都是资源密集型的,因此摄入系统不希望对资源进行征税以潜在地引起摄入问题(即,当存储系统正在接收数据时的问题)。这样,列数据管理技术在数据以面向行的格式被摄入之后转置数据。由于在摄入之后发生列数据管理,存储系统的目的是尽可能快地摄入数据,以使列数据管理能够在其后不久发生。基于这种方法,存储系统以面向行的格式接收最近的用户数据,并将所接收的数据写入存储系统的永久存储部分。然后,后台过程将所存储的数据转换为查询友好格式,使得对所存储的数据的查询可以被优化以快速发生。
理想地,当存储系统接收查询时,存储系统将更喜欢查询涉及的存储数据已经处于查询友好格式(例如,也称为查询优化格式)。否则,如果查询涉及的存储数据尚未被转换成查询优化格式,则查询可能发生延迟。例如,当查询涉及的存储数据不是查询优化格式时,由于存储数据的非查询优化形式,查询的读取时间会增加。换句话说,查询优化格式的数据已经被优化,以减少非查询优化格式的读取时间。因此,通过要求对存储系统摄入的最近数据进行查询,查询过程因读取非查询优化格式(例如,面向行的格式)的数据而固有地经历额外的读取时间。
在克服潜在的延迟问题和/或优化数据查询的一种方法中,基于查询的存储系统可以优化查询,如果可能的话,以避免查询以非查询优化格式存储的数据。换句话说,由于存储系统的特性和将所摄入的数据转换为查询优化格式所需的时间,查询可以被限制为只读取查询优化格式中所存储的数据或者最大限度地提高查询优化格式中所读取的数据量。例如,存储系统从头到尾处理实时流数据。由于流数据可以是连续的,数据流本身通常被称为数据流的部分。这里,头部是指数据流的开始或数据流中指定的开始参考点,而尾部是指当前正在生成的数据流的数据。因此,数据的头部本质上是比例如尾部的全新数据更早的数据。为简单起见,对于基于查询的存储系统,数据的头部是指数据中既被存储系统摄入又被转换成查询优化格式的部分,而尾部是指正被摄入或已被摄入但尚未被转换成查询优化格式的最新或最近的数据。这里,如果查询系统将查询限制为来自头部的数据(例如,已经完全处理并且以查询优化的形式)并且将数据从尾部中排除,则查询系统将最小化延迟。
从尾部排除数据是一种数据查询优化的停滞(staleness)方法。停滞方法允许用户在数据查询的结果方面允许(例如,指定或同意)可接受的停滞量。换句话说,用户可以向查询系统指示,对用户数据的查询不需要查看最近五分钟的数据(例如,来自数据流的尾部的数据)。这里,这五分钟指示用户满意于使得他们的查询结果停滞五分钟(即,缺失最近五分钟的结果)。在本示例中,用户的查询集中在五分钟前的数据上。这种方法是在查询等延迟和停滞之间的权衡。换句话说,如果用户允许某种规定的停滞程度(例如,五分钟),则他或她的查询将以较少的延迟发生,因为查询系统不需要对关于最近的数据的信息(例如,在五分钟内)进行响应。因此,停滞指示用户对关于稍早的数据(即,不是最近的数据)的查询响应的容忍度,以便查询系统对来自用户的查询提供更快的响应。
尽管基于查询的存储系统理想地试图避免以非查询优化格式查询数据增加读取时间,但这并不总是可能的。例如,用户或用户的分析可以要求对最近存储的数据进行查询,而这些数据仍处于非查询优化格式。因此,查询系统优化的另一种方法是查询缓存(query caching)。查询缓存可以与停滞方法结合使用,或者作为停滞方法的替代方法。查询缓存以这样的思想为中心:即使查询可能需要读取某种程度的以非查询优化格式存储的数据,但是查询也可以通过缓存来进一步减少与以查询优化格式存储的查询数据相关的查询时间。
查询缓存通常基于查询所请求的大部分数据保持不变的原理来操作。当基于查询的存储系统的查询经常发生在常规基础(routine basis)上时,这可能被用于查询系统的优点。例如,支持用户分析的数据查询被设置为周期性地发生,以便维护相对最新的分析工具。作为示例,用户仪表板被配置为表示与数据存储中的用户相关的最近九十天的数据。因此,用户将以某个特定频率对查询进行编程,以检索最近九十天的数据,以便用最近九十天的实际数据填充用户的仪表板。然而,在最近的九十天内,该九十天时间周期的大部分的存储数据保持不变(例如,九十天中的八十八天保持不变)。这意味着通常只有九十天数据的一小部分在变化。例如,只有最后一天或两天的数据在变化。换句话说,当新数据被存储系统摄入时,该新数据(例如,最后两天)对用户的分析来说将是新的,因为它先前没有被表示。相反,先前表示的数据(例如,先前的八十八天)基本保持不变。这里,查询系统可以利用常规的九十天的查询频率和简单的原理,即存储新的、实时的流媒体数据对大多数受查询的数据影响最小。当查询生成最近九十天的结果时,它可以缓存查询的结果。通过缓存结果,后续查询可以避免读取先前查询的缓存中已经存在的存储数据。利用这种方法,当前查询可能必须读取非查询优化形式(例如,最近两天)的最近的数据,但是完全避免读取一大块存储的数据(例如,即使它是以查询优化形式)。通过采用停滞方法,查询缓存方法或两者的某种组合,可以减少查询系统的总查询时间。
图1示出了数据管理环境100的示例。与用户10相关联的用户设备110在执行其计算资源112(例如,数据处理硬件114和/或存储器硬件116)期间生成用户数据12。例如,用户10使用在用户设备110的数据处理硬件114上运行的实时应用来生成用户数据12。实时应用通常指用户10解释或通常认为即时或当前的应用或程序。因为实时应用力争成为当前的,所以它们经常要求执行任务或使用计算资源(例如,计算资源112)的任务集的执行时间具有低延迟。实时应用的一些示例包括视频会议应用,社区存储应用,电子商务交易以及其它具有实时通信功能的应用。由于实时应用具有生成大量用户数据12的能力,因此用户10通常利用其它系统(例如,远程系统130,存储系统140,查询系统150或分析系统160)来进行用户数据存储和/或用户数据管理。
在一些示例中,用户设备110是本地设备(例如,与用户10的位置相关联),其使用具有与一个或多个远程系统130通信(例如,经由网络120)的能力的自己的计算资源112。附加地或可选地,用户设备110利用其对远程资源(例如,远程计算资源132)的访问来为用户10操作应用。通过使用用户设备110生成的用户数据12可以最初本地存储(例如,存储在存储器硬件116的数据存储器118中),然后传送到远程系统130,或者在创建时通过网络120发送到远程系统130。例如,用户设备110使用远程系统130将用户数据传送到存储系统140。
在一些示例中,用户10利用远程系统130(例如,云计算环境)的计算资源132来存储用户数据12。在这些示例中,远程系统130可以接收流用户数据12,当它正在被各种用户应用生成时。这里,数据流(例如,用户数据12)指的是到达远程系统130用于存储和/或进一步处理的连续或通常连续馈送的数据。在一些配置中,用户10和/或远程系统130将用户数据12配置为以频繁的间隔发送,而不是连续地将用户数据流12送到远程系统130,使得远程系统130具有持续供应的用户数据12来处理。与用户设备110非常相似,远程系统130包括计算资源132,诸如远程数据处理硬件134(例如,服务器和/或CPU)和存储器硬件136(例如,磁盘,数据库或其它形式的数据存储)。
在一些配置中,远程计算资源132是由与远程系统130相关联和/或通信的各种系统使用的资源。如图1所示,这些系统可以包括存储系统140,查询系统150和/或分析系统160。在一些示例中,这些系统140,150,160的功能可以以不同的组合方式(例如,彼此内置)或具有彼此通信能力的单独系统来集成在一起。例如,存储系统140和查询系统150可以被组合成单个系统(例如,如图1中这些系统周围的虚线所示)。可以将远程系统130以及它的计算资源132配置为托管这些系统140,150,160的一个或多个功能。在一些实施方式中,远程系统130是分布式系统,其计算资源132分布在可经由网络120访问的一个或多个位置上。
在一些示例中,存储系统140被配置为操作数据仓库142(例如,数据存储和/或多个数据库),作为用户10(或多个用户)的数据存储手段。一般而言,数据仓库142存储来自一个或多个源的数据,并且可以被设计成分析,报告和/或集成来自其源的数据。数据仓库142使得用户(例如,组织用户)能够具有中央存储仓库和存储数据访问点。通过将用户数据12包含在诸如数据仓库142的中央仓库中,数据仓库142可以简化数据检索的功能,如数据分析和/或数据报告(例如,通过分析系统160)。此外,数据仓库142可以被配置为存储大量数据,使得用户10(例如,组织用户)可以存储大量历史数据以理解数据趋势。由于数据仓库142可以是用户数据12的主要或唯一数据存储仓库,因此存储系统140通常可以从与用户10相关联的用户设备110接收大量数据(例如,每秒千兆字节,每秒兆字节或更多)。附加地或可选地,作为存储系统140,存储系统140和/或存储仓库142可以被配置用于数据安全(例如,数据冗余),用于来自单个数据源的多个用户(例如,组织内的多个雇员),和/或用于同时多用户访问。在一些配置中,数据仓库142是持久的和/或非易失性的,使得在默认情况下,数据不会被新进入的数据覆盖或擦除。
查询系统150被配置为以查询170的形式从存储系统140请求信息或数据。在一些示例中,查询170由用户10发起,作为对存储系统140内的用户数据12的请求。例如,用户10通过查询系统150(例如,与查询系统150相关联的接口)操作以检索存储在存储系统140的数据仓库142中的用户数据12。这里,查询170可以是用户发起的(即,由用户10直接请求)或系统发起的(即,由查询系统150自身配置)。在一些示例中,查询系统150配置例行或重复的查询170(例如,以某一指定频率),以允许用户10执行分析或监测存储在存储系统140中的用户数据12。
查询170的格式可以变化,但是可以包括对存储在存储系统150中的用户数据12和/或一段特定的时间的特定用户数据12的引用。例如,查询170请求前七天的用户数据12。在一些配置中,用户10以特定格式将用户数据12发送到存储系统140,使得查询系统150可基于关于特定格式的信息(例如,使用格式的属性)生成查询170。例如,数据存储系统140接收表格格式的用户数据12,其中用户数据12填充表格的行和列。利用表格格式,表格内的用户数据12可以具有对应于与用户数据12相关联的模式或标题的行和列。例如,用户数据12可以指由用户10进行的商业交易。在该示例中,用户数据12可以包括卖方,买方,交易价格,交易数量以及用户10收集的关于其交易的其他交易数据的列。这里,每行可以具有标题或模式,诸如交易编号或标识符和/或与事务相关联的时间条目。由于存储系统140可以接收特定格式(例如,交易表格式)的用户数据12,因此存储系统140被配置为存储用户数据12,使得查询系统150可访问与用户数据12相关联的格式(例如,关系,标题或其它模式)的元素(例如,向用户数据12提供进一步的上下文或定义)。换句话说,查询系统150生成请求前七天交易价格的查询170。
响应于查询170,查询系统140生成满足或尝试满足查询170的请求(例如,对特定用户数据12的请求)的查询响应172。一般而言,查询响应172包括查询系统150在查询170中请求的用户数据12。查询系统150可以将该查询响应172返回到发起查询170的实体(例如,用户10)或与查询系统150通信的其它实体或系统。例如,查询170本身或查询系统150可以指定查询系统150将一个或多个查询响应172传递到与用户10相关联的系统,例如分析系统160。例如,用户10使用分析系统160来对用户数据12执行分析。分析系统160可被配置为生成报告,警告,数据的图形表示(例如,仪表板162)或其它基于数据的可视化。为了在用户数据12上生成这些分析,分析系统160可以结合查询系统150起作用,以检索在分析基础上的用户数据12(例如,代表用户10发起或配置查询170)。通常,建立查询系统150以生成对存储系统140内的用户数据12的例行查询170,从而使得分析系统160能够执行其分析(例如,以特定频率)。例如,查询系统150执行每日查询170以拉出最近七天的交易数据,供分析系统160进行分析和/或表示。这里,在图1中,仪表板162表示分析系统160如何表达从查询系统150接收到的查询响应172中的用户数据12的示例。
进一步参考图1,数据管理环境100还包括管理器200。管理器200通常被配置为优化基于查询的数据存储。管理器200可以通过为用户10执行和/或协调与系统140,150,160相关的操作(例如,存储操作,查询操作和/或数据分析操作)来执行该优化。管理器200的功能可以是集中式的(例如,驻留在系统140,150,160之一中)或根据其设计分布在系统140,150,160之间。在一些示例中,例如图1,管理器200被配置成从用户10接收用户数据12,并且便于在存储系统140处的存储操作。例如,管理器200在接收时摄入用户数据12,并且可以将用户数据12转换为查询优化格式。这里,摄入指的是获得用户数据12和/或将用户数据12导入存储系统140(例如,导入数据仓库142),以允许系统使用所摄入的用户数据(例如,通过查询系统150和/或分析系统160)。一般而言,可以实时地摄入数据,其中管理器200在从源(例如,用户10或用户10的用户设备110)发出数据时导入数据,或者分批地摄入数据,其中管理器200以周期性的时间间隔导入离散的数据块。在摄入期间,管理器200可以验证用户数据12的格式(例如,以符合存储系统140的可接受格式),并将用户数据12路由到数据仓库142(例如,数据仓库142中为用户10的用户数据12指定的特定数据存储位置)。通常,数据摄入对于流式数据可能是有挑战性的,特别是当数据存储系统140试图优化为其它操作(例如,查询)而接收的数据时。这里,管理器200的功能支持流式数据,并且更具体地,有助于优化存储期间基于查询的操作的流式数据的数据管理的方面。例如,管理器200集成了停滞方法,查询缓存方法或两者的某种组合,以减少所存储的用户数据12的总体查询时间。
参考图2A-2F,管理器200包括摄入器210,转换器220和操作器230。在管理器200使用缓存方法的配置中,管理器200还包括缓存器(cacher)240。例如,在图2A中用虚线轮廓示出了缓存器240,以指示管理器200不总是采用缓存方法240。
摄入器210被配置为执行摄入过程,使得摄入器210将用户数据12导入到数据仓库142中。如图2A所示,摄入器210可以接收流式用户数据12,并从头到尾处理用户数据12,以生成被称为日志文件212的被摄入的用户数据。在一些示例中,当摄入器210摄入用户数据12时,摄入器210将摄入时间戳214与用户数据12相关联。例如,摄入时间戳214指示摄入器210将用户数据12的每个特定部分摄入(例如,导入)到日志文件212中的时间。在一些实施方式中,例如图2B,摄入器210接收具有行和列的表格式的用户数据12。当摄入器210接收表格式的用户数据12时,摄入器210被配置成以面向行的格式生成日志文件212。在面向行的格式中,摄入器210将数据的给定行R和其所有列值一起存储(例如,以连续的方式,使得该行的多个列值是相邻的)。这种面向行的摄入可以帮助保存与特定关系中的行的列相对应的模式或标题。例如,返回先前讨论的交易销售示例,通过将数据的给定行R及其所有列值一起摄入,数据存储格式将卖方,买方,交易价格,交易数量和其它交易数据保持在一起,用于给定的商业交易。通过以面向行的格式摄入用户数据12,摄入器210可以最小化在摄入时使用附加处理来改变摄入的格式。
参照图2B,摄入器210将用户数据12摄入到多个日志文件212,212a-n中。当摄入器210摄入用户数据12时,摄入器210创建日志文件212并将用户数据12传送到日志文件212的行R1-n。例如,用户数据12对应于来自实时应用的用户数据12的最后十五分钟,其中用户数据12的头部对应于十五分钟前,而用户数据的尾部对应于当前时间。当摄入器210接收到用户数据12的头部时,摄入器210创建第一日志文件212,212a,并从用户数据12的第一行利用用户数据12生成第一日志文件212a的第一行R1。这里,日志文件212的每一列C1-n可经配置以匹配或对应于用户数据12的标题或模式。当摄入器210生成日志文件212的行R时,摄入器210还可以将当前时间(例如,行R的摄入时间)的时间戳214,T与在日志文件212中生成的用户数据12的行R相关联。每个日志文件212的大小可以基于存储系统140或数据仓库142的偏好来确定。一旦摄入器210产生日志文件212,其中用户数据12的行数R等于为日志文件212配置的大小容量(例如,显示为五行R1-5),则摄入器210创建新的日志文件(例如,第二日志文件212,212b)并继续将用户数据摄入到新的日志文件212中。利用用户数据流,只要用户数据流继续,摄入器210就继续该生成和传送用户数据12到日志文件212的过程。在批量处理中,摄入器210将重复该过程,直到批量完成并且不再有用户数据21被摄入。
在图2B中,摄入器210生成三个日志文件212,212a-c。这里,为了简单起见,如果我们假设用户10正在以恒定速率生成用户数据12,则摄入器210生成具有用户数据12的最后11到15分钟的第一日志文件212,212a,具有用户数据12的最后6到10分钟的第二日志文件212b,以及具有用户数据12的最后5分钟的第三日志文件212c。一旦摄入器210产生的日志文件212充满,摄入器210就将完整的日志文件212传送到存储系统140以存储在数据仓库142内。
参考图2A,2C和2D,在被摄入器210摄入之后,管理器200的转换器200将存储在一个或多个日志文件212中的用户数据12转换为一个或多个查询文件222。这里,查询文件222的格式被认为是查询优化格式,因为与查询170相关的读取操作在查询文件222上执行的时间比在日志文件212上的执行时间更短。此外,生成用户数据流12的实时应用经常发现在面向行的数据库或表中生成数据是方便的。然而,对于查询和/或数据分析,通常的情况是,与面向行的格式相比,列格式与查询和/或数据分析更兼容。例如,与面向行的格式相比,列格式更有利于读取操作(即花费更少的时间),因为行可能具有更长的数据流以在行上读取。此外,数据的列形式固有地可以将相关数据分组在一起(例如,交易数据的所有买家),这可以防止读取操作读取不需要由查询170检索的数据。例如,买方的查询170不需要读取卖方数据。至少基于这些原因,在一些示例中,查询文件222具有列数据格式。
参考图2C和2D,示出了转换器220从日志文件212生成查询文件222,2221-n。在一些实施方式中,日志文件212的单个列C的所有行R1-n被传送到定义查询文件222的数据存储块(例如,被示为标记为C1-N的数据存储块)。在诸如图2C的一些配置中,转换器200包括或将与每行R相关联的摄入时间戳214传送到列存储块(例如,示为T1-Tn)。附加地或可选地,图2D示出查询文件222(例如,列块)可以包括其它时间值T,其可以在查询170到存储系统140的期间使用。例如,时间T1-N可以指关于查询文件222内的时间戳值的局部极值(例如,最小值和/或最大值)。在另一个示例中,时间T1-N表示查询文件222内的数据条目的最后修改时间。这里,当时间T1-N表示用户数据12的列的最后修改时间时,缓存器230可以读取查询文件222的该时间T,以理解查询文件222是否包括在一段时间内未改变(例如,通过摄入或转换)的静态数据。
参照图2E,管理器200的操作器230被配置成从查询系统150接收查询170,并用查询响应172来响应查询170。在一些示例中,操作器230还被配置为实现查询优化的停滞性方法。例如,操作器230从用户10或查询系统150接收停滞参数174。这里,停滞参数174是指查询170的上时间边界,其中上时间边界将查询响应172限制到数据仓库142内比上时间边界更早的用户数据12。可配置停滞参数174,使得停滞参数174可与单个查询170,特定用户10的所有查询170和/或特定查询集合170(例如,重复或调度查询170)相关联。
图2E还用虚线轮廓示出了停滞参数174,以指示停滞参数174不必源自用户10或查询系统150。在一些配置中,操作器230生成停滞参数174。尽管停滞参数174可以潜在地指示用户10如何愿意在延迟和停滞之间进行权衡,但是停滞参数174理想地试图使查询170避免以非查询优化格式(例如,日志文件212的面向行的格式)读取所存储的用户数据12。因此,操作器230可以确定它自己的停滞参数174。例如,操作器230和/或管理器200向用户10推荐停滞参数174。操作器230可以通过确定从用户数据12的摄入点到在转换器220处将日志文件212转换为查询文件222的转换点所花费的时间来确定它自己的停滞参数174。在一些示例中,操作器230利用在摄入过程期间生成的时间戳214来确定日志文件212何时被摄入器210摄入。例如,日志文件212的第一行R(例如,第一行R1)和最后一行R(例如,第五行R5)的时间戳214通常估计在摄入器210处的摄入过程对于给定日志文件212花费了多长时间。通过这个时间,操作器230可以使用与转换器220的转换过程相关联的时间值T来确定将日志文件212转换为查询文件222的转换过程所花费的时间。例如,最后修改的时间T被配置为指示转换器220何时将日志文件212转换为查询文件222。基于摄入过程和转换过程的时间,操作器230生成停滞参数174,停滞参数174大于或等于执行摄入和转换过程所花费的时间。例如,操作器230将执行摄入和转换的总时间分配给停滞参数174的上时间边界。在该方法中,停滞参数174通常将保证用户数据12对于查询170是查询优化格式。附加地或可选地,操作器230可以被配置为独立地跟踪或监测摄入和转换的时间,而不依赖于与日志文件212和/或查询文件222相关联的时间戳或时间值。
当操作器230接收或生成停滞参数174时,操作器230被配置为确定存储在存储系统140(例如,数据仓库142)中的用户数据12是否满足停滞参数174。在一些示例中,当时间戳214指示日志文件212中的用户数据12的行R早于停滞参数174的上时间边界时,所存储的用户数据12满足停滞参数174。在一些实施方式中,如图2E所示,操作器230识别数据仓库142中存储用户数据12的日志文件212,并确定日志文件212内与停滞参数174匹配或最接近匹配的时间戳214。在图2E中,操作器230已经确定与日志文件212n中的用户数据12的第三行R3相关联的时间戳214,T3最接近地匹配停滞参数174。基于该确定,操作器230被配置成从响应查询170的读取操作中将具有比与第三行R3相关联的时间戳214,T3更早的时间戳214的行R排除。例如,图2E示出了操作器230没有对日志文件212的第四行R4和第五行R5执行读取操作。对于比与第三行R3(例如,行R1-3)相关联的时间戳214,T3更早的时间戳214,操作器230将对与这些更早的时间戳214相关联的行R内的用户数据12执行读取操作。在一些配置中,操作器230仅评估日志文件212的时间戳214是否满足停滞参数174,因为日志文件212处于非查询优化格式,这必然会使得查询170在查询非查询优化格式的数据时经历某种程度的延迟。因此,这种方法试图将需要对尚未转换为查询文件222的用户数据12执行的读取操作量降到最低。
参照图2F,管理器200可以利用缓存方法来查询优化。例如,通常存储系统140和准备在存储系统10中存储数据的系统(例如,摄入器210和/或转换器220)基于时间单位对数据分割(Partition)。例如,与查询文件222相关联的列C包括列时间戳T,其指示划分列C的时间单位。这些时间单位可以是分钟,小时,天,周,月等。例如,图2F示出了一周的查询文件222,其时间分区为天数(例如,列时间戳T1-7)。缓存器(Cacher)240被配置为确定存储在存储系统140内的数据是否是静态数据。例如,缓存器222确定存储在查询文件222中的用户数据12是否是静态数据。静态数据是指在向存储系统140的存储操作期间保持不变(即,不受影响)的数据。静态数据的出现是因为具有数据仓库142的存储系统140被配置为用于大量用户数据12的中央数据存储处。尽管存储相当大量的用户数据12可以使用户10能够理解数据趋势或对用户数据12执行数据分析,但是这也意味着存储在数据仓库142内的大部分数据可能很少被改变(例如,仅接受读取操作)。通过识别存储系统140内的静态用户数据或冷的用户数据,缓存器240可随时间缓存所识别的静态用户数据的查询响应172,以减少对静态用户数据的未来读取操作的查询处理。
为了说明,图2F描绘了缓存器230已经确定查询文件222中的用户数据12的第一至第五列C1-5对应于静态数据。换句话说,在存储系统140存储的用户数据12的过去的七天中,最早的五天保持不变,而最近的两天仍在经历一些存储操作。在一些示例中,缓存器230通过使用与查询文件222相关联的最后修改时间来确定查询文件222中的用户数据12是否是静态数据。这里,最后修改数据是指与数据的列C(例如,查询文件222)相关联的时间戳T,其指示列C内的任何数据已经经历改变或修改的最后时间。在一些实施方式中,缓存器240确定与查询文件222相关联的最后修改时间满足静态数据阈值246。静态数据阈值246是指指示查询文件222内的存储数据在存储系统140的未来存储操作期间将保持不变的可能性的值(例如,由缓存器230配置)。在图2F中,缓存器230确定与用户数据12的第五列C5相关联的第五列时间戳T5满足静态数据阈值246。在一些示例中,当缓存器230确定特定时间戳T满足静态数据阈值246时,缓存器230被配置为假定在特定时间戳T之前按时间划分的查询文件222也满足静态数据阈值246(即,可能包含静态数据)。例如,图2F示出了缓存器242确定数据的第一至第五列C1-5对应于静态数据,因为第五列C5的时间戳T5满足静态数据阈值246。
在一些配置中,缓存器240自动缓存用户数据12,缓存器240通过将静态用户数据转换为缓存用户数据来确定该用户数据12为静态用户数据。在其它配置中,一旦缓存器240确定用户数据12的列C(例如,查询文件222)包括静态用户数据,则在下一次提供静态用户数据作为查询响应172期间缓存器240缓存该静态用户数据。通过等待直到管理器200提供静态用户数据作为查询响应172,缓存器240可以通过不缓存与所需数据(即,查询170所请求的数据)无关的大量数据来节约处理资源。
使用缓存方法,当操作器230接收到查询170时,操作器230被配置为检索查询170所请求的存储系统140中的用户数据12。利用缓存方法,缓存器240被配置为接收或识别与查询170相关的所存储的用户数据12(例如,显示为查询文件222),并确定所存储的用户数据12的任何部分是否对应于与缓存器240相关联的缓存器242处的缓存的用户数据244。在一些示例中,查询170请求存储的用户数据为特定时间间隔176(例如,过去七天的买家)。利用特定的时间间隔176,缓存器240确定时间间隔176的任何部分是否对应于缓存的用户数据244。这里,在过去的七天中,缓存器240先前已经缓存了这七天中的五天(例如,如缓存器242中的时间戳T1-5所示)。因为缓存器240确定所请求的数据的某一部分已经被缓存,所以缓存器240提供缓存的用户数据222来部分地(或完全地)完成查询170,而不需要在存储系统140上对与缓存的用户数据244相关联的时间间隔176的部分执行读取操作。对于没有被缓存的用户数据244满足的时间间隔176的任何剩余部分,操作器230促进读取操作以检索相应的存储的用户数据12。
在一些实施方式中,时间间隔176的一部分对应于存储在存储系统140中的静态用户数据,但是缓存器240还没有将静态用户数据转换为缓存的用户数据244。这里,缓存器240还不能提供缓存的用户数据244来完成查询170的一部分。然而,当操作器230在其查询响应172中提供静态用户数据时,缓存器240识别该静态用户数据可能是未来查询170的主题,并缓存静态用户数据。换句话说,如果在用于过去七天的买家历史的查询170期间或之前,缓存器240识别出最早的五天的买方历史是静态用户数据(例如,列C1-5),但尚未缓存所识别的静态用户数据。当管理器200返回查询响应172或之后不久,缓存器240将缓存最早的五天的买家历史。
图3是数据管理的方法300的操作的示例安排的流程图。在操作302,方法300从查询系统150的用户10接收存储在与数据查询系统150通信的数据存储器142中的数据12的数据查询170。在操作304,方法300接收指示数据查询170的上时间边界的停滞参数174。上限时间边界将查询响应172限制到数据存储器142内的数据12,该数据比上限时间边界早。在操作306,方法300确定存储在数据存储器142内的数据是否满足停滞参数174。当数据存储器142内的数据12的一部分未满足停滞参数174时,在操作308,方法300生成查询响应172,该查询响应172排除未满足停滞参数174的部分数据12。例如,方法300生成查询响应172,该查询响应172排除数据12中最近被写入数据存储的部分,该部分比停滞参数的上时间边界更晚。
图4是用于数据管理的方法400的操作的另一示例布置的流程图。在操作402,方法400接收请求存储在存储系统140中的相应时间间隔176的数据12的查询170。在操作404,方法400确定相应时间间隔176的任何部分是否对应于从先前查询170缓存的静态数据。静态数据对应于在存储系统140的存储操作期间保持不变的存储数据12。当相应时间间隔176的一部分对应于从先前查询170缓存的静态数据时,在操作406,方法400生成对查询170的相应响应172。响应172包括对应于相应时间间隔176的部分的缓存的静态数据244,而不对相应时间间隔176的部分的存储数据执行对存储系统140的读取操作。
图5是可用于实现本文档中描述的系统(例如,管理器200,远程系统130,存储系统140,查询系统150,分析系统160)和方法(例如,方法300,400)的示例计算设备500的示意图。计算设备500用于表示各种形式的数字计算机,例如笔记本电脑,台式计算机,工作站,个人数字助理,服务器,刀片服务器,大型机和其它适当的计算机。这里所示的组件,它们的连接和关系以及它们的功能仅仅是示例性的,而不是要限制在本文件中描述和/或要求保护的本发明的实施。
计算设备500包括处理器510(例如,数据处理硬件),存储器520(例如,存储器硬件),存储设备530,连接到存储器520和高速扩展端口550的高速接口/控制器540,以及连接到低速总线570和存储设备530的低速接口/控制器560。部件510,520,530,540,550和560中的每一个使用各种总线互连,并且可以适当地安装在公共主板上或以其它方式安装。处理器510可以处理在计算设备500内执行的指令,包括存储在存储器520中或存储设备530上的指令,以在外部输入/输出设备(例如耦合到高速接口540的显示器580)上显示图形用户界面(GUI)的图形信息。在其它实施方式中,可以适当地使用多个处理器和/或多个总线以及多个存储器和存储器类型。此外,可以连接多个计算设备500,其中每个设备提供必要操作的部分(例如,作为服务器组,一组刀片服务器,或多处理器系统)。
存储器520在计算设备500内非暂态地存储信息。存储器520可以是计算机可读介质,易失性存储器单元或非易失性存储器单元。非易失性存储器520可以是用于临时或永久地存储由计算设备500使用的程序(例如,指令序列)或数据(例如,程序状态信息)的物理设备。非易失性存储器的实例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,例如启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM),动态随机存取存储器(DRAM),静态随机存取存储器(SRAM),相变存储器(PCM)以及磁盘或磁带。
存储设备530能够为计算设备500提供大容量存储。在一些实施方式中,存储设备530是计算机可读介质。在各种不同的实施方式中,存储设备530可以是软盘设备,硬盘设备,光盘设备,或磁带设备,闪存或其它类似的固态存储器设备,或设备阵列,包括存储区域网络中的设备或其它配置。在另外的实施方式中,计算机程序产品被有形地包含在信息载体中。计算机程序产品包含指令,指令在被执行时执行一个或多个方法,例如上述的那些方法。信息载体是计算机或机器可读介质,例如存储器520,存储设备530或处理器510上的存储器。
高速控制器540管理计算设备500的带宽密集操作,而低速控制器560管理较低的带宽密集操作。这种职责的分配仅是示例性的。在一些实施方式中,高速控制器540耦合到存储器520,显示器580(例如,通过图形处理器或加速器)以及高速扩展端口550,高速扩展端口550可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器560耦合到存储设备530和低速扩展端口590。可以包括各种通信端口(例如,USB,蓝牙,以太网,无线以太网)的低速扩展端口590可以例如通过网络适配器耦合到一个或多个输入/输出设备,例如键盘,定点设备,扫描仪,或联网设备,例如交换机或路由器。
如图所示,计算设备500可以以多种不同的形式来实施。例如,它可以被实施为标准服务器500a或者在一组这样的服务器500a中多次实施,作为笔记本电脑500b,或者实现为机架服务器系统500c的一部分。
在此描述的系统和技术的各种实施方式可以在数字电子和/或光学电路,集成电路,专门设计的ASIC(专用集成电路),计算机硬件,固件,软件和/或其组合中实现。这些各种实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现,可编程系统包括至少一个可编程处理器,可编程处理器可以是专用的或通用的,被耦合以从存储系统,至少一个输入设备和至少一个输出设备接收数据和指令,以及向存储系统,至少一个输入设备和至少一个输出设备发送数据和指令。
这些计算机程序(也称为程序,软件,软件应用或代码)包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言和/或用汇编/机器语言来实现。如本文所用,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品,非暂态计算机可读介质,设备和/或设备(例如,磁盘,光盘,存储器,可编程逻辑设备(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器来执行,这些可编程处理器执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或被可操作地耦合以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据,大容量存储设备用于存储数据,例如磁盘,磁光盘或光盘。然而,计算机不必具有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器,介质和存储器设备,包括例如半导体存储器设备,例如EPROM,EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。
为了提供与用户的交互,本公开的一个或多个方面可以在具有显示设备的计算机上实现,显示设备例如CRT(阴极射线管),LCD(液晶显示器)显示器,或者用于向用户显示信息的触摸屏,并且可选地还具有键盘和定点设备,例如鼠标或轨迹球,通过定点设备用户可以向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈,听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音,语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求向用户的客户端设备上的web浏览器发送网页。
已经描述了多种实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其它实施方式也在所附权利要求的范围内。

Claims (10)

1.一种方法,其特征在于,所述方法包括:
在数据处理硬件处,从数据查询系统的用户接收数据查询,所述数据查询的数据存储在与所述数据查询系统通信的数据存储器中;
由所述数据处理硬件确定停滞参数的上时间边界,所述上时间边界将查询响应限制到所述数据存储器内的比所述上时间边界早的数据,通过:
在所述数据处理硬件处接收来自所述用户的用户数据;
由所述数据处理硬件将接收到的用户数据摄入到所述数据存储器中,以第一时间形成一个或多个日志文件;
由所述数据处理硬件在第二时间将所述一个或多个日志文件转换为列数据格式,所述列数据格式对于相应的查询被优化;
由所述数据处理硬件确定所述第一时间与所述第二时间之间的时间差;以及
由所述数据处理硬件将所述时间差分配给所述停滞参数的所述上时间边界;
在所述数据处理硬件处,接收所述停滞参数的所述上时间边界;
由所述数据处理硬件确定存储在所述数据存储器内的所述数据是否早于所述停滞参数的所述上时间边界;以及
当所述数据存储器内的所述数据的一部分比所述停滞参数的所述上时间边界更近地被写入所述数据存储器时,由所述数据处理硬件生成所述查询响应,所述查询响应排除所述数据的比所述停滞参数的所述上时间边界更近地写入所述数据存储器的所述一部分。
2.如权利要求1所述的方法,其特征在于,接收所述停滞参数包括,从所述数据查询系统的所述用户接收所述停滞参数。
3.如权利要求1所述的方法,其特征在于,还包括:
由所述数据处理硬件识别存储在所述数据存储器内的所述数据的日志文件,每个日志文件包括多行数据,所述多行数据中的每行数据包括时间戳;以及
由所述数据处理硬件确定所述日志文件内最接近地匹配所述停滞参数的所述上时间边界的相应时间戳;以及
对于所述查询响应,由所述数据处理硬件读取所述日志文件内的数据,所述数据比最接近地匹配所述停滞参数的所述上时间边界的时间戳更早。
4.如权利要求3所述的方法,其特征在于,所述时间戳指示所述数据存储器在相应日志文件中生成相应数据行的时间。
5.如权利要求1所述的方法,其特征在于,还包括:
在所述数据处理硬件处从所述用户接收数据集合;
由所述数据处理硬件将所述数据集合摄入到所述数据存储器中;以及
由所述数据处理硬件为所述数据集合生成一个或多个日志文件,每个日志文件包括对应于来自所述数据集合的数据的数据行,并且其中生成所述一个或多个日志文件为相应日志文件内的每行数据生成时间戳。
6.一种系统,其特征在于,包括:
数据处理硬件;和
与所述数据处理硬件通信的存储器硬件,所述存储器硬件存储指令,所述指令在所述数据处理硬件上执行时使所述数据处理硬件执行以下操作:
从数据查询系统的用户接收数据查询,数据查询的数据存储在与所述数据查询系统通信的数据存储器中;
确定停滞参数的上时间边界,所述上时间边界将查询响应限制到所述数据存储器内的比所述上时间边界早的数据,通过:接收来自所述用户的用户数据;
将接收到的用户数据摄入到所述数据存储器中,以第一时间形成一个或多个日志文件;
在第二时间将所述一个或多个日志文件转换为列数据格式,所述列数据格式对于相应的查询被优化;
确定所述第一时间与所述第二时间之间的时间差;以及
将所述时间差分配给所述停滞参数的所述上时间边界;
接收所述停滞参数的所述上时间边界,所述停滞参数指示所述数据查询的上时间边界,所述上时间边界将查询响应限制到所述数据存储内的比所述上时间边界早的数据;
确定存储在数据存储器内的所述数据是否早于满足所述停滞参数的所述上时间边界;以及
当所述数据存储器内的所述数据的一部分比所述停滞参数的所述上时间边界更近地被写入所述数据存储器时,生成所述查询响应,所述查询响应排除所述数据的比所述停滞参数的所述上时间边界更近地写入所述数据存储器的所述一部分。
7.如权利要求6所述的系统,其特征在于,接收所述停滞参数包括,从所述数据查询系统的所述用户接收所述停滞参数。
8.如权利要求6所述的系统,其特征在于,还包括:
识别存储在所述数据存储器内的所述数据的日志文件,每个日志文件包括多行数据,所述多行数据中的每行数据包括时间戳;以及
确定所述日志文件内最接近地匹配停滞参数的所述上时间边界的相应时间戳;以及
对于所述查询响应,读取所述日志文件内的数据,所述数据比最接近地匹配所述停滞参数的所述上时间边界的时间戳更早。
9.如权利要求8所述的系统,其特征在于,所述时间戳指示所述数据存储器在相应日志文件中生成相应数据行的时间。
10.如权利要求6所述的系统,其特征在于,还包括:
从所述用户接收数据集合;
将所述数据集合摄入到所述数据存储器中;以及
为所述数据集合生成一个或多个日志文件,每个日志文件包括对应于来自所述数据集合的数据的数据行,并且其中生成所述一个或多个日志文件为相应日志文件内的每行数据生成时间戳。
CN202180042569.2A 2020-04-14 2021-04-12 管理实时数据流处理 Active CN115769196B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310947385.1A CN116860808A (zh) 2020-04-14 2021-04-12 管理实时数据流处理

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/848,833 US11520796B2 (en) 2020-04-14 2020-04-14 Managing real time data stream processing
US16/848,833 2020-04-14
PCT/US2021/026929 WO2021211472A1 (en) 2020-04-14 2021-04-12 Managing real time data stream processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310947385.1A Division CN116860808A (zh) 2020-04-14 2021-04-12 管理实时数据流处理

Publications (2)

Publication Number Publication Date
CN115769196A CN115769196A (zh) 2023-03-07
CN115769196B true CN115769196B (zh) 2023-09-01

Family

ID=75747140

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202180042569.2A Active CN115769196B (zh) 2020-04-14 2021-04-12 管理实时数据流处理
CN202310947385.1A Pending CN116860808A (zh) 2020-04-14 2021-04-12 管理实时数据流处理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310947385.1A Pending CN116860808A (zh) 2020-04-14 2021-04-12 管理实时数据流处理

Country Status (4)

Country Link
US (2) US11520796B2 (zh)
EP (1) EP4136542A1 (zh)
CN (2) CN115769196B (zh)
WO (1) WO2021211472A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230086203A1 (en) * 2021-09-15 2023-03-23 International Business Machines Corporation Stale data recognition

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105283872A (zh) * 2013-04-19 2016-01-27 甲骨文国际公司 为sql处理缓存外部数据源
CN105389352A (zh) * 2015-10-30 2016-03-09 北京奇艺世纪科技有限公司 日志处理方法和装置
CN108875077A (zh) * 2018-07-10 2018-11-23 上海达梦数据库有限公司 数据库的列存储方法、装置、服务器及存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151567A (en) * 1994-05-27 2000-11-21 Hamilton Sundstrand Corporation Data communication analysis and simulation tool
US6889234B1 (en) * 2001-02-26 2005-05-03 Nec Corporation System and methods for invalidation to enable caching of dynamically generated content
US20040128346A1 (en) * 2001-07-16 2004-07-01 Shmuel Melamed Bandwidth savings and qos improvement for www sites by catching static and dynamic content on a distributed network of caches
US20040249682A1 (en) * 2003-06-06 2004-12-09 Demarcken Carl G. Filling a query cache for travel planning
US7720841B2 (en) * 2006-10-04 2010-05-18 International Business Machines Corporation Model-based self-optimizing distributed information management
US8185355B2 (en) * 2007-04-03 2012-05-22 Microsoft Corporation Slot-cache for caching aggregates of data with different expiry times
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
AU2012271352B2 (en) * 2011-06-16 2015-05-07 Argyle Data, Inc. Software virtual machine for acceleration of transactional data processing
US20150161266A1 (en) * 2012-06-28 2015-06-11 Google Inc. Systems and methods for more efficient source code searching
US9251053B2 (en) * 2013-03-14 2016-02-02 SanDisk Technologies, Inc. Managing configuration parameters for a non-volatile medium
US9218383B2 (en) * 2013-03-15 2015-12-22 International Business Machines Corporation Differentiated secondary index maintenance in log structured NoSQL data stores
US9442967B2 (en) * 2013-07-25 2016-09-13 Facebook, Inc. Systems and methods for efficient data ingestion and query processing
US10216631B1 (en) * 2013-09-05 2019-02-26 United Services Automobile Association (Usaa) Revising cache expiration
WO2015191030A1 (en) * 2014-06-09 2015-12-17 Hewlett-Packard Development Company, L.P. Managing storage of data
WO2016007162A1 (en) * 2014-07-10 2016-01-14 Hewlett-Packard Development Company, L.P. Categorizing columns in a data table
US10235638B2 (en) * 2014-10-09 2019-03-19 Splunk Inc. Adaptive key performance indicator thresholds
US10592093B2 (en) * 2014-10-09 2020-03-17 Splunk Inc. Anomaly detection
US11200130B2 (en) * 2015-09-18 2021-12-14 Splunk Inc. Automatic entity control in a machine data driven service monitoring system
US9860317B1 (en) * 2015-04-30 2018-01-02 Amazon Technologies, Inc. Throughput throttling for distributed file storage services with varying connection characteristics
US10642831B2 (en) * 2015-10-23 2020-05-05 Oracle International Corporation Static data caching for queries with a clause that requires multiple iterations to execute
US10095738B1 (en) * 2015-12-22 2018-10-09 Amazon Technologies, Inc. Dynamic assignment of logical partitions according to query predicate evaluations
US10671641B1 (en) * 2016-04-25 2020-06-02 Gravic, Inc. Method and computer program product for efficiently loading and synchronizing column-oriented databases
US11243963B2 (en) * 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11442935B2 (en) * 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US10769134B2 (en) * 2016-10-28 2020-09-08 Microsoft Technology Licensing, Llc Resumable and online schema transformations
US10318521B2 (en) * 2016-11-29 2019-06-11 International Business Machines Corporation Query processing with bounded staleness for transactional mutations in NoSQL database
US10621161B2 (en) * 2017-06-05 2020-04-14 International Business Machines Corporation User defined heuristic refresh of a materialized query table
US10417224B2 (en) * 2017-08-14 2019-09-17 Palantir Technologies Inc. Time series database processing system
US11023430B2 (en) * 2017-11-21 2021-06-01 Oracle International Corporation Sparse dictionary tree
US11328081B2 (en) * 2018-10-16 2022-05-10 Sap Se Consent-based data privacy management system
US11221788B2 (en) * 2019-04-26 2022-01-11 Shichao Jin Data storage method and data storage engine
US11151167B2 (en) * 2019-05-10 2021-10-19 Georgetown University Cache optimization via topics in web search engines
US11119990B1 (en) * 2020-04-14 2021-09-14 Bank Of America Corporation Systems for extracting data from XML-based digital process automation and management platforms to databases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105283872A (zh) * 2013-04-19 2016-01-27 甲骨文国际公司 为sql处理缓存外部数据源
CN105389352A (zh) * 2015-10-30 2016-03-09 北京奇艺世纪科技有限公司 日志处理方法和装置
CN108875077A (zh) * 2018-07-10 2018-11-23 上海达梦数据库有限公司 数据库的列存储方法、装置、服务器及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
An Ingedtion and Analytics Architecture for IoT Applied to Smart City Use Cases;TA-SHMA PAULA ET AL;《IEEE INTERNET OF THINGS JOURNAL》;第5卷(第2期);765-774页 *

Also Published As

Publication number Publication date
CN116860808A (zh) 2023-10-10
US20210319031A1 (en) 2021-10-14
US20230070710A1 (en) 2023-03-09
US11520796B2 (en) 2022-12-06
EP4136542A1 (en) 2023-02-22
WO2021211472A1 (en) 2021-10-21
CN115769196A (zh) 2023-03-07

Similar Documents

Publication Publication Date Title
US10409650B2 (en) Efficient access scheduling for super scaled stream processing systems
US10262032B2 (en) Cache based efficient access scheduling for super scaled stream processing systems
US11663213B2 (en) Distinct value estimation for query planning
US8909863B2 (en) Cache for storage and/or retrieval of application information
US20180260438A1 (en) Processing records in dynamic ranges
KR20090035545A (ko) 초대형 데이터베이스 상의 데이터 처리
EP2877944B1 (en) Heuristic caching to personalize applications
US7792819B2 (en) Priority reduction for fast partitions during query execution
JP2021529367A (ja) データ・キューブの動的増分更新
JP2023518113A (ja) 実行時の動的レンジパーティショニング変換
CN115769196B (zh) 管理实时数据流处理
US8447727B2 (en) Distributed processing device, and storage medium storing distributed processing program
CN112231344B (zh) 实时流数据查询方法及装置
CN113051221A (zh) 数据存储方法、装置、介质、设备及分布式文件系统
US10664170B2 (en) Partial storage of large files in distinct storage systems
JP2004005460A (ja) 情報システムにおけるデータアクセス方法および情報システム
US11921691B2 (en) Low latency demultiplexer for propagating ordered data to multiple sinks
CN114064740B (zh) 用于查询数据的方法、设备和介质
US20240111819A1 (en) Crawl Algorithm
US11762868B2 (en) Metadata management for a transactional storage system
US20220253338A1 (en) Memory management through control of data processing tasks
CN114490079A (zh) 多数据源的分布式处理方法、装置、设备、介质和程序产品
CN117271578A (zh) 数据查询方法、可视化数据处理方法及其装置、电子设备及存储介质
CN116842225A (zh) 数据库查询方法、装置、设备、介质和程序产品
CN112784148A (zh) 一种信息推广的方法和装置

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