稳态强磁场实验装置数据管理系统设计与实现

2023-12-24 10:34李芳张俊任亭亭黎伟
数据与计算发展前沿 2023年6期
关键词:强磁场磁体科学实验

李芳,张俊*,任亭亭,黎伟

1.中国科学院合肥物质科学研究院,强磁场科学中心,安徽 合肥 230031

2.强磁场安徽重点实验室,安徽 合肥 230031

引 言

国家重大科技基础设施又称为大科学装置,主要面向国家安全中的战略性、基础性和前瞻性科技问题而建设,是实现基础科学研究和多学科交叉研究前沿突破的重要基础[1]。近年来,国内外重大科技基础设施管理机构正逐步重视并加强对装置的信息化管理,特别是面向多学科领域、跨地域用户的公共实验装置平台,在内外部用户数据管理、实验运行执行数据管理、科学实验数据的存储与共享等方面均提出了应用需求[2-3]。例如,美国强磁场实验室基于FAIR(Findable,Accessible, Interoperable and Reusable)数 据 原则,设计并实现装置采集数据的可查找、可访问、可互操作以及可重复使用[4];日本J-PARC中子源构建了数据管理信息化基础设施,实现对装置原始数据、测量日志以及实验样本、实验方案、研究者等其他上下文信息的归档和按需检索[5];德国同步加速器ANKA 提出一种束线数据管理(BLDM)架构,支持数据收集、元数据聚合和数据摄入,并为摄取的数据提供归档、内容保存等服务[6];中国散裂中子源开发了一种分布式数据处理和分析环境,采用基于C/S模式的通信和数据缓存系统,提供2D/3D实验数据的分析和可视化显示[7];高海拔宇宙线观测站构建了分布式的数据获取处理架构,有效提升高能物理实验的数据收集和处理能力[8]。

稳态强磁场实验装置(Steady High Magnetic Field Facility,SHMFF)是国家重大基础设施之一,主要包括5 台高功率水冷磁体、4 台超导磁体、1台混合磁体,以及配套的科学实验测试设备以及技术装备系统[9]。该装置作为公共实验平台,为开展凝聚态物理、材料、生物学、生命科学等多类学科领域研究提供了重要的稳态强磁场实验平台[10]。目前,稳态强磁场装置提供在线方式实现用户账号申请、实验课题申请,而装置数据仍以分散存储、独立管理等方式为主,装置数据的检索与分析主要依靠在单机运行的数据分析系统。现有的装置实验管理与数据管理方式仅解决了实验课题审批与机时在线分配问题,缺乏实验前、中、后的全闭环、全生命周期在线管理,以及数据的高效检索、实验任务关联、数据在线分析等功能,不利于提升装置管理效率,发掘数据价值。

基于数据驱动的新规律、新现象的发现,已成为现代科学研究的新范式。作为重大的科技基础设施,大科学装置产生的数据及各类信息是核心的数字资产,数据的高效收集、共享和利用,有助于提升装置的运行价值和前沿交叉合作。稳态强磁场装置所产生的数据主要包括科学实验数据和装置运行数据两大类,其中科学实验数据是实验用户利用磁体搭配的输运、磁性、磁光、极低温等各类测试系统,采集样本在强磁场环境下的实验测试数据;装置运行数据是装置启动、运行、退出的全过程中,由中央控制系统实时采集的装置关键状态数据[11],以实现对装置的运行监测,并追溯分析装置运行过程中出现的故障。从数据用途及使用对象上来看,科学实验数据主要面向实验用户,用于分析样品在强磁场条件下产生的实验现象;装置运行数据主要面向装置运维人员,用于记录装置运行状态以及分析故障。因此,在装置数据管理上,有必要根据两类数据的特点提供不同管理功能。

