有效
Gaia集群中面向数据分布特征的维表缓存管理方法及系统
姜苏、王国仁、赵宇海、郑军、李博扬
北京理工大学
姜
姜苏机构 暂无
技术领域 暂无
王
王国仁机构 暂无
技术领域 暂无
赵
赵宇海机构 暂无
技术领域 暂无
郑
郑军机构 暂无
技术领域 暂无
李
李博扬机构 暂无
技术领域 暂无
摘要
本发明公开了Gaia集群中面向数据分布特征的维表缓存管理方法及系统,构建了一套从构建到查询再到增量更新的全周期分布式缓存管理机制。包括数据分布特征提取模块和缓存管理模块,缓存管理模块为缓存构建、缓存查询和缓存更新子模块。数据分布特征提取模块从维表数据中抽取数据样本,统计样本数据的p分位点作为全量数据的分布特征。缓存构建子模块,根据统计的p分位点完成路由数组的初始化;利用分段确定方法为每条维表数据确定所属分段;利用索引建立方法为每条维表数据建立索引。缓存查询子模块,采用缓存查询方法,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据。缓存更新子模块,定义了p个分段跳表之间的平衡调整方法。
1.Gaia集群中面向数据分布特征的维表缓存管理方法,其特征在于,包括如下步骤:步骤1、利用数据分布特征构建维表关联缓存索引结构,所述维表关联缓存索引结构即为多路平衡跳表,由一个固定大小为2p-1的路由数组和p个大小均衡的分段跳表构成,其中参数p由用户通过配置文件或者API接口指定;步骤2、提取维表数据的分布特征信息;所述步骤2具体包括如下步骤:S201:Gaia集群系统通过DataSet数据源把维表数据摄入系统的网络缓冲区,并通过API接口指定维表数据的主键列作为关键字;S202:DataSet数据源计算关键字的Hash值,通过Hash分区的方法把网络缓冲区内维表数据分发给下游的关联计算算子;S203:通过抽样算法从采集维表数据中抽取样本数据,然后统计样本数据的p分位点,样本数据的p分位点用于代表全量维表数据的分布特征;样本数据的p分位点随着网络缓冲区内的维表数据一起发往下游的关联算子;步骤3、构建全周期分布式缓存管理机制,具体包括如下步骤:S301、进行缓存构建,具体为:首先定义了路由数组的初始化方法,用于根据全量维表数据的分布特征提取p分位点,完成所述路由数组的初始化;还定义了分段确定方法,用于为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引;S301包括如下步骤:S3011:当缓存构建子模块收到样本数据的p分位点后,调用路由数组的初始化方法完成针对路由数组的初始化;S3012:对于后续维表数据的到来,调用分段确定方法,确定每条维表数据所属分段;S3013:采用索引建立方法,在所述分段跳表中为每条维表数据建立对应的索引;S302、在维表关联计算任务的执行过程中,根据流数据记录的关键字从所述多路平衡跳表中查询相应的维表数据;S303、所述p个分段跳表之间的平衡调整方法,用于支持对维表数据缓存的增量更新;其中,调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把分段跳表的边界值反馈给所述路由数组。
2.如权利要求1所述的方法,其特征在于,所述S302,包括如下步骤:S3021:根据流数据记录的关键字作为索引,通过分段确定算法确定对应索引所在的分段;S3022:到所在的分段中按照跳表的查找方法查询对应索引;S3023:取出索引指向的维表数据并返回。
3.如权利要求1所述的方法,其特征在于,所述S303,包括如下步骤:S3031:Gaia集群系统通过DataSet数据源查询外部存储系统,把新增维表数据摄入系统的网络缓冲区;S3032:把新增维表数据包装成ADD事件,把值发生改变的数据包装成MOD事件,把过期的脏数据包装成DEL事件,事件内部包含完整的维表数据,通过Hash分区分发给下游的关联计算算子;S3033:对事件做分类处理,首先按照定位新增维表数据在缓存中的位置,对于ADD事件,执行插入,对于MOD事件,执行更新,对于DEL事件,执行删除;S3034:调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把分段跳表的边界值反馈给所述路由数组;S3035:路由数组接收到分段跳表反馈的边界值后,确定新的p分位点覆盖掉旧的p分位点。
4.Gaia集群中面向数据分布特征的维表缓存管理系统,其特征在于,包括数据分布特征提取模块和缓存管理模块;缓存索引结构,称为多路平衡跳表,由一个大小固定为2p-1的路由数组和p个大小均衡的分段跳表构成,其中,参数p由用户通过配置文件或者API接口指定;所述数据分布特征提取模块,用于提取维表数据的分布特征信息,具体地,通过抽样算法从维表数据中抽取数据样本,然后统计样本数据的p分位点,样本数据的p分位点能够代表全量维表数据的分布特征;缓存管理模块分为缓存构建子模块、缓存查询子模块和缓存更新子模块,用于建立起一套从构建到查询再到增量更新的全周期分布式缓存管理机制;所述缓存构建子模块,用于根据数据分布特征提取模块统计的p分位点,完成路由数组的初始化;还用于根据分段确定方法,为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引;所述缓存查询子模块,采用缓存查询方法,在维表关联计算任务的执行过程中,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据;所述缓存更新子模块,采用p个分段跳表之间的平衡调整方法,对维表数据缓存的增量更新;缓存更新子模块调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把边界值反馈给路由数组;Gaia集群系统通过DataSet数据源把维表数据摄入系统的网络缓冲区,并通过API接口指定维表数据的主键列作为关键字;DataSet数据源计算关键字的Hash值,通过Hash分区的方法把维表数据分发给下游的关联计算算子;所述数据分布特征提取模块,包括如下功能:通过抽样算法从采集维表数据中抽取样本数据,然后统计样本数据的p分位点,样本数据的p分位点用于代表全量维表数据的分布特征;样本数据的p分位点随着网络缓冲区内的维表数据一起发往下游的关联算子;所述缓存构建子模块,包括如下功能:所述缓存构建子模块收到样本数据的p分位点后,调用路由数组的初始化方法完成针对路由数组的初始化;对于后续维表数据的到来,缓存构建子模块调用分段确定方法,确定每条维表数据所属分段;缓存构建子模块采用索引建立方法,在所述分段跳表中为每条维表数据建立对应的索引。
5.如权利要求4所述的系统,其特征在于,所述缓存查询子模块,包括如下功能:缓存查询子模块,用于根据流数据记录的关键字,通过分段确定算法确定对应索引所在的分段,在所在的分段中按照跳表的查找方法查询对应索引,然后取出索引指向的维表数据并返回。
6.如权利要求5所述的系统,其特征在于,所述缓存更新子模块,包括如下功能:Gaia集群系统通过DataSet数据源查询外部存储系统,把新增维表数据摄入系统;缓存更新子模块把新增维表数据包装成ADD事件,把值发生改变的数据包装成MOD事件,把过期的脏数据包装成DEL事件,事件内部包含完整的维表数据,通过Hash分区分发给下游的关联计算算子,使用和特征提取模块相同的Hash函数;缓存更新子模块对接收的事件并做分类处理,定位新增维表数据在缓存中的位置,对于ADD事件,执行插入,对于MOD事件,执行更新,对于DEL事件,执行删除;路由数组接收到分段跳表反馈的边界值后,确定新的p分位点覆盖掉旧的p分位点。



