计算;推算;计数设备的制造及其应用技术1.本发明涉及分布式数据库技术领域::,具体地说是时序引擎内存管理方法及系统。背景技术:::2.当前我国正处于经济与社会飞速发展的重要阶段,在实现工业化、信息化及城镇化的过程中,面临着多方面的挑战,例如,能源与环境同温室气体排放之间的矛盾、以及资源与能源在开发、利用效率上的平衡等等。针对工业园区、医院、大学、机场等在运行管理中的节能减排需求,利用大数据、物联网、云计算等技术,围绕新能源微网控制、节能低碳、储能用能、多能互补、智能运维、实时监控、充电网能量管理、碳资产管理等场景应用,为用户打造数字化能源管理平台,提升用户的综合能源和碳资产管理能力,助力企业降本增效。数字能源管理平台是一个云边端协作的分布式新能源微电网管理平台。zdp作为数字能源管理平台的核心组件,以分布式多模数据库znbase为核心,分别为云端多租户能量管理saas服务和边缘端能源路由器微电网管理系统提供数据和算法支撑。3.基于上述的场景,当前znbase支持oltp和olap的多模,需要开发时序引擎各自部署在云边端完成时序数据的存储和同步。云边端的设计架构决定系统是一个多进程任务,多进程之间通信需要共享内存的方式,如何提升时序引擎内存申请和释放的效率,避免内存碎片和内存泄漏,是需要解决的技术问题。技术实现要素:4.本发明的技术任务是针对以上不足,提供时序引擎内存管理方法及系统,来解决如何提升时序引擎内存申请和释放的效率,避免内存碎片和内存泄漏的技术问题。5.第一方面,本发明一种时序引擎内存管理方法,基于apachearrow对时序引擎的内存进行管理,包括如下步骤:6.在时序引擎的内存模块中,通过apachearrow为objecttable分配数据缓存区buffer,所述objecttable用于存储对象的时序数据;7.在向所述数据缓存区buffer写入数据时,将所述数据缓存区buffer强转为不同类型的arraydata;8.所述数据缓存区buffer内划分有多个存储空间,基于指针右移动的方式向所述数据缓存区buffer写入数据,写入数据时执行如下:9.当前的存储空间写满后,将当前的存储空间生成block添加到objectblock容器中,block是构成memtable的基本单元,写入数据过程中,所述objecttable标记为memtable,为可写状态;10.当memtable中写满数据后,将memtable生成immumemtable,所述immumemtable为不可写状态,并将immumemtable写到vector内,等待刷盘持久化,待写入进程结束,创建新的memtable。11.作为优选,通过第一分配方法为objecttable分配数据缓存区buffer,所述第一分配方法为:12.使用apachearrow申请整片内存区域;13.通过allocate()切分所述内存区域给不同schema的objecttable使用。14.作为优选,通过第二分配方法为objecttable分配数据缓存区buffer,所述第二分配方法为:15.通过arrow.allocate()申请内存,在memtable中记录已经分配的arrow的内存数量。16.作为优选,通过第二分配方法为为objecttable分配数据缓存区buffer后,向所述数据缓存区buffer内写入数据时,构建数据的索引并将索引作为头指针写入所述数据缓存区buffer内。17.第二方面,本发明一种时序引擎内存管理系统,执行如第一方面任一项所述的时序引擎内存管理方法,所述系统包括:18.内存分配模块,所述内存分配模块用于通过apachearrow、在时序引擎的内存模块中为objecttable分配数据缓存区buffer,所述objecttable用于存储对象的时序数据;19.类型转换模块,所述类型转换模块用于在向所述数据缓存区buffer写入数据时,将所述数据缓存区buffer强转为不同类型的arraydata;20.数据写入模块,所述数据写入模块用于在所述数据缓存区buffer内划分有多个存储空间,用于基于指针右移动的方式向所述数据缓存区buffer写入数据,写入数据时用于执行如下:21.当前的存储空间写满后,将当前的存储空间生成block添加到objectblock容器中,block是构成memtable的基本单元,写入数据过程中,所述objecttable标记为memtable,为可写状态;22.当memtable中写满数据后,将memtable生成immumemtable,所述immumemtable为不可写状态,并将immumemtable写到vector内,等待刷盘持久化,待写入进程结束,创建新的memtable。23.作为优选,所述内存分配模块用于通过第一分配方法为objecttable分配数据缓存区buffer,所述第一分配方法为:24.使用apachearrow申请整片内存区域;25.通过allocate()切分所述内存区域给不同schema的objecttable使用。26.作为优选,所述内存分配模块用于通过第二分配方法为objecttable分配数据缓存区buffer,所述第二分配方法为:27.通过arrow.allocate()申请内存,在memtable中记录已经分配的arrow的内存数量。28.作为优选,对于通过第二分配方法为objecttable分配的数据缓存区buffer,向所述数据缓存区buffer内写入数据时,所述写入模块用于构建数据的索引并将索引作为头指针写入所述数据缓存区buffer内。29.本发明的时序引擎内存管理方法及系统具有以下优点:30.1、apachearrow的内存使用体现了基于较粗粒度的按需分配,要处理的数据都是大块的,无需高频申请与删除内存,几乎没有内存碎片;31.2、apachearrow独有的内存数组集合(记录批处理),可用于消息传递和进程间的通信,方便共享内存的实现;32.3、基于apachearrow的时序引擎内存管理,该方法通过测试,比之前自定义封装内存方法,写入和查询的性能各提升10%和15%。附图说明33.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。34.下面结合附图对本发明进一步说明。35.图1为apachearrow内存管理的结构框图;36.图2为实施例1一种时序引擎内存管理方法的流程框图。具体实施方式37.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。38.本发明实施例提供时序引擎内存管理方法及系统,用于解决如何提升时序引擎内存申请和释放的效率,避免内存碎片和内存泄漏的技术问题。39.实施例1:40.apachearrow是基于valuevector来实现的,而使用valuevector可以减少运算时重复访问数据带来的成本。这种存储方式有o(1)的访问速度,可以有效地缓存,而且,在valuevector中的信息可以直接在不同的项目之间传递,不依赖于所使用的编程语言。41.在arrow中,具体在系统中申请和释放内存的策略还是基于ptmalloc、tcmalloc以及jemalloc,可以通过参数选择,封装内存池,对外提供分配和释放内存的接口。如果需要自己实现内存池进行内存管理,只需要继承内存池基类memorypool,实现定义的接口即可。每次分配和释放的时候,变量bytes_allocated_记录该内存池分配出去的内存大小。42.在arrow中,数据缓冲区buffer是对内存数据块的抽象,包含内存块的指针和长度,上层的具体类型存储数据的内存区域都可以通过buffer来表示。上层的具体类型的基类被封装成arraydata来表示。具体实现类图可见图1。43.从数据集成的角度来看,apachearrow对内存池和缓冲区进行了抽象,封装了一系列的接口,开发者可以直接调用接口申请和使用内存,用完的内存调用接口回收,无需直接面对系统内存进行开发使用,大大减少了内存碎片化和泄露的风险。44.本发明一种时序引擎内存管理方法,基于apachearrow对时序引擎的内存进行管理,包括如下步骤:45.s100、在时序引擎的内存模块中,通过apachearrow为objecttable分配数据缓存区buffer,所述objecttable用于存储对象的时序数据。46.步骤s100在时序引擎的内存模块中apachearrow分配内存。分配方案有两种。47.第一种分配方式为:先使用arrow申请整片内存区,然后allocate()切分该内存区域给不同schema的objecttable使用。优点是内存连续,缺点是容易导致内存分配失败。48.第二种分配方式为:每个objecttable使用时,用arrow.allocate()申请内存,在memtable中记录已经分配的arrow的内存数量。优点是内存不够用时,直接进行下个memtable的内存申请,不会导致失败,缺点是memtable中内存区域不连续。49.s200、在向所述数据缓存区buffer写入数据时,将所述数据缓存区buffer强转为不同类型的arraydata。50.s300、所述数据缓存区buffer内划分有多个存储空间,基于指针右移动的方式向所述数据缓存区buffer写入数据。51.在写入数据过程中,数据写满该块内存后,生成block添加到objectblock(用来存储对象某个时间段内的时序数据)容器中,block是构成memtable的基本单元,待memtable写满之后生成immumemtable写到vector内,等待刷盘持久化,待写入进程结束,创建新的memtable。这就是整个基于apachearrow的时序引擎内存管理流程。52.考虑到第二种内存分配方法的弊端,通过第二分配方法为为objecttable分配数据缓存区buffer后,向所述数据缓存区buffer内写入数据时,构建数据的索引并将索引作为头指针写入所述数据缓存区buffer内,通过索引可以加速数据的查询。53.本实施例的方法首先调用allocatebuffer在系统内存中申请一部分内存用于存储固定行数的数据,拿到该块内存的头指针,数据首先写到该块内存中生成activememtable(可写),待activememtable写满后生成imumemtable(不可写),等待落盘到文件。54.实施例2:55.本发明一种时序引擎内存管理系统,包括内存分配模块、类型转换模块、以及数据写入模块,该系统可执行实施例1公开的方法对时序引擎进行内存管理。56.内存分配模块用于通过apachearrow、在时序引擎的内存模块中为objecttable分配数据缓存区buffer,所述objecttable用于存储对象的时序数据。57.本实施例中,内存分配模块支持两种分配方案。58.第一种分配方式为:先使用arrow申请整片内存区,然后allocate()切分该内存区域给不同schema的objecttable使用。优点是内存连续,缺点是容易导致内存分配失败。59.第二种分配方式为:每个objecttable使用时,用arrow.allocate()申请内存,在memtable中记录已经分配的arrow的内存数量。优点是内存不够用时,直接进行下个memtable的内存申请,不会导致失败,缺点是memtable中内存区域不连续。60.类型转换模块用于在向所述数据缓存区buffer写入数据时,将所述数据缓存区buffer强转为不同类型的arraydata。61.数据写入模块用于在所述数据缓存区buffer内划分有多个存储空间,用于基于指针右移动的方式向所述数据缓存区buffer写入数据,写入数据时用于执行如下:62.(1)当前的存储空间写满后,将当前的存储空间生成block添加到objectblock容器中,block是构成memtable的基本单元,写入数据过程中,所述objecttable标记为memtable,为可写状态;63.(2)当memtable中写满数据后,将memtable生成immumemtable,所述immumemtable为不可写状态,并将immumemtable写到vector内,等待刷盘持久化,待写入进程结束,创建新的memtable。64.考虑到第二种内存分配方式的弊端,如果数据写入模块向通过第二分配方式分配的数据缓存区buffer,向所述数据缓存区buffer内写入数据时,构建数据的索引并将索引作为头指针写入所述数据缓存区buffer内,通过索引可以加速数据的查询。65.本实施例的系统调用allocatebuffer在系统内存中申请一部分内存用于存储固定行数的数据,拿到该块内存的头指针,数据首先写到该块内存中生成activememtable(可写),待activememtable写满后生成imumemtable(不可写),等待落盘到文件。66.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。当前第1页12当前第1页12
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
时序引擎内存管理方法及系统与流程 专利技术说明
作者:admin
2022-12-06 20:37:37
808
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术
- 下一篇: 一种木片表面缺陷的自动化识别系统及方法 专利技术说明
- 上一篇: 浮动卡钳的制作方法 专利技术说明