稳态强磁场实验装置数据管理系统提供科学实验数据的元数据管理、装置运行数据的检索及波形展示功能。系统基于B/S技术架构,采用Express 框架、ORM框架和MySQL、Elasticsearch数据库进行设计开发,集成元数据目录管理开源项目SciCat,并支持数据接入结构的灵活扩展,提供基于Web的用户统一身份认证与系统访问,同时满足实验人员与运维人员的使用需求。

1 系统架构

系统在架构设计上遵循结构分层、服务隔离的原则和模式,在系统横向维度可分为负载分配层、前端应用层、业务服务层、数据存储层;在纵向维度根据系统功能划分为实验数据管理、实验流程管理、装置运行数据管理。系统主要由数据监测采集器、实验元数据提取器、文件系统、数据库、实验数据服务、实验管理服务、装置运行数据服务、web前端等模块构成,其中,数据监测采集器通过监测装置中央控制系统产生的装置运行数据、科学测试设备产生的科学实验数据,触发相应的数据采集操作,将数据分别存储至数据库和文件系统;实验元数据提取器用于采集科学实验元数据,并提供给SciCat后端服务实现实验元数据的存储与检索;实验管理服务提供实验申请审批、过程管理、实验记录等主要业务功能,并通过与实验数据服务和装置数据服务交互,提供装置运行数据检索和波形绘制、科学实验数据检索和下载等操作。系统总体架构如图1所示。

图1 稳态强磁场实验装置数据管理系统架构Fig.1 Architecture of the SHMFF data management system

为提升系统扩展性和灵活性,各子系统后台服务支持独立部署,并通过统一的Web前端提供访问入口,系统的用户认证和权限分配利用单点登录实现。系统根据不同种类数据的特点,采用文件系统和3种数据库分别实现科学实验数据、实验元数据、装置运行数据、系统业务数据的存储访问。其中,科学实验数据和对应的元数据分别存储于文件系统和MongoDB 数据库,系统主业务数据存储于MySQL 数据库,装置运行数据存储于Elasticsearch数据库。

2 科学实验数据管理

2.1 SciCat开源数据目录管理系统

SciCat 是一个基于web 的开源数据目录管理系统,可用于管理实验设施中获取的原始数据和相应的元数据[12]。SciCat已在科研领域的多个大科学装置上得到应用,如欧洲散裂中子源[13]、瑞典MAX IV 光源[14]、北京高能同步辐射光源HEPS[15]等,它构建了元数据提交、存档、检索的完整技术架构,并支持数据集发布以及通过数字对象标识符(DOI)提供对外引用。SciCat 采用“前后端分离”架构,包括前端(frontend)Catanie和后端(backend)Catamel,其中前端基于Angular和Ngrx 开发,通过浏览器展示科学实验元数据目录应用,为科学实验元数据集的发布、存档等操作提供一个可检索的界面;后端基于Node.JS开发,提供科学实验元数据管理业务逻辑实现,并使用Loopback 框架提供REST API 的创建和访问。SciCat使用MongoDB数据库进行元数据存储,可适应元数据模型结构的变更和扩展。

稳态强磁场装置的科学数据管理模块基于SciCat开展设计研发,并采用单点登录技术实现统一的系统账户管理。在技术实现层面,科学数据管理主要包括元数据结构的设计,以及实验元数据的采集与存储。

2.2 科学实验元数据结构

装置科学实验数据主要来源于高场水冷磁体搭配的各类科学实验测试系统,包括多功能物性测量系统(PPMS)、电子自旋共振谱仪(ESR)、高场振动样品磁强计等10 余种测试设备,每年产生的科学实验数据量约在百GB量级。由于受磁体电源功率约束(28MW)和去离子水量限制,同一时间只能运行单台高场水冷磁体,因此实验数据的产生频次以及容量对于实验数据管理性能影响较小。在数据存储方面,实验测试设备生成实验数据后保存于设备上位机的本地磁盘,并可通过前期构建的HDFS 分布式文件系统提供长期存储。为进一步提升数据管理效率,本系统重点针对实验数据实现元数据的采集与管理。

