时序引擎内存管理方法及系统技术方案

技术编号:35860750 阅读:14 留言:0更新日期:2022-12-07 10:50
本发明专利技术公开了时序引擎内存管理方法及系统,属于分布式数据库技术领域,要解决的技术问题为如何提升时序引擎内存申请和释放的效率,避免内存碎片和内存泄漏。包括如下步骤:通过Apache Arrow为ObjectTable分配数据缓存区Buffer;将数据缓存区Buffer强转为不同类型的ArrayData;基于指针右移动的方式向数据缓存区Buffer写入数据,写入数据时执行如下:当前的存储空间写满后,将当前的存储空间生成Block添加到ObjectBlock容器中;当MemTable中写满数据后,将MemTable生成ImmuMemTable,等待刷盘持久化,待写入进程结束,创建新的MemTable。MemTable。MemTable。

【技术实现步骤摘要】
时序引擎内存管理方法及系统


[0001]本专利技术涉及分布式数据库
,具体地说是时序引擎内存管理方法及系统。

技术介绍

[0002]当前我国正处于经济与社会飞速发展的重要阶段,在实现工业化、信息化及城镇化的过程中,面临着多方面的挑战,例如,能源与环境同温室气体排放之间的矛盾、以及资源与能源在开发、利用效率上的平衡等等。针对工业园区、医院、大学、机场等在运行管理中的节能减排需求,利用大数据、物联网、云计算等技术,围绕新能源微网控制、节能低碳、储能用能、多能互补、智能运维、实时监控、充电网能量管理、碳资产管理等场景应用,为用户打造数字化能源管理平台,提升用户的综合能源和碳资产管理能力,助力企业降本增效。数字能源管理平台是一个云边端协作的分布式新能源微电网管理平台。ZDP作为数字能源管理平台的核心组件,以分布式多模数据库ZNBase为核心,分别为云端多租户能量管理SaaS服务和边缘端能源路由器微电网管理系统提供数据和算法支撑。
[0003]基于上述的场景,当前ZNBase支持OLTP和OLAP的多模,需要开发时序引擎各自部署在云边端完成时序数据的存储和同步。云边端的设计架构决定系统是一个多进程任务,多进程之间通信需要共享内存的方式,如何提升时序引擎内存申请和释放的效率,避免内存碎片和内存泄漏,是需要解决的技术问题。

技术实现思路

