在CERN(欧洲核子研究组织)的工业控制系统中,时间序列数据的存储和管理一直是一个关键挑战。随着实验规模的不断扩大,数据量呈爆炸式增长,传统的数据库解决方案逐渐难以满足需求。为了应对这一挑战,CERN的研究团队与工业界合作,探索了TimescaleDB和PostgreSQL在时间序列数据存储中的应用,并取得了显著成果。
CERN的工业控制系统:背景与挑战
CERN的工业控制系统(SCADA系统)CERN的工业控制系统(SCADA系统)是一个复杂且高度可靠的监控与数据采集系统,用于管理CERN加速器复合体和实验设施中的各种设备,确保其高效运行和数据采集的准确性。SCADA系统负责从控制设备(如PLC)中获取数据,并实现高级功能。在CERN的日常运行中扮演着至关重要的角色,尤其是在大型强子对撞机(LHC)等关键实验中。然而,随着数据量的不断增加,传统的数据库解决方案逐渐暴露出性能瓶颈和技术债务问题。
从传统解决方案到下一代归档器
CERN的SCADA系统自2000年代初以来一直使用WinCC OA作为标准平台。尽管WinCC OA在功能上非常强大,但其传统的RDB归档器(自2008年起使用)存在诸多问题,例如仅支持Oracle数据库、架构复杂且难以维护。为了克服这些问题,CERN于2017年启动了下一代归档器(NGA)项目,目标是去除对Oracle的依赖,解决技术债务,提高性能,并支持新的用例。
NGA项目的核心是支持多种数据库后端,包括PostgreSQL和TimescaleDB。这两种数据库因其在性能、可扩展性、可靠性以及生态系统方面的优势,被选为CERN工业控制系统的新解决方案。
为什么选择TimescaleDB和PostgreSQL?
TimescaleDB是PostgreSQL的一个扩展,专门用于处理大规模时间序列数据。它提供了自动时间分区、数据压缩、连续聚合等功能,能够显著提高数据存储和查询的效率。与传统的关系型数据库相比,TimescaleDB在处理时间序列数据时表现出色,尤其是在数据压缩和查询性能方面。
CERN选择TimescaleDB和PostgreSQL的原因包括:
本地部署与支持:CERN需要能够在本地部署和维护的数据库解决方案,以确保数据的安全性和可靠性。
高性能与可扩展性:TimescaleDB和PostgreSQL能够处理大规模数据集,并支持高并发读写操作。
生态系统与工具支持:PostgreSQL拥有丰富的生态系统和广泛的社区支持,能够满足CERN多样化的数据处理需求。
长期展望与退出策略:CERN需要一个能够长期支持其研究项目的数据库解决方案,同时具备灵活的退出策略。
性能测试与结果
为了评估TimescaleDB和PostgreSQL在实际生产环境中的表现,CERN的研究团队设计了一系列性能测试。测试环境包括OpenStack虚拟机和高性能计算节点,数据集规模从1年1.3亿行数据到4年53亿行数据不等。
测试结果显示,TimescaleDB在数据压缩和查询性能方面表现出色:
数据压缩:TimescaleDB通过将行格式转换为列格式并应用类型特定的压缩算法,能够显著节省存储空间。对于合成数据,压缩率可达78%-87%;对于生产数据,压缩率可达90%-95%。
查询性能:在查询压缩数据时,由于减少了I/O操作,查询速度通常更快。随着处理数据量的增加,性能优势更加明显。
写入性能:TimescaleDB和PostgreSQL在单连接写入时表现出色,即使在大规模数据集和高并发写入场景下,性能依然稳定。
此外,TimescaleDB的连续聚合功能允许用户创建自动更新的聚合数据表,进一步优化了数据存储和查询效率。
未来展望
CERN计划在未来几年内逐步扩大TimescaleDB和PostgreSQL的使用范围,最终在2027年第二季度实现全CERN范围的生产部署。未来的工作重点包括:
大规模基准测试:进一步扩大测试规模,以匹配CERN生产系统的实际负载。
高可用性选项:探索PostgreSQL的高可用性解决方案,确保系统的稳定性和可靠性。
GPU加速:研究如何利用GPU加速数据库操作,进一步提升性能。
生态系统扩展:开发更多工具和插件,以支持CERN多样化的数据处理需求。
结论
通过引入TimescaleDB和PostgreSQL,CERN不仅解决了传统数据库解决方案的技术债务问题,还显著提高了时间序列数据的存储和查询效率。这一创新解决方案为CERN未来的科学研究项目奠定了坚实的基础,并为其他需要处理大规模时间序列数据的组织提供了宝贵的参考。
引用:Optimizing Time Series Data Storage for CERN Industrial Control Systems using TimescaleDB and PostgreSQL