稳态强磁场装置的科学实验元数据根据装置运行所需要管理的科学实验数据属性信息设计确定,主要包括实验管理属性、实验过程属性、实验数据属性、实验参数属性数据,并支持在此基础上进行扩展。科学实验元数据结构如表1所示。

表1 科学实验元数据结构Table 1 Metadata structure of scientific experiment data

2.3 科学实验元数据采集与存储

科学实验元数据来源多样,其中实验管理属性信息来自于提供实验申请审批业务流程的实验管理服务系统,实验过程属性信息来自于装置中央控制系统,实验数据属性信息来自于磁体搭载的科学实验测试系统,实验参数属性信息部分来自于装置中央控制系统、部分由实验管理人员配置。为建立起不同数据源之间的数据联系,各属性信息均以实验编号作为唯一标识进行关联:系统完成实验申请的审批后,生成唯一的实验编号并形成实验记录条目,同时在实验数据文件系统中创建本次实验数据的存储路径,路径名中包含实验编号、磁体编号、用户信息;装置控制系统管理人员在每次实验前,为实验用户写入一张用户卡,写卡信息包含实验编号、磁体编号、用户名称等,实验用户在控制系统用户站上通过读卡登录鉴权后即可启动实验;实验结束后,实验数据测量系统将本次实验生成的多个实验数据文件,归档到本次实验对应的文件系统存储路径中。

在科学实验元数据的采集与存储方面,由于实验管理服务系统同样是Web系统,可以直接调用SciCat 后端提供的REST API,将实验申请审批环节中获取的实验用户和课题信息等提交至SciCat后端;装置现有中央控制系统不支持直接调用REST API,需通过元数据提取器访问控制系统数据库,判断实验结束后则提取实验编号、磁体编号、实验开始时间、结束时间等信息,并在实验数据文件系统中查找满足实验编号、磁体编号的存储路径,再将该路径下的文件大小、路径、个数等信息进行提取,随后与实验启停时间等其他信息共同组装成符合接口通信规范的json 格式,提交至SciCat后端。元数据创建时所使用的SciCat 接口主要包括:/api/v3/Users、/api/v3/Proposals、/api/v3/Instrument、/api/v3/Datasets,分 别用于创建实验用户、实验课题、实验仪器设备、实验数据集合相关的元数据信息。接口API 调用成功后,MongoDB 数据库中相应的元数据记录将更新,用户即可从Web前端进行元数据的查询和访问。

鉴于元数据中的实验参数属性信息与实验人员实际设置的科学实验条件紧密相关,难以全部实现自动提取,并且表1中的实验参数属性结构不能完全覆盖不同实验的参数种类,因此,系统还支持通过手动编辑实验参数属性条目进行扩展。实验完成后,实验管理人员可以登录此系统,并对实验元数据进行编辑,包括新增或修改实验参数属性信息,以及修改实验数据集描述等内容。

3 装置运行数据管理

3.1 装置运行数据的解析与导入

稳态强磁场装置运行数据主要指由装置中央控制系统实时采集的、用于监控装置运行状态以及保障装置运行安全的关键参数。装置运行数据在实验启动到结束的全过程中进行采集,数据采集周期为5ms,以文本形式进行存储,并定期实施备份。装置运行数据以往只能通过基于Labview开发的本地查看工具进行读取和曲线绘制,不便于多人同时使用以及远程访问。为实现基于web方式的数据检索及可视化,需要对装置运行数据文本进行格式解析,并导入至数据库,以及提供数据的检索、在线调取与波形绘制。

数据监测采集器是一个独立运行的后台服务,会定期扫描装置运行数据文件所在的目录,并对符合文件命名规则且未导入的数据,自动解析并导入到Elasticsearch数据库。数据的监测及解析规则与数据文件的命名规则以及内部结构紧密相关。装置运行数据文件的命名规则为“[序号]_[装置名称]_[年]-[月]-[日][时]-[分]-[秒].txt”,如“1_WM5_2021-12-18 08-49-53.txt”,其中装置名称为磁体编号名,日期和时间对应实验启动的时刻。装置运行数据文件的内部结构为:第一行为实验开始时间,第二行为列数,第三行为字段名称,第四行至结尾均为采集的数据,示例如图2。装置运行数据具体包括磁体电流、电流变化率、电压、进出口水温、进出口水压、水流量、线圈电阻、线圈等效温度等数值。由于不同磁体具有不同线圈个数,因此线圈电阻、线圈等效温度等与线圈相关的参数个数并不固定,具体体现在数据文件的列数不同。

图2 装置运行数据结构Fig.2 The structure of facility operation data

装置运行数据以5 ms 为采集周期,每小时产生72 万行数据,按平均每次实验8 小时计算,单次实验数据达576 万行,按每年约250 个工作日,每日2 次实验,每年将产生约28.8 亿条记录。为提升数据库在海量数据下的查询性能,按照以下策略创建数据库索引与执行分片操作:

(1)创建数据索引。数据按“装置+年份”创建索引,确保每台磁体每年的索引记录数量控制在10 亿条左右,以便确保查询效率。索引的命名方式为[装置名称]_[年份],如:WM1_2021。

(2)创建采样索引。通过建立采样索引,可按不同采样频率对数据进行采样,在查询较大范围的数据时即可直接使用采样索引进行查询,由此减少扫描数据记录数,提升查询性能。

(3)对数据进行分片。过小的分片数会导致分片过大,不利于故障时的数据恢复,过大的分片数可能导致查询效率降低,此处将数据分片数设置为3。

数据索引的创建方式主要和系统的应用场景密切相关。由于本系统在装置运行数据查询方面的绝大多数应用场景是查询某个磁体单次实验的数据,而跨年查询的使用场景相对较少,因此按“装置+年份”方式建立索引,一方面便于查询管理数据,另一方面也能提供较高的查询性能。此外,Elasticsearch可支持跨索引查询,也能够应对跨年份或跨装置的查询需求,未来如这类查询应用需求激增,可进一步做针对性的性能提升。为确保系统的可扩展性和稳定性,Elasticsearch 在部署时采用集群模式(详见4.2 节),以便于在未来数据量更大时进行扩容。

3.2 装置运行数据的图形化展示

鉴于装置运行数据的图形化展示页面需要支持多种定制化功能,而Elasticsearch 配套的Graphite 或Kibana 等可视化工具难以直接提供相关功能,本系统采用了开源图表组件ECharts作为前端图表组件,通过二次开发实现装置运行数据的曲线绘制、局部放大/缩小、按不同级别的采样率逐级展示、选择局部区域统计计算、保存快照等功能,以满足装置运维人员的实际需求。由于单次实验的装置运行数据量庞大,还需要制定高效的数据读取策略。一个持续10小时的实验有720 万行数据记录,每行记录包括电流、电压、水温等20 个以上的数据项,总计将超过1 亿个数据点。后端服务无法在短时间向前端传送大量数据点,且浏览器也不支持如此海量的数据点绘制,数据直接加载将造成系统资源耗尽或浏览器崩溃。因此,在数据的曲线绘制和缩放查看方面,需要设置相应的策略以提升系统的响应速度。具体地,系统根据显示数据的时间范围设置以下不同采样粒度:

(1)时间范围>20 分钟:按10 s 间隔进行采样。对于10 个小时的装置运行数据,单条数据曲线的数据点为3,600个。

(2)时间范围∈(2 分钟,20 分钟]:按1 s 间隔进行采样。单条数据曲线的数据点个数在120~1,200范围内。

(3)时间范围∈(10 s,2 分钟]:按100 ms 间隔进行采样。单条数据曲线的数据点个数在100~1,200范围内。