[0004]本专利技术的技术任务是针对以上不足,提供时序引擎内存管理方法及系统,来解决如何提升时序引擎内存申请和释放的效率,避免内存碎片和内存泄漏的技术问题。
>[0005]第一方面,本专利技术一种时序引擎内存管理方法,基于Apache Arrow对时序引擎的内存进行管理,包括如下步骤:
[0006]在时序引擎的内存模块中,通过Apache Arrow为ObjectTable分配数据缓存区Buffer,所述ObjectTable用于存储对象的时序数据;
[0007]在向所述数据缓存区Buffer写入数据时,将所述数据缓存区Buffer强转为不同类型的ArrayData;
[0008]所述数据缓存区Buffer内划分有多个存储空间,基于指针右移动的方式向所述数据缓存区Buffer写入数据,写入数据时执行如下:
[0009]当前的存储空间写满后,将当前的存储空间生成Block添加到 ObjectBlock容器中,Block是构成MemTable的基本单元,写入数据过程中,所述ObjectTable标记为MemTable,为可写状态;
[0010]当MemTable中写满数据后,将MemTable生成ImmuMemTable,所述 ImmuMemTable为不可写状态,并将ImmuMemTable写到vector内,等待刷盘持久化,待写入进程结束,创建新的MemTable。
[0011]作为优选,通过第一分配方法为ObjectTable分配数据缓存区Buffer,所述第一分
配方法为:
[0012]使用Apache Arrow申请整片内存区域;
[0013]通过Allocate()切分所述内存区域给不同Schema的ObjectTable使用。
[0014]作为优选,通过第二分配方法为ObjectTable分配数据缓存区Buffer,所述第二分配方法为:
[0015]通过Arrow.Allocate()申请内存,在MemTable中记录已经分配的Arrow 的内存数量。
[0016]作为优选,通过第二分配方法为为ObjectTable分配数据缓存区Buffer 后,向所述数据缓存区Buffer内写入数据时,构建数据的索引并将索引作为头指针写入所述数据缓存区Buffer内。
[0017]第二方面,本专利技术一种时序引擎内存管理系统,执行如第一方面任一项所述的时序引擎内存管理方法,所述系统包括:
[0018]内存分配模块,所述内存分配模块用于通过Apache Arrow、在时序引擎的内存模块中为ObjectTable分配数据缓存区Buffer,所述ObjectTable用于存储对象的时序数据;
[0019]类型转换模块,所述类型转换模块用于在向所述数据缓存区Buffer写入数据时,将所述数据缓存区Buffer强转为不同类型的ArrayData;
[0020]数据写入模块,所述数据写入模块用于在所述数据缓存区Buffer内划分有多个存储空间,用于基于指针右移动的方式向所述数据缓存区Buffer写入数据,写入数据时用于执行如下:
[0021]当前的存储空间写满后,将当前的存储空间生成Block添加到 ObjectBlock容器中,Block是构成MemTable的基本单元,写入数据过程中,所述ObjectTable标记为MemTable,为可写状态;
[0022]当MemTable中写满数据后,将MemTable生成ImmuMemTable,所述 ImmuMemTable为不可写状态,并将ImmuMemTable写到vector内,等待刷盘持久化,待写入进程结束,创建新的MemTable。
[0023]作为优选,所述内存分配模块用于通过第一分配方法为ObjectTable分配数据缓存区Buffer,所述第一分配方法为:
[0024]使用Apache Arrow申请整片内存区域;
[0025]通过Allocate()切分所述内存区域给不同Schema的ObjectTable使用。
[0026]作为优选,所述内存分配模块用于通过第二分配方法为ObjectTable分配数据缓存区Buffer,所述第二分配方法为:
[0027]通过Arrow.Allocate()申请内存,在MemTable中记录已经分配的Arrow 的内存数量。
[0028]作为优选,对于通过第二分配方法为ObjectTable分配的数据缓存区Buffer,向所述数据缓存区Buffer内写入数据时,所述写入模块用于构建数据的索引并将索引作为头指针写入所述数据缓存区Buffer内。
[0029]本专利技术的时序引擎内存管理方法及系统具有以下优点:
[0030]1、ApacheArrow的内存使用体现了基于较粗粒度的按需分配,要处理的数据都是大块的,无需高频申请与删除内存,几乎没有内存碎片;
[0031]2、Apache Arrow独有的内存数组集合(记录批处理),可用于消息传递和进程间的通信,方便共享内存的实现;
[0032]3、基于Apache Arrow的时序引擎内存管理,该方法通过测试,比之前自定义封装内存方法,写入和查询的性能各提升10%和15%。
附图说明
[0033]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种时序引擎内存管理方法,其特征在于,基于Apache Arrow对时序引擎的内存进行管理,包括如下步骤:在时序引擎的内存模块中,通过Apache Arrow为ObjectTable分配数据缓存区Buffer,所述ObjectTable用于存储对象的时序数据;在向所述数据缓存区Buffer写入数据时,将所述数据缓存区Buffer强转为不同类型的ArrayData;所述数据缓存区Buffer内划分有多个存储空间,基于指针右移动的方式向所述数据缓存区Buffer写入数据,写入数据时执行如下:当前的存储空间写满后,将当前的存储空间生成Block添加到ObjectBlock容器中,Block是构成MemTable的基本单元,写入数据过程中,所述ObjectTable标记为MemTable,为可写状态;当MemTable中写满数据后,将MemTable生成ImmuMemTable,所述ImmuMemTable为不可写状态,并将ImmuMemTable写到vector内,等待刷盘持久化,待写入进程结束,创建新的MemTable。2.根据权利要求1所述的时序引擎内存管理方法,其特征在于,通过第一分配方法为ObjectTable分配数据缓存区Buffer,所述第一分配方法为:使用Apache Arrow申请整片内存区域;通过Allocate()切分所述内存区域给不同Schema的ObjectTable使用。3.根据权利要求1所述的时序引擎内存管理方法,其特征在于,通过第二分配方法为ObjectTable分配数据缓存区Buffer,所述第二分配方法为:通过Arrow.Allocate()申请内存,在MemTable中记录已经分配的Arrow的内存数量。4.根据权利要求3所述的时序引擎内存管理方法,其特征在于,通过第二分配方法为为ObjectTable分配数据缓存区Buffer后,向所述数据缓存区Buffer内写入数据时,构建数据的索引并将索引作为头指针写入所述数据缓存区Buffer内。5.一种时序引擎内存管理系统,其特征在于,执行如权利要求1

4任一项所述的时序引擎内...

【专利技术属性】
技术研发人员:魏力贾德星李盟
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1