CN117255992A - 无模式数据的高效存储和查询 - Google Patents
无模式数据的高效存储和查询 Download PDFInfo
- Publication number
- CN117255992A CN117255992A CN202280032940.1A CN202280032940A CN117255992A CN 117255992 A CN117255992 A CN 117255992A CN 202280032940 A CN202280032940 A CN 202280032940A CN 117255992 A CN117255992 A CN 117255992A
- Authority
- CN
- China
- Prior art keywords
- data
- semi
- user data
- query
- structured
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000004044 response Effects 0.000 claims abstract description 27
- 238000004891 communication Methods 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 35
- 230000015654 memory Effects 0.000 claims description 34
- 238000003491 array Methods 0.000 claims description 3
- 230000037406 food intake Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 13
- 238000000605 extraction Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 238000013523 data management Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
存储半结构化数据(12U)的方法(300)包括从查询系统(150)的用户(10)接收包括半结构化用户数据的用户数据(12)。该方法包括接收半结构化用户数据未能包括固定模式的指示(14)。作为响应,该方法还包括将半结构化用户数据解析成多个数据路径(210)并且提取与多个数据路径中的每个相应数据路径相关联的数据类型(220)。该方法另外包括将半结构化用户数据存储为与查询系统通信的数据库的表(204)中的行条目,其中与行条目相关联的每个列值对应于多个数据路径中的相应一个数据路径和与相应数据路径相关联的数据类型。
Description
技术领域
本公开涉及无模式数据的高效存储和查询。
背景技术
随着当今的应用生成大量数据,查询系统和其他分析工具继续发展以支持数据分析。此外,如果用户不能以高效和/或有成本效益的方式对他或她的数据执行分析,则生成大量用户数据的价值可能显著减少。为了确保用户能够分析他或她的数据,查询处理系统已经开始结合数据存储系统进行操作。通过协作,用户数据可以存储在促进分析操作(诸如查询或其他分析)的存储结构中。不幸的是,促进这些操作的数据存储结构通常受限于它们支持半结构化或无模式数据的能力。
发明内容
本公开的一个方面提供了一种存储半结构化数据的计算机实现的方法。该方法在由数据处理硬件执行时使得数据处理硬件执行操作。操作包括从查询系统的用户接收用户数据,其中用户数据包括非结构化用户数据。操作还包括接收非结构化用户数据未能包括固定模式的指示。响应于非结构化用户数据未能包括固定模式的指示,操作进一步包括将非结构化用户数据解析成多个数据路径并且提取与多个数据路径中的每个相应数据路径相关联的数据类型。操作另外包括将非结构化用户数据存储为与查询系统通信的数据库的表中的行条目,其中与行条目相关联的每个列值对应于多个数据路径中的相应一个和与相应数据路径相关联的数据类型。
本公开的另一方面提供了一种能够存储非结构化数据的系统。该系统包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储在数据处理硬件上执行时使得数据处理硬件执行操作的指令。操作包括从查询系统的用户接收用户数据,其中用户数据包括非结构化用户数据。操作还包括接收非结构化用户数据未能包括固定模式的指示。响应于非结构化用户数据未能包括固定模式的指示,操作进一步包括将非结构化用户数据解析成多个数据路径并且提取与多个数据路径中的每个相应数据路径相关联的数据类型。操作另外包括将非结构化用户数据存储为与查询系统通信的数据库的表中的行条目,其中与行条目相关联的每个列值对应于多个数据路径中的相应一个和与相应数据路径相关联的数据类型。
本公开的方法或系统的实施方式可以包括以下可选特征中的一个或多个。在一些实施方式中,用户数据进一步包括具有相应固定模式的结构化用户数据,并且数据库的表包括与结构化用户数据相对应的一个或多个行条目。在一些示例中,非结构化用户数据包括JavaScript对象表示法(JSON)。在这些示例中,与行条目相关联的相应列可以包括显式空值。同样在这些示例中,与行条目相关联的相应列的相应列值可以包括空数组。在一些配置中,将非结构化用户数据存储为数据库的表中的行条目进一步包括识别与从非结构化数据解析的多个数据路径当中的第一数据路径相关联的第一数据类型和第二数据类型。在这些配置中,将非结构化用户数据存储为数据库的表中的行条目还包括将对应于第一数据路径的第一数据类型的非结构化用户数据的第一值存储在表的第一列的第一行条目中,并且将对应于第一数据路径的第二数据类型的非结构化用户数据的第二值存储在表的第一列的第二行条目中。这里,第二数据类型是与第一数据类型不同的数据类型。
在一些示例中,用于方法或系统的操作还包括:在查询运行时间期间,从查询系统的用户接收对与所存储的非结构化数据相关联的数据的查询;确定响应于查询的所存储的非结构化数据的相应数据路径;以及生成查询响应,该查询响应包括与响应于查询的所存储的非结构化数据的相应数据路径相对应的行条目的相应列值。用户数据可以对应于与用户相关联的云计算资源的日志数据。多个数据路径中的每个数据路径可以对应于非结构化用户数据的键值对的键。行条目的相应列值可以包括嵌套数组。
在附图和以下描述中阐述了本公开的一个或多个实施方式的细节。根据说明书和附图以及权利要求书,其他方面、特征和优点将是显而易见的。
附图说明
图1是示例数据管理环境的示意图。
图2A-2H是用于图1的数据管理环境的示例模式管理器的示意图。
图3是用于存储非结构化数据的方法的操作的示例布置的流程图。
图4是可以用于实现本文描述的系统和方法的示例计算设备的示意图。
各个附图中相同的附图标记表示相同的元件。
具体实施方式
数据存储系统可以将用户或客户端数据存储在一个或多个大型可查询表中。表的一般结构包括组织成称为行条目的行的某种形式的单独记录的数据。数据的行的长度可以基于表的模式(schema)和/或与特定记录(即,行)相关联的列或字段的数量而变化。表模式是指可以定义列名称(例如,字段)、特定列的数据类型和/或其他信息的表的指定格式。即,表的模式是施加在表上的完整性约束,其指示表如何被组织。例如,表模式将数据的类型或数据的形式约束在一个或多个行条目的特定列中。作为示例,表的特定列的模式是作为字符串的名称字段,并且该列的行条目的值将是具有字符串数据类型的名称。
在一些实施方式中,存储系统被配置为基于其接收的用户数据的属性来生成表模式。例如,存储系统在摄取之前以具有特定模式的面向行的格式接收用户数据。在其他实施方式中,用户或客户端与存储系统协调以在用户数据到存储系统的任何传送之前定义用户数据的模式。在这些情况中的任一个中,查询存储的用户数据的能力取决于用户数据如何存储在数据存储系统内。因此,当用于记录的数据基于表模式被存储为表中的行条目时,表模式影响查询处理。为此,结构化数据(其指代包括指定模式的数据)可以促进摄取以及实现查询处理期间对摄取数据的高效读取和/或写入操作。例如,表的每行对应于来自零件供应商的单个购买订单,而表的列包括模式,诸如零件供应商的名称(即,制造商名称)、购买的部件、部件的成本、供应商(即,制造商)的地址和供应商标识符(即,公司标识符)。当存储系统接收到新的购买订单记录时,存储系统将记录内的数据组织到表的适当列中。利用这种类型的组织,存储系统能够通过使用表模式规划一个或多个动作(例如,读取或写入操作)来响应来自查询系统的查询。为了说明,客户可以使用与存储系统协调工作的查询系统以询问在特定日期范围内发生哪些购买订单。响应于该查询,查询处理生成查询计划,该查询计划按日期对购买订单进行排序,然后过滤掉不对应于由查询指定的特定日期范围的所有日期。查询处理然后返回排序和过滤的结果作为对查询的响应。换句话说,这里,由查询处理执行的查询计划利用具有购买订单的表的模式来高效地履行查询(例如,具有最小延迟)。
不幸的是,现实是用户数据以所有形式出现。这意味着尽管为了便于摄取和/或查询处理可以优选具有指定模式的结构化用户数据,但是用户数据也可以是非结构化数据或半结构化数据。这里,非结构化或半结构化数据是指不具有固定模式的数据。例如,非结构化数据可以指全部或完全没有模式的数据,而半结构化数据可以指部分无模式的数据。因此,术语非结构化数据或半结构化数据是指其中数据的一些部分不具有固定模式的数据。这种非结构化或半结构化数据也可以被称为“无模式(schemaless)”数据,因为数据的结构可以在条目到条目(即,记录到记录)间改变。因此,从存储角度来看,如何组织源自无模式数据的多个记录的表并不总是显而易见的。由于至少部分非结构化数据的动态和非固定性质,这种非结构化数据传统上给查询系统和底层存储系统带来了问题。例如,在没有固定模式的情况下,摄取过程可能难以以对查询处理高效的方式将至少部分非结构化数据列化到表中。
为了合成问题,客户端或用户可能不想指定非结构化数据的部分的特定模式。例如,客户可能对自己从查询处理和/或数据存储角度生成有意义的模式的能力没有信心。附加地或替代地,用户数据可以对应于为用户自动生成的数据(例如,机器生成的数据)。作为示例,用户可以使用云计算环境,并且云计算环境可以通过生成日志文件来报告用户的数据(或资源)的状态。在这种情况下,使用户生成这种形式的用户数据(例如,用户数据日志文件)的模式可能给用户带来负担或在用户的能力之外。换言之,用户可能不知道应当为这些类型的文件指定什么相关模式。在这些场景中,查询系统和/或存储系统因此需要不依赖于用户的方法。
此外,非结构化或半结构化数据越来越流行,因为某些非结构化数据格式易于创建。当数据很容易以非结构化形式的某些部分(例如,在自动生成的日志文件中)自动生成时,在机器生成的上下文中尤其如此。一种这样的流行数据格式是JavaScript对象表示法(JSON)。JSON数据是通常用作数据交换格式的日益常见的无模式文件格式。JSON是流行的,部分因为它是语言无关的;意味着JSON与所有编程语言兼容。另外,JSON是基于文本的和轻量级的格式,这允许其容易地生成,无论是由用户生成还是由机器生成。尽管JSON数据具有某种形式的文本结构和键值或属性值表示法,但是其结构不从一个记录固定到另一个记录。由于JSON数据缺乏一致性结构,所以高效地查询JSON数据是困难的,部分因为查询处理不能在查询规划中或在查询验证中使用正式模式。
具体地,对于JSON,已经存在对JSON数据执行查询处理的一些方法。在一种方法中,一些系统将整个JSON文件解释为字符串。虽然这可以保留JSON文件的数据,但是它给查询系统带来了问题,因为查询系统的许多效率(例如,查询速度)围绕固定结构或模式。换言之,与数据条目相关联的固定模式使得查询系统能够开发高效的查询规划。查询规划和查询执行的效率中的一些是在查询处理期间不必读取整个一个或多个数据条目。然而,当存储系统将JSON文件存储为字符串时,针对JSON文件的特定条目或记录的查询通常迫使查询处理以寻址整个字符串而不是仅寻址条目的一部分。也就是说,查询处理通常不得不读取整个字符串以识别用于对查询的响应的相关部分。在这个意义上,JSON数据的基于字符串的存储方法传统上对于查询系统来说不是理想的。
为了解决由其中一些部分是非结构化的数据(例如,非结构化或半结构化数据)所带来的这些问题中的一些,本文描述的方法通过从数据提取模式来促进这样的数据(例如,非结构化或半结构化数据)的高效存储和/或检索。尽管该方法在下文中通常涉及半结构化数据,但是详细方法可以用于完全(例如,非结构化数据)或部分无模式的任何数据。通过从半结构化数据中提取模式,该方法还避免了在半结构化数据的模式生成期间依赖用户。这里,摄取期间的操作处理半结构化数据并将其分切成列式格式,以从半结构化数据提取模式以用于存储和查询目的。利用基于其在存储系统中的提取模式存储的半结构化数据,当查询仅请求半结构化数据的一部分时,所提取的模式允许查询处理仅在所请求的部分处发生以生成查询结果(也称为查询响应)。例如,当查询请求行条目的特定列中的半结构化数据的一部分时,查询处理使用所提取的模式仅读取特定列中的值,而不是读取整个半结构化数据(或其一些较大部分)。
提取方法还可以提供附加优点:半结构化和结构化数据两者可以在摄取过程期间由存储系统摄取。换句话说,在摄取期间,存储系统每一行摄取包含结构化数据和半结构化数据两者的单个用户数据块。能够处理这两种形式的数据对于用户可能是有利的,因为用户不必发起两个不同的摄取过程(即,一个用于结构化数据,一个用于半结构化数据)。例如,具有结构化数据的记录可以具有半结构化的字段,使得存储系统可以在与结构化数据相同的表中存储数据的非结构化部分。在这方面,查询结果可以返回包括来自结构化数据和半结构化数据两者的数据的响应;从而允许查询过程在不同的数据结构上更加稳健。
图1示出了数据管理环境100的示例。与用户10相关联的用户设备110在其计算资源112(例如,数据处理硬件114和/或存储器硬件116)的执行期间生成用户数据12。例如,用户10使用在用户设备110的数据处理硬件114上操作的应用来生成用户数据12。由于各种应用具有生成用户数据12的能力,因此用户10通常利用其他系统(例如,远程系统130、存储系统140或查询系统150)来进行用户数据存储和/或用户数据管理。
在一些示例中,用户设备110是具有(例如,经由网络120)与一个或多个远程系统130进行通信的能力的、使用其自己的计算资源112的本地设备(例如,与用户10的位置相关联)。附加地或替代地,用户设备110利用其对远程资源(例如,远程计算资源132)的访问来操作用于用户10的应用。通过使用用户设备110生成的用户数据12最初可以被本地存储(例如,诸如在存储器硬件116的数据存储118中),并且然后被传送到远程系统130或在创建时通过网络120被发送到远程系统130。例如,用户设备110使用远程系统130将用户数据12传送到存储系统140。
在一些示例中,用户10利用远程系统130(例如,云计算环境)的计算资源132来存储用户数据12。在这些示例中,远程系统130可以在用户数据12由各种用户应用生成时接收用户数据12(例如,流式传输数据)。这里,数据流(例如,用户数据12的数据流)是指到达远程系统130以存储和/或进一步处理的连续或大体连续的数据馈送。在一些配置中,代替将用户数据12连续地流式传输到远程系统130,用户10和/或远程系统130将用户数据12配置为批量发送(例如,以间隔频率)用于处理。与用户设备110非常类似,远程系统130包括计算资源132,诸如远程数据处理硬件134(例如,服务器和/或CPU)和存储器硬件136(例如,磁盘、数据库或其他形式的数据存储)。
在一些配置中,远程计算资源132是由与远程系统130相关联和/或通信的各种系统利用的资源。如图1所示,这些系统可以包括存储系统140和/或查询系统150。在一些示例中,这些系统140、150的功能可以以不同的排列(例如,彼此构建)或具有彼此通信的能力的单独系统集成在一起。例如,存储系统140和查询系统150可以组合成单个系统(例如,如图1中的这些系统周围的虚线所示)。具有其计算资源132的远程系统130可以被配置为托管这些系统140、150的一个或多个功能。在一些实施方式中,远程系统130是分布式系统,其计算资源132分布在经由网络120可访问的一个或多个位置上。
在一些示例中,存储系统140被配置为作为用户10(或多个用户)的数据存储装置来操作数据仓库142(例如,数据存储和/或多个数据库)。一般而言,数据仓库142存储来自一个或多个源的数据,并且可以被设计成分析、报告和/或整合来自其源的数据。数据仓库142使得用户(例如,组织用户)能够具有中央存储库和存储数据访问点。通过在诸如数据仓库142的中央储存库中包含用户数据12,数据仓库142可以简化用于诸如数据分析和/或数据报告(例如,由查询系统150和/或分析系统)的功能的数据检索。此外,数据仓库142可以被配置为存储大量数据,使得用户10(例如,组织用户)可以存储大量历史数据以理解数据趋势。由于数据仓库142可以是用户数据12的主要或唯一数据存储库,存储系统140通常可以从与用户10相关联的用户设备110接收大量数据(例如,每秒千兆字节、每秒兆兆字节或更多)。附加地或替代地,作为存储系统140,存储系统140和/或存储仓库142可以被配置用于来自单个数据源(例如,组织的多个雇员)的多个用户和/或用于同时多用户访问的数据安全(例如,数据冗余)。在一些配置中,数据仓库142是持久性的和/或非易失性的,使得默认数据不被新传入数据覆写或擦除。
查询系统150被配置为以查询160的形式从存储系统140请求信息或数据。在一些示例中,查询160由用户10发起作为对存储系统140内的用户数据12的请求(例如,导出数据请求)。例如,用户10与查询系统150(例如,与查询系统150相关联的接口)交互以检索存储在存储系统140的数据仓库142中的用户数据12。这里,查询160可以是用户发起的(即,由用户10直接请求)或系统发起的(即,由查询系统150本身配置)。在一些示例中,查询系统150配置例程或重复查询160(例如,以某个指定频率)以允许用户10执行分析或监视存储在存储系统140中的用户数据12。
查询160的格式可以变化,但是通常包括对存储在存储系统140中的特定用户数据12的引用。这里,查询系统150结合存储系统140操作,使得存储系统140根据特定模式存储用户数据12,并且查询系统150可以基于关于特定模式的信息生成查询160。例如,数据存储系统140以表格式存储用户数据12,其中用户数据12填充表的行和列。利用表格式,表内的用户数据12具有对应于与用户数据12相关联的模式的行和列。例如,用户数据12可以指用户10做出的购买订单。在该示例中,存储用户数据12的一个或多个表可以包括用于购买的部件、部件的成本、购买的部件的制造商以及关于制造商的细节(例如,制造商地址和/或制造商公司标识符)的列。这里,每行对应于记录或条目(例如,购买订单),其中与表的列中的行条目相关联的每个列值对应于模式的特定部分。由于存储系统140可以根据特定模式(例如,由模式管理器200指示的模式)接收用户数据12,因此存储系统140被配置为存储用户数据12,使得查询系统150可访问与用户数据12相关联的格式(例如,关系、标题或其他模式)的元素(例如,向用户数据12提供进一步的上下文或定义)。
响应于查询160,查询系统150生成履行或尝试履行查询160的请求(例如,对特定用户数据12的请求)的查询响应162。一般而言,查询响应162包括查询系统150在查询160中请求的用户数据12。查询系统150可以将该查询响应162返回到发起查询160的实体(例如,用户10)或与查询系统150通信的另一实体或系统。例如,查询160本身或查询系统150可以指定查询系统150将一个或多个查询响应162传送到与用户10相关联的系统,诸如分析系统。例如,用户10使用分析系统来对用户数据12执行分析。通常,查询系统150被设置为在存储系统140内的用户数据12上生成例程查询160,以使得分析系统能够执行其分析(例如,以特定频率)。例如,查询系统150执行每日查询160以拉出分析系统的最后七天的用户日志数据以分析和/或表示。
在一些实施方式中,当查询系统150接收到针对查询160的输入时,查询系统150被配置为确定查询规划152以便执行查询160。换句话说,查询160通常在基本级别上涉及大的表,而不特别参考存储系统140中的表的实际结构。例如,查询160简单地陈述,查询存储系统140中的用户数据12的表,以导出在过去六个月内针对Sprocket Labs的制造商的购买数据。为了便于用作用户界面以便从存储系统140中的用户数据12的更复杂的表和/或存储结构抽取,查询160输入格式被简化。因此,执行或写入查询160的用户10不需要知道实际存储结构,而是仅需要高级别的表结构的模式或字段来生成查询160。查询系统150结合存储系统140能够分解来自用户10的查询160并且将查询160重写为标识对用户数据12的潜在操作符(例如,读/写操作)的格式以在用户数据12的底层结构上执行查询160。也就是说,当查询系统150接收到查询160时,其消化查询160并规划如何在存储系统140的实际结构上执行查询160。该规划可能需要识别表的子集(例如,分区)和/或对应于查询160的表的文件。
参考图1和图2A-2H,数据管理环境100还包括模式管理器200(也称为管理器200)。管理器200被配置为在用户数据摄取期间管理模式提取。这里,模式提取是指在摄取和存储期间(例如,由存储系统140)生成半结构化用户数据12、12U的模式的过程。模式提取通常发生在摄取期间,但是取决于较大系统的配置需要,可以在摄取之前发生作为预处理步骤。与结构化用户数据12、12S形成对比的半结构化用户数据12U不包括固定模式,所以管理器200执行模式提取。在没有固定模式的情况下,管理器200改为提取半结构化用户数据12U的模式,该模式使得用户数据12(例如,结构化数据12S和半结构化数据12U两者)能够被分切并存储在存储系统140中。当用户数据12实际被加载到存储系统140时(例如,在摄取期间),管理器200的模式提取发生,使得管理器200指定用户数据12将如何被存储在存储系统140的一个或多个表204中。管理器200可以通过执行和/或协调与用户10的系统140、150相关的操作(例如,存储操作和/或查询操作)来提取半结构化用户数据12U的模式。例如,管理器200在半结构化用户数据12U在摄取期间被处理和编码(例如,成为低级别存储部件)时“即时(on-the-fly)”分析半结构化用户数据12U。在这方面,管理器200在决定如何以及在何处存储/编码半结构化数据时考虑半结构化数据的特性(例如,数据路径和/或数据类型)。也就是说,管理器200不一定在摄取之前建立半结构化数据12U的模式作为预处理步骤,然后应用该模式,而是在摄取发生时解释半结构化数据12U的模式。例如,这意味着在任何时刻,可能没有明确定义的模式。
取决于其设计,管理器200的功能可以是集中式的(例如,驻留在系统140、150中的一个中)或分布在系统140、150之间。在一些示例中,诸如图1,管理器200被配置为从用户10接收用户数据12并且促进存储系统140处的存储操作。例如,管理器200促进用户10的数据加载请求。响应于用户10的加载请求,管理器200摄取用户数据12,并且可以基于与结构化数据12S相关联的模式和/或与半结构化数据12U相关联的提取模式202将用户数据12转化为查询友好的格式。这里,摄取是指获得和/或导入用户数据12到存储系统140中(例如,到数据仓库142中),以允许系统使用所摄取的用户数据12(例如,通过查询系统150)。一般而言,可以实时摄取数据,其中管理器200在数据从源(例如,用户10或用户10的用户设备110)发射时导入数据或在管理器200以周期性时间间隔导入离散数据块的批次中导入数据。
为了从半结构化数据12U提取模式,管理器200从用户10接收包括半结构化数据12U的用户数据12。例如,图1描绘了用户10将一些数量N的文件传送到管理器200来以查询高效的格式存储在存储系统140中。这里,第一文件A包括结构化数据12、12S,而第二文件B包括半结构化数据12U(例如,JSON数据)。当用户数据12包括非结构化数据12U时,用户10通常向管理器200提供用户数据12包括半结构化数据12U的一些指示14。该指示14向管理器200指示半结构化数据12U未能包括固定模式(例如,类似于结构化数据12S的模式)。在一些实施方式中,当用户数据12是包括结构化数据12S和半结构化数据12U两者的混合数据时,指示14可以另外识别半结构化数据12U开始和/或结束的位置。用户10可以使用用户界面来协调用户数据12到管理器200和存储系统140的通信。这里,用户界面可以包括当被指定(或选择)时指示用户数据12包括半结构化数据12U的字段或一些图形部件。在一些示例中,管理器200能够检测其接收的用户数据12的某些部分是半结构化数据12U。也就是说,管理器200可以确定用户数据12中的至少一些的格式对应于半结构化数据12U。例如,管理器200辨识出用户数据12包括JSON数据并且知道JSON数据是常见的非结构化消息/文件格式。基于用户数据12包括半结构化数据12U的指示14,管理器200在摄取用户数据12期间生成半结构化数据12U的提取模式202。
参考图2A-2H,管理器200被配置为生成半结构化数据12U的提取模式202,并且根据提取的模式202促进半结构化数据12U的存储。当管理器200接收到半结构化数据12U未能包括固定模式的指示14时,管理器200将半结构化数据12U解析为多个数据路径210、210a-n中。参考图2A,半结构化数据12U对应于具有单个事务记录的JSON有效载荷。尽管半结构化数据12U(诸如JSON数据)可以包括单个消息或文件中的若干记录,但是为了便于解释,图2A描绘单个记录。
基于JSON有效载荷的文本,管理器200识别半结构化数据12U的五个数据路径210、210a-e。在一些示例中,当半结构化数据12U是JSON数据时,每个数据路径210对应于半结构化数据12U内的键-值或键-属性结构的表示。例如,在第一数据路径210a中,键是文本“component(部件)”,并且值212是文本“sproket(链轮)”。类似地,第二数据路径210b具有对应于文本“成本”的键以及对应于数字“23”的值212。图2A还示出在解析诸如JSON数据的半结构化数据12U时,管理器200可能遇到具有嵌套值或属性的键。这里,管理器200可以将每个嵌套键值对识别为单独的数据路径210。例如,根据JSON有效载荷的文本,“manufacturer(制造商)”包括三个属性、“name(名称)”、“location(位置)”和“公司_id(company_id)”。“manufacturer.name(制造商.名称)”的第一属性使管理器200生成第三路径210c。“manufacturer.location(制造商.位置)”的第二属性使管理器200生成第四数据路径210d,并且“manufacturer.company_id(制造商.公司_id)”的第三属性使管理器200生成第五数据路径210e。在该示例中,这些路径210中的每一个与特定值212相关联,如连接到每个特定数据路径线的值212所示。
参考图2B-2G,在一些实施方式中,管理器200使用数据路径210中的每个来生成提取的模式202。例如,相应数据路径210的每个键变为单独的列模式202,其中该列将存储对应于该键的值212。即,一旦管理器200指定单独的列模式202,管理器200将通过存储来自半结构化数据12U中对应于列模式202的记录的值212来执行半结构化数据12U的摄取。因此,与行条目(例如,记录1)相关联的列值对应于已经被提取以形成列模式202的数据路径210的值212。此处,通过此方法将数据路径210的值212存储在列式存储中可带来存储效率,尤其是当与存储压缩技术(例如,行程长度编码)或类似类型的数据上的其它兼容数据存储技术组合时。
在一些示例中,管理器200通过另外考虑经解析的文本的数据类型220来生成所提取的模式202。这里,管理器200考虑数据类型220,因为半结构化数据12U可以在记录到记录间动态地改变数据类型220。为了在构造模式202时考虑这些改变,管理器200可以识别包括在半结构化数据12U中的数据类型。例如,管理器200确定与特定数据路径210相关联的数据类型220。数据类型220还可以指示一个数据路径210何时不同于另一数据路径210或已变得不同于另一数据路径210。也就是说,例如,与第一数据路径210相关联的第一值212的数据类型220当与第一数据路径210相关联的第二值212的数据类型220相比时(例如,在第一记录与第二记录之间)可以改变。由于数据类型220的这种改变,管理器200可以将第一值212存储在具有与第二值212不同的列模式202的不同列中。通过采取这种方法,管理器200能够确保从记录到记录发生的数据类型改变不会损害半结构化数据12U的查询高效存储。为了说明,如果第一记录包括作为字符串的制造名称,而第二记录包括作为整数的制造名称,则请求对应于制造名称的值212的查询160将导致可能包括字符串和整数两者的响应162。这里,用户10可以接收具有字符串和整数两者的查询响应162,并且不理解该整数如何是针对制造名称的查询160的有效结果。由于这种情况由于半结构化数据12U的性质是可行的,所以管理器200可以提取数据类型220以有助于对所提取的模式202的附加约束。例如,对所提取的模式202的附加约束可以是特定于特定数据类型220的最小/最大统计。换句话说,字符串可以具有不同于整数(即,数字)的最小/最大统计。因此,这些附加约束或统计可以用于在读取操作期间修剪数据的部分(例如,以文件粒度)。在一些示例中,管理器200的功能允许用户10在数据路径210中具有任何类型的杂乱数据,使得列或数据路径210可以是数据类型220(例如,字符串和整数)的混合,以使得用户10能够照原样读取他或她的所摄取的数据,无论值212所对应的数据类型220如何。
图2B-2G是描绘管理器200如何将来自半结构化数据12U的值212分切或列化为由所提取的模式202约束的单独列的示例。这里,如图2C-2G中更详细地示出的,所提取的模式202还约束基于数据类型220哪些值212可以被存储在哪些列中。在图2C中,对应于“component(部件)”的第一数据路径210a变为具有作为字符串的第一数据类型220、220a的第一列模式202、202a。因此,管理器200将来自作为字符串的第一记录的“sprocket(链轮)”的第一值212a和来自作为字符串的第二记录的“wheel(轮)”的第二值212b存储为具有第一列模式202a的列中的条目。在图2D中,对应于“cost(成本)”的第二数据路径210b变为具有第二数据类型220、220b的第二列模式202、202b,所述第二数据类型为整数和浮点数。这里,管理器200将第三值212c“23”和第四值212d“700.23”存储为具有第二列模式202b的列中的条目,所述第三值和第四值两者是整数(例如,“23”)或浮点数(例如,“700.23”)。在图2E中,对应于“manufacturer.name(制造商.名称)”的第三数据路径210c变为具有作为字符串的第三数据类型220、220c的第三列模式202、202c。在该示例中,管理器200将两者均为字符串的第五值212e“Sprocket Labs”和第六值212f“Roundabout”存储为具有第三列模式202c的列中的条目。在图2F中,对应于“manufacturer.location.address(制造商.位置.地址)”的第四数据路径210d变成具有作为数组的第四数据类型220、220d的第四列模式202、202d。这里,管理器200存储对应于来自每个记录的数组的值222h-m,所述记录识别由第四列模式202d指定的制造商的地址。列包括值212在其父长度中重复多少次的数组长度。例如,len={3,3}指定第一“address(地址)”具有3个值,而第二“address(地址)”也具有3个值。在图2G中,对应于“manufacturer.company_id(制造商.公司_id)”的第五数据路径210e变为具有作为整数的第五数据类型220e的第五列模式202、202e。在该示例中,管理器200将两者均为整数的第十四值212n“91724”和第十五值212o“83724”存储为具有第五列模式202e的列中的条目。
在一些示例中,管理器200可以被配置为将值212序列化。序列化通常是指将值212转换为给定表示(例如,字符串表示)的过程或者从给定表示转换未值212的过程(例如,有时称为反序列化)。因此,当在序列化格式的上下文中重新读取序列化数据(例如,所得的比特序列)时,序列化数据可重构为其原始预序列化形式。这里,管理器200可以被配置为与各种各样的序列化格式(例如,包括特定于JSON数据的格式)兼容。作为示例,在数据路径210具有第一行(例如,第一记录)的整数的数据类型220和另一行(例如,第二记录)中的字符串的数据类型220的情况下,管理器200可以将这些值220中的一个或两者序列化。通过序列化值212,管理器200可以促进所存储的值212的一致查询处理。
图2F还示出了管理器200能够在将半结构化数据12U存储在存储系统140中时保留来自半结构化数据12U的潜在重要信息。例如,管理器200包括行条目,其中值212是显式空(例如,值212g)。例如,显式空(null)指JSON空。也就是说,管理器200具有用于空的特定占位符,并且甚至肯定地声明条目值212为空。相比之下,出于存储目的,一些存储技术可能不存储显式空或忽略显式空。然而,忽略或移除显式空可能导致下游问题,其中具有空值的键是有意义的信息。在一些应用中,知道值不存在(即,为空)而不是值丢失(即,可能存在,但未知)可能是有意义的。例如,利用JSON数据,JSON对象内的JSON键的存在具有意义,并且因此保留空值是重要的。类似于显式空值212,管理器200还可存储半结构化数据12U,使得列的相应列值212包括空数组(即,指示数组是用于该值的格式,但该数组当前没有值)。
图2H描绘了存储系统140的表204可以是单个大型表204,其中每列对应于提取的模式202,并且每行是来自用户数据12的一个或多个文件/消息的记录。换句话说,图2A至图2G的每个表204可以被集成在一起以形成图2H所示的表204。或者,如图2H所示的较大表204可以被划分成较小的表204(例如,列式切片),使得查询处理不必评估大型表,而是可以评估比大型表更高效地确定对查询160的回答的较小的表。
利用所提取的模式方法,管理器200能够在摄取期间以与结构化数据12S类似的方式来分切半结构化数据12U,使得用户数据12准备好在查询运行时间期间的查询处理。通过以类似的方式分切和存储半结构化数据12U和结构化数据12S,无论结构如何,用户数据12都可以一起存储(例如,在同一表204中)以及在一些情况下共同履行查询160。此外,通过管理器200对用户数据12进行列化,管理器200确保半结构化数据12U可以具有与结构化数据12S相似的查询和存储效率。例如,表存储方案允许查询处理期间的列式处理,其中查询规划152不需要读取比履行查询160所必需的更多的数据。也就是说,查询处理可以使用所提取的模式202来过滤或以更紧密地与查询本身对齐的数据级别来计算查询响应162。例如,查询系统150使用所提取的模式202下推对用户数据12的操作,以减少在查询处理期间发生的读取和/或写入操作的量。
图3是用于存储半结构化数据12U的方法300的操作的示例布置的流程图。在操作302处,方法300从查询系统150的用户10接收用户数据12,其中用户数据12包括半结构化用户数据12U。在操作304处,方法300还接收半结构化用户数据12U未能包括固定模式的指示14。响应于半结构化用户数据12U未能包括固定模式的指示14,方法300执行具有两个子操作306、306a-b的操作306。在子操作306a处,方法300将半结构化用户数据12U解析为多个数据路径210。在子操作306b处,方法300提取与多个数据路径210中的每个相应数据路径210相关联的数据类型220。在操作308处,方法300将半结构化用户数据12U存储为与查询系统150通信的数据库的表204中的行条目,其中与行条目相关联的每个列值212对应于多个数据路径210中的相应一个数据路径210和与相应数据路径210相关联的数据类型220。
图4是可以用于实现本文档中描述的系统(例如,远程系统130、存储系统140、查询系统150和/或管理器200)和方法(例如,方法300)的示例计算设备400的示意图。计算设备400旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。这里所示的部件、它们的连接和关系及其功能仅仅是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实现。
计算设备400包括处理器410(例如,数据处理硬件)、存储器420(例如,存储器硬件)、存储设备430、连接到存储器420和高速扩展端口450的高速接口/控制器440、以及连接到低速总线470和存储设备430的低速接口/控制器460。部件410、420、430、440、450和460中的每一个使用各种总线互连,并且可以适当地安装在公共母板上或以其他方式安装。处理器410可以处理用于在计算设备400内执行的指令,包括存储在存储器420中或存储设备430上的指令,以在外部输入/输出设备(诸如耦合到高速接口440的显示器480)上显示图形用户界面(GUI)的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线以及多个存储器和存储器类型。此外,可以连接多个计算设备400,其中每个设备提供必要操作的部分(例如,作为服务器组、一组刀片服务器或多处理器系统)。
存储器420非暂时性地存储计算设备400内的信息。存储器420可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂态存储器420可以是用于临时或永久地存储程序(例如,指令序列)或数据(例如,程序状态信息)以供计算设备400使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及磁盘或磁带。
存储设备430能够为计算设备400提供大容量存储。在一些实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以是软盘设备、硬盘设备、光盘设备、或磁带设备、闪存或其他类似的固态存储器设备、或设备阵列,包括存储区域网络或其他配置中的设备。在另外的实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,所述指令在被执行时执行一种或多种方法,诸如上述那些方法。信息载体是计算机或机器可读介质,诸如存储器420、存储设备430或处理器410上的存储器。
高速控制器440管理用于计算设备400的带宽密集型操作,而低速控制器460管理较低带宽密集型操作。这种职责分配仅仅是示例性的。在一些实施方式中,高速控制器440耦合到存储器420、显示器480(例如,通过图形处理器或加速器)和高速扩展端口450,高速扩展端口450可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器460耦合到存储设备430和低速扩展端口470。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口470可以例如通过网络适配器耦合到一个或多个输入/输出设备,诸如键盘、定点设备、扫描仪或诸如交换机或路由器的网络设备。
计算设备400可以以多种不同的形式实现,如图所示。例如,它可以被实现为标准服务器400a或在一组这样的服务器400a中多次实现,实现为膝上型计算机400b,或者实现为机架服务器系统400c的一部分。
本文描述的系统和技术的各种实施方式可以在数字电子和/或光学电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些各种实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,该可编程系统包括至少一个可编程处理器,该可编程处理器可以是特殊的或通用的,被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。
这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所使用的,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能的一个或多个可编程处理器来执行。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行。适合于执行计算机程序的处理器例如包括通用和专用微处理器以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备接收数据或向其传送数据,或两者,例如磁性、磁光盘或光盘。然而,计算机不需要具有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本公开的一个或多个方面可以在具有显示设备(例如,CRT(阴极射线管)、LCD(液晶显示器)监视器或触摸屏)的计算机上实现,该显示设备用于向用户显示信息,以及任选地可以具有键盘和指向设备(例如,鼠标或轨迹球),用户可以通过该设备向计算机提供输入。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从该设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求将网页发送到用户的客户端设备上的web浏览器。
已经描述了多种实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其他实施方式在所附权利要求的范围内。
Claims (20)
1.一种计算机实现的方法(300),当由数据处理硬件(114)执行时,所述方法使得所述数据处理硬件(114)执行包括以下的操作:
从查询系统(150)的用户(10)接收用户数据(12),所述用户数据(12)包括半结构化用户数据(12U);
接收所述半结构化用户数据(12U)未能包括固定模式的指示(14);
响应于所述半结构化用户数据(12U)未能包括所述固定模式的所述指示(14):
将所述半结构化用户数据(12U)解析为多个数据路径(210);以及
提取与所述多个数据路径(210)中的每个相应数据路径(210)相关联的数据类型(220);以及
将所述半结构化用户数据(12U)存储为与所述查询系统(150)通信的数据库的表(204)中的行条目,
其中,与所述行条目相关联的每个列值(212)对应于所述多个数据路径(210)中的相应一个数据路径和与相应数据路径(210)相关联的所述数据类型(220)。
2.根据权利要求1所述的方法(300),其中:
所述用户数据(12)进一步包括具有相应固定模式的结构化用户数据(12S);以及
所述数据库的所述表(204)包括对应于所述结构化用户数据(12S)的一个或多个行条目。
3.根据权利要求1或权利要求2所述的方法(300),其中,所述半结构化用户数据(12U)包括JavaScript对象表示法(JSON)。
4.根据权利要求3所述的方法(300),其中,与所述行条目相关联的相应列包括显式空值。
5.根据权利要求3所述的方法(300),其中,与所述行条目相关联的相应列的相应列值(212)包括空数组。
6.根据权利要求1-5中任一项所述的方法(300),其中,将所述半结构化用户数据(12U)存储为所述数据库的所述表(204)中的所述行条目进一步包括:
识别与从所述半结构化用户数据(12U)解析的所述多个数据路径(210)当中的第一数据路径(210)相关联的第一数据类型(220)和第二数据类型(220);
将与所述第一数据路径(210)的所述第一数据类型(220)相对应的所述半结构化用户数据(12U)的第一值(212)存储在所述表(204)的第一列的第一行条目中;以及
将与所述第一数据路径(210)的所述第二数据类型(220)相对应的所述半结构化用户数据(12U)的第二值(212)存储在所述表(204)的第一列的第二行条目中,
其中,所述第二数据类型(220)是与所述第一数据类型(220)不同的数据类型(220)。
7.根据权利要求1-6中任一项所述的方法(300),其中,所述操作进一步包括在查询运行时间期间:
从所述查询系统(150)的所述用户(10)接收对与所存储的半结构化用户数据(12U)相关联的数据的查询(160);
确定响应于所述查询(160)的所存储的半结构化用户数据(12U)的相应数据路径(210);以及
响应于所述查询(160),生成包括与所存储的半结构化用户数据(12U)的所述相应数据路径(210)对应的所述行条目的相应列值(212)的查询响应(162)。
8.根据权利要求1-7中任一项所述的方法(300),其中,所述用户数据(12)对应于与所述用户(10)相关联的云计算资源的日志数据。
9.根据权利要求1-8中任一项所述的方法(300),其中,所述多个数据路径(210)中的每个数据路径(210)对应于所述半结构化用户数据(12U)的键-值对的键。
10.根据权利要求1-9中任一项所述的方法(300),其中,所述行条目的相应列值(212)包括嵌套数组。
11.一种系统(100),包括:
数据处理硬件(114);以及
与所述数据处理硬件(114)通信的存储器硬件(116),所述存储器硬件(116)存储指令,所述指令当在所述数据处理硬件(114)上执行时使得所述数据处理硬件(114)执行包括以下的操作:
从查询系统(150)的用户(10)接收用户数据(12),所述用户数据(12)包括半结构化用户数据(12U);
接收所述半结构化用户数据(12U)未能包括固定模式的指示(14);
响应于所述半结构化用户数据(12U)未能包括所述固定模式的所述指示(14):
将所述半结构化用户数据(12U)解析为多个数据路径(210);以及
提取与所述多个数据路径(210)中的每个相应数据路径(210)相关联的数据类型(220);以及
将所述半结构化用户数据(12U)存储为与所述查询系统(150)通信的数据库的表(204)中的行条目,
其中,与所述行条目相关联的每个列值(212)对应于所述多个数据路径(210)中的相应一个数据路径和与相应数据路径(210)相关联的所述数据类型(220)。
12.根据权利要求11所述的系统(100),其中:
所述用户数据(12)进一步包括具有相应固定模式的结构化用户数据(12S);以及
所述数据库的所述表(204)包括对应于所述结构化用户数据(12S)的一个或多个行条目。
13.根据权利要求11或权利要求12所述的系统(100),其中,所述半结构化用户数据(12U)包括JavaScript对象表示法(JSON)。
14.根据权利要求13所述的系统(100),其中,与所述行条目相关联的相应列包括显式空值。
15.根据权利要求13所述的系统(100),其中,与所述行条目相关联的相应列的相应列值(212)包括空数组。
16.根据权利要求11-15中任一项所述的系统(100),其中,将所述半结构化用户数据(12U)存储为所述数据库的所述表(204)中的所述行条目进一步包括:
识别与从所述半结构化用户数据(12U)解析的所述多个数据路径(210)当中的第一数据路径(210)相关联的第一数据类型(220)和第二数据类型(220);
将与所述第一数据路径(210)的所述第一数据类型(220)相对应的所述半结构化用户数据(12U)的第一值(212)存储在所述表(204)的第一列的第一行条目中;以及
将与所述第一数据路径(210)的所述第二数据类型(220)相对应的所述半结构化用户数据(12U)的第二值(212)存储在所述表(204)的第一列的第二行条目中,
其中,所述第二数据类型(220)是与所述第一数据类型(220)不同的数据类型(220)。
17.根据权利要求11-16中任一项所述的系统(100),其中,所述操作进一步包括在查询运行时间期间:
从所述查询系统(150)的所述用户(10)接收对与所存储的半结构化用户数据(12U)相关联的数据的查询(160);
确定响应于所述查询(160)的所存储的半结构化用户数据(12U)的相应数据路径(210);以及
响应于所述查询(160),生成包括与所存储的半结构化用户数据(12U)的所述相应数据路径(210)对应的所述行条目的相应列值(212)的查询响应(162)。
18.根据权利要求11-17中任一项所述的系统(100),其中,所述用户数据(12)对应于与所述用户(10)相关联的云计算资源的日志数据。
19.根据权利要求11-18中任一项所述的系统(100),其中,所述多个数据路径(210)中的每个数据路径(210)对应于所述半结构化用户数据(12U)的键-值对的键。
20.根据权利要求11-19中任一项所述的系统(100),其中,所述行条目的相应列值(212)包括嵌套数组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/308,986 | 2021-05-05 | ||
US17/308,986 US11816157B2 (en) | 2021-05-05 | 2021-05-05 | Efficient storage and query of schemaless data |
PCT/US2022/071973 WO2022236232A1 (en) | 2021-05-05 | 2022-04-28 | Efficient storage and query of schemaless data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117255992A true CN117255992A (zh) | 2023-12-19 |
Family
ID=81851114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280032940.1A Pending CN117255992A (zh) | 2021-05-05 | 2022-04-28 | 无模式数据的高效存储和查询 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11816157B2 (zh) |
EP (1) | EP4334827A1 (zh) |
JP (1) | JP2024518051A (zh) |
KR (1) | KR20240003763A (zh) |
CN (1) | CN117255992A (zh) |
WO (1) | WO2022236232A1 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105122243B (zh) | 2013-03-15 | 2019-02-12 | 亚马逊科技公司 | 用于半结构化数据的可扩展分析平台 |
US9754048B1 (en) | 2014-10-06 | 2017-09-05 | Google Inc. | Storing semi-structured data |
US10191944B2 (en) | 2015-10-23 | 2019-01-29 | Oracle International Corporation | Columnar data arrangement for semi-structured data |
US11269821B2 (en) * | 2018-04-04 | 2022-03-08 | Oracle International Corporation | Method and system for generating schemas |
GB201813561D0 (en) * | 2018-08-21 | 2018-10-03 | Shapecast Ltd | Machine learning optimisation method |
US11093499B2 (en) * | 2019-03-08 | 2021-08-17 | Microsoft Technology Licensing, Llc | Techniques for optimizing graph database queries |
US11379348B2 (en) * | 2019-06-21 | 2022-07-05 | ProKarma Inc. | System and method for performing automated API tests |
US11086879B2 (en) * | 2019-10-02 | 2021-08-10 | Servicenow, Inc. | Pipelineable and parallelizable streaming parsers for querying structured data-interchange information |
US11429631B2 (en) * | 2019-11-06 | 2022-08-30 | Servicenow, Inc. | Memory-efficient programmatic transformation of structured data |
-
2021
- 2021-05-05 US US17/308,986 patent/US11816157B2/en active Active
-
2022
- 2022-04-28 WO PCT/US2022/071973 patent/WO2022236232A1/en active Application Filing
- 2022-04-28 CN CN202280032940.1A patent/CN117255992A/zh active Pending
- 2022-04-28 JP JP2023568071A patent/JP2024518051A/ja active Pending
- 2022-04-28 EP EP22726363.9A patent/EP4334827A1/en active Pending
- 2022-04-28 KR KR1020237041586A patent/KR20240003763A/ko unknown
-
2023
- 2023-10-09 US US18/483,465 patent/US20240037146A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022236232A1 (en) | 2022-11-10 |
US11816157B2 (en) | 2023-11-14 |
KR20240003763A (ko) | 2024-01-09 |
US20240037146A1 (en) | 2024-02-01 |
EP4334827A1 (en) | 2024-03-13 |
JP2024518051A (ja) | 2024-04-24 |
US20220358160A1 (en) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10585913B2 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
Zafar et al. | Big data: the NoSQL and RDBMS review | |
RU2378690C2 (ru) | Способ и система для преобразования иерархической структуры данных на основе схемы в плоскую структуру данных | |
US8601438B2 (en) | Data transformation based on a technical design document | |
US7693911B2 (en) | Uniform metadata retrieval | |
US9201700B2 (en) | Provisioning computer resources on a network | |
CN111949693B (zh) | 一种数据处理装置、数据处理方法、存储介质及电子设备 | |
CN111492344B (zh) | 用于监测结构化查询语言(sql)查询的执行的系统和方法 | |
US10192330B2 (en) | Rendering data visualizations in different analytical applications | |
US11734324B2 (en) | Systems and methods for high efficiency data querying | |
US20170212930A1 (en) | Hybrid architecture for processing graph-based queries | |
CN112860777B (zh) | 数据处理方法、装置及设备 | |
US10248668B2 (en) | Mapping database structure to software | |
US11182229B2 (en) | Data processing for predictive analytics | |
US20070112886A1 (en) | Method and apparatus for database change management | |
WO2023056946A1 (zh) | 一种数据缓存方法、装置和电子设备 | |
US10691663B2 (en) | Database table copy | |
US11294901B1 (en) | Isolating the performance of functions included in queries | |
US7831629B2 (en) | Method for building data encapsulation layers for highly variable schema | |
US8473496B2 (en) | Utilizing density metadata to process multi-dimensional data | |
CN115098568A (zh) | 数据处理方法、装置、设备、介质和程序产品 | |
CN117255992A (zh) | 无模式数据的高效存储和查询 | |
US20210256067A1 (en) | Database engine for amorphous data sets | |
US20210326045A1 (en) | Automated data translation | |
Anderson et al. | The Role of the Data Warehouse in the Archive |
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 |