(4)时间范围≤10 s:查询原始数据索引。原始数据为5 ms 采样率,单条数据曲线不超过2,000个点。

为进一步提升图形绘制时的数据检索速度,在装置运行数据导入数据库时即同时完成数据的采样处理,并将采样数据存储在独立的索引中,图形绘制时将根据不同时间范围直接使用相应采样索引查询数据。通过以上数据读取和采样策略,实现曲线全景绘制,以及拖动、缩放等操作时的数据点高效查询与加载。

4 系统安全与部署

4.1 系统安全机制

科学实验数据与装置运行数据是稳态强磁场实验装置核心资产,为避免数据出现泄露或非法访问事件,并防止数据因为意外故障导致损坏或丢失,在系统安全保护方面采取以下措施:

(1)系统数据库采用集群化部署,防止单点失效,并确保在主节点数据丢失的情况下,仍然可以通过副本恢复数据;

(2)定期自动化备份实验数据文件和装置运行数据文件,在必要时可通过原始数据文件,重建数据库中的实验数据;

(3)核心数据部署在DMZ隔离区,采用白名单方式,仅支持局域网指定IP 访问,且系统防火墙仅开放指定端口;

(4)系统通过访问token 过期等安全措施避免非法访问和传播;

(5)避免在代码中通过拼接SQL 查询数据库,以此减少外部注入攻击的机会;

(6)采用强密码管理机制,避免外部暴力破解密码,并防止本系统用户通过猜测密码访问他人账户;确保密码在数据库中仅存储加密内容,不保存明文。

4.2 系统部署方案

系统部署情况如图3所示,在系统部署方案设计上,将网络区域分为两类:公网开放区域、局域网安全区域。其中,Web 前端网站以及Nginx负载均衡等需要支持外网访问的系统或服务,均部署到开放网络区域,同时对外仅开放80/443端口(HTTP/HTTPS服务);其他系统服务层的相关微服务、数据库中间件、共享文件存储等均部署到局域网安全区域,局域网内主机仅开通指定的服务端口;Web前端的API请求由局域网中部署的Nginx进行转发实现跨域请求;运维人员通过堡垒机接入相应服务器进行运维管理。为提升系统可用性及鲁棒性,所有服务和中间件均按最小化集群部署,在某个服务器节点宕机的情况下,其他服务器仍然可继续提供服务。

图3 系统部署方案图Fig.3 System deployment scheme

公网开放区域使用1 台服务器,部署Nginx和Web 前端。Nginx 服务一般运行非常稳定,对硬件资源要求较低,可以选择配置较低的服务器,或和其他业务服务器共享硬件资源。局域网安全区域使用3台服务器部署所有业务服务和数据库,并通过Nginx进行负载均衡。其中承载装置运行数据的Elasticsearch 数据库,由于数据量较大,将主节点单独部署1台服务器,从节点1和从节点2部署到另外两台服务器;各业务服务按镜像部署到2台服务器;MySQL集群在2台服务器分别部署主节点和从节点;MongoDB按副本集模式在2台服务器分别部署主节点和副本节点。

5 系统测试

系统测试主要用于验证科学实验数据的元数据采集、数据下载功能以及装置运行数据的加载性能。

科学实验数据的采集、存储与访问等功能,以水冷磁体WM5产生的科学实验数据为例进行测试验证。实验管理系统将实验申请审核过程中的用户信息、课题信息等实验元数据提交到SciCat后端,元数据采集器分别从装置的中央控制系统以及水冷磁体WM5 的实验数据测量系统,提取实验数据文件信息等科研元数据,并调用SciCat 后端的相应API 实现到数据库的存储。实验用户在装置上完成实验后,即可通过系统查看本次实验相关的各类基本信息,并能够进行实验数据文件的信息查看以及下载使用,如图4所示。

图4 科学元数据页面Fig.4 The web page for scientific metadata

