CN118193560A - 一种数据分析方法及相关设备 - Google Patents
一种数据分析方法及相关设备 Download PDFInfo
- Publication number
- CN118193560A CN118193560A CN202211565695.9A CN202211565695A CN118193560A CN 118193560 A CN118193560 A CN 118193560A CN 202211565695 A CN202211565695 A CN 202211565695A CN 118193560 A CN118193560 A CN 118193560A
- Authority
- CN
- China
- Prior art keywords
- metadata
- cache
- data
- management device
- computing cluster
- 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
- 238000007405 data analysis Methods 0.000 title claims abstract description 139
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000004458 analytical method Methods 0.000 claims abstract description 40
- 238000002955 isolation Methods 0.000 claims description 39
- 230000015654 memory Effects 0.000 claims description 29
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 161
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 10
- 235000019580 granularity Nutrition 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000003379 elimination reaction Methods 0.000 description 8
- 230000008030 elimination Effects 0.000 description 7
- 238000005192 partition Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—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/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/2453—Query optimisation
-
- 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/2455—Query execution
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据分析方法,由数据分析***执行,该***包括协调节点、元数据管理装置和多个计算集群,计算集群中包括元数据缓存,元数据管理装置中记录有元数据缓存的状态,该方法包括:协调节点接收查询语句,向元数据管理装置下发一致性判断请求,元数据管理装置根据元数据缓存的状态,获得至少一个计算集群的元数据缓存的一致性判断结果,然后向协调节点返回一致性判断结果,接着根据一致性判断结果,从多个计算集群中确定目标计算集群,目标计算集群根据协调节点下发的分析请求,进行数据分析。由于无需在下发的执行计划中携带元数据,降低网络诉求。并且,基于一致性判断结果可以精准获取数据,减少同步次数,降低网络诉求。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据分析方法、***、计算设备集群、计算机可读存储介质、计算机程序产品。
背景技术
数据仓库(data warehouse),是来自一个或多个不同数据源的集成数据的中央存储库。区别于传统的、用于日常事务处理的数据库,数据仓库用于支持复杂的分析操作,并且提供直观易懂的查询结果。随着云原生(cloud native)技术的不断发展,各大云厂商还推出了云原生数据仓库,以充分利用云基础设施,提升***的弹性伸缩能力。云原生数据仓库通常采用存储和计算分离(存算分离)的架构,即存储层和计算层解耦,各层资源独立伸缩。
考虑到数据量不断增加,用户对并发分析的诉求也在不断变高。业界提出了采用多计算集群,如多虚拟仓库(virtual warehouse,VW)架构,提升并发能力。多VW架构包括云服务(cloud services)层、虚拟仓库(VW)层和存储层。其中,存储层可以采用数据分区的方式进行数据存储。在一些示例中,数据分区可以采用列存储方式存储数据。VW层包括多个VW,每个VW包括至少一个节点(node),每个节点中可以包括执行器(executor)和数据分区的缓存(即数据cache)。云服务层构建有元数据缓存(metadata cache)。元数据缓存中存储有列存元数据(列存储方式存储的元数据)。当接收到查询语句(简称为query)时,云服务层的优化器(optimizer)触发元数据的一致性同步,以从元数据集群中同步元数据至元数据缓存中,保证读取的数据都是最新修改提交的数据。如此优化器可以根据最新修改提交的数据进行优化,并下发执行计划,由VW执行上述执行计划。
然而,上述方案需要在下发的执行计划中携带满足要求的所有数据分区的元数据,导致云服务层与VW层中节点带宽要求变大,成本比较高昂,难以满足业务需求。
发明内容
针对上述问题,本申请提供了一种数据分析方法,该方法通过在计算集群中缓存元数据,无需协调节点在下发的执行计划中携带元数据,降低了网络诉求。并且,元数据管理装置记录元数据缓存的状态,通过元数据缓存的状态进行一致性判断,可以基于一致性判断结果将分析请求调度至合适的计算集群,减少查询和同步次数,进一步降低网络诉求和查询性能诉求。本申请还提供了上述数据分析方法对应的数据分析***、计算设备集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供一种数据分析方法。该方法可以由数据分析***执行。其中,数据分析***可以是软件***或者是硬件***。当数据分析***为软件***时,例如是数据仓库软件***时,该软件***可以部署在计算设备集群,计算设备集群执行软件***的程序代码,从而执行本申请的数据分析方法。当数据分析***为硬件***,例如为云原生数据仓库时,该硬件***可以在运行时,执行本申请的数据分析方法。
其中,数据分析***包括协调节点、元数据管理装置和多个计算集群。多个计算集群中的每个计算集群包括至少一个数据节点,计算集群中包括元数据缓存,元数据管理装置中记录有元数据缓存的状态。与计算集群类似,元数据管理装置也可以是集群形式,例如元数据管理装置可以是元数据集群。
具体地,协调节点接收查询语句,向元数据管理装置下发一致性判断请求,然后元数据管理装置响应于一致性判断请求,根据所元数据缓存的状态,获得多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,然后向协调节点返回所述一致性判断结果。协调节点根据一致性判断结果,从多个计算集群中确定目标计算集群,目标计算集群根据协调节点下发的分析请求,进行数据分析。
该方法中,计算集群本身缓存有元数据,无需在下发的执行计划中携带元数据,降低了网络诉求。元数据管理装置记录元数据缓存的状态,当需要进行数据分析时,通过元数据缓存的状态可以确定多个计算集群中至少一个计算集群的元数据缓存的一致性,基于一致性判断结果可以将分析请求调度至合适的计算集群执行,如此可以减少查询元数据是否为最新的元数据的次数,进而减少从元数据管理装置同步最新的元数据至元数据缓存的次数,降低网络诉求以及降低元数据查询性能的诉求。进一步地,元数据管理装置可以基于元数据进行可见性判断,从而满足更高事务隔离级别的要求。
在一些可能的实现方式中,一致性判断请求中包括查询语句的条件谓词。相应地,元数据管理装置可以根据条件谓词,确定查询语句所要读取的元数据,然后元数据管理装置根据所述查询语句所要读取的元数据,确定查询条件。该查询条件可以包括版本信息、元数据标识,元数据标识可以包括块标识、组标识中的一种或多种与列标识。其中,块标识用于标识数据块,组标识用于标识多个数据块的组合。元数据管理装置可以根据查询条件判断元数据缓存的状态,获得一致性判断结果。
基于上述一致性判断结果可以快速确定哪些计算集群缓存的元数据与元数据管理装置存储的元数据一致,如此可以为协调节点将分析请求调度至合适的计算集群提供帮助,进而减少计算集群查询元数据是否为最新版本的次数,以及减少计算集群从元数据管理装置同步元数据的次数。
在一些可能的实现方式中,元数据管理装置存储有至少一条元数据,每条元数据记录有至少一个数据块的数据范围。该数据范围可以是数据块中的最小值至最大值的范围(包括最小值和最大值两个端点)。相应地,元数据管理装置可以根据所述条件谓词查询所述元数据管理装置存储的元数据,确定所述查询语句所要读取的元数据。该查询语句所要读取的元数据中至少一个数据块的数据范围满足所述条件谓词的要求。
其中,查询语句所要读取的元数据中至少一个数据块的数据范围满足所述条件谓词可以是至少一个数据块的范围与条件谓词对应的范围存在交集。例如条件谓词为id大于20,至少一个数据块的范围为1至100时,则查询语句所要读取的元数据中至少一个一个数据库数据范围满足谓词条件。
该方法通过基于条件谓词查询元数据管理装置存储的元数据,确定查询语句所要读取的元数据,可以实现查询裁剪,无需获取不必要的元数据,降低了网络诉求。
在一些可能的实现方式中,元数据管理装置根据所述元数据管理装置存储的元数据进行事务可见性判断,确定所述事务可见性满足事务隔离级别的数据的元数据,然后根据所述条件谓词,从所述事务可见性满足事务隔离级别的数据的元数据中获得所述查询语句所要读取的元数据。
如此,不仅实现了查询裁剪,而且能够基于元数据进行可见性判断,从而满足更高事务隔离级别如可重复读RR、快照隔离SI、序列化的快照隔离SSI等级别的要求,而不是局限于读提交RC级别。
在一些可能的实现方式中,元数据管理装置中存储有块级别元数据或块组合级别元数据中的一种或多种。其中,块级别元数据是指数据块的元数据,块组合级别元数据是指多个数据块的组合的元数据。
该方法支持对不同粒度的元数据进行一致性判断,并支持以块粒度或组合粒度对元数据进行同步或淘汰,如此能够满足不同业务的需求。
在一些可能的实现方式中,元数据管理装置通过缓存状态数据记录所述元数据缓存的状态。其中,缓存状态数据包括事务头信息、元数据标识以及元数据的缓存位置。事务头信息可以作为版本信息,元数据标识包括块标识和组标识中的至少一种以及列标识,所述元数据的缓存位置通过计算集群标识表征。
在该方法中,事务头信息和元数据标识可以作为键,元数据的缓存位置可以作为值,如此,元数据管理装置可以在确定查询语句所要读取的元数据后,根据元数据标识和版本信息,快速确定哪些计算集群缓存的元数据与元数据管理装置存储的元数据一致,从而协调节点调度分析请求调度至合适的计算集群提供帮助,进而减少计算集群查询元数据是否为最新版本的次数,以及减少计算集群从元数据管理装置同步元数据的次数。
在一些可能的实现方式中,协调节点可以根据所述一致性判断结果,确定所述多个计算集群中至少一个计算集群执行数据分析的代价,然后协调节点可以根据所述至少一个计算集群执行数据分析的代价,确定目标计算集群。
该方法通过确定至少一个计算集群执行数据分析的代价,将分析请求调度至合适的计算集群执行,可以减少数据分析的开销。进一步地,协调节点在确定目标计算集群时,还可以结合各计算集群的负载,基于负载均衡策略确定目标计算集群。例如,协调节点可以根据至少一个计算集群执行数据分析的代价以及至少一个计算集群的负载,确定代价和负载满足要求的计算集群为目标计算集群。如此可以实现计算集群之间的负载均衡,重复提高各个计算集群的资源利用率。
在一些可能的实现方式中,至少一个计算集群执行数据分析的代价包括所述计算集群的基础代价以及所述计算集群读取所述元数据缓存的代价。相应地,协调节点可以将所述至少一个计算集群中执行数据分析的代价最小或小于预设值的计算集群,确定为目标计算集群。
如此,可以实现以较小的代价进行数据分析,降低数据分析成本,满足了业务的需求。
在一些可能的实现方式中,分析请求中包括执行计划以及所述一致性判断结果。目标计算集群根据所述协调节点下发的分析请求进行数据分析,可以是根据所述一致性判断结果查询所述元数据缓存,获取所述查询语句所要读取的元数据,然后目标计算集群根据所述查询语句所要读取的元数据读取数据,按照所述执行计划对所述数据进行数据分析。
该方法中,目标计算集群可以根据一致性判断结果,针对性地从元数据缓存或元数据管理装置获取查询语句所要读取的元数据,并根据该元数据读取数据进行数据分析,无需协调节点下发元数据,也无需频繁地从元数据管理装置同步元数据,降低了网络诉求。
在一些可能的实现方式中,当所述查询语句所要读取的元数据在所述元数据缓存命中时,目标计算集群从所述元数据缓存获取所述查询语句所要读取的元数据。当所述查询语句所要读取的元数据在所述元数据缓存未命中时,目标计算集群从所述元数据管理装置获取所述查询语句所要读取的元数据。
一方面,该方法减少了目标计算集群从元数据管理装置查询元数据是否为最新版本的次数,降低了对查询性能的诉求,另一方面,该方法支持从元数据缓存获取在元数据缓存命中的元数据,减少了从元数据管理装置同步元数据的次数,降低了网络诉求。
在一些可能的实现方式中,元数据管理装置还可以根据所述元数据缓存的状态确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录,然后,元数据管理装置可以删除所述过期的状态记录以及所述元数据缓存超过水位时所述最早写入的状态记录,向所述多个计算集群中的至少一个计算集群发送被删除的状态记录,接着,至少一个计算集群可以根据所述被删除的状态记录淘汰对应的元数据。
该方法中,元数据管理装置基于元数据缓存的状态触发计算集群中元数据缓存的淘汰,可以使得元数据缓存能够缓存新写入数据的元数据,以支持对新写入数据的高效分析。
在一些可能的实现方式中,元数据管理装置还可以将所述元数据缓存的状态按照计算集群标识分组,然后元数据管理装置针对至少一个分组,可以分别确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录。
该方法通过对元数据缓存的状态按照集群标识分组,每个分组设置相应的水位,如此可以针对每个分组分别淘汰相应的元数据,提高淘汰准确度。
进一步地,元数据管理装置还可以结合节点标识分组。例如,元数据管理装置可以根据集群标识和节点标识将元数据缓存的状态分组。如此,可以进一步缩小分组粒度,实现精细化分组,进而提高淘汰准确度。
在一些可能的实现方式中,当所述至少一个计算集群缓存增量元数据,所述元数据管理装置根据所述增量元数据的缓存信息更新所述元数据缓存的状态。
该方法中,增量元数据通过后台更新到缓存状态数据中,或者随事务提交在去除事务信息后***到缓存状态数据中,如此可以保障后续缓存一致性判断的准确度。
在一些可能的实现方式中,所述计算集群包括虚拟仓库。虚拟仓库指向数据,且不会复制或移动任何数据,而仅会将索引保存到数据内。如此可以保障数据控制权,并且能够控制分析成本。
在一些可能的实现方式中,计算集群也可以是逻辑集群。逻辑集群是基于NodeGroup机制来划分物理节点的一种集群模式,从节点层次将大集群进行划分,每个节点组构建为一个逻辑集群。如此可以实现高并发。
第二方面,本申请提供一种数据分析***。所述数据分析***包括协调节点、元数据管理装置和多个计算集群,所述计算集群中包括元数据缓存,所述元数据管理装置中记录有所述元数据缓存的状态,
所述协调节点,用于接收查询语句,向所述元数据管理装置下发一致性判断请求;
所述元数据管理装置,用于响应于所述一致性判断请求,根据所述元数据缓存的状态,获得所述多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,然后向所述协调节点返回所述一致性判断结果;
所述协调节点,还用于根据所述一致性判断结果,从所述多个计算集群中确定目标计算集群;
所述目标计算集群,用于根据所述协调节点下发的分析请求,进行数据分析。
在一些可能的实现方式中,所述一致性判断请求中包括所述查询语句的条件谓词;
所述元数据管理装置具体用于:
根据所述条件谓词,确定所述查询语句所要读取的元数据;
根据所述查询语句所要读取的元数据,确定查询条件;
根据所述查询条件判断所述元数据缓存的状态,获得一致性判断结果。
在一些可能的实现方式中,所述元数据管理装置存储有至少一条元数据,每条元数据记录有至少一个数据块的数据范围,所述元数据管理装置具体用于:
根据所述条件谓词查询所述元数据管理装置存储的元数据,确定所述查询语句所要读取的元数据,所述查询语句所要读取的元数据中至少一个数据块的数据范围满足所述条件谓词的要求。
在一些可能的实现方式中,所述元数据管理装置具体用于:
根据所述元数据管理装置存储的元数据进行事务可见性判断,确定所述事务可见性满足事务隔离级别的数据的元数据;
根据所述条件谓词,从所述事务可见性满足事务隔离级别的数据的元数据中获得所述查询语句所要读取的元数据。
在一些可能的实现方式中,所述元数据管理装置中存储有块级别元数据或块组合级别元数据中的一种或多种。
在一些可能的实现方式中,所述元数据管理装置通过缓存状态数据记录所述元数据缓存的状态,所述缓存状态数据包括事务头信息、元数据标识以及元数据的缓存位置,所述元数据标识包括块标识和组标识中的至少一种以及列标识,所述元数据的缓存位置通过计算集群标识表征。
在一些可能的实现方式中,所述协调节点具体用于:
根据所述一致性判断结果,确定所述多个计算集群中至少一个计算集群执行数据分析的代价;
根据所述至少一个计算集群执行数据分析的代价,确定目标计算集群。
在一些可能的实现方式中,所述至少一个计算集群执行数据分析的代价包括所述计算集群的基础代价以及所述计算集群读取所述元数据缓存的代价;
所述协调节点具体用于:
将所述至少一个计算集群中执行数据分析的代价最小或小于预设值的计算集群,确定为目标计算集群。
在一些可能的实现方式中,所述分析请求中包括执行计划以及所述一致性判断结果;
所述目标计算集群具体用于:
根据所述一致性判断结果查询所述元数据缓存,获取所述查询语句所要读取的元数据;
根据所述查询语句所要读取的元数据读取数据,按照所述执行计划对所述数据进行数据分析。
在一些可能的实现方式中,所述目标计算集群具体用于:
当所述查询语句所要读取的元数据在所述元数据缓存命中时,从所述元数据缓存获取所述查询语句所要读取的元数据;
当所述查询语句所要读取的元数据在所述元数据缓存未命中时,从所述元数据管理装置获取所述查询语句所要读取的元数据。
在一些可能的实现方式中,所述元数据管理装置还用于:
根据所述元数据缓存的状态确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录;
删除所述过期的状态记录以及所述元数据缓存超过水位时所述最早写入的状态记录;
向所述多个计算集群中的至少一个计算集群发送被删除的状态记录;
所述至少一个计算集群还用于:
根据所述被删除的状态记录淘汰对应的元数据。
在一些可能的实现方式中,所述元数据管理装置还用于:
将所述元数据缓存的状态按照计算集群标识分组;
所述元数据管理装置具体用于:
针对至少一个分组,分别确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录。
在一些可能的实现方式中,所述元数据管理装置还用于:
当所述至少一个计算集群缓存增量元数据,根据所述增量元数据的缓存信息更新所述元数据缓存的状态。
在一些可能的实现方式中,所述计算集群包括虚拟仓库。
第三方面,本申请提供一种计算设备集群。所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得计算机或计算设备集群执行如第一方面或第一方面的任一种实现方式所述的数据分析方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算机或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的数据分析方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机或计算设备集群上运行时,使得计算机或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的数据分析方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种数据分析的流程示意图;
图2为本申请实施例提供的一种多虚拟仓库架构的示意图;
图3为本申请实施例提供的一种数据分析***的架构示意图;
图4为本申请实施例提供的一种group metadata和block metadata的关系示意图;
图5为本申请实施例提供的一种多层次事务树的结构示意图;
图6为本申请实施例提供的一种数据分析方法的流程图;
图7为本申请实施例提供的一种并发事务的处理过程示意图;
图8为本申请实施例提供的一种数据分析方法的应用场景示意图;
图9为本申请实施例提供的另一种数据分析方法的应用场景示意图;
图10为本申请实施例提供的一种确定目标计算集群的示意图;
图11为本申请实施例提供的一种多层粒度构建和管理缓存的示意图;
图12为本申请实施例提供的一种元数据缓存淘汰的流程示意图;
图13为本申请实施例提供的一种元数据缓存的状态更新的流程示意图;
图14为本申请实施例提供的一种元数据缓存的更新过程的示意图;
图15为本申请实施例提供的一种数据分析方法的交互流程图;
图16为本申请实施例提供的一种计算设备的结构示意图;
图17为本申请实施例提供的一种计算设备集群的结构示意图;
图18为本申请实施例提供的另一种计算设备集群的结构示意图;
图19为本申请实施例提供的又一种计算设备集群的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
在数据分析场景中,随着数据量不断增加,用户对并发分析诉求也在不断变高,但是单计算集群架构的数据仓库受到资源竞争以及同步协同的限制,并发能力存在上限,因此,扩展多个计算集群提升并发能力成为一种技术选择。多计算集群架构下,用户可以通过统一的入口,执行并发分析,云原生数据仓库内部调度请求到不同的计算集群进行分析。
为了保障分析结果的可靠性,通常需要满足数据分析新鲜度(通过收集和处理海量数据的命中事件所用的时间衡量)为0以及事务隔离级别的要求,即用户写入提交的数据,能够立即看到并被分析,计算集群需要每次到元数据集群查询最新的元数据,以确认需要分析的数据是否最新。
为了便于理解,下面结合一示例说明。参见图1所示的数据分析的流程示意图,用户执行更新(update)和选取(select)两个并发分析,具体为Update t1 set id+10whereid>1000000;以及Select*from t1 where t1.id<1000000。Update操作在计算集群1,数据写入共享存储中,元数据写入到元数据集群中。Select操作在计算集群2中,为确保分析到最新数据,需要从元数据集群取最新的列存元数据,从共享存储中取列存数据。但是Select操作时会涉及的列存元数据非常多,导致对网络的要求也非常更高,并且对元数据集群查询性能要求也非常高。
为了提升并发分析能力,保证数据分析新鲜度为0和事务隔离级别要求,同时降低网络诉求以及降低元数据集群查询性能的诉求,一些云厂商从架构设计考虑,提供一种多虚拟仓库(virtual warehouse,VW)架构。
如图2所示,多VW架构包括云服务层、虚拟仓库层和存储层。其中,存储层可以采用数据分区进行数据存储。在一些示例中,数据分区可以采用列存储方式存储数据。VW层包括多个VW,每个VW包括至少一个节点,每个节点中可以包括执行器(executor)和数据缓存(即data cache)。云服务层构建有元数据缓存(metadata cache)。元数据缓存中存储有列存元数据。当接收到查询语句时,云服务层的优化器(optimizer)触发元数据的一致性同步,以从元数据集群中同步元数据至元数据缓存中,保证读取的数据都是最新修改提交的数据。如此优化器可以根据最新修改提交的数据进行优化,并下发执行计划,由VW通过执行器执行上述执行计划。
然而,该方案需要在下发的执行计划中携带满足要求的所有分区的元数据,导致云服务层与VW层中节点带宽要求变大,成本比较高昂,难以满足业务需求。进一步地,元数据缓存中同步的元数据是已经提交一致的元数据,相当于事务隔离级别中的读提交(readcommitted,RC)级别,难以满足更高的事务隔离级别,如可重复读(repeatable read,RR)、快照隔离(snapshot isolation,SI)、序列化的快照隔离(serializable snapshotisolation,SSI)或者序列化(Serializable)级别。
有鉴于此,本申请提供一种数据分析方法。该数据分析方法可以由数据分析***执行。其中,数据分析***可以是软件***或者是硬件***。当数据分析***为软件***时,例如是数据仓库软件***时,该软件***可以部署在计算设备集群,计算设备集群执行软件***的程序代码,从而执行本申请的数据分析方法。当数据分析***为硬件***,例如为云原生数据仓库时,该硬件***可以在运行时,执行本申请的数据分析方法。
其中,数据分析***包括协调节点(coordinator node,CN)、元数据管理装置和多个计算集群。多个计算集群中的每个计算集群包括至少一个数据节点(data node,DN),计算集群中包括元数据缓存(metadata cache),元数据管理装置中记录有元数据缓存的状态。与计算集群类似,元数据管理装置也可以是集群形式,例如元数据管理装置可以是元数据集群。此外,考虑到数据控制权以及分析成本等问题,计算集群可以是虚拟仓库VW。虚拟仓库指向数据,且不会复制或移动任何数据,而仅会将索引保存到数据内。
具体地,协调节点接收查询语句,向元数据管理装置下发一致性判断请求,元数据管理装置响应于一致性判断请求,根据元数据缓存的状态,获得多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,然后向协调节点返回一致性判断结果,协调节点根据一致性判断结果,从多个计算集群中确定目标计算集群,目标计算集群根据协调节点下发的分析请求,进行数据分析。
该方法中,计算集群本身缓存有元数据,无需在下发的执行计划中携带元数据,降低了网络诉求。元数据管理装置记录元数据缓存的状态,当需要进行数据分析时,通过元数据缓存的状态可以确定多个计算集群中至少一个计算集群的元数据缓存的一致性,基于一致性判断结果可以将分析请求调度至合适的计算集群执行,如此可以减少查询元数据是否为最新的元数据的次数,进而减少从元数据管理装置同步最新的元数据至元数据缓存的次数,降低网络诉求以及降低元数据查询性能的诉求。进一步地,元数据管理装置可以基于元数据进行可见性判断,从而满足更高事务隔离级别如RR、SI、SSI等级别的要求,而不是局限于RC。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例的数据分析***的架构进行介绍。
参见图3所示的数据分析***的架构示意图,数据分析***10包括协调节点100、元数据管理装置200和多个计算集群300。数据分析***10可以对存储设备20中数据进行分析,并且具有较高效率。其中,存储设备20可以是本地存储设备,或者是云存储设备,例如为简单存储服务(Simple Storage Service,S3)设备。
多个计算集群300中的每个计算集群300包括至少一个数据节点。至少一个数据节点可以包括数据缓存(data cache),用于对写入存储设备20或从存储设备20读取的数据进行缓存,从而加速数据分析。相应地,计算集群300中还可以包括元数据缓存(metadatacache),从而缓存相应的元数据。例如,计算集群300中的每个数据节点可以包括元数据缓存。此外,数据节点还可以包括执行器,用于执行相应的执行计划。
元数据管理装置200用于存储写入存储设备20的数据的元数据。为了便于加速数据分析,元数据管理装置200记录元数据缓存的状态。其中,写入存储设备20的数据的粒度可以是数据块(data block),相应地,写入元数据管理装置200的元数据的粒度可以是数据块或块组合。块组合是指多个数据块的组合(group),例如是多个数据块组合形成的文件或对象。基于此,元数据可以包括块级别元数据(记作block metadata)或块组合级别元数据(记作group metadata)中的一种或多种。其中,块组合级别元数据也可以称作多块级别元数据,记作multi-block metadata。
block metadata描述数据块(例如为列存数据块)的元数据,数据块的元数据包括数据块的数据范围,该数据范围也可以称作min-max索引信息。block metadata中的每一行记录描述一个数据块的min-max索引信息。此外,block metadata中还包括事务头(transaction header)信息,用于判断事务可见性。
为了便于描述,下面结合一示例对block metadata的数据结构进行说明。如下表所示:
表1block metadata的数据结构
其中,trx_header表示事务头,group_id为组标识(多个数据块的组合的标识),col_id为列标识,block_id为块标识,block_max为数据块中的最大值,block_min为数据块中的最小值。
group metadata描述多个数据块的组合的元数据,多个数据块的组合的元数据包括多个数据块的组合的数据范围。此外,group metadata中还包括事务头信息,用于判断事务可见性。
为了便于描述,下面结合一示例对group metadata的数据结构进行说明。如下表所示:
表2group metadata的数据结构
trx_header | group_id | col_id | col_min | col_max | … |
group0 | c1 | ||||
group0 | c2 | ||||
… | … |
其中,trx_header表示事务头信息,group_id为文件标识,col_id为列标识,col_max为一列中的最大值,col_min为一列中的最小值。
上述不同粒度的元数据均可以采用具有事务头信息的行存表存储,该事务头信息如(提交时间戳,删除时间戳)可以用于事务可见性判断,进而能够满足不同事务隔离级别如RC、RR、SSI的诉求。
图4还示出了group metadata和block metadata的关系示意图,group metadata描述多个数据块的组合的min-max索引信息。如图4所示,group metadata的一行记录,如col_id为c1的一行记录,描述c1列中block1001、block1002组合的min-max索引信息;group的另一行记录,如col_id为c2的一行记录,描述c2列中block1001、block1002组合的min-max索引信息。group metadata描述的多个block组合的min-max索引信息可以用于实现快速的数据裁剪。
进一步地,元数据管理装置200可以采用多层次事务树(tree)构建元数据的数据结构。参见图5所示的多层次事务树的结构示意图,多个block的block metadata元数据可以对应一个group的group metadata,多个group的group metadata可以对应一个新的group的group metadata。例如col 1中block1、block2、block3的block metadata可以对应group1的group metadata,col1中block4、block 5、block 6的block metadata可以对应group2的group metadata,group1的group metadata和group2的group metadata可以对应group3的group metadata。如此可以加速裁剪,减少元数据管理装置200的每秒操作数(operations per second,OPS)。
在一些可能的实现方式中,元数据管理装置200可以通过缓存状态数据记录元数据缓存在计算集群中的状态。缓存状态数据可以记作Cache Status,包括版本信息、元数据标识以及元数据的缓存位置。其中,版本信息可以通过事务头信息表示,元数据标识包括组标识group_id和块标识block_id中的至少一种以及列标识col_id,元数据的缓存位置通过计算集群标识表征。进一步地,计算集群包括多个数据节点时,元数据的缓存位置还通过数据节点标识表征。其中,计算集群标识可以简称为集群标识,记作cluster_id,数据节点标识可以简称为节点标识,记作dn_id。
为了便于理解,下面结合一示例对缓存状态数据的数据结构进行说明。如下表所示:
表3缓存状态数据的一种数据结构
version | group_id | col_id | cluster_id | dn_id | … |
1_3 | group0 | c1 | 1 | 1 | |
… | … | … | … |
该示例中,缓存状态数据为描述元数据缓存的状态的非行存表。该数据结构可以采用键值(key value,kv)存储。其中,key包括version、group_id和col_id,value为cluster_id和dn_id。group metadata中的事务头信息可以作为cache状态的版本信息一种实现方式,其与事务无关,group_id和col_id用于定位元数据,cluster_id用于标识元数据cache所在计算集群,dn_id用于标识元数据cache所在数据节点。
进一步地,上述缓存状态数据描述group metadata缓存在计算集群的状态信息,还可以更进一步设计成block metadata缓存在计算集群的状态信息,具体如下所示:
表4缓存状态数据的另一种数据结构
version | block_id | col_id | cluster_id | dn_id | … |
0001 | 1 | 1 | 1 | ||
… | … | … | … |
与表3的数据结构类似,key包括version、block_id和col_id,value为cluster_id和dn_id。block metadata的事务头信息可以作为cache的版本信息version的一种实现方式,block_id和col_id用于定位元数据,cluster_id用于标识元数据cache所在计算集群,dn_id用于标识元数据cache所在数据节点。
基于上述数据结构,可以实现高效地数据分析。具体地,协调节点100用于接收查询语句,向所述元数据管理装置200下发一致性判断请求,元数据管理装置200用于响应于一致性判断请求,根据所述元数据缓存的状态,获得所述多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,然后向所述协调节点100返回所述一致性判断结果,协调节点100还用于根据所述一致性判断结果,从多个计算集群300中确定目标计算集群,目标计算集群用于根据所述协调节点100下发的分析请求,进行数据分析。
其中,协调节点100部署有优化器(optimizer),优化器可以对查询语句进行优化,查询语句经过优化后,可以向元数据管理装置200发送一致性判断请求,元数据管理装置200可以先根据元数据进行剪裁和可见性判断,获得需要读取的元数据,然后根据元数据缓存的状态判断该元数据与计算集群300中元数据缓存的一致性,优化器可以根据计算集群300中DN缓存的元数据缓存大小确定执行代价,根据该执行代价决策出适于执行本次任务(即查询语句)的目标计算集群,将任务调度至目标计算集群执行,实现计算集群间对等。进一步地,为了实现负载均衡,优化器在确定目标计算集群时,可以根据执行代价以及计算集群的负载信息决策出适于执行本次任务的目标计算集群。
数据分析***10以上述优化器为中心,保障多计算集群的cache的一致性,满足了数据新鲜度为0和不同的事务隔离级别的要求,提升了并发能力。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例的数据分析方法进行介绍。
参见图6所示的数据分析方法的流程图,该方法包括:
S602:协调节点100接收查询语句。
查询语句是指用于对数据进行操作的语句。具体地,查询语句可以用于根据存储设备20中存储的数据进行数据分析。查询语句可以采用结构化查询语言(structuredquery language,SQL)编写。
协调节点100可以接收客户端下发的查询语句,以触发对存储设备20中存储的数据的数据分析流程,满足业务的需求。其中,客户端可以是数据分析客户端,如在线分析处理(Online analytical processing,OLAP)的客户端。
S604:协调节点100向元数据管理装置200下发一致性判断请求。
具体地,查询语句中可以包括需要操作的数据表以及表征操作条件的谓词(也称作条件谓词),协调节点100(例如是协调节点100中的优化器)可以解析查询语句,获得条件谓词,然后协调节点100可以根据上述条件谓词生成一致性判断请求,用于请求判断查询语句所要读取的元数据在缓存和元数据管理装置200的一致性,并向元数据管理装置200下发该一致性判断请求。
为了便于理解,下面结合一示例进行说明。参见图7,该示例中查询语句可以包括Select*from t1 where id>20,相应地,条件谓词可以为id>20。协调节点100中的优化器可以根据上述条件谓词生成一致性判断请求。需要说明的是,一致性判断请求中通常还携带有表id或者表名称,进一步地,该查询语句为事务语句时,一致性判断请求中还携带有时间序。例如,一致性判断请求中还可以携带表名称t1和时间序ts1_begin。
S606:元数据管理装置200根据一致性判断请求中的条件谓词,确定查询语句所要读取的元数据。
元数据管理装置200存储有至少一条元数据。元数据可以包括块级别元数据(block metadata)或块组合级别元数据(group metadata)中的一种或多种。如表1所示,block metadata中包括数据块的数据范围,具体为block_min至block_max(该范围包括端点值)。如表2所示,group metadata中包括多个数据块的组合的数据范围,例如可以为col_min至col_max(包括端点值)。
基于元数据管理装置200存储的至少一条元数据记录的数据范围,元数据管理装置200可以根据一致性判断请求中的条件谓词查询上述至少一条元数据,获得查询语句所要读取的元数据。其中,查询语句所要读取的元数据中至少一个数据块(多个数据块的组合或单个数据块)的数据范围满足条件谓词的要求。
进一步地,元数据管理装置200还可以先根据元数据管理装置200存储的元数据进行事务可见性判断,确定事务可见性满足事务隔离级别的数据的元数据,相应地,元数据管理装置200可以根据所述条件谓词,从所述事务可见性满足事务隔离级别的数据的元数据中获得所述查询语句所要读取的元数据。
具体实现时,元数据管理装置200通过解析一致性判断请求获得条件谓词,然后到group metadata或block metadata中查询,获得满足如下条件的一行或多行数据:
(1)事务可见性满足对应的事务隔离级别(比如RC/RR/SI/SSI);
(2)min-max范围满足条件谓词(即条件谓词对应的取值范围与min-max范围存在交集)。
其中,block metadata或group metadata中满足上述条件谓词的要求的一行或多行数据,代表接下来的查询中需要读取的元数据。由于该元数据通常以列存储方式进行存储,也称作列存元数据。
其中,元数据管理装置200通过比较一列数据(多个数据块的组合的一种组合方式)或一个数据块的数据范围与条件谓词对应的取值范围,可以实现裁剪,避免读取整个组合(如整个文件)或整列数据,减少读取开销或传输开销。元数据管理装置200通过该元数据管理装置200存储的元数据,判断事务可见性,能够满足不同事务隔离级别的要求,而不局限于RC级别。
为了便于理解,下面仍以图7进行示例说明。
假设协调节点100接收到并发事务T1、T2,事务隔离级别为RR或SI,事务T1开始取读时间序记作ts1_begin,该示例假定为12。事务T1的第一条语句为“Select*from t1whereid>20”,其条件谓词为id>20,协调节点100获得上述条件谓词后生成一致性判断请求下发至元数据管理装置200,其中,一致性判断请求携带有表id(该示例中为t1)、时间序(该示例中为ts1_begin)和条件谓词(id>20)。元数据管理装置200根据表id(t1),确定对应的group metadata。然后根据col_id读取对应行数据,在读行数据时,需要根据时间序ts1_begin判断是否可见,具体地,ts1_begin介于提交时间戳和删除时间戳之间,则表示可见,ts1_begin=12时,可以读取前两行。在读到上述事务可见性满足事务隔离级别的要求的行时,可以判断是否满足条件谓词的要求,该示例中,前两行均可满足要求。
进一步地,事务T2执行***数据,commit的时序假设是13,生成第3行,在SI/RR隔离级别下,事务T1中的所有的语句时序都是ts1_begin=12,基于此,在执行Select*fromt1 where id<1000时依然看不见事务T2新***的数据。
需要说明的是,如果在RC的隔离级别下,查询语句Select*from t2 where id>20会取一个时序,该示例中假定为14,查询语句Select*from t1 where id<1000会取一个时序,该实例中假定是15,那么执行Select*from t1 where id<1000时能够看见事务T2新***的数据。
S608:元数据管理装置200根据查询语句所要读取的元数据,确定查询条件。
元数据缓存的状态采用kv方式存储,查询条件可以是缓存状态数据的key。缓存状态数据的key可以包括版本信息和元数据标识。如表3或表4所示,版本信息通过事务头信息表征。元数据标识包括块标识block_id和组标识group_id中的至少一种以及列标识col_id。例如,如表3所示,元数据标识包括group_id和col_id。又例如,如表4所示,元数据标识可以包括block_id和col_id。value可以是缓存位置,缓存位置可以通过集群标识cluster_id标识,进一步地,缓存位置还可以通过数据节点标识dn_id标识,如表3或表4所示。
针对查询语句所要读取的元数据中的每一行数据,元数据管理装置200可以取出版本信息,以及取出标识信息,如group metadata中的group_id、col_id或block metadata中的col_id、block_id,作为key,用于从缓存状态数据查询该key对应的value。
仍以图7为例说明。该示例中,元数据管理装置200可以将从group metadata中查询到的一行或多行数据中取出version、col_id和group_id,并获得如下版本信息以及数据库键“version_group_id_col_id”。该示例中可以包括如下2个key:
1_3_g0_c1,10_-1_g1_c1。其中,g0表示group0,g1表示group1。
S610:元数据管理装置200根据查询条件判断元数据缓存的状态,获得一致性判断结果。
元数据管理装置200通过缓存状态数据如Cache Status记录所述元数据缓存的状态。其中,缓存状态数据包括版本信息、元数据标识以及元数据的缓存位置。版本信息通过事务头信息表示。元数据标识包括组标识group_id和块标识block_id中的至少一种以及列标识col_id。当元数据包括块组合级别元数据时,元数据标识可以包括group_id和col_id。当元数据包括块级别元数据时,元数据标识可以包括col_id和block_id。元数据的缓存位置通过计算集群标识和数据节点标识表征,例如通过cluster_id和dn_id表征。
具体地,元数据管理装置200可以先从Cache Statues中查找与key匹配的记录,然后确定该记录中的版本信息是否与所要查询的版本信息(具体是S608中确定的版本信息)一致,若一致,则表示对应的计算集群中的DN cache所缓存的元数据与提交至元数据管理装置的元数据是一致的,若不一致,则表示所有计算集群中DN cache没有缓存最新的元数据。
以图7示例说明,两个key能找到对应的value,其中,1_3_g0_c1在(cluster_id:1,dn_id:1)和(cluster_id:2,dn_id:2)中,即组合g0中的c1列在cluster1中的数据节点1和cluster2中的数据节点2的缓存中。10_-1_g1_c1在(cluster_id:1,dn_id:2)中,即组合g1中的c1列在计算集群1中的数据节点2的缓存中。
S612:元数据管理装置200向协调节点100返回一致性判断结果。
一致性判断结果用于表征计算集群300的缓存中是否缓存有与元数据管理装置200存储的元数据一致的元数据。当一致性判断结果表征计算集群300的缓存中缓存有与元数据管理装置200存储的元数据一致的元数据时,一致性判断结果还包括上述元数据的缓存位置,该缓存位置可以通过集群标识(如cluster_id)、节点标识(如dn_id)表征。
具体地,一致性判断结果可以包括元数据标识和缓存位置。其中,元数据标识可以包括group_id和col_id,在一些示例中,元数据标识也可以为block_id和col_id。缓存位置可以通过cluster_id和dn_id表征。其中,cluster_id和dn_id大于0时,表征计算集群300的缓存中缓存有与元数据管理装置200存储的元数据一致的元数据,缓存位置为上述cluster_id和dn_id所标识的位置;其他情况,表征所有计算集群300的DN cache中均未缓存最新的元数据。
元数据管理装置200可以向协调节点100返回包括上述字段的一致性判断结果,从而使得协调节点100根据上述一致性判断结果,选择合适的计算集群300进行数据分析,减少数据分析时的数据传输开销,降低分析成本。
S614:协调节点100根据一致性判断结果,从多个计算集群300中确定目标计算集群。
具体地,协调节点100可以根据所述一致性判断结果,确定所述多个计算集群300中至少一个计算集群300执行数据分析的代价,然后协调节点100可以根据所述至少一个计算集群300执行数据分析的代价,确定目标计算集群。
其中,至少一个计算集群300执行数据分析的代价包括所述计算集群300的基础代价(baseCost)以及计算集群300读取所述元数据缓存的代价。相应地,协调节点300在根据至少一个计算集群300执行数据分析的代价,确定目标计算集群时,可以将所述至少一个计算集群300中执行数据分析的代价最小或小于预设值的计算集群300,确定为目标计算集群。
S616:协调节点100向目标计算集群下发分析请求。
分析请求中包括执行计划以及一致性判断结果。协调节点100可以生成执行计划,然后根据执行计划和一致性判断结果中的元数据标识和缓存位置生成分析请求,然后向目标计算集群下发分析请求。
S618:目标计算集群根据分析请求,进行数据分析。
目标计算集群可以根据协调节点下发100的分析请求中携带的一致性判断结果查询元数据缓存,获取查询语句所要读取的元数据,然后根据查询语句所要读取的元数据读取数据,按照执行计划对上述数据进行数据分析。
在一些可能的实现方式中,目标计算集群在根据一致性判断结果查询元数据缓存时,可以根据在元数据缓存的命中结果,选择从不同位置读取元数据。具体地,当查询语句所要读取的元数据在元数据缓存命中时,目标计算集群可以从元数据缓存获取查询语句所要读取的元数据;当查询语句所要读取的元数据在元数据缓存未命中时,从元数据管理装置200获取查询语句所要读取的元数据。
上述S606至S612为本申请实施例中元数据管理装置200响应于所述一致性判断请求,根据所述元数据缓存的状态,获得所述多个计算集群300中至少一个计算集群300的元数据缓存的一致性判断结果,然后向所述协调节点100返回所述一致性判断结果的具体实现方式。
基于上述内容描述,本申请实施例提供了一种数据分析方法。该方法中,计算集群300本身缓存有元数据,无需在下发的执行计划中携带元数据,降低了网络诉求。元数据管理装置200记录元数据缓存的状态,当需要进行数据分析时,通过元数据缓存的状态可以确定多个计算集群300中至少一个计算集群300的元数据缓存的一致性,基于一致性判断结果可以将分析请求调度至合适的计算集群300执行,如此可以减少查询元数据是否为最新的元数据的次数,进而减少从元数据管理装置200同步最新的元数据至元数据缓存的次数,降低网络诉求以及降低元数据查询性能的诉求。进一步地,元数据管理装置200可以基于元数据进行可见性判断,从而满足更高事务隔离级别如RR、SI、SSI等级别的要求。
为了便于理解,下面结合具体的应用场景对本申请的数据分析方法进行详细说明。
参见图8所示的数据分析方法的应用场景示意图,在该场景中,协调节点100中的优化器接收到查询语句,可以向元数据管理装置200下发条件谓词,以进行group metadata级别剪裁和group metadata级别Cache一致性判断。具体地,元数据管理装置200中的执行器可以解析条件谓词到group metadata进行查询,得到满足事务隔离级别且满足条件谓词的一行或多行数据,该数据代表接下来的查询中需要读取的列存元数据。在读取到上述一行或多行数据后,元数据管理装置200可以取出对应的事务头信息作为版本信息,并将行中的group_id和col_id组成的key查询Cache Status,获得key对应的值。
当Cache Status没有找到,表示所有计算集群300中DN没有缓存最新的数据,当Cache Status找到,表示计算集群300的缓存中缓存有与元数据管理装置200存储的元数据一致的元数据。元数据管理装置200可以协调节点100返回group_id,col_id,cluster_id,dn_id。通过上述流程,协调节点100可以快速找到哪些计算集群300缓存的列存元数据Cache与元数据管理装置200中元数据是一致的。并且通过group metadata事务表能力,满足了更高事务隔离级别的诉求。
需要说明的是,图8是以group metadata级别剪裁和group metadata级别cache一致性判断进行示例说明。在本申请实施例其他可能的实现方式中,也可以进行blockmetadata级别剪裁和block metadata级别一致性判断。参见图9所示的数据分析方法的应用场景示意图,在该场景中,协调节点100可以接收查询语句,然后向元数据管理装置200下发一致性判断请求,一致性判断请求中携带条件谓词。元数据管理装置200根据条件谓词到block metadata进行查询,获得一行或多行满足事务隔离级别以及满足条件谓词的数据,然后从中取出事务头信息作为版本信息,并将版本信息与行中的block_id和col_id组成key,用于查询Cache Status,获得一致性判断结果。区别于图8,一致性判断结果包括block_id,col_id,cluster_id,dn_id。其中,cluster_id,dn_id大于0,表征blockmetadata中查找到的key对应的value;其他情况表征block metadata中未查找到的key对应的value。
接着,参见图10所示的确定目标计算集群的示意图,优化器可以根据一致性判断结果,例如是一致性的group_id、col_id、cluster_id和group_id以及DN未缓存的group_id、col_id,可以确定需要读取的列存元数据缓存在计算集群中具体的数量,进而可以计算对应的基数Cache cardinality以及对应的读取列存元数据Cache的代价cluster Cachecardinality*CacheCost。
例如,计算集群cluster1中两个节点读取列存元数据的代价为cluster1 Cachecardinality*CacheCost。计算集群cluster2中两个节点读取列存元数据的代价为cluster2 Cache cardinality*CacheCost。优化器可以根据基础代价baseCost,计算当前的查询语句在两个计算集群的代价baseCost(cluster1)+cluster1 Cache cardinality*CacheCost,baseCost(cluster2)+cluster2 Cache cardinality*CacheCost。选择最小代价执行对应的查询语句,如下所示:
计算集群300的数据节点DN缓存有已提交的列存元数据,Cache数据中没有任何事务信息。计算集群在从CACHE读取元数据时,可以通过读取列存元数据接口读取查询语句对应的列存元数据。其中,元数据为块组合级别元数据时,读取列存元数据接口的输入包括version、group_id和col_id。需要说明,元数据为块级元数据时,读取列存元数据接口的输入包括version、block_id和col_id。
如图11所示,计算集群300管理元数据缓存时可以通过多层粒度构建和管理缓存。其中,group metadata cache作为Cache Node,缓存(去除事务以后的)block metadata信息,block metadata cache作为Cache Node Entry,缓存去除事务的block metadata信息。group metadata cache以哈希(Hash)表和最近最少使用(Least Recently Used,LRU)管理,group metadata cache指向block metadata cache。block metadata cache存储一组block metadata。
在一些可能的实现方式中,元数据缓存的容量是有限的,计算集群300还可以进行cache同步和cache淘汰。其中,计算集群300可以以Cache Node或Cache Node Entry为粒度进行同步和淘汰。其中,元数据管理装置200根据Cache状态,触发计算集群300中元数据Cache的淘汰。
具体地,元数据管理装置200可以根据元数据缓存的状态中确定过期的状态记录或元数据缓存超过水位时最早写入的状态记录,然后元数据管理装置200可以删除过期的状态记录以及元数据缓存超过水位时最早写入的状态记录。然后,元数据管理装置200可以向所述多个计算集群300中的至少一个计算集群发送删除的状态记录。至少一个计算集群300根据被删除的状态记录淘汰对应的元数据。
需要说明的是,元数据管理装置200还可以将所述元数据缓存的状态按照计算集群标识(如cluster_id)分组,在分组时,元数据管理装置200还可以结合节点标识(如dn_id)进行分组。相应地,元数据管理装置200可以针对至少一个分组,分别确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录,并删除上述状态记录,发送被删除的状态记录到相应的计算集群300中以删除相应的元数据。
参见图12所示的元数据缓存淘汰的流程示意图,元数据管理装置200读取CacheStatus,按照cluster_id/dn_id进行分组,然后按照分组的结果取出版本信息,接着根据事务状态识别过期的状态记录,即永远不会读到的记录key:cluster_id_dn_id_group_id_col_id,以及确定分组结果是否超过对应的cache水位,若超过水位,则识别最早写入的记录key:cluster_id_dn_id_group_id_col_id。元数据管理装置200可以删除Cache Status中的上述记录,发送key:cluster_id_dn_id_group_id_col_id到cluster_id/dn_id中删除对应的Cache。
如图13所示,元数据缓存的状态可以通过计算集群cluster中数据节点DN的后台线程更新。元数据缓存通常缓存元数据管理装置200已提交的block metadata或groupmetadata中的至少一种。当前计算集群cluster中的数据节点DN存在增量Cache时,DN通过后台线程识别增量Cache信息,发送增量Cache信息到元数据管理装置200,元数据管理装置200更新增量Cache信息至Cache Status中。其中,Cache接口具有幂等性,Cache Status接口具有幂等性。
下面对元数据Cache更新过程进行介绍。
参见图14所示的元数据Cache更新过程的示意图,如图14所示,SQL查询类型决定了对触发列存元数据和列存元数据Cache的更新操作类型。
查询类型为Select时,计算集群的DN没有缓存最新的列存元数据,触发列存元数据Cache的同步;查询类型为update时,触发列存元数据数据的修改;查询类型为delete时,触及列存元数据的删除;查询类型为insert时,触发列存元数据的***。
其中,Update/delete/Insert操作在事务Commit时,保障block metadata,groupmetadata操作随事务原子性提交。Update/delete/Insert在数据节点DN产生的groupmetadata/block metadata数据,随事务提交,在去除事务信息后***group metadataCache/block metadata Cache中。增量的group metadata Cache/block metadata Cache后台更新到Cache Status中,或者随事务提交在去除事务信息后***Cache Status中。
为了使得本申请的技术方案更清楚,下面结合交互流程图对本申请实施例的数据分析方法进行介绍。
参见图15所示的数据分析方法的交互流程图,具体包括如下步骤:
(1)客户端(client)向协调节点100发送查询语句。
(2)协调节点100中的优化器下发查询语句的条件谓词到元数据管理装置200,进行group metadata级别剪裁和group metadata级别Cache一致性判断。
(3)元数据管理装置200根据条件谓词到group metadata进行查询,获得满足事务隔离级别、条件谓词的一行或多行数据。
(4)元数据管理装置200从一行或多行数据中,取出对应的事务头信息作为版本信息,并将行中的group_id,col_id组成key查询Cache Status中的数据,进行一致性判断。当key对应的value没有找到,表示所有计算集群中DN没有缓存最新的数据,key对应的value找到,表示对应的计算集群中数据节点DN所缓存的元数据与元数据管理装置200中元数据一致。
(5)元数据管理装置200返回一致性判断结果至协调节点100。
(6)协调节点100的优化器计算最小Cost,Cost=min{baseCost(cluster1)+cluster1Cache cardinality*CacheCost,baseCost(cluster2)+cluster2 Cachecardinality*CacheCost),选择最小代价的计算集群300(目标计算集群)进行数据分析。
(7)协调节点100下发执行计划和一致性判断结果到目标计算集群进行执行。
(8)当基于一致性判断结果中group_id、col_id、cluster_id、dn_id确定所要读取的元数据在元数据缓存中存在时,则从元数据缓存中取出元数据,否则从元数据管理装置200取元数据并***到元数据缓存中。目标计算集群根据上述元数据读取数据,按照执行计划进行数据分析。
基于前述实施例的数据分析方法,本申请还提供一种数据分析***,如图3所示,所述数据分析***10包括协调节点100、元数据管理装置200和多个计算集群300,所述计算集群300中包括元数据缓存,所述元数据管理装置200中记录有所述元数据缓存的状态;
所述协调节点100,用于接收查询语句,向所述元数据管理装置下发一致性判断请求;
所述元数据管理装置200,用于响应于所述一致性判断请求,根据所述元数据缓存的状态,获得所述多个计算集群300中至少一个计算集群300的元数据缓存的一致性判断结果,然后向所述协调节点100返回所述一致性判断结果;
所述协调节点100,还用于根据所述一致性判断结果,从所述多个计算集群中确定目标计算集群;
所述目标计算集群,用于根据所述协调节点100下发的分析请求,进行数据分析。
示例性地,上述协调节点100、元数据管理装置200、计算集群300可以通过硬件实现,或者可以通过软件实现。例如,协调节点100可以是逻辑节点,如协调软件,协调节点100也可以是物理节点,例如是部署协调软件的计算设备;元数据管理装置200可以是具有元数据管理功能的软件装置或硬件装置;计算集群300可以是指用于数据处理的集群软件,或者是部署有上述集群软件的计算设备集群。
为了便于描述,下面以元数据管理装置200示例说明。
当通过软件实现时,元数据管理装置200可以是运行在计算设备上的应用程序,如计算引擎等。该应用程序可以以虚拟化服务的方式提供给用户使用。虚拟化服务可以包括虚拟机(virtual machine,VM)服务、裸金属服务器(bare metal server,BMS)服务以及容器(container)服务。其中,VM服务可以是通过虚拟化技术在多个物理主机(如计算设备)上虚拟出虚拟机(virtual machine,VM)资源池以为用户按需提供VM进行使用的服务。BMS服务是在多个物理主机上虚拟出BMS资源池以为用户按需提供BMS进行使用的服务。容器服务是在多个物理主机上虚拟出容器资源池以为用户按需提供容器进行使用的服务。VM是模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机。BMS是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以达到隔离用户空间、进程和资源的目的。应理解,上述虚拟化服务中的VM服务、BMS服务以及容器服务仅仅是作为具体的示例,在实际应用中,虚拟化服务还可以是其他轻量级或者重量级的虚拟化服务,此处不作具体限定。
当通过硬件实现时,元数据管理装置200中可以包括至少一个计算设备,如服务器等。或者,元数据管理装置200也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
在一些可能的实现方式中,所述一致性判断请求中包括所述查询语句的条件谓词;
所述元数据管理装置200具体用于:
根据所述条件谓词,确定所述查询语句所要读取的元数据;
根据所述查询语句所要读取的元数据,确定查询条件;
根据所述查询条件判断所述元数据缓存的状态,获得一致性判断结果。
在一些可能的实现方式中,所述元数据管理装置200存储有至少一条元数据,每条元数据记录有至少一个数据块的数据范围,所述元数据管理装置200具体用于:
根据所述条件谓词查询所述元数据管理装置存储的元数据,确定所述查询语句所要读取的元数据,所述查询语句所要读取的元数据中至少一个数据块的数据范围满足所述条件谓词的要求。
在一些可能的实现方式中,所述元数据管理装置200具体用于:
根据所述元数据管理装置200存储的元数据进行事务可见性判断,确定所述事务可见性满足事务隔离级别的数据的元数据;
根据所述条件谓词,从所述事务可见性满足事务隔离级别的数据的元数据中获得所述查询语句所要读取的元数据。
在一些可能的实现方式中,所述元数据管理装置200中存储有块级别元数据或块组合级别元数据中的一种或多种。
在一些可能的实现方式中,所述元数据管理装置200通过缓存状态数据记录所述元数据缓存的状态,所述缓存状态数据包括事务头信息、元数据标识以及元数据的缓存位置,所述元数据标识包括块标识和组标识中的至少一种以及列标识,所述元数据的缓存位置通过计算集群标识表征。
在一些可能的实现方式中,所述协调节点100具体用于:
根据所述一致性判断结果,确定所述多个计算集群300中至少一个计算集群300执行数据分析的代价;
根据所述至少一个计算集群300执行数据分析的代价,确定目标计算集群。
在一些可能的实现方式中,所述至少一个计算集群300执行数据分析的代价包括所述计算集群300的基础代价以及所述计算集群300读取所述元数据缓存的代价;
所述协调节点100具体用于:
将所述至少一个计算集群300中执行数据分析的代价最小或小于预设值的计算集群300,确定为目标计算集群。
在一些可能的实现方式中,所述分析请求中包括执行计划以及所述一致性判断结果;
所述目标计算集群具体用于:
根据所述一致性判断结果查询所述元数据缓存,获取所述查询语句所要读取的元数据;
根据所述查询语句所要读取的元数据读取数据,按照所述执行计划对所述数据进行数据分析。
在一些可能的实现方式中,所述目标计算集群具体用于:
当所述查询语句所要读取的元数据在所述元数据缓存命中时,从所述元数据缓存获取所述查询语句所要读取的元数据;
当所述查询语句所要读取的元数据在所述元数据缓存未命中时,从所述元数据管理装置获取所述查询语句所要读取的元数据。
在一些可能的实现方式中,所述元数据管理装置200还用于:
根据所述元数据缓存的状态确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录;
删除所述过期的状态记录以及所述元数据缓存超过水位时所述最早写入的状态记录;
向所述多个计算集群300中的至少一个计算集群发送被删除的状态记录;
所述至少一个计算集群300还用于:
根据所述被删除的状态记录淘汰对应的元数据。
在一些可能的实现方式中,所述元数据管理装置200还用于:
将所述元数据缓存的状态按照计算集群标识分组;
所述元数据管理装置200具体用于:
针对至少一个分组,分别确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录。
在一些可能的实现方式中,所述元数据管理装置200还用于:
当所述至少一个计算集群缓存增量元数据,根据所述增量元数据的缓存信息更新所述元数据缓存的状态。
在一些可能的实现方式中,所述计算集群300包括虚拟仓库。
本申请还提供一种计算设备1600。如图16所示,计算设备1600包括:总线1602、处理器1604、存储器1606和通信接口1608。处理器1604、存储器1606和通信接口1608之间通过总线1602通信。计算设备1600可以是服务器或终端设备。应理解,本申请不限定计算设备1600中的处理器、存储器的个数。
总线1602可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1604可包括在计算设备1600各个部件(例如,存储器1606、处理器1604、通信接口1608)之间传送信息的通路。
处理器1604可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1606可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1604还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。存储器1606中存储有可执行的程序代码,处理器1604执行该可执行的程序代码以实现前述数据分析方法。具体的,存储器1606上存有数据分析***10用于执行数据分析方法的指令。
通信接口1603使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1600与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图17所示,所述计算设备集群包括至少一个计算设备1600。计算设备集群中的一个或多个计算设备1600中的存储器1606中可以存有相同的数据分析***10用于执行数据分析方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1600也可以用于执行数据分析***10用于执行数据分析方法的部分指令。换言之,一个或多个计算设备1600的组合可以共同执行数据分析***10用于执行数据分析方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1600中的存储器1606可以存储不同的指令,用于执行数据分析***10的部分功能。
图18示出了一种可能的实现方式。如图18所示,三个计算设备1600A、1600B、1600C通过通信接口1608实现连接。计算设备1600A中的存储器上存有用于执行协调节点100的功能的指令。计算设备1600B中的存储器上存有用于执行元数据管理装置200的功能的指令,计算设备1600C中的存储器上存有用于执行计算集群300的功能的指令。换言之,计算设备1600A、1600B和1600C的存储器1606共同存储了数据分析***10用于执行数据分析方法的指令。
图18所示的计算设备集群之间的连接方式可以是考虑到本申请提供的数据分析方法需要大量算力进行数据处理。因此,考虑将协调节点100、元数据管理装置200、计算集群300实现的功能交由不同的计算设备执行。
应理解,图18中示出的计算设备1600A的功能也可以由多个计算设备1600完成。同样,计算设备1600B的功能也可以由多个计算设备1600完成,计算设备1600C的功能也可以由多个计算设备1600完成。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图19示出了一种可能的实现方式。如图19所示,三个计算设备1600D和1600E、1600F之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备1600D中的存储器1606中存有执行协调节点100的功能的指令。同时,计算设备1600E中的存储器1606中存有执行元数据管理装置200的功能的指令,计算设备1600F中的存储器1606中存有执行计算集群300的功能的指令。
图19所示的计算设备集群之间的连接方式可以是考虑到本申请提供的数据分析方法需要大量算力进行数据处理,因此考虑将协调节点100、元数据管理装置200、计算集群300实现的功能交由不同的计算设备1600执行。
应理解,图19中示出的计算设备1600D的功能也可以由多个计算设备1600完成。同样,计算设备1600E的功能也可以由多个计算设备1600完成,计算设备1600F的功能也可以由多个计算设备1600完成。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用于数据分析***10用于执行数据分析方法。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行上述数据分析方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (29)
1.一种数据分析方法,其特征在于,应用于数据分析***,所述数据分析***包括协调节点、元数据管理装置和多个计算集群,所述计算集群中包括元数据缓存,所述元数据管理装置中记录有所述元数据缓存的状态,所述方法包括:
所述协调节点接收查询语句,向所述元数据管理装置下发一致性判断请求;
所述元数据管理装置响应于所述一致性判断请求,根据所述元数据缓存的状态,获得所述多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,然后向所述协调节点返回所述一致性判断结果;
所述协调节点根据所述一致性判断结果,从所述多个计算集群中确定目标计算集群;
所述目标计算集群根据所述协调节点下发的分析请求,进行数据分析。
2.根据权利要求1所述的方法,其特征在于,所述一致性判断请求中包括所述查询语句的条件谓词;
所述元数据管理装置根据所述元数据缓存的状态,获得所述多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,包括:
所述元数据管理装置根据所述条件谓词,确定所述查询语句所要读取的元数据;
所述元数据管理装置根据所述查询语句所要读取的元数据,确定查询条件;
所述元数据管理装置根据所述查询条件判断所述元数据缓存的状态,获得一致性判断结果。
3.根据权利要求2所述的方法,其特征在于,所述元数据管理装置存储有至少一条元数据,每条元数据记录有至少一个数据块的数据范围,所述元数据管理装置根据所述条件谓词,确定所述查询语句所要读取的元数据,包括:
所述元数据管理装置根据所述条件谓词查询所述元数据管理装置存储的元数据,确定所述查询语句所要读取的元数据,所述查询语句所要读取的元数据中至少一个数据块的数据范围满足所述条件谓词的要求。
4.根据权利要求3所述的方法,其特征在于,所述元数据管理装置根据所述条件谓词查询所述元数据管理装置存储的元数据,确定所述查询语句所要读取的元数据,包括:
所述元数据管理装置根据所述元数据管理装置存储的元数据进行事务可见性判断,确定所述事务可见性满足事务隔离级别的数据的元数据;
所述元数据管理装置根据所述条件谓词,从所述事务可见性满足事务隔离级别的数据的元数据中获得所述查询语句所要读取的元数据。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述元数据管理装置中存储有块级别元数据或块组合级别元数据中的一种或多种。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述元数据管理装置通过缓存状态数据记录所述元数据缓存的状态,所述缓存状态数据包括事务头信息、元数据标识以及元数据的缓存位置,所述元数据标识包括块标识和组标识中的至少一种以及列标识,所述元数据的缓存位置通过计算集群标识表征。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述协调节点根据所述一致性判断结果,从所述多个计算集群中确定目标计算集群,包括:
所述协调节点根据所述一致性判断结果,确定所述多个计算集群中至少一个计算集群执行数据分析的代价;
所述协调节点根据所述至少一个计算集群执行数据分析的代价,确定目标计算集群。
8.根据权利要求7所述的方法,其特征在于,所述至少一个计算集群执行数据分析的代价包括所述计算集群的基础代价以及所述计算集群读取所述元数据缓存的代价;
所述协调节点根据所述至少一个计算集群执行数据分析的代价,确定目标计算集群,包括:
所述协调节点将所述至少一个计算集群中执行数据分析的代价最小或小于预设值的计算集群,确定为目标计算集群。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述分析请求中包括执行计划以及所述一致性判断结果;
所述目标计算集群根据所述协调节点下发的分析请求,进行数据分析,包括:
所述目标计算集群根据所述一致性判断结果查询所述元数据缓存,获取所述查询语句所要读取的元数据;
所述目标计算集群根据所述查询语句所要读取的元数据读取数据,按照所述执行计划对所述数据进行数据分析。
10.根据权利要求9所述的方法,其特征在于,所述目标计算集群根据所述一致性判断结果查询所述元数据缓存,获取所述查询语句所要读取的元数据,包括:
当所述查询语句所要读取的元数据在所述元数据缓存命中时,从所述元数据缓存获取所述查询语句所要读取的元数据;
当所述查询语句所要读取的元数据在所述元数据缓存未命中时,从所述元数据管理装置获取所述查询语句所要读取的元数据。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述方法还包括:
所述元数据管理装置根据所述元数据缓存的状态确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录;
所述元数据管理装置删除所述过期的状态记录以及所述元数据缓存超过水位时所述最早写入的状态记录;
所述元数据管理装置向所述多个计算集群中的至少一个计算集群发送被删除的状态记录;
所述至少一个计算集群根据所述被删除的状态记录淘汰对应的元数据。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述元数据管理装置将所述元数据缓存的状态按照计算集群标识分组;
所述元数据管理装置从所述元数据缓存的状态中确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录,包括:
所述元数据管理装置针对至少一个分组,分别确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录。
13.根据权利要求1至12任一项所述的方法,其特征在于,所述方法还包括:
当所述至少一个计算集群缓存增量元数据,所述元数据管理装置根据所述增量元数据的缓存信息更新所述元数据缓存的状态。
14.一种数据分析***,其特征在于,所述数据分析***包括协调节点、元数据管理装置和多个计算集群,所述计算集群中包括元数据缓存,所述元数据管理装置中记录有所述元数据缓存的状态,
所述协调节点,用于接收查询语句,向所述元数据管理装置下发一致性判断请求;
所述元数据管理装置,用于响应于所述一致性判断请求,根据所述元数据缓存的状态,获得所述多个计算集群中至少一个计算集群的元数据缓存的一致性判断结果,然后向所述协调节点返回所述一致性判断结果;
所述协调节点,还用于根据所述一致性判断结果,从所述多个计算集群中确定目标计算集群;
所述目标计算集群,用于根据所述协调节点下发的分析请求,进行数据分析。
15.根据权利要求14所述的***,其特征在于,所述一致性判断请求中包括所述查询语句的条件谓词;
所述元数据管理装置具体用于:
根据所述条件谓词,确定所述查询语句所要读取的元数据;
根据所述查询语句所要读取的元数据,确定查询条件;
根据所述查询条件判断所述元数据缓存的状态,获得一致性判断结果。
16.根据权利要求15所述的***,其特征在于,所述元数据管理装置存储有至少一条元数据,每条元数据记录有至少一个数据块的数据范围,所述元数据管理装置具体用于:
根据所述条件谓词查询所述元数据管理装置存储的元数据,确定所述查询语句所要读取的元数据,所述查询语句所要读取的元数据中至少一个数据块的数据范围满足所述条件谓词的要求。
17.根据权利要求16所述的***,其特征在于,所述元数据管理装置具体用于:
根据所述元数据管理装置存储的元数据进行事务可见性判断,确定所述事务可见性满足事务隔离级别的数据的元数据;
根据所述条件谓词,从所述事务可见性满足事务隔离级别的数据的元数据中获得所述查询语句所要读取的元数据。
18.根据权利要求14至17任一项所述的***,其特征在于,所述元数据管理装置中存储有块级别元数据或块组合级别元数据中的一种或多种。
19.根据权利要求14至18任一项所述的***,其特征在于,所述元数据管理装置通过缓存状态数据记录所述元数据缓存的状态,所述缓存状态数据包括事务头信息、元数据标识以及元数据的缓存位置,所述元数据标识包括块标识和组标识中的至少一种以及列标识,所述元数据的缓存位置通过计算集群标识表征。
20.根据权利要求14至19任一项所述的***,其特征在于,所述协调节点具体用于:
根据所述一致性判断结果,确定所述多个计算集群中至少一个计算集群执行数据分析的代价;
根据所述至少一个计算集群执行数据分析的代价,确定目标计算集群。
21.根据权利要求14至20任一项所述的***,其特征在于,所述至少一个计算集群执行数据分析的代价包括所述计算集群的基础代价以及所述计算集群读取所述元数据缓存的代价;
所述协调节点具体用于:
将所述至少一个计算集群中执行数据分析的代价最小或小于预设值的计算集群,确定为目标计算集群。
22.根据权利要求14至21任一项所述的***,其特征在于,所述分析请求中包括执行计划以及所述一致性判断结果;
所述目标计算集群具体用于:
根据所述一致性判断结果查询所述元数据缓存,获取所述查询语句所要读取的元数据;
根据所述查询语句所要读取的元数据读取数据,按照所述执行计划对所述数据进行数据分析。
23.根据权利要求22所述的***,其特征在于,所述目标计算集群具体用于:
当所述查询语句所要读取的元数据在所述元数据缓存命中时,从所述元数据缓存获取所述查询语句所要读取的元数据;
当所述查询语句所要读取的元数据在所述元数据缓存未命中时,从所述元数据管理装置获取所述查询语句所要读取的元数据。
24.根据权利要求14至23任一项所述的***,其特征在于,所述元数据管理装置还用于:
根据所述元数据缓存的状态确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录;
删除所述过期的状态记录以及所述元数据缓存超过水位时所述最早写入的状态记录;
向所述多个计算集群中的至少一个计算集群发送被删除的状态记录;
所述至少一个计算集群还用于:
根据所述被删除的状态记录淘汰对应的元数据。
25.根据权利要求24所述的***,其特征在于,所述元数据管理装置还用于:
将所述元数据缓存的状态按照计算集群标识分组;
所述元数据管理装置具体用于:
针对至少一个分组,分别确定过期的状态记录或所述元数据缓存超过水位时最早写入的状态记录。
26.根据权利要求14至25任一项所述的***,其特征在于,所述元数据管理装置还用于:
当所述至少一个计算集群缓存增量元数据,根据所述增量元数据的缓存信息更新所述元数据缓存的状态。
27.一种计算设备集群,其特征在于,所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述计算设备集群执行如权利要求1至13中任一项所述的方法。
28.一种计算机可读存储介质,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至13任一项所述的方法。
29.一种计算机程序产品,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至13任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211565695.9A CN118193560A (zh) | 2022-12-07 | 2022-12-07 | 一种数据分析方法及相关设备 |
PCT/CN2023/121360 WO2024119980A1 (zh) | 2022-12-07 | 2023-09-26 | 一种数据分析方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211565695.9A CN118193560A (zh) | 2022-12-07 | 2022-12-07 | 一种数据分析方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118193560A true CN118193560A (zh) | 2024-06-14 |
Family
ID=91378516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211565695.9A Pending CN118193560A (zh) | 2022-12-07 | 2022-12-07 | 一种数据分析方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118193560A (zh) |
WO (1) | WO2024119980A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875042B (zh) * | 2018-06-27 | 2021-06-08 | 中国农业银行股份有限公司 | 一种混合联机分析处理***及数据查询方法 |
US20200195718A1 (en) * | 2018-12-12 | 2020-06-18 | International Business Machines Corporation | Workflow coordination in coordination namespace |
CN112241480A (zh) * | 2020-04-27 | 2021-01-19 | 无锡斑目信息技术有限公司 | 基于hadoop集群的海量数据存储查询装置以及方法 |
CN114218236A (zh) * | 2021-12-02 | 2022-03-22 | 蔡成招 | 一种数据库集群元数据管理方法 |
-
2022
- 2022-12-07 CN CN202211565695.9A patent/CN118193560A/zh active Pending
-
2023
- 2023-09-26 WO PCT/CN2023/121360 patent/WO2024119980A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024119980A1 (zh) | 2024-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372890B2 (en) | Distributed database transaction protocol | |
EP3185143B1 (en) | Decentralized transaction commit protocol | |
CN110622152B (zh) | 用于查询时间序列数据的可扩展数据库*** | |
US10262002B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
US10678614B2 (en) | Messages with delayed delivery in an in-database sharded queue | |
CN111159252B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
US10977227B2 (en) | Dynamic snapshot isolation protocol selection | |
CN111338766A (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US9922105B2 (en) | Method and apparatus of maintaining data for online analytical processing in a database system | |
US11080207B2 (en) | Caching framework for big-data engines in the cloud | |
US11714794B2 (en) | Method and apparatus for reading data maintained in a tree data structure | |
Abebe et al. | DynaMast: Adaptive dynamic mastering for replicated systems | |
WO2018153033A1 (zh) | 一种信息处理方法及装置 | |
CN117539915B (zh) | 一种数据处理方法及相关装置 | |
US9703788B1 (en) | Distributed metadata in a high performance computing environment | |
US20240143594A1 (en) | Offloading graph components to persistent storage for reducing resident memory in distributed graph processing | |
CN107656992B (zh) | 面向多***源的快照版本管理方法 | |
CN118193560A (zh) | 一种数据分析方法及相关设备 | |
CN107679093B (zh) | 一种数据查询方法及装置 | |
CN117539650B (zh) | 数据管理***的去中心化记录锁管理方法以及相关设备 | |
CN115374131A (zh) | 请求处理方法及***、存储介质、电子设备 | |
CN117539650A (zh) | 数据管理***的去中心化记录锁管理方法以及相关设备 | |
CN116975053A (zh) | 一种数据处理方法、装置、设备、介质及程序产品 | |
KR20110014889A (ko) | Shared-disk모델을 사용하는 다중 서버 DBΜS에서의 버퍼 일관성 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |