一种基于HDF5的分块式数据存储及读取方法技术

技术编号:20819396 阅读:34 留言:0更新日期:2019-04-10 05:48
本发明专利技术公开了一种基于HDF5的分块式数据存储及读取方法,运行于Linux操作系统,使用HDF5分层数据格式,设计复合数据类型的分块属性数据集,对一次放电时间按照1s的长度进行分割,进行分块式存储与读取,以实现实时数据存储与数据读取;使用HDF5的可视化工具Hdfview查看存储的数据及属性,Qt读取HDF5文件,并进行波形显示与分析。本发明专利技术将分层数据格式HDF5应用于存储和管理数据的模型中,其数据存储规模可以无限大,具有可移植性。

【技术实现步骤摘要】
一种基于HDF5的分块式数据存储及读取方法
本专利技术涉及电源的数据存储与读取,具体是一种基于HDF5的分块式数据存储及读取方法。
技术介绍
EAST(ExperimentalAdvancedSuper-conductingTokamak)超导托卡马克聚变实验装置是国家九五重大科学工程,极向场电源系统是EAST装置的核心子系统之一,它为等离子体的产生、约束、维持、加热、以及等离子体电流、位置、形状的控制,提供必要的工程基础和控制手段。极向场电源系统由12套电源组成,每套电源主要有AC/DC整流器、晶闸管开关网络、失超保护系统、隔离开关组成。目前极向场电源系统没有独立的数据存储与显示系统,而极向场在EAST装置中有着非常重要的作用,所以需研制一套适合极向场电源的数据存储与显示。极向场电源系统有接近200道信号,每个信号按照4个字节计算,数据采集频率为10KHz,放电时长为100s时的总数据量为800MB,放电时长为1000s时的数据量为8GB。如此庞大的数据量,并且具有脉冲特性的信号存储,关系数据库或者非关系数据库等不能满足需求,而MDSplus和HDF5都是存储长脉冲大数据的数据库,国际热核聚变ITER(InternationalThermonuclearExperimentalReactor)使用HDF5存储数据,为了与国际接轨,我们也将使用HDF5存储EAST极向场电源系统的所有数据。分层数据格式HDF5实现了一种用于存储和管理数据的模型。HDF5旨在为诸如地球科学和气象学等领域提供通用数据格式。HDF5数据以分级格式存储,并且数据模型支持各种各样的数据类型和数据空间组织。HDF5提供Java、C和FORTRAN数据访问库,本文使用C接口库。数据存储规模可以无限大,具有可移植性,HDF5库没有限制存储数据文件大小,数据文件的内部组织结构可以任意复杂。HDF5库数据模型具有简单、通用的特点。HDF5文件包含两个主要结构:组(group)和数据集(dataset)。为了方便数据的组织,HDF5文件通过组的方式组织成树状结构,每个组都是树的节点。分组结构包含零个或多个组或数据集的实例。每一个数据集包含两部分的数据,元数据(Metadata)和多维数组(Data)。其中元数据包含多维数组相关的信息,比如维度信息、数据类型、属性等,而多维数组则包含数据本身。
技术实现思路
本专利技术是为了完善EAST极向场电源系统,提供一种基于HDF5的分块式数据存储及读取方法。本专利技术是通过以下技术方案实现的:一种基于HDF5的分块式数据存储及读取方法,其特征在于包括以下步骤:(1)当放电开始时,创建HDF5文件,创建数据空间,设置分块属性,创建复合数据类型,使用所述分块属性和复合数据类型创建数据集;(2)将一次放电时长按照1s的长度进行分割,循环存储数据,存储线程记当前存储的数据为第N块,接收数据线程根据TCP协议接收数据并存储到缓存中,当1s数据搜集完成时,存储线程将第N块数据写入到HDF5文件,接收数据线程则开始搜集第N+1块的数据,读取线程打开HDF5文件,打开数据集,获取数据空间,获取数据集维度,获取数据类型,然后等待存储线程发送的标志位;(3)当第N块数据写完成后,存储线程发送标志位以及块索引号到读取线程,读取线程获取第N块数据集属性,并根据块索引号选择第N块,实现实时数据读取;(4)通过HDF5的可视化工具Hdfview查看存储的数据,通过Qt读取HDF5文件,并绘制和分析波形。所述的一种基于HDF5的分块式数据存储及读取方法,其特征在于:所述复合数据类型包括整形、浮点型和长整形数据类型。本专利技术的优点是:本专利技术将分层数据格式HDF5应用于存储和管理数据的模型中,其数据存储规模可以无限大,具有可移植性,HDF5库没有限制存储数据文件大小,数据文件的内部组织结构可以任意复杂,HDF5库具有C/C++、Java、Fortran90程序接口,支持在不同计算环境中访问数据。本专利技术采用的HDF5具有通用的数据模型、高效灵活的I/O机制、灵活的数据存储机制、多样化的数据类型,并且HDF5读写数据效率很高。EAST不定期放电的特点,使得极向场电源信号具有脉冲特性,普通的关系数据库或者非关系数据库不适合脉冲信号的存储。本专利技术对HDF5存储脉冲信号的研究,将应用在EAST极向场电源系统中,使EAST在数据存储方面与ITER接轨。HDF5数据格式对文件大小不进行限制,可存储文件大小取决于硬件,而不是HDF5本身,所以后续会搭建存储服务器,专门用于放置HDF5文件。附图说明图1为测试程序总体框架。图2为复合数据类型与分块属性的数据集设计图示。图3(a)为分块写数据占用时间测试图。图3(b)为分块读数据占用时间测试图。图4(a)为Hdfview工具查看数据集示意图。图4(b)为Qt读取HDF5文件的波形显示图。具体实施方式如图1、2、3、4所示,一种基于HDF5的分块式数据存储及读取方法,通过设计复合数据类型的分块属性数据集,对一次放电时长按照1s的长度进行分割,进行分块式存储与读取,以实现实时数据存储与读取,具体步骤为:(1)当放电开始时,创建HDF5文件,创建数据空间,设置分块属性,创建复合数据类型5,使用所述分块属性和复合数据类型创建数据集4;(2)将一次放电时长按照1s的长度进行分割,循环存储数据,存储线程2记当前存储的数据为第N块,接收数据线程1根据TCP协议接收数据并存储到缓存中,当1s数据搜集完成时,存储线程2将第N块数据写入到HDF5文件,接收数据线程1则开始搜集第N+1块的数据,读取线程3打开HDF5文件,打开数据集4,获取数据空间,获取数据集维度,获取数据类型,然后等待存储线程发送的标志位;(3)当第N块数据写完成后,存储线程2发送标志位以及块索引号到读取线程3,读取线程3获取第N块数据集属性,并根据块索引号选择第N块,实现实时数据读取;(4)通过HDF5的可视化工具Hdfview查看存储的数据,通过Qt读取HDF5文件,并绘制和分析波形。数据集4是HDF5最重要的部分,数据类型是数据集必不可少的属性,本专利技术设计复合数据类型5,数据类型包括单一数据类型和复合数据类型,而脉冲电源的信号很多,拥有多个数据类型,所以设计包括整形、浮点型和长整形的复合数据类型5。EAST极向场电源有200路采集信号,还有时间戳信号和块索引号,共202路信号,设计图2中的复合数据类型。EAST放电时长已超过100s,要求放电时能够实时显示波形,所以设计分块属性数据集。将一次放电时长按照1s的长度进行分割,当前数据记为第N块,当1s数据搜集完成,则存储线程2将数据写入HDF5文件,接收数据线程1则开始搜集第N+1块的数据,读取线程3读取第N块数据,通过该方式实现实时数据存储与读取。实现上述分块存储,需要将数据集设置为分块方式。数据采集频率为10KHz,1s内每个信号有10000个数据点,所以将块维度设置为10000。对于100s放电时长,每写入一块数据,数据集维度增加10000,即数据集维度不断增加,最大值为1000000,如图1和图2所示。数据采集频率为10KHz,1s写一次数据,写入数据集202路信号,计算得写入一次数据为8MB,如图3本文档来自技高网
...

