CN116561374B - 基于半结构化存储的资源确定方法、装置、设备及介质 - Google Patents
基于半结构化存储的资源确定方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116561374B CN116561374B CN202310843507.2A CN202310843507A CN116561374B CN 116561374 B CN116561374 B CN 116561374B CN 202310843507 A CN202310843507 A CN 202310843507A CN 116561374 B CN116561374 B CN 116561374B
- Authority
- CN
- China
- Prior art keywords
- data
- parameter
- query
- index
- storage
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 235
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000013507 mapping Methods 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 35
- 238000013500 data storage Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 238000010926 purge Methods 0.000 description 5
- 241001178520 Stomatepia mongo Species 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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/83—Querying
- G06F16/832—Query formulation
-
- 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/83—Querying
- G06F16/835—Query processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于半结构化存储的资源确定方法、装置、设备及介质,涉及半结构化存储领域。该方法包括:获取多个第一查询语句,所述多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数;获取系统存储参数和所述第i个第一数据的数据参数;基于所述系统存储参数和所述第i个第一数据的数据参数,确定所述第i个第一查询语句对应的资源用量;根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案;获取第二查询语句,并按照所述第一查询方案执行所述第二查询语句,所述第二查询语句用于查询第二数据,提高了资源确定效率。
Description
技术领域
本申请涉及半结构化存储领域,特别涉及一种基于半结构化存储的资源确定方法、装置、设备及介质。
背景技术
半结构化存储的特性使得用户可以采用数据优先的方法,而非模式优先的方法。这可以减少定义模式的时间和精力,特别是在数据结构和内容存在一些不确定性的情况下。然而与关系型数据库管理系统(Relational Database Management System,RDBMS)相比,半结构化存储没有像结构化标准查询语言(Structured Query Language,SQL)和规范化理论这样的正式标准。现有的半结构化存储提供了针对实现的优化指南,而不是正式的数据和查询设计。
相关技术中,半结构化存储都使用原始的方法来确定最优的查询执行计划。例如文档数据库(MongoDB)会并行执行所有可行的使用索引的查询计划,最终选择成本最低的查询计划。最终选择的计划被缓存并用于类似的后续查询。
然而,上述成本估算的方式需要针对一个查询执行该查询对应的每一个查询计划才能计算实际的成本,对系统的负载压力较大,成本估算效率较低。
发明内容
本申请实施例提供了一种基于半结构化存储的资源确定方法、装置、设备及介质,能够减少资源确定过程中对系统的负载压力。所述技术方案如下。
一方面,提供了一种基于半结构化存储的资源确定方法,所述方法包括:
获取多个第一查询语句,所述多个第一查询语句对应多个第一数据,所述多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数;
获取系统存储参数和所述第i个第一数据的数据参数,所述系统存储参数用于指示设备在数据存储时的存储参数,所述数据参数用于指示所述第i个第一数据的存储相关参数,所述存储相关参数中包括存储结构、内存映射方式、内存关联性以及所述第i个第一数据所在的数据集合中的至少一种;
基于所述系统存储参数和所述第i个第一数据的数据参数,确定所述第i个第一查询语句对应的资源用量;
根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案;
获取第二查询语句,并按照所述第一查询方案执行所述第二查询语句,所述第二查询语句用于查询第二数据。
另一方面,提供了一种基于半结构化存储的资源确定装置,所述装置包括:
获取模块,用于获取多个第一查询语句,所述多个第一查询语句对应多个第一数据,所述多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数;
所述获取模块,还用于获取系统存储参数和所述第i个第一数据的数据参数,所述系统存储参数用于指示设备在数据存储时的存储参数,所述数据参数用于指示所述第i个第一数据的存储相关参数,所述存储相关参数中包括存储结构、内存映射方式、内存关联性以及所述第i个第一数据所在的数据集合中的至少一种;
处理模块,用于基于所述系统存储参数和所述第i个第一数据的数据参数,确定所述第i个第一查询语句对应的资源用量;
所述处理模块,还用于根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案;
所述处理模块,还用于获取第二查询语句,并按照所述第一查询方案执行所述第二查询语句,所述第二查询语句用于查询第二数据。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中任一所述的基于半结构化存储的资源确定方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述本申请实施例中任一所述的基于半结构化存储的资源确定方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的基于半结构化存储的资源确定方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过获取多个第一查询语句,多个第一查询语句对应多个第一数据,多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,获取系统存储参数和第i个第一数据的数据参数,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,获取第二查询语句,并按照第一查询方案执行第二查询语句。基于系统存储参数和数据参数采用通用的资源估算方式确定资源用量,从而将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,即基于对其他执行语句的资源用量进行估算从而确定出一个符合资源用量要求的默认查询方案,从而使用默认查询方案执行第二查询语句。对于第二查询语句来说,采用第一查询方案在保证查询消耗的资源用量相对较少的同时,无需使用不用的查询方案分别执行第二查询语句来确定第二查询语句的资源用量从而确定第二查询语句的查询方案。并且,在第一查询方案的确定过程中,避免了通过不同查询方案执行每个第一查询语句来确定每个第一查询语句资源用量的过程,而可以基于系统存储参数和数据参数直接确定资源用量,因此,在资源确定过程中并不会对系统造成过大的负载压力,从而提高了资源确定效率,即提高了成本估算效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的实施环境示意图;
图2是本申请一个示例性实施例提供的基于半结构化存储的资源确定方法的流程图;
图3是本申请一个示例性实施例提供的第一资源用量的确定方法流程图;
图4是本申请另一个示例性实施例提供的基于半结构化存储的资源确定方法流程图;
图5是本申请一个示例性实施例提供的存储结构示意图;
图6是本申请一个示例性实施例提供的基于半结构化存储的资源确定装置的结构框图;
图7是本申请一个示例性实施例提供的基于半结构化存储的资源确定装置模块的结构框图;
图8是本申请一个示例性实施例提供的终端的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解,尽管在本公开可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
半结构化存储的特性使得用户可以采用数据优先的方法,而非模式优先的方法。这可以减少定义模式的时间和精力,特别是在数据结构和内容存在一些不确定性的情况下。然而与RDBMS相比,半结构化存储没有像SQL和规范化理论这样的正式标准。现有的半结构化存储提供了针对实现的优化指南,而不是正式的数据和查询设计。相关技术中,半结构化存储都使用原始的方法来确定最优的查询执行计划。例如MongoDB会并行执行所有可行的使用索引的查询计划,最终选择成本最低的查询计划。最终选择的计划被缓存并用于类似的后续查询。然而,上述成本估算的方式需要针对一个查询执行该查询对应的每一个查询计划才能计算实际的成本,对系统的负载压力较大,成本估算效率较低。
本申请实施例中提供的基于半结构化存储的资源确定方法,通过获取多个第一查询语句,多个第一查询语句对应多个第一数据,多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,获取系统存储参数和第i个第一数据的数据参数,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,获取第二查询语句,并按照第一查询方案执行第二查询语句。基于系统存储参数和数据参数采用通用的资源估算方式确定资源用量,从而将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,即基于对其他执行语句的资源用量进行估算从而确定出一个符合资源用量要求的默认查询方案,从而使用默认查询方案执行第二查询语句。对于第二查询语句来说,采用第一查询方案在保证查询消耗的资源用量相对较少的同时,无需使用不用的查询方案分别执行第二查询语句来确定第二查询语句的资源用量从而确定第二查询语句的查询方案。并且,在第一查询方案的确定过程中,避免了通过不同查询方案执行每个第一查询语句来确定每个第一查询语句资源用量的过程,而可以基于系统存储参数和数据参数直接确定资源用量,因此,在资源确定过程中并不会对系统造成过大的负载压力,从而提高了资源确定效率,即提高了成本估算效率。
首先,对本申请实施例中涉及的名词进行简单介绍:
半结构化数据:是指数据具有结构化数据和非结构化数据的特点,其中数据的结构不是固定的。与传统的关系型数据库不同,半结构化数据存储在文档存储库中,提供了更大的灵活性和可扩展性。它允许存储相对松散的数据,因此用户可以更自由地选择以哪种方式存储和访问数据。不同的数据行可以拥有不同的列,而且在每个表中可以插入任意数量的列。这种灵活的数据存储方式对于许多不确定或动态的数据集合来说是特别适用的。
内存关联性:是指计算机系统中内存模块与CPU缓存之间的连接方式。它描述了CPU缓存可以访问哪些内存模块。通常内存关联性被定义为“关联度”,用于描述内存模块和CPU缓存之间的对应关系。例如如果关联度为2,则每个CPU缓存条目可以映射到两个不同的内存模块。内存关联性通常会影响系统的性能和可扩展性。
饱和点:是指在半结构化数据存储系统中,缓存空间达到其最大容量时,进一步存储新数据将导致旧数据被替换的阈值。该概念用于估计系统运行的最大容量和性能优化。
内存关联性:是指在半结构化存储中内存如何分配给不同的数据集合。内存关联性描述了内存分配方式,包括预定义关联性和共享关联性。预定义关联性是指用户决定每个集合使用的内存量,而共享关联性则是指内存在不同集合之间共享。在内存中存储的半结构化数据数量和大小以及访问频率等因素都会影响内存关联性的计算。
共享关联性:共享关联性是指在半结构化数据存储系统中,不同集合之间共享内存资源的情况。在共享关联性下,内存资源的分配是基于使用频率、存储元数据和清除策略等因素来确定的。相比之下预定义关联性则是指每个集合都有预先确定的内存资源分配。
预定义关联性:预定义关联性则是指每个集合都有预先确定的内存资源分配。
集合:是指在文档存储中数据的逻辑分类单位。与关系型数据库中的表相似,集合也可以看作是存储文档的容器。但集合与表不同的是,集合中的文档可以是半结构化的,不需要完全遵循固定的数据结构。因此集合在文档存储中能够提供更加灵活的数据存储方式。
缓存清除策略:缓存通常比应用程序需要检索的信息小。因此随着时间的推移需要淘汰掉缓存种的数据。缓存清除包括多种清除策略,例如先进先出、最少使用等。
叶块:是文档存储中的一种数据块,其中包含了具体的文档数据。在缓存清楚策略中叶块是可以被回收的。当一个叶块被删除时它所包含的文档数据也将被删除。
系统标识符:是指系统内部的唯一标识符,用于在数据库中识别半结构化数据。被用于标识存储引擎中的B树中的半结构化数据。在MongoDB中由于向后兼容性的原因,系统标识符被用于索引数据B树中的半结构化数据,而用户可配置的外部标识符被用于索引B树中的数据。
外部标识符:是指在半结构化数据存储中用于唯一标识半结构化数据的用户可配置标识符。在MongoDB中,由于向后兼容性,B树的内部节点不包含外部标识符。相反半结构化数据存储在一个以系统标识符为索引的B树中,然后通过另一个以外部标识符为索引的B树来查找对应半结构化数据的系统内部标识符。
其次,对本申请实施环境进行介绍。请参考图1,其示出了本申请一个示例性实施例提供的实施环境示意图,该实施环境中包括:终端110。
在一些实施例中,终端110用于执行查询语句,读取查询语句对应的半结构化数据。
在一些实施例中,终端110在读取查询语句对应的半结构化数据之前,通过执行本申请实施例提供的基于半结构化存储的资源确定方法确定资源用量,从而基于资源用量确定读取该半结构化数据所需采用的查询方案,即确定该查询语句对应的执行方案,从而按照该查询方案执行该查询语句,读取该半结构化数据,使得执行该查询语句读取该半结构化数据过程中使用的资源用量相对较少。
在一些实施例中,终端110获取多个第一查询语句,多个第一查询语句对应多个第一数据,多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方式查询第i个第一数据,i为正整数,获取系统存储参数和第i个第一数据的数据参数,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,获取第二查询语句,并按照第一查询方案执行第二查询语句,第二查询语句用于查询第二数据。其中,系统存储参数是设备在数据存储时的存储参数,也即,终端110在数据存储时的存储参数,数据参数用于指示第i个第一数据的存储相关参数,该存储相关参数中包括存储结构、内存映射方式、内存关联性以及第i个第一数据所在的数据集合中的至少一种。
可选地,多个第一查询语句可以是预先存储在终端110中的查询语句,也可以是终端110在历史时间范围内执行过的查询语句。当多个第一查询语句实现为预先存储在终端110中的查询语句时,终端110还存储有预设的多种不同的查询方案,多个第一查询语句对应不同的查询方案;当多个第一查询语句实现为终端110在历史时间范围内执行过的查询语句时,第一查询语句对应的查询方案是指终端110在历史时间范围内执行该第一查询语句时所采用的查询方案。
可选地,第二查询语句可以是终端110中存储的待执行的查询语句,也可以是当用户存在查询需求写入终端110中的查询语句,或者,终端110基于用户的查询请求自动生成的查询语句。
在一些实施例中,资源用量包括第一资源用量和第二资源用量,第一资源用量是指基于第i个第一查询语句查询第i个第一数据所消耗的时间资源,第二资源用量是指被访问集合占用的内存资源,被访问集合是指第i个第一数据所在的数据集合。
在一些实施例中,该实施环境中还包括服务器120和通信网络130。
服务器120和终端110通过通信网络130进行数据传输。
在一些实施例中,终端110用于接收用户的查询请求,服务器120用于存储该查询请求对应的数据。可选地,服务器120用于确定资源用量,为终端110接收到的查询请求确定查询方案。
可选地,服务器120为终端110确定一个通用的查询方案。例如,服务器120确定第一查询方案为通用查询方案,则按照第一查询方案执行查询请求对应的查询语句。
在一些实施例中,服务器120通过获取多个第一查询语句,多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,获取系统存储参数和第i个第一数据的数据参数,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,将第一查询方案确定为终端110的通用查询方案。其中,系统存储参数是设备在数据存储时的存储参数,也即,服务器120在数据存储时的存储参数,数据参数用于指示第i个第一数据的存储相关参数,该存储相关参数中包括存储结构、内存映射方式、内存关联性以及第i个第一数据所在的数据集合中的至少一种。服务器120接收终端110发送的查询请求,基于查询请求获取第二查询语句,并按照第一查询方案执行第二查询语句,第二查询语句用于查询第二数据,将第二数据通过通信网络130作为查询结果返回给终端110。
可选地,服务器120为终端110的每个查询请求确定对应的第二查询方案。例如,服务器120基于终端110接收到的查询请求A,为查询请求A对应的查询语句,确定该查询语句按照多种查询方案对应的多个资源用量,并确定符合资源用量要求的查询方案为第二查询方案,按照第二查询方案执行查询请求A对应的查询语句。
在一些实施例中,服务器120通过通信网络130接收终端110的查询请求,基于该查询请求获取第三查询语句,第三查询语句用于查询第三数据。服务器120获取第三数据的数据参数和系统存储参数,根据预设的多种不同的查询方案,基于系统存储参数和第三数据的数据参数,确定第三查询语句对应的多个资源用量,其中,第j种查询方案对应第j个资源用量,j为正整数,根据第三查询语句对应的资源用量,将符合资源用量要求的查询方案确定为第二查询方案,按照第二查询方案执行第三查询语句,并将得到的第三数据作为上述查询请求的查询结果通过通信网络130发送给终端110。
上述终端是可选的,终端可以是台式计算机、膝上型便携计算机、手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(Moving Picture Experts Group AudioLayer III,MP3)播放器、动态影像专家压缩标准音频层4(Moving Picture Experts GroupAudio Layer IV,MP4)播放、智能电视、智能车载等多种形式的终端设备,本申请实施例对此不加以限定。
值得注意的是,上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云安全、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
在一些实施例中,上述服务器还可以实现为区块链系统中的节点。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。例如,本申请中涉及到操作数据和帐号信息等都是在充分授权的情况下获取的。
示意性的,请参考图2,其示出了本申请一个示例性实施例提供的基于半结构化存储的资源确定方法的流程图,该方法可以应用于终端,也可以应用于服务器,也可以同时应用于终端和服务器,本申请实施例以该方法应用于终端为例进行说明,如图2所示,该方法包括如下步骤:
步骤210,获取多个第一查询语句。
其中,多个第一查询语句对应多个第一数据,多个第一查询语句对应不同的查询方案。
其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数。
在一些实施例中,第一数据是采用半结构化存储的数据。
在一些实施例中,不同的查询方案是指执行多个第一查询语句时采用的存储结构、内存映射方式和内存关联性中至少一个存在不同。例如,第1个第一查询语句采用直接映射的内存映射方式,第2个第一查询语句采用哈希映射的内存映射方式,第1个第一查询语句和第2个第一查询语句基于内存映射方式的不同,采用的查询方案不同。
可选地,多个第一查询语句可以是历史时间范围内执行过的查询语句,则第i种查询方案是历史时间范围内执行第i个第一查询语句时采用的查询方案;或者,多个第一查询语句可以是预设的多个查询语句,则第i种查询方案是预先为第i个第一查询语句配置的查询方案。
步骤220,获取系统存储参数和第i个第一数据的数据参数。
其中,系统存储参数用于指示设备在数据存储时的存储参数。
在一些实施例中,系统存储参数包括系统数据块参数、系统索引块参数和预设的时长参数等固定参数。其中,系统数据块参数用于指示设备在数据存储时使用的数据块的尺寸,系统索引参数用于指示设备在数据存储时使用的索引块的尺寸,预设的时长参数是预先设置的在数据读取过程中的单位时间长度,数据块用于存储数据,索引块用于存储索引条目。
在一些实施例中,数据参数用于指示第i个第一数据的存储相关参数,存储相关参数中包括存储结构、内存映射方式、内存关联性以及第i个第一数据所在的数据集合中的至少一种。
可选地,存储结构可以包括二叉搜索树(Balance Tree,B-tree)、哈希桶和堆文件,内存映射方式可以包括直接映射或哈希映射,内存关联性可以包括预设关联性和共享关联性。
在一些实施例中,第i个第一数据的数据参数包括第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量中的至少一个。
其中,第一数据参数用于指示被访问集合的平均文档数据,被访问集合是指第i个第一数据所在的数据集合;第一索引块参数用于指示被访问集合中在第一字段上的平均索引条目尺寸,第一字段是第i个第一数据的索引字段;第一数据量用于指示被访问集合中本结构化数据的数量;缓存数据块数量用于指示被访问集合中存储在设备缓存中的数据块数量;缓存索引块数量用于指示被访问集合中存储在设备缓存中的第一字段对应的索引块数量;索引块数量用于指示被访问集合中全部索引块的数量。
在一些实施例中,步骤220可以实现为:获取系统数据块参数、系统索引块参数、预设的时长参数、预设的填充因子和预设的乘法因子;获取第i个第一数据对应的第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量。
步骤230,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量。
在一些实施例中,根据通用的资源确定模型基于系统存储参数和第i个第一数据的数据参数确定第i个第一查询语句对应的资源用量。
在一些实施例中,资源用量中包括第一资源用量和第二资源用量,第一资源用量是指基于第i个第一查询语句查询第i个第一数据所消耗的时间资源,第二资源用量是指被访问集合占用的内存资源,被访问集合是指第i个数据所在的数据集合。
在一些实施例中,假设多个第一数据从磁盘检索到缓存,并从缓存中提供服务进行处理,磁盘和缓存以固定大小的块访问,从缓存或磁盘读取块的单位时间长度是不同但恒定的,其中,块是设备用于存储数据的基本单位,块包括数据块和索引块,则通过预设的通用资源确定模型基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,其中,预设的通用资源确定模型采用一种固定的资源确定方式确定多个第一查询语句对应的多个资源用量,即,通用资源确定模型定义了基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量的方式。
在一些实施例中,基于第i个第一查询语句查询第i个第一数据所消耗的时间资源是指读取被访问集合的时间,被访问集合是指第i个第一数据所在的数据集合,被访问集合中包括数据块和索引块,因此,在资源确定过程中,可以通过执行第一查询语句时,读取被访问集合中数据块所消耗的时间资源与读取被访问集合中索引块所消耗的时间资源之和,确定第一资源用量。其中,被访问集合中的数据块包括存储在缓存中的数据块和存储在磁盘中的数据块,从缓存或磁盘中读取数据块的单位时间长度是不同但恒定的,可以通过从内存中读取数据块所消耗的时间资源与从磁盘中读取数据块的时间资源之和,确定读取被访问集合中数据块所消耗的时间资源;同理,可以通过内存中读取索引块所消耗的时间资源与从磁盘中读取索引块的时间资源之和,确定读取被访问集合中索引块所消耗的时间资源。
在一些实施例中,通过被访问集合中数据块存储在缓存中的概率和数据块存储在磁盘中的概率,确定读取被访问集合中数据块所消耗的时间资源;通过被访问集合中索引块存储在缓存中的概率和索引块存储在磁盘中的概率,确定读取被访问集合中索引块所消耗的时间资源。
在一些实施例中,假设第一时长参数用于指示从设备缓存中读取数据块或索引块的单位时间长度,第二时长参数用于指示从设备磁盘中读取数据块或索引块的单位时间长度,被访问集合中数据块存储在设备缓存中的概率为第一存储概率,被访问集合中索引块存储在设备缓存中的概率为第二存储概率,读取被访问集合中数据块所消耗的时间资源为第三资源用量,读取被访问集合中索引块所消耗的时间资源为第四资源用量,则可以基于第一时长参数、第二时长参数和第一存储概率确定第三资源用量,基于第一时长参数、第二时长参数和第二存储概率确定第四资源用量,将第三资源用量和第四资源用量之和确定为第一资源用量。
示意性的,第一资源用量的确定方式实现为公式1:
公式1,
其中,C是被访问集合,为第一资源用量,为第一时长参数,为第二
时长参数,为第一存储概率,为第二存储概率。
在一些实施例中,假设与磁盘读取相比,从缓存中读取被访问集合中数据块和索
引块的时间资源可以忽略不计,即,则上述公式1可以简化为公式2:
公式2。
在一些实施例中,第一资源用量与被访问集合占用的内存资源呈负相关关系,即,第一资源用量与第二资源用量呈负相关关系。
步骤240,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案。
可选地,资源用量要求包括资源用量属于预设资源用量范围,或者,资源用量达到第一预设用量阈值,或者,资源用量小于第二预设用量阈值,或者,资源用量按由小到大的顺序排列在前N位(N为大于或等于1的整数)等要求中的至少一种。
示意性的,当资源用量实现为第一资源用量,即,基于第i个第一查询语句查询第i个第一数据所消耗的时间资源,资源用量要求实现为第一资源用量按由小到大的顺序排列在第1位,将第一资源用量最小的第一查询语句对应的查询方案确定为第一查询方案,其中,第一查询方案指示按照该第一资源用量对应的第二资源用量分配被访问集合的内存资源。
在一些实施例中,由于第一查询方案是基于历史时间范围内的多个第一查询语句确认出的查询方案,即,在当前终端配置下,按照第一查询方案执行查询语句是符合资源用量要求的,因此,将第一查询方案配置为默认查询方案,即,对于之后的任意查询语句都默认按照第一查询方案执行。
步骤250,获取第二查询语句,并按照第一查询方案执行第二查询语句。
其中,第二查询语句用于查询第二数据。
可选地,第二查询语句可以是基于查询请求实时生成的查询语句,也可以是预先存储的待执行查询语句。
在一些实施例中,由于第一查询方案是基于历史时间范围内的多个第一查询语句确认出的查询方案,即,在当前终端配置下,按照第一查询方案执行查询语句是符合资源用量要求的,因此,将第一查询方案配置为默认查询方案,并按照第一查询方案执行第二查询语句。
在一些实施例中,基于第一查询方案对应的第二资源用量为第二数据所在的数据集合分配内存资源,从而确保能够按照第一查询方案执行第二查询语句。
综上所述,本申请实施例提供的方法,通过获取多个第一查询语句,多个第一查询语句对应多个第一数据,多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,获取系统存储参数和第i个第一数据的数据参数,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,获取第二查询语句,并按照第一查询方案执行第二查询语句。基于系统存储参数和数据参数采用通用的资源估算方式确定资源用量,从而将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,即基于对其他执行语句的资源用量进行估算从而确定出一个符合资源用量要求的默认查询方案,从而使用默认查询方案执行第二查询语句。对于第二查询语句来说,采用第一查询方案在保证查询消耗的资源用量相对较少的同时,无需使用不用的查询方案分别执行第二查询语句来确定第二查询语句的资源用量从而确定第二查询语句的查询方案。并且,在第一查询方案的确定过程中,避免了通过不同查询方案执行每个第一查询语句来确定每个第一查询语句资源用量的过程,而可以基于系统存储参数和数据参数直接确定资源用量,因此,在资源确定过程中并不会对系统造成过大的负载压力,从而提高了资源确定效率,即提高了成本估算效率。
在一些实施例中,资源用量中包括第一资源用量和第二资源用量,第一资源用量是指基于第i个第一查询语句查询第i个第一数据所消耗的时间资源,第二资源用量是指被访问集合占用的内存资源,被访问集合是指第i个第一数据所在的数据集合,则资源用量确定过程包括如下两步:
第一步,基于系统存储参数和第i个第一数据的数据参数确定第一资源用量;
第二步,基于系统存储参数和第i个第一数据的数据参数确定第二资源用量。
在一些实施例中,第一资源用量和第二资源用量呈负相关关系。
在一些实施例中,可以通过第一资源用量的取值确定符合资源用量要求的第一查询方案,通过第二资源用量指示被访问集合的内存分配,从而确保能够按照第一查询方案执行查询语句。
在一些实施例中,在获取系统参数参数和第i个第一数据的数据参数后执行资源用量的确定过程。
在一些实施例中,系统存储参数包括系统数据块参数、系统索引块参数和预设的时长参数等固定参数。其中,系统数据块参数用于指示设备在数据存储时使用的数据块的尺寸,系统索引参数用于指示设备在数据存储时使用的索引块的尺寸,预设的时长参数是预先设置的在数据读取过程中的单位时间长度,数据块用于存储数据,索引块用于存储索引条目。
在一些实施例中,第i个第一数据的数据参数包括第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量中的至少一个。
其中,第一数据参数用于指示被访问集合的平均文档数据,被访问集合是指第i个第一数据所在的数据集合;第一索引块参数用于指示被访问集合中在第一字段上的平均索引条目尺寸,第一字段是第i个第一数据的索引字段;第一数据量用于指示被访问集合中本结构化数据的数量;缓存数据块数量用于指示被访问集合中存储在设备缓存中的数据块数量;缓存索引块数量用于指示被访问集合中存储在设备缓存中的第一字段对应的索引块数量;索引块数量用于指示被访问集合中全部索引块的数量。
请参考图3,图3是本申请一个示例性实施例提供的第一资源用量的确定方法流程图,如图3所示,该方法包括如下步骤:
步骤310,基于系统数据块参数、第一数据块参数和填充因子确定平均数据参数,并基于系统索引块参数、第二索引块参数和填充因子确定平均索引参数。
其中,平均数据参数用于指示被访问集合中每个数据块中的平均文档数量,平均索引参数用于指示被访问集合中每个索引块中在第一字段上的平均索引条目数量。
在一些实施例中,填充因子用于指示存储节点中数据数量与该节点中存储数量阈值之间的比值。
在一些实施例中,将系统数据块参数与第一数据块参数之间的比值记作第一比值,将第一比值与填充因子之间的乘积确定为平均数据参数,将系统索引块参数与第一索引块参数之间的比值记作第二比值,将第二比值与填充因子之间的乘积确定为平均索引参数。
示意性的,平均数据参数和平均索引参数的确定公式实现为公式3:
公式3,
其中,为平均数据参数,F为预设的填充因子,为系统数据块参数,为第一数据块参数,为平均索引参数,为系统索引块参数,为第一索引块参数。
步骤320,基于第一数据量和平均数据参数确定第一数据块数量,并基于第一数据量、乘法因子和平均索引参数确定第一索引块数量。
其中,第一数据块数量用于指示被访问集合中数据块的数量,第一索引块数量用于指示被访问集合中第一字段对应的索引块的数量。
在一些实施例中,乘法因子是预设的索引参数,用于确定第一索引块数量。
在一些实施例中,将第一数据量与平均数据参数之间的比值确定为第一数据块数量,将第一数据量和乘法因子的乘积与平均索引参数的比值确定为第一索引块数量。
示意性的,第一数据块数量和第一索引块数量的确定公式实现为公式4:
公式4,
其中,为第一数据量,为第一数据块数量,为平均数据参数,为第一索引块数量,为平均索引参数,为乘法因子。
步骤330,基于第一数据块数量和缓存数据块数量确定第一存储概率,并基于第一索引块数量和缓存索引块数量确定第二存储概率。
其中,第一存储概率是指被访问的数据块存储在设备缓存中的概率,第二存储概率是指被访问的索引块存储在设备缓存中的概率。
在一些实施例中,将缓存数据块数量与第一数据块数量的比值确定为第一存储概率,将缓存索引块数量与第一索引块数量确定为第二存储概率。
示意性的,将第一存储概率和第二存储概率的确定公式定义为公式5:
公式5,
其中,为第一存储概率,为缓存数据块数量,为第一数据块数
量,为第二存储概率,为缓存索引块数量,为第一索引块数量。
步骤340,基于第一存储概率、第二存储概率和预设的时长参数确定第一资源用量。
在一些实施例中,基于第一存储概率和预设的时长参数确定读取被访问集合中数据块所消耗的时间资源,基于第二存储概率和预设的时长参数确定读取被访问集合中索引块所消耗的时间资源。
可选地,被访问集合中的数据块或索引块既可以存储在设备缓存中,也可以存储在设备磁盘中。
在一些实施例中,被访问集合中的数据块或索引块部分存储在设备缓存中,另一部分存储在设备磁盘中。
在一些实施例中,预设的时长参数中包括第一时长参数和第二时长参数,第一时长参数用于指示从设备缓存中读取数据块或索引块的单位时间长度,第二时长参数用于指示从设备磁盘中读取数据块或索引块的单位时间长度,则,基于预设的时长参数,步骤340包括如下三步:
第一步,基于第一时长参数、第二时长参数和第一存储概率确定第三资源用量。
其中,第三资源用量是指读取被访问集合中的数据块所消耗的时间资源。
在一些实施例中,假设被访问集合中的数据块以第一存储概率存储于设备
缓存中,则该数据块存储于设备磁盘中的概率为。
示意性的,第三资源用量的确定公式定义为公式6:
公式6,
其中,为第三资源用量,为第一时长参数,为第二时长参数,为
第一存储概率。
第二步,基于第一时长参数、第二时长参数和第二存储概率确定第四资源用量。
其中,第四资源用量是指读取被访问集合中的索引块所消耗的时间资源。
示意性的,第四资源用量的确定公式定义为公式7:
公式7,
其中,为第四资源用量,为第一时长参数,为第二时长参数,为
第二存储概率。
第三步,将第三资源用量和第四资源用量之和确定为第一资源用量。
在一些实施例中,第一资源用量包括读取被访问集合中数据块所消耗的时间资源和读取被访问集合中索引块所消耗的时间资源,即基于上述公式6和公式7,将第三资源用量与第四资源用量相加,得到第一资源用量。
示意性的,请参考上述公式1,即:
公式1。
在一些实施例中,可以基于第一资源用量确定过程中确定的中间参数确定第二资源用量,中间参数是指上述公式1至公式7中得到的参数。
在一些实施例中,第二资源用量的确定过程实现为,基于系统数据块参数、系统索引块参数、第一数据块参数、第一数据块数量和索引块总数量确定第二资源用量。
在一些实施例中,第二资源用量包括被访问集合中数据块占用的内存资源和被访问集合中索引块占用的内存资源,可以通过将上述两个内存资源相加得到第二资源用量。可选地,第二资源用量的确定过程包括如下步骤:
第一步,基于第一数据块数量和系统数据块参数确定第五资源用量。
其中,第五资源用量是指被访问集合中数据块占用的内存资源。
在一些实施例中,将第一数据块数量和系统数据块参数的乘积确定为第五资源用量。
示意性的,第五资源用量的确定公式定义为公式8:
公式8,
其中,为第五资源用量,为第一数据块数量,为系统数据块
参数。
第二步,基于索引块总数量和第一数据块参数确定第六资源用量。
其中,第六资源用量是指访问集合中索引块占用的内存资源。
在一些实施例中,将索引块总数量和第一数据块参数之和确定为第六资源用量。
在一些实施例中,索引块总数量是被访问集合中所有索引块的总数量,即被访问集合中每个不同的索引字段对应的索引块数量之和。
示意性的,第六资源用量的确定公式定义为公式9:
公式9,
其中,为第五资源用量,为被访问集合中索引字段k对应的索引块
数量,为第一数据块数量,为系统索引块参数。
第三步,将第五资源用量和第六资源用量之和确定为第二资源用量。
在一些实施例中,基于上述公式8和上述公式9确定第二资源用量。
示意性的,第二资源用量的确定公式定义为公式10:
公式10,
其中,为第二资源用量。
在一些实施例中,第一资源用量与第二资源用量一一对应,当且仅当第i个第一数据所在的数据集合占用的内存资源按照第二资源用量分配时,基于第i个查询语句查询第i个第一数据所消耗的时间资源实现为第一资源用量。
可选地,本申请实施例提供的基于半结构化存储的资源确定方法包括如下两种资源确定方式:
第一种,基于通用的资源确定模型确定通用的资源用量;
第二种,基于不同的特殊资源确定模型确定不同的资源用量。
其中,通用的资源确定模型中采用上述公式1和公式10分别确定第一资源用量和第二资源用量,不同的特殊资源确定模型对应不同的查询方案。
在一些实施例中,当采用第一种方式确定资源用量时,将符合资源用量要求的资源用量确定默认资源用量,并将对应的查询方案确定为第一查询方案,直接使用第一查询方案执行第二查询语句,并将默认资源用量确定为执行第二查询语句所需消耗的资源用量。
在一些实施例中,当采用第二种方式确定资源用量时,针对待执行的第三查询语句,按照不同的查询方案分别确定多个资源用量,并将其中一个符合资源用量要求的资源用量视作实际资源用量,将实际资源用量对应的查询方案确定为第二查询方案,并按照第二查询方案执行第三查询语句。在此过程中,通过预设的特殊资源确定模型来确定多个资源用量,实际上无需按照不同的查询方案分别执行第三查询语句。
请参考图4,图4是本申请另一个示例性实施例提供的基于半结构化存储的资源确定方法流程图,如图4所示,该方法包括如下步骤:
步骤410,获取第三查询语句。
其中,第三查询语句用于查询第三数据。
在一些实施例中,第三查询语句可以是基于查询请求实时生成的查询语句,也可以是预先存储的待执行的查询语句。
步骤420,获取第三数据的数据参数和系统存储参数。
在一些实施例中,系统存储参数包括系统数据块参数、系统索引块参数和预设的时长参数等固定参数。其中,系统数据块参数用于指示设备在数据存储时使用的数据块的尺寸,系统索引参数用于指示设备在数据存储时使用的索引块的尺寸,预设的时长参数是预先设置的在数据读取过程中的单位时间长度,数据块用于存储数据,索引块用于存储索引条目。
在一些实施例中,第三数据的数据参数包括第三数据对应的第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量中的至少一个。
步骤430,根据预设的多种不同的查询方案,基于系统存储参数和第三数据的数据参数,确定第三查询语句对应的多个资源用量。
其中,第j种查询方案对应第j个资源用量。
在一些实施例中,不同的查询方案对应不同的内存映射方式或者不同的内存关联性,其中,内存映射方式包括直接映射和哈希映射中的至少一种,内存关联性包括预设关联性和共享关联性中的至少一种。
在一些实施例中,在通用的资源确定模型基础上,即公式1-10的基础上,基于不同查询方案对应的实际情况,应用下述公式11-34,得到多个不同的资源用量。
在一些实施例中,第j个资源用量包括第三查询语句在第j种查询方案下对应的第一资源用量和第二资源用量,第一资源用量用于指示按照第j种查询方案执行第三查询语句所需消耗的时间资源,第二资源用量用于指示在第j种查询方案下被访问集合的内存分配方式,其中,被访问集合是指第三数据所在的数据集合。
步骤440,根据第三查询语句对应的资源用量,将符合资源用量要求的查询方案确定为第二查询方案。
可选地,资源用量要求包括资源用量属于预设资源用量范围,或者,资源用量达到第一预设用量阈值,或者,资源用量小于第二预设用量阈值,或者,资源用量按由小到大的顺序排列在前N位(N为大于或等于1的整数)等要求中的至少一种。
在一些实施例中,将多个资源用量中第一资源用量最小的查询方案确定为第二查询方案,并按照该第一资源用量对应的第二资源用量为被访问集合分配内存资源。
步骤450,按照第二查询方案执行第三查询语句。
示意性的,假设第二查询方案对应的内存映射方式为直接映射,则在执行第三查询语句过程中采用直接映射的方式。
在一些实施例中,由于第二查询方案是针对第三查询语句,基于不同的查询方案确定出的符合资源用量要求的查询方案,可以保证第三查询语句的第一资源用量符合资源用量要求。
综上所述,本申请实施例提供的方法,通过获取第三查询语句,获取第三数据的数据参数和系统存储参数,根据预设的多种不同的查询方案,基于系统存储参数和第三数据的数据参数,确定第三查询语句对应的多个资源用量,根据第三查询语句对应的资源用量,将符合资源用量要求的查询方案确定为第二查询方案,按照第二查询方案执行第三查询语句,实现了针对第三查询语句,基于预设的不同查询方案直接确定资源用量,在此过程中无需实际执行每一种查询方案,降低了资源确定过程中系统的负载压力。
接下来,针对不同的查询方案对应的内存映射方式或内存关联性,介绍本申请实施例预设的特殊资源确定模型。
一、查询方案对应的内存映射方式为直接映射
在一些实施例中,在内存映射方式为直接映射的情况下,第一存储概率实现为第三存储概率,第二存储概率实现为第四存储概率,其中,第三存储概率用于指示直接映射情况下设备缓存中数据块被请求访问的概率,第四存储概率用于指示直接映射情况下设备缓存中索引块被请求访问的概率。此时,基于第三存储概率、第四存储概率和预设的时长参数确定直接映射情况下的第一资源用量。
在一些实施例中,在内存映射方式为直接映射的情况下,当缓存处于饱和点时,即缓存清除开始之前,第一数据块数量实现为第二数据块数量,被访问集合中索引字段k对应的索引块数量实现为第二索引块数量,其中,第二数据块数量是指缓存饱和点处被访问集合中位于缓存中的数据块数量,第二索引块数量是指缓存饱和点处被访问集合中位于缓存中的索引块数量。此时基于系统数据块参数、第二数据块数量、系统索引块参数、第二索引块数量确定直接映射情况下在缓存饱和点处的第二资源用量。
示意性的,将被访问集合记作集合C,将集合C的索引字段的重复次数的确定公
式定义为公式11:
公式11,
其中,为集合C的索引字段的重复次数,为第一数据量,
为预设的乘法因子,为索引字段f的不同值数量。
假设在内存清除开始之前,已经发出了个查询,并将此状态定义为缓存饱和
点。这些查询来自正在访问的所有集合。因此每个集合从每个字段处都有个半
结构化(文档)数据请求,与其访问频率成比例,符合公式12:
公式12,
其中,为请求以f为索引字段的概率。
但是同一半结构化(文档)数据或索引可能会被请求多次,集合C中的唯一请求数
量的确定方式实现为公式13:
公式13,
然后定义集合相对于字段的选择性因子为,用于指示通过f上的索引
字段请求半结构化数据的概率,将选择性因子定义为公式14:
公式14。
半结构化存储(文档)库上发出的所有查询的数量表示为,但是可能有多个查
询通过不同的索引访问同一集合,因此使用个事件的联合概率公式将集合的选择性因子
进行聚合,得到文档被请求的概率符合公式15:
公式15,
其中,i为正整数。
如果数据块在缓存中,那么该数据块中至少有一个半结构化数据已被请求。因此
半结构化数据(文档)未被请求的概率为,而数据块中没有半结构化数据(文档)
被请求的概率为。因此数据块被查询请求的概率是其半结构化
数据均未被该查询请求的概率的补集。相应地,索引B树具有与数据B树相同的,因为
必须访问索引B树才能访问半结构化数据。尽管次要索引和数据B树的选择性因子相同,但
是两个结构的物理存储之间存在一个关键差异。次要索引B树按索引值排序,而数据B树不
是。由于这一点,次要索引叶节点不被请求的概率是在索引块中的唯一索引值均未被请求
的概率。索引块包含个索引条目,块内唯一值的数量为。
基于上述定义,将第三存储概率和第四存储概率的确定公式分别定义为公式16和公式17:
公式16,
公式17,
其中,为第三存储概率,为第四存储概率。
从而,在饱和点即清除开始之前,第二数据块数量和第二索引块数量的确定公式分别定义为公式18和公式19。
公式18,
公式19。
二、查询方案对应的内存映射方式为哈希映射
在一些实施例中,在哈希内存映射系统中,内存是按半结构化数据管理的。半结构化数据与其元数据一起存储在内存中,元数据相当于索引数据。当所有元数据都有足够的内存时,只有半结构化数据被清除,而元数据仍然留在内存中。由于哈希操作导致块与半结构化数据之间的关系丢失,此时,第五资源用量实现为哈希数据缓存资源,第六资源用量实现为哈希索引缓存资源,将哈希数据缓存资源和哈希索引缓存资源的确定公式分别定义为公式20和公式21:
公式20,
公式21,
其中,为哈希数据缓存资源,为哈希索引缓存资源。
在一些实施例中,如果没有足够的内存来分配所有元数据,则可以使用完全清除模式。在这种情况下当半结构化数据从内存中清除时,元数据也将被清除。此时,被访问集合使用的总内存按半结构化数据和元数据的大小成比例划分,如公式22和23所示。
公式22,
公式23,
其中,为哈希索引缓存资源,为哈希索引缓存资源,为
第二资源用量,为第一数据块参数,为第一索引块参数。
在一些实施例中,由于哈希内存映射会丢失块信息,因此,在哈希映射的情况下,
在确定第一存储概率和第二存储概率的过程中,使用公式20至公式23中的哈希索引缓存资
源和哈希索引缓存资源替代对应情况下公式5中的分子,并使用被访问集合的尺寸(例如)替代公式5中的分母,来确定哈希映射情况下的第一存储概率和第二存储概率。
三、查询方式对应的内存关联性为预设关联性或共享关联性
在一些实施例中,内存关联性描述了内存在集合之间的分配方式。预设一个内存使用阈值,当内存使用量达到该内存使用阈值时会发生内存清除。
当内存关联性实现为预设关联性时,第二资源用量由用户决定,此时,将第二资源用量的定义公式定义为公式24:
公式24,
其中,为第二资源用量,K为预设的额外内存资源常量,为用户
配置的内存用量。
当内存关联性实现为共享关联性时,整个内存在不同集合之间共享,此时,第二资源用量符合公式25:
公式25,
其中,为第二资源用量,N为集合总数,K为预设的额外内存资源
常量,用于指示内存使用阈值。
在一些实施例中,当内存关联性实现为共享关联性时,使用基于B树的最近最少使用(Least Recently Used,LRU)缓存清除策略,当清除周期开始时,最近最少使用的块将从内存中删除。
假设半结构化数据(或索引条目)被访问的概率为。在这种情况下数据B树(或
索引B树)中的叶块被访问的可能性是该块中的某些半结构化数据(文档)被请求的概率,即,表示为。为了清除数据B树(或索引B树)中的一个内部块,需
要清除该内部块指向的所有叶块。因此一个叶块不被引用的概率为,因此其中一些
叶块被引用的概率为,表示为。由于它们彼此依赖且,因此很明显,并且可以假设数据块的内部很少被清
除。对于索引B树,可以做同样的推理(访问半结构化数据的概率与访问其对应的索引条目
的概率相同,因此可以类似地获得一个索引块不被引用的概率和索引块被引用的概
率)。因此只考虑叶节点的清除,并假设数据和索引B树的所有内部节点都固定在缓存
中,并且占用额外内存资源常量K。
以引用条目表示指向叶块的内部块中的条目进行说明,并根据内部块大小、引用条目大小和相应的填充因子F,定义了内部块中引用条目的
平均数量。对于索引B树,引用条目的大小取决于索引字段f。具体地,请参考公式
26:
公式26。
因此可以通过从叶子节点开始迭代地向上移动B树,并通过将前一个块数除以(或或,具体取决于B树的种类和级别)来计算每个级别上的块
数,从而获得K的值。然后在满足公式25所示的内存总量等于可用内存的条件下,通过解公
式12-19的方程组,可以获得清除前的内存分配方式,包括数据内存资源用量和索
引内存资源用量。
当缓存稳定时,引入集合的新数据块的概率应该等于从相同集合中清除数
据块的概率,索引B树也是如此。因此通过解决公式27和公式28构成的方程组以及
公式25,可以获得内存的稳定状态。
公式27,
公式28。
定义为给定时间窗口内集合中查询的数据块数量,在内存稳定状态
下,在这些查询的块中,个块已经驻留在内存中,而个块需要从
磁盘中读取到内存中。因此半结构化数据在缓存中被找到的查询数量与缓存中已有的块数
和缓存块的比例成正比,具体地,请参考公式29和公式30。
公式29,
公式30。
集合的可清除数据块是在上一个清除周期中没有被访问的块(即最近最少
使用的块),定义公式为公式31:
公式31,
因此内存中某个块的可清除性是。则定义从集合中清除数据块的概率(索引
类似)如公式32所示。
公式32,
基于底层半结构化存储的实现细节引入权重。对于一个理想的LRU缓存清
除策略系统,它可以确定要清除的最近最少使用的块,该值应为1。由于确定内存中的所有
块是昂贵的,不同的半结构化存储实现对最近最少使用的块执行近似处理。
定义包含请求半结构化数据(文档)的块在缓存中的概率为。
定义将集合的新块引入到缓存中的概率实现为公式33:
公式33。
在一些实施例中,将本申请实施例提供的半结构化存储的资源确定方法应用于MongoDB。示意性的,请参考图5,图5是本申请一个示例性实施例提供的存储结构示意图,如图5所示,存储引擎的存储结构是一个带有B树内存结构的B树或LSM树。在当前MongoDB的实现中由于向后兼容性,B树的内部节点不包含用户可配置的外部标识符。相反如图5所示,半结构化数据(文档)存储在数据B树510中,由内部系统标识符进行索引。然后有索引B树520,其中叶节点包含由用户可配置的外部标识符索引的数据B树510的系统标识符。因此外部标识符字段的行为类似于典型的次要索引。叶子节点的大小不是固定的,但有一个最大限制。所有集合及其索引共享预定义的缓存内存区域,其中所有半结构化数据(文档)都以块的形式加载。当缓存已满时块将被清除,以腾出空间为新块提供位置。存储引擎使用类似LRU的缓存清除策略来清除未使用的块。由于索引和半结构化数据(文档)位于两个不同的B树中,在存储引擎缓存清除策略中它们行为独立。
本方案在单个MongoDB实例上进行了不同的实验,随机访问各个集合中的半结构化数据(文档)并更改不同的参数。发现缓存清除策略的实现优先考虑了基于集合名称的清除。
在一些实施例中,三个因素会影响缓存在集合及其索引之间的分配,即访问频率、平均半结构化数据(文档)大小和半结构化数据(文档)数量。访问频率、半结构化数据(文档)大小和数量对缓存分配的影响。访问频率对缓存分配的影响最大,而半结构化数据(文档)大小和数量的影响较小。当半结构化数据(文档)变大时,分配给索引的内存比分配给数据的内存减少。当半结构化数据(文档)数量发生变化时,索引使用的内存增加,而数据的内存则减少。
在一些实施例中,MongoDB在内存队列中确定清除候选项,正在使用的每个B树都
会被扫描以填充此队列。从B树中选取的页面数量与树的当前内存占用成正比。
因此公式32中的与内存占用的大小成正比,具体地,请参考公式34:
公式34,
其中,为内存队列尺寸。
在公式25下应用公式12-19,其中表示内存饱和,在满足公式25为前
提的情况下,应用公式26-33以及公式34分别计算,用于
MongoDB中的内存和缓存队列中文档块的清除。并使用公式1计算第一资源用量
(随机查询的成本),最终实现了MongoDB的查询和内存成本估算,以及根据估算值可以自动
化的实现缓存块的加载和清除,从而保证系统的健康和文档运行。
图6是本申请一个示例性实施例提供的基于半结构化存储的资源确定装置的结构框图,如图6所示,该装置包括如下部分:
获取模块610,用于获取多个第一查询语句,所述多个第一查询语句对应多个第一数据,所述多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数;
所述获取模块610,还用于获取系统存储参数和所述第i个第一数据的数据参数,所述系统存储参数用于指示设备在数据存储时的存储参数,所述数据参数用于指示所述第i个第一数据的存储相关参数,所述存储相关参数中包括存储结构、内存映射方式、内存关联性以及所述第i个第一数据所在的数据集合中的至少一种;
处理模块620,用于基于所述系统存储参数和所述第i个第一数据的数据参数,确定所述第i个第一查询语句对应的资源用量;
所述处理模块620,还用于根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案;
所述处理模块620,还用于获取第二查询语句,并按照所述第一查询方案执行所述第二查询语句,所述第二查询语句用于查询第二数据。
在一些实施例中,所述获取模块610,用于:
获取系统数据块参数、系统索引块参数、预设的时长参数、预设的填充因子和预设的乘法因子;
其中,所述系统数据块参数用于指示设备在数据存储时使用的数据块的尺寸,所述系统索引参数用于指示设备在数据存储时使用的索引块的尺寸,所述预设的时长参数是预先设置的在数据读取过程中的单位时间长度,所述数据块用于存储数据,所述索引块用于存储索引条目;
获取所述第i个第一数据对应的第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量;
其中,所述第一数据块参数用于指示所述被访问集合的平均文档数据尺寸,所述第一索引块参数用于指示所述被访问集合中在第一字段上的平均索引条目尺寸,所述第一字段是所述第i个第一数据的索引字段,所述第一数据量用于指示所述被访问集合中半结构化数据的数量,所述缓存数据块数量用于指示所述被访问集合中存储在设备缓存中的数据块数量,所述缓存索引块数量用于指示所述被访问集合中存储在所述设备缓存中所述第一字段对应的索引块数量,所述索引块总数量用于指示所述被访问集合中全部索引块的数量。
请参考图7,图7是本申请一个示例性实施例提供的基于半结构化存储的资源确定装置模块的结构框图,如图7所示,在一些实施例中,所述资源用量中包括第一资源用量和第二资源用量,所述第一资源用量是指基于所述第i个第一查询语句查询所述第i个第一数据所消耗的时间资源,所述第二资源用量是指被访问集合占用的内存资源,所述被访问集合是指所述第i个第一数据所在的数据集合;所述处理模块620,包括:
第一处理子模块621,用于基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第一资源用量;
第二处理子模块622,用于基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第二资源用量。
在一些实施例中,所述第一处理子模块621,包括:
第一处理单元601,用于基于所述系统数据块参数、所述第一数据块参数和所述填充因子确定平均数据参数,并基于所述系统索引块参数、所述第一索引块参数和所述填充因子确定平均索引参数,其中,所述平均数据参数用于指示所述被访问集合中每个数据块中的平均文档数量,所述平均索引参数用于指示所述被访问集合中每个索引块中在所述第一字段上的平均索引条目数量;
第二处理单元602,用于基于所述第一数据量和所述平均数据参数确定第一数据块数量,并基于所述第一数据量、所述乘法因子和所述平均索引参数确定第一索引块数量,其中,所述第一数据块数量用于指示所述被访问集合中数据块的数量,所述第一索引块数量用于指示所述被访问集合中所述第一字段对应的索引块的数量;
第三处理单元603,用于基于所述第一数据块数量和所述缓存数据块数量确定第一存储概率,并基于所述第一索引块数量和所述缓存索引块数量确定第二存储概率,其中,所述第一存储概率是指被访问的数据块存储在所述设备缓存中的概率,所述第二存储概率是指被访问的索引块存储在所述设备缓存中的概率;
第四处理单元604,用于基于所述第一存储概率、所述第二存储概率和所述预设的时长参数确定所述第一资源用量。
在一些实施例中,所述预设的时长参数中包括第一时长参数和第二时长参数,所述第一时长参数用于指示从所述设备缓存中读取数据块或索引块的单位时间长度,所述第二时长参数用于指示从设备磁盘中读取数据块或索引块的单位时间长度;
所述第四处理单元604,用于:
基于所述第一时长参数、所述第二时长参数和所述第一存储概率确定第三资源用量,所述第三资源用量是指读取所述被访问集合中的数据块所消耗的时间资源;
基于所述第一时长参数、所述第二时长参数和所述第二存储概率确定第四资源用量,所述第四资源用量是指读取所述被访问集合中的索引块所消耗的时间资源;
将所述第三资源用量和所述第四资源用量之和确定为所述第一资源用量。
在一些实施例中,所述第二处理子模块622,用于基于所述系统数据块参数、所述系统索引块参数、所述第一数据块参数、所述第一数据块数量和所述索引块总数量确定所述第二资源用量。
在一些实施例中,所述第二处理子模块622,用于:
基于所述第一数据块数量和所述系统数据块参数确定第五资源用量,所述第五资源用量是指所述被访问集合中数据块占用的内存资源;
基于所述系统索引块参数、所述索引块总数量和所述第一数据块参数确定第六资源用量,所述第六资源用量是指所述访问集合中索引块占用的内存资源;
将所述第五资源用量和所述第六资源用量之和确定为所述第二资源用量。
在一些实施例中,所述获取模块610,还用于获取第三查询语句,所述第三查询语句用于查询第三数据;
所述获取模块610,还用于获取所述第三数据的数据参数和所述系统存储参数;
所述处理模块620,还用于根据预设的不同查询方案,基于所述系统存储参数和所述第三数据的数据参数,确定所述第三查询语句对应的多个资源用量,其中,第j种查询方案对应第j个资源用量,j为正整数;
所述处理模块620,还用于根据所述第三查询语句对应的资源用量,将符合资源用量要求的查询方案确定为第二查询方案;
所述处理模块620,还用于按照所述第二查询方案执行所述第三查询语句。
综上所述,本申请实施例提供的装置,通过获取多个第一查询语句,多个第一查询语句对应多个第一数据,多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,获取系统存储参数和第i个第一数据的数据参数,基于系统存储参数和第i个第一数据的数据参数,确定第i个第一查询语句对应的资源用量,根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,获取第二查询语句,并按照第一查询方案执行第二查询语句,基于系统存储参数和数据参数采用通用的资源估算方式确定资源用量,从而将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案,即基于对其他执行语句的资源用量进行估算从而确定出一个符合资源用量要求的默认查询方案,从而使用默认查询方案执行第二查询语句,对于第二查询语句来说,采用第一查询方案在保证查询消耗的资源用量相对较少的同时,避免了按照每种不同的查询方案来执行第二查询语句的问题,即,并不会对系统造成过大的负载压力,从而提高了资源确定效率,即提高了成本估算效率。
需要说明的是:上述实施例提供的基于半结构化存储的资源确定装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
图8示出了本申请一个示例性实施例提供的终端800的结构框图。该终端800可以是:智能手机、平板电脑、MP3播放器、MP4播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所执行以实现本申请中方法实施例提供的基于半结构化存储的资源确定方法。
在一些实施例中,终端800还包括其他组件,本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请的实施例还提供了一种计算机设备,该计算机设备可以实现为如图1所示的终端或者服务器。该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的基于半结构化存储的资源确定方法。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述各方法实施例提供的基于半结构化存储的资源确定方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例提供的基于半结构化存储的资源确定方法。
可选地,该计算机可读存储介质可以包括:只读存储器(Read Only Memory,ROM)、随机存取记忆体(Random Access Memory,RAM)、固态硬盘(Solid State Drives,SSD)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(Resistance Random AccessMemory,ReRAM)和动态随机存取存储器(Dynamic Random Access Memory,DRAM)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种基于半结构化存储的资源确定方法,其特征在于,所述方法包括:
获取多个第一查询语句,所述多个第一查询语句对应多个第一数据,所述多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,所述第一数据是采用半结构化存储的数据;
获取系统存储参数和所述第i个第一数据的数据参数,所述系统存储参数用于指示设备在数据存储时的存储参数,所述数据参数用于指示所述第i个第一数据的存储相关参数,所述存储相关参数中包括存储结构、内存映射方式、内存关联性以及所述第i个第一数据所在的数据集合中的至少一种;所述系统存储参数包括系统数据块参数、系统索引块参数、预设的时长参数、预设的填充因子和预设的乘法因子;其中,所述系统数据块参数用于指示设备在数据存储时使用的数据块的尺寸,所述系统索引块参数用于指示设备在数据存储时使用的索引块的尺寸,所述预设的时长参数是预先设置的在数据读取过程中的单位时间长度,所述数据块用于存储数据,所述索引块用于存储索引条目;所述第i个第一数据的存储相关参数包括所述第i个第一数据对应的第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量;其中,所述第一数据块参数用于指示被访问集合的平均文档数据尺寸,所述第一索引块参数用于指示所述被访问集合中在第一字段上的平均索引条目尺寸,所述第一字段是所述第i个第一数据的索引字段,所述第一数据量用于指示所述被访问集合中半结构化数据的数量,所述缓存数据块数量用于指示所述被访问集合中存储在设备缓存中的数据块数量,所述缓存索引块数量用于指示所述被访问集合中存储在所述设备缓存中所述第一字段对应的索引块数量,所述索引块总数量用于指示所述被访问集合中全部索引块的数量;
基于所述系统存储参数和所述第i个第一数据的数据参数,采用通用的资源估算方式确定所述第i个第一查询语句对应的资源用量,所述资源估算方式在所述资源用量的确定过程中无需执行所述第i个第一查询语句,所述资源用量中包括第一资源用量和第二资源用量,所述第一资源用量是指基于所述第i个第一查询语句查询所述第i个第一数据所消耗的时间资源,所述第二资源用量是指被访问集合占用的内存资源,所述被访问集合是指所述第i个第一数据所在的数据集合;其中,所述资源用量的确定过程包括,基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第一资源用量;基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第二资源用量;
其中,基于所述系统存储参数和所述第i个第一数据的数据参数,确定所述第一资源用量,包括:基于所述系统数据块参数、所述第一数据块参数和所述填充因子确定平均数据参数,并基于所述系统索引块参数、所述第一索引块参数和所述填充因子确定平均索引参数,其中,所述平均数据参数用于指示所述被访问集合中每个数据块中的平均文档数量,所述平均索引参数用于指示所述被访问集合中每个索引块中在所述第一字段上的平均索引条目数量;基于所述第一数据量和所述平均数据参数确定第一数据块数量,并基于所述第一数据量、所述乘法因子和所述平均索引参数确定第一索引块数量,其中,所述第一数据块数量用于指示所述被访问集合中数据块的数量,所述第一索引块数量用于指示所述被访问集合中所述第一字段对应的索引块的数量;基于所述第一数据块数量和所述缓存数据块数量确定第一存储概率,并基于所述第一索引块数量和所述缓存索引块数量确定第二存储概率,其中,所述第一存储概率是指被访问的数据块存储在所述设备缓存中的概率,所述第二存储概率是指被访问的索引块存储在所述设备缓存中的概率;基于所述第一存储概率、所述第二存储概率和所述预设的时长参数确定所述第一资源用量;
根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案;
获取第二查询语句,并按照所述第一查询方案执行所述第二查询语句,所述第二查询语句用于查询第二数据,所述第二数据所在数据集合对应的内存资源是基于所述第一查询方案按照所述第一资源用量对应的第二资源用量分配的。
2.根据权利要求1所述的方法,其特征在于,所述预设的时长参数中包括第一时长参数和第二时长参数,所述第一时长参数用于指示从所述设备缓存中读取数据块或索引块的单位时间长度,所述第二时长参数用于指示从设备磁盘中读取数据块或索引块的单位时间长度;
所述基于所述第一存储概率、所述第二存储概率和所述预设的时长参数确定所述第一资源用量,包括:
基于所述第一时长参数、所述第二时长参数和所述第一存储概率确定第三资源用量,所述第三资源用量是指读取所述被访问集合中的数据块所消耗的时间资源;
基于所述第一时长参数、所述第二时长参数和所述第二存储概率确定第四资源用量,所述第四资源用量是指读取所述被访问集合中的索引块所消耗的时间资源;
将所述第三资源用量和所述第四资源用量之和确定为所述第一资源用量。
3.根据权利要求1所述的方法,其特征在于,所述基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第二资源用量,包括:
基于所述系统数据块参数、所述系统索引块参数、所述第一数据块参数、所述第一数据块数量和所述索引块总数量确定所述第二资源用量。
4.根据权利要求3所述的方法,其特征在于,所述基于所述系统数据块参数、所述系统索引块参数、所述第一数据块参数、所述第一数据块数量和所述索引块总数量确定所述第二资源用量,包括:
基于所述第一数据块数量和所述系统数据块参数确定第五资源用量,所述第五资源用量是指所述被访问集合中数据块占用的内存资源;
基于所述系统索引块参数、所述索引块总数量和所述第一数据块参数确定第六资源用量,所述第六资源用量是指所述访问集合中索引块占用的内存资源;
将所述第五资源用量和所述第六资源用量之和确定为所述第二资源用量。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
获取第三查询语句,所述第三查询语句用于查询第三数据;
获取所述第三数据的数据参数和所述系统存储参数;
根据预设的不同查询方案,基于所述系统存储参数和所述第三数据的数据参数,确定所述第三查询语句对应的多个资源用量,其中,第j种查询方案对应第j个资源用量,j为正整数;
根据所述第三查询语句对应的资源用量,将符合资源用量要求的查询方案确定为第二查询方案;
按照所述第二查询方案执行所述第三查询语句。
6.根据权利要求5所述的方法,其特征在于,所述不同的查询方案对应不同的内存映射方式,或者,所述不同的查询方案对应不同的内存关联性;
其中,所述内存映射方式包括直接映射和哈希映射中的至少一种,所述内存关联性包括预设关联性和共享关联性中的至少一种。
7.一种基于半结构化存储的资源确定装置,其特征在于,所述装置包括:
获取模块,用于获取多个第一查询语句,所述多个第一查询语句对应多个第一数据,所述多个第一查询语句对应不同的查询方案,其中,第i个第一查询语句用于通过第i种查询方案查询第i个第一数据,i为正整数,所述第一数据是采用半结构化存储的数据;
所述获取模块,还用于获取系统存储参数和所述第i个第一数据的数据参数,所述系统存储参数用于指示设备在数据存储时的存储参数,所述数据参数用于指示所述第i个第一数据的存储相关参数,所述存储相关参数中包括存储结构、内存映射方式、内存关联性以及所述第i个第一数据所在的数据集合中的至少一种;所述系统存储参数包括系统数据块参数、系统索引块参数、预设的时长参数、预设的填充因子和预设的乘法因子;其中,所述系统数据块参数用于指示设备在数据存储时使用的数据块的尺寸,所述系统索引块参数用于指示设备在数据存储时使用的索引块的尺寸,所述预设的时长参数是预先设置的在数据读取过程中的单位时间长度,所述数据块用于存储数据,所述索引块用于存储索引条目;所述第i个第一数据的存储相关参数包括所述第i个第一数据对应的第一数据块参数、第一索引块参数、第一数据量、缓存数据块数量、缓存索引块数量和索引块总数量;其中,所述第一数据块参数用于指示被访问集合的平均文档数据尺寸,所述第一索引块参数用于指示所述被访问集合中在第一字段上的平均索引条目尺寸,所述第一字段是所述第i个第一数据的索引字段,所述第一数据量用于指示所述被访问集合中半结构化数据的数量,所述缓存数据块数量用于指示所述被访问集合中存储在设备缓存中的数据块数量,所述缓存索引块数量用于指示所述被访问集合中存储在所述设备缓存中所述第一字段对应的索引块数量,所述索引块总数量用于指示所述被访问集合中全部索引块的数量;
处理模块,用于基于所述系统存储参数和所述第i个第一数据的数据参数,采用通用的资源估算方式确定所述第i个第一查询语句对应的资源用量,所述资源估算方式在所述资源用量的确定过程中无需执行所述第i个第一查询语句,所述资源用量中包括第一资源用量和第二资源用量,所述第一资源用量是指基于所述第i个第一查询语句查询所述第i个第一数据所消耗的时间资源,所述第二资源用量是指被访问集合占用的内存资源,所述被访问集合是指所述第i个第一数据所在的数据集合;其中,所述资源用量的确定过程包括,基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第一资源用量;基于所述系统存储参数和所述第i个第一数据的数据参数确定所述第二资源用量;其中,基于所述系统存储参数和所述第i个第一数据的数据参数,确定所述第一资源用量,包括:基于所述系统数据块参数、所述第一数据块参数和所述填充因子确定平均数据参数,并基于所述系统索引块参数、所述第一索引块参数和所述填充因子确定平均索引参数,其中,所述平均数据参数用于指示所述被访问集合中每个数据块中的平均文档数量,所述平均索引参数用于指示所述被访问集合中每个索引块中在所述第一字段上的平均索引条目数量;基于所述第一数据量和所述平均数据参数确定第一数据块数量,并基于所述第一数据量、所述乘法因子和所述平均索引参数确定第一索引块数量,其中,所述第一数据块数量用于指示所述被访问集合中数据块的数量,所述第一索引块数量用于指示所述被访问集合中所述第一字段对应的索引块的数量;基于所述第一数据块数量和所述缓存数据块数量确定第一存储概率,并基于所述第一索引块数量和所述缓存索引块数量确定第二存储概率,其中,所述第一存储概率是指被访问的数据块存储在所述设备缓存中的概率,所述第二存储概率是指被访问的索引块存储在所述设备缓存中的概率;基于所述第一存储概率、所述第二存储概率和所述预设的时长参数确定所述第一资源用量;
所述处理模块,还用于根据第一查询语句对应的资源用量,将符合资源用量要求的第一查询语句对应的查询方案确定为第一查询方案;
所述处理模块,还用于获取第二查询语句,并按照所述第一查询方案执行所述第二查询语句,所述第二查询语句用于查询第二数据,所述第二数据所在数据集合对应的内存资源是基于所述第一查询方案按照所述第一资源用量对应的第二资源用量分配的。
8.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段计算机程序,所述至少一段计算机程序由所述处理器加载并执行以实现如权利要求1至6任一所述的基于半结构化存储的资源确定方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段计算机程序,所述至少一段计算机程序由处理器加载并执行以实现如权利要求1至6任一所述的基于半结构化存储的资源确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310843507.2A CN116561374B (zh) | 2023-07-11 | 2023-07-11 | 基于半结构化存储的资源确定方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310843507.2A CN116561374B (zh) | 2023-07-11 | 2023-07-11 | 基于半结构化存储的资源确定方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116561374A CN116561374A (zh) | 2023-08-08 |
CN116561374B true CN116561374B (zh) | 2024-02-23 |
Family
ID=87486534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310843507.2A Active CN116561374B (zh) | 2023-07-11 | 2023-07-11 | 基于半结构化存储的资源确定方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116561374B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001065419A2 (en) * | 2000-03-02 | 2001-09-07 | Nimble Technology, Inc. | Method and apparatus for storing semi-structured data in a structured manner |
CN106095659A (zh) * | 2016-06-15 | 2016-11-09 | 安徽天枢信息科技有限公司 | 一种非结构化事件日志数据的实时监控方法与装置 |
CN107515867A (zh) * | 2016-06-15 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种NoSQL数据库的数据存储、查询方法和装置以及一种rowKey全组合的生成方法和装置 |
CN110019298A (zh) * | 2017-10-31 | 2019-07-16 | 北京国双科技有限公司 | 数据处理方法和装置 |
CN110196863A (zh) * | 2018-05-04 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算设备及存储介质 |
CN112148718A (zh) * | 2020-10-28 | 2020-12-29 | 云赛智联股份有限公司 | 一种用于城市级数据中台的大数据支撑管理系统 |
CN114996362A (zh) * | 2022-08-04 | 2022-09-02 | 深圳市共赢晶显技术有限公司 | 一种数据处理和存储方法 |
CN115757479A (zh) * | 2022-11-11 | 2023-03-07 | 北京人大金仓信息技术股份有限公司 | 数据库的查询优化方法、机器可读存储介质与计算机设备 |
CN115904687A (zh) * | 2021-09-30 | 2023-04-04 | 中兴通讯股份有限公司 | 汇聚引擎确定方法、联合查询系统及存储介质 |
WO2023123287A1 (zh) * | 2021-12-30 | 2023-07-06 | 深圳晶泰科技有限公司 | 分子数据存储方法及装置、应用方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040148278A1 (en) * | 2003-01-22 | 2004-07-29 | Amir Milo | System and method for providing content warehouse |
US7949654B2 (en) * | 2008-03-31 | 2011-05-24 | International Business Machines Corporation | Supporting unified querying over autonomous unstructured and structured databases |
US20160371368A1 (en) * | 2015-06-17 | 2016-12-22 | Qualcomm Incorporated | Facilitating searches in a semi-structured database |
US20200192899A1 (en) * | 2018-12-14 | 2020-06-18 | Commvault Systems, Inc. | Query caching during backup within an enterprise information management system |
-
2023
- 2023-07-11 CN CN202310843507.2A patent/CN116561374B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001065419A2 (en) * | 2000-03-02 | 2001-09-07 | Nimble Technology, Inc. | Method and apparatus for storing semi-structured data in a structured manner |
CN106095659A (zh) * | 2016-06-15 | 2016-11-09 | 安徽天枢信息科技有限公司 | 一种非结构化事件日志数据的实时监控方法与装置 |
CN107515867A (zh) * | 2016-06-15 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 一种NoSQL数据库的数据存储、查询方法和装置以及一种rowKey全组合的生成方法和装置 |
CN110019298A (zh) * | 2017-10-31 | 2019-07-16 | 北京国双科技有限公司 | 数据处理方法和装置 |
CN110196863A (zh) * | 2018-05-04 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算设备及存储介质 |
CN112148718A (zh) * | 2020-10-28 | 2020-12-29 | 云赛智联股份有限公司 | 一种用于城市级数据中台的大数据支撑管理系统 |
CN115904687A (zh) * | 2021-09-30 | 2023-04-04 | 中兴通讯股份有限公司 | 汇聚引擎确定方法、联合查询系统及存储介质 |
WO2023123287A1 (zh) * | 2021-12-30 | 2023-07-06 | 深圳晶泰科技有限公司 | 分子数据存储方法及装置、应用方法及装置 |
CN114996362A (zh) * | 2022-08-04 | 2022-09-02 | 深圳市共赢晶显技术有限公司 | 一种数据处理和存储方法 |
CN115757479A (zh) * | 2022-11-11 | 2023-03-07 | 北京人大金仓信息技术股份有限公司 | 数据库的查询优化方法、机器可读存储介质与计算机设备 |
Non-Patent Citations (1)
Title |
---|
HBase中半结构化时空数据存储与查询处理;封孝生;张;陈晓莹;唐九阳;葛斌;;国防科技大学学报(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116561374A (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
WO2017050014A1 (zh) | 一种数据存储处理方法和装置 | |
JP6356675B2 (ja) | 集約/グループ化動作:ハッシュテーブル法のハードウェア実装 | |
US10275489B1 (en) | Binary encoding-based optimizations at datastore accelerators | |
US9489409B2 (en) | Rollover strategies in a N-bit dictionary compressed column store | |
CN107491523B (zh) | 存储数据对象的方法及装置 | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
GB2431742A (en) | A method of retrieving data from a data repository | |
CN104598394A (zh) | 一种可动态分配的数据缓存方法及系统 | |
JP2020098593A (ja) | 列状データの不均一なページネーション | |
KR100654462B1 (ko) | 캐쉬 메모리를 메모리 블록으로 나누어 파일의 데이터를저장하는 캐쉬 방법 및 캐쉬 시스템 | |
US9965482B2 (en) | Hash based read and write operations in a storage system | |
CN115964002A (zh) | 一种电能表终端档案管理方法、装置、设备及介质 | |
US10146833B1 (en) | Write-back techniques at datastore accelerators | |
CN113574518A (zh) | 用于减少高速缓存内存占用的高速缓存对象的内存式规范化 | |
CN114327290A (zh) | 一种磁盘分区的结构、格式化方法和访问方法 | |
CN116561374B (zh) | 基于半结构化存储的资源确定方法、装置、设备及介质 | |
CN117009389A (zh) | 数据缓存方法、装置、电子设备和可读存储介质 | |
CN116185305A (zh) | 业务数据存储方法、装置、计算机设备和存储介质 | |
CN116027982A (zh) | 数据处理方法、设备及可读存储介质 | |
CN112269947B (zh) | 空间文本数据的缓存方法、装置、电子设备及存储介质 | |
CN115878625A (zh) | 数据处理方法和装置及电子设备 | |
CN111104435B (zh) | 一种元数据组织方法、装置、设备及计算机可读存储介质 | |
JP2023507146A (ja) | 頻繁にアクセスされるバケットのセットとあまり頻繁にアクセスされないバケットのセットとを備えたハッシュテーブルを使用するシステム及び方法 | |
US9824105B2 (en) | Adaptive probabilistic indexing with skip lists |
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 |