装置运行数据以稳态强磁场装置的水冷磁体WM1近期某次实验为例。该实验持续时间约7.85 小时,装置运行数据以5 ms 为采集周期,采集电流、水流量、出入口水温、出入口水压、线圈电压、线圈电阻偏差等23项参数,共计生成5,655,165行数据、约13亿个数据点。原始装置运行数据通过本系统后台运行的数据监测采集器解析导入Elasticsearch数据库,并自动创建数据索引。

如图5所示,在系统中打开相应装置运行数据图形绘制页面,左侧为参数选择列表,右侧为参数曲线图,支持多条曲线同时展现。鉴于电流和线圈电压值是装置运维人员最关心的参数,页面在加载时将默认以全览式视图直接加载电流和线圈电压曲线,其他参数曲线的绘制可通过左侧参数选择栏勾选展示。装置运行数据的曲线绘制支持选择特定区域进行缩放;并可通过点击页面上方的按钮,对电流与电压波形图、进出口水温波形图、进出口水压波形图进行自动快照与保存;在选择模式下,还支持在图形上拖拽选择一段时间范围,由系统自动计算该段时间范围内的各参数均值并在图形下方生成数据表格,供运维人员分析。

图5 装置运行数据图形化展示页面Fig.5 The web page for facility operation data

利用Web浏览器的开发者工具进行10次测试,页面打开并自动加载电流和线圈电压全览曲线的平均时间为0.91 s;10 条参数曲线同时展现时,放大、缩小操作的平均加载时间为0.24 s。鉴于通过浏览器打开页面的测试方式,实际包括了用户鉴权、获取用户信息、获取运行数据等多个Http请求,为进一步评测从服务端请求装置运行数据的响应情况,利用Jmeter对单个Http请求的响应时间进行性能自动化测试。在Jmeter 中设置10 个并发线程模拟多用户同时访问,以Http Get 方式直接调用装置运行数据图形展示API,持续时间10 分钟,测得该接口的平均响应速度为930 ms,响应时间分布如图6所示。通过浏览器开发者工具和Jmeter 这两种测试手段获得的结果均表明,装置运行数据的解析、导入以及图形化展示功能符合预期,系统性能良好。

图6 系统响应时间测试Fig.6 The test of system response time

6 结论与展望

稳态强磁场实验装置数据管理系统针对装置运行过程中产生的装置运行数据、科学实验数据实现统一信息化管理。结合两类数据的用户对象和特点,系统面向科学实验人员提供科学实验数据的存储访问、元数据的组装与采集功能,面向装置运维人员提供装置运行数据的解析与导入、数据可视化查看功能。系统实现了多源数据的汇聚,将来自装置控制系统、实验仪器设备、实验管理业务系统的多方数据进行提取、存储,并实现百万级以上数据点的高效图形化展示。系统设计了有效的安全保护机制和部署方案,以确保系统的安全性和鲁棒性。装置产生的运行数据和科学实验数据,是装置生命周期中形成的重要数据资产,其高效管理与运用对于提升装置运行效率与科学研究价值至关重要。下一步计划在系统中引入JupyterHub,实现基于Web的交互式数据分析功能,以支持科学实验用户在线对实验数据进行分析处理。

利益冲突声明

所有作者声明不存在利益冲突关系。

猜你喜欢
强磁场磁体科学实验
DyF3热扩渗技术提高NdFeB磁体矫顽力及其机理分析
“天宫”上的科学实验
带电粒子在圆形边界匀强磁场中的运动
带电粒子在圆形边界匀强磁场中的运动
带电粒子在直边界匀强磁场中的运动
中国首颗微重力科学实验卫星将于4月发射
精心准备 科学实验
含Ce烧结Nd-Fe-B磁体的腐蚀行为
强磁场对非线性光学晶体ZnGeP2 生长及性能的影响
传导冷却高温超导储能磁体制作