【技术保护点】
1.一种基于HDF5的分块式数据存储及读取方法,其特征在于包括以下步骤:(1)当放电开始时,创建HDF5文件,创建数据空间,设置分块属性,创建复合数据类型,使用所述分块属性和复合数据类型创建数据集;(2)将一次放电时长按照1s的长度进行分割,循环存储数据,存储线程记当前存储的数据为第N块,接收数据线程根据TCP协议接收数据并存储到缓存中,当1s数据搜集完成时,存储线程将第N块数据写入到HDF5文件,接收数据线程则开始搜集第N+1块的数据,读取线程打开HDF5文件,打开数据集,获取数据空间,获取数据集维度,获取数据类型,然后等待存储线程发送的标志位;(3)当第N块数据写完成后,存储线程发送标志位以及块索引号到读取线程,读取线程获取第N块数据集属性,并根据块索引号选择第N块,实现实时数据读取;(4)通过HDF5的可视化工具Hdfview查看存储的数据,通过Qt读取HDF5文件,并绘制和分析波形。

【技术特征摘要】
1.一种基于HDF5的分块式数据存储及读取方法,其特征在于包括以下步骤:(1)当放电开始时,创建HDF5文件,创建数据空间,设置分块属性,创建复合数据类型,使用所述分块属性和复合数据类型创建数据集;(2)将一次放电时长按照1s的长度进行分割,循环存储数据,存储线程记当前存储的数据为第N块,接收数据线程根据TCP协议接收数据并存储到缓存中,当1s数据搜集完成时,存储线程将第N块数据写入到HDF5文件,接收数据线程则开始搜集第N+1块的数据,读取线程打开HDF5文件...

【专利技术属性】
技术研发人员:王广红黄连生高格傅鹏何诗英王泽京
申请(专利权)人:中国科学院合肥物质科学研究院
类型:发明
国别省市:安徽,34

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

1