基于数据服务平台的时序数据持久化的方法及系统与流程

文档序号:34602212发布日期:2023-06-29 01:12阅读:23来源:国知局
本发明涉及时序数据库,具体地说是一种基于数据服务平台的时序数据持久化的方法及系统。
背景技术
::1、浪潮数据服务平台(inspur kaiwu data platform,简称kdp),kdp是浪潮开务数据库公司研发的以多模数据库为核心的数据中台产品,面向数字能源等多种场景。在数字能源场景中,设备终端多,设备类型多,每秒钟产生的数据量多,要求kdp支撑每秒钟上千万甚至上亿的写入能力,并对采集到的海量数据进行高效稳定的存储。2、在大数据广泛应用的大环境下,积极探索互联网、大数据、云平台等信息技术与能源技术的深度融合,发挥能源+大数据的核心优势,加快能源一体化新产业融合发展,挖掘大数据价值,形成大数据资产,打造了一个云边端协作的分布式新能源微电网管理平台。kdp作为数字能源管理平台的核心组件,以多模数据库znbase为核心,分别为云端多租户能量管理saas服务和边缘端能源路由器微电网管理系统提供数据和算法支撑。3、基于上述的场景,时序数据稳定且高效的存储对查询响应起到了举足轻重的作用。故如何提高数据服务平台总时序数据的查询性能,同时提高文件利用率是目前亟待解决的技术问题。技术实现思路1、本发明的技术任务是提供一种基于数据服务平台的时序数据持久化的方法及系统,来解决如何提高数据服务平台总时序数据的查询性能,同时提高文件利用率的问题。2、本发明的技术任务是按以下方式实现的,一种基于数据服务平台的时序数据持久化的方法,该方法是将采集到的时序数据写入内存中,在内存中按固定大小分成多个block填充,当block写满后,将数据filsh写入到文件系统中;具体如下:3、定义文件结构:包括数据文件.data和索引文件.idx;4、行式数据转列式数据;5、按列压缩:配置compress参数,用于是否开启压缩;同时每列根据数据类型使用不同的压缩算法,提高压缩效率;6、将压缩后的数据持久化到文件系统。7、作为优选,数据文件.data包括各个表的block,每个block的开始部分是blockheader,记录对应block的索引信息,以便系统异常宕机内存中当前分区索引未全部落盘恢复索引;block header之后是每个列的列信息zcolinfo,记录列的id、数据类型、偏移量、长度、预聚合结果及bitmap[],根据偏移量及长度定位任一列数据在文件中的位置,根据列类型使用相应的解压缩算法获取原始列数据,bitmap[]中每个bit标识列值是否为空。8、更优地,索引文件.idx的开始部分记录表索引的开始位置、长度以及表的个数信息,表索引的开始位置、长度以及表的个数信息之后是按照table id排序的表索引,表索引之后为每个表的块索引,同一个表的块索引是连续的,表索引记录对应表第一条块索引在索引文件中的位置;9、当block追加写入成功后,更新内存中的块索引信息,再定时将内存中的索引信息写入索引文件;10、若系统宕机时,内存中的最新索引信息未及时下盘时,根据数据文件.data中的block header重建内存索引。11、更优地,行式数据转列式数据具体如下:12、(1)、获取block对应的元数据信息;其中,元数据信息包括表的列数、列的类型和列id;13、(2)、从block中逐行获取数据:若当前读取到第n行,根据对应的元数据信息遍历解析第n行的每一列;14、(3)、判断所有行是否遍历解析完毕:15、①、若是,则结束;16、②、若否,则执行步骤(4);17、(4)、依次读取对应解析行的每一列;18、(5)、判断该解析行当前列值初始值是否为null:19、①、若是,则执行步骤(6);20、②、若否,则跳转至步骤(8);21、(6)、该解析行当前列值value是否为null:22、①、若是,则跳转至步骤(4);23、②、若否,则执行步骤(7);24、(7)、根据列类型type和block中总行数row_count,获取该列存所需要空间大小sizeof(type)*count,并申请临时空间pdata;25、(8)、将列值value插入临时空间pdata中,并设置bitmap;其中,列值value根据列类型读取;26、(9)、判断该解析行所有的列是否解析完毕:27、①、若是,则跳转至步骤(2);28、②、若否,则跳转至步骤(4)。29、更优地,按列压缩具体如下:30、根据所有非空列的原始数据总长度申请压缩数据空间;31、从第0列(时间戳列)开始遍历,获取第0列的对象指针;32、判断该列长度是否为0:33、若该列长度为0,则处理下一列;34、若该列长度不为0,则再判断是否开启压缩选项:35、若未开启压缩,则直接将原始列数据拷贝到底层存储;36、若开启压缩,则根据数据类型选择对应的压缩算法压缩;37、判断是否开启了二级压缩:38、若开启了二级压缩,则再进行二级通用压缩,同时更新列信息中该列数据在block中的偏移量和长度,继续遍历非空列进行压缩,直到所有列处理完毕,最后将压缩后的数据持久化到文件系统39、更优地,持久化到文件系统具体如下:40、将压缩后的数据持久化到block队列中,flush线程从队列中依次持久化;41、一个flush刷盘流程结束,需要更新内存中的索引结构,根据block对应的table_id(与uuid对应)更新内存中的块索引;定时将内存中的索引写入索引文件,因内存索引写入文件为覆盖写,为避免写入失败损坏原有文件,先将原索引文件rename为同名的隐藏文件,内存索引写入新的索引文件,写入成功删除隐藏文件。42、一种基于数据服务平台的时序数据持久化的系统,该系统包括,43、文件结构定义单元,用于定义数据文件.data和索引文件.idx;44、转换单元,用于行式数据转列式数据;45、压缩单元,用于配置compress参数,判断是否开启压缩;同时每列根据数据类型使用不同的压缩算法,提高压缩效率;46、持久化单元,用于将压缩后的数据持久化到文件系统。47、作为优选,数据文件.data包括各个表的block,每个block的开始部分是blockheader,记录对应block的索引信息,以便系统异常宕机内存中当前分区索引未全部落盘恢复索引;block header之后是每个列的列信息zcolinfo,记录列的id、数据类型、偏移量、长度、预聚合结果及bitmap[],根据偏移量及长度定位任一列数据在文件中的位置,根据列类型使用相应的解压缩算法获取原始列数据,bitmap[]中每个bit标识列值是否为空;48、索引文件.idx的开始部分记录表索引的开始位置、长度以及表的个数信息,表索引的开始位置、长度以及表的个数信息之后是按照table id排序的表索引,表索引之后为每个表的块索引,同一个表的块索引是连续的,表索引记录对应表第一条块索引在索引文件中的位置;49、当block追加写入成功后,更新内存中的块索引信息,再定时将内存中的索引信息写入索引文件;50、若系统宕机时,内存中的最新索引信息未及时下盘时,根据数据文件.data中的block header重建内存索引;51、所述转换单元的工作过程具体如下:52、(1)、获取block对应的元数据信息;其中,元数据信息包括表的列数、列的类型和列id;53、(2)、从block中逐行获取数据:若当前读取到第n行,根据对应的元数据信息遍历解析第n行的每一列;54、(3)、判断所有行是否遍历解析完毕:55、①、若是,则结束;56、②、若否,则执行步骤(4);57、(4)、依次读取对应解析行的每一列;58、(5)、判断该解析行当前列值初始值是否为null:59、①、若是,则执行步骤(6);60、②、若否,则跳转至步骤(8);61、(6)、该解析行当前列值value是否为null:62、①、若是,则跳转至步骤(4);63、②、若否,则执行步骤(7);64、(7)、根据列类型type和block中总行数row_count,获取该列存所需要空间大小sizeof(type)*count,并申请临时空间pdata;65、(8)、将列值value插入临时空间pdata中,并设置bitmap;其中,列值value根据列类型读取;66、(9)、判断该解析行所有的列是否解析完毕:67、①、若是,则跳转至步骤(2);68、②、若否,则跳转至步骤(4);69、压缩单元是根据所有非空列的原始数据总长度申请压缩数据空间;从第0列(时间戳列)开始遍历,获取第0列的对象指针;70、判断该列长度是否为0:71、若该列长度为0,则处理下一列;72、若该列长度不为0,则再判断是否开启压缩选项:73、若未开启压缩,则直接将原始列数据拷贝到底层存储;74、若开启压缩,则根据数据类型选择对应的压缩算法压缩;75、判断是否开启了二级压缩:76、若开启了二级压缩,则再进行二级通用压缩,同时更新列信息中该列数据在block中的偏移量和长度,继续遍历非空列进行压缩,直到所有列处理完毕,最后将压缩后的数据持久化到文件系统;77、持久化单元是将压缩后的数据持久化到block队列中,flush线程从队列中依次持久化;一个flush刷盘流程结束,需要更新内存中的索引结构,根据block对应的table_id(与uuid对应)更新内存中的块索引;定时将内存中的索引写入索引文件,因内存索引写入文件为覆盖写,为避免写入失败损坏原有文件,先将原索引文件rename为同名的隐藏文件,内存索引写入新的索引文件,写入成功删除隐藏文件。78、一种电子设备,包括:存储器和至少一个处理器;79、其中,所述存储器上存储有计算机程序;80、所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如上述的基于数据服务平台的时序数据持久化的方法。81、一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如上述的基于数据服务平台的时序数据持久化的方法。82、本发明的基于数据服务平台的时序数据持久化的方法及系统具有以下优点:83、(一)本发明为减少时序数据落盘后的磁盘空间,块数据落盘前需要做压缩处理。列式存储因为每列的数据类型是相同的,相比行式存储具有更好的压缩比,所以列存方式存储,占用空间少;84、(二)本发明将采集到的时序数据首先写到内存中,在持久化的过程中,进行优化,包括行式数据转列式数据,按列压缩,通过构建列式数据存储压缩写入,优化了数据的存储方式,提高了查询的响应;85、(三)本发明通过测试查询性能和文件利用率比行存直接拷贝入库各提升10%和15%。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1