单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用

小T导读:为满足地震预警数据存储、检索和处理的建设与集成需求,以及响应国家国产软件自主可控的号召,中国地震台网中心决定选用国产数据库 TDengine 来存储和处理地震波形数据。本文将针对 TDengine 3.0 在地震领域的应用展开详细讲解。

关于企业:

中国地震台网中心是作为中国地震局直属的公益一类事业单位,是我国防震减灾工作的业务枢纽和国际交流窗口,是地震监测预报预警、应急响应和信息化工作的国家级业务中心。

项目背景

近年,随着国家对防震减灾要求不断提高,我国先后实施了多个大型地震监测工程项目。随着地震台站密集建设,台站仪器采集汇入中国地震台网中心的地震波形数据也增长了一个数量级。

地震波形数据主要是指由国家地震台站、各省区域地震台网等地震观测网络系统中地震计采集并传回中心的数据,具有典型的时序数据特征,是开展地震监测预警、数据分析与挖掘、地震异常研判等应用的基础材料。

为了满足地震预警数据存储、检索和处理的建设与集成需求,以及响应国家国产软件自主可控的号召,该项目选用国产数据库来存储和处理地震波形数据。

通过竞标,最终由 TDengine 承担该项目。

考虑到运维部署成本性能等等各个方面,数据库需要做好如下方面:

  • 高效读写:承载每秒 500 万数据点的海量数据实时汇入,支持即席快速查询。
  • 高数据压缩比:尽可能多的保存更多数据,同时减少磁盘存储成本。
  • 时序分析:基于时间线的窗口化分析函数或工具。
  • 弹性扩展:系统能够支持水平扩展,随着业务规模逐年扩大,弹性扩容以支持更高的数据接入量。
  • 安全可靠:系统能够保证多副本存储和高可用,保证在单点故障时不影响正常使用。
  • 冷热分离:对于新采集的数据和历史数据有一定归档能力,按照数据冷热程度分离存储。
  • 可以对地震专业算法包集成:通过 UDF 方式,将地震专业信号处理算法集成至数据库中。

本文将以中国地震台网中心的项目作为主体展开(该项目用于全国范围的地震数据监控分析)。

业务架构

目前,该项目上使用的是 3.0.6.0 版本的 5 节点集群,单台服务器配置为:48CPU(s), 192GB 内存 ,500GB SSD  + 1.2TB *6HDD 硬盘。

业务架构如下:

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

首先,每个地震仪一般会采集两个水平向,一个垂直向共三个通道(分量)的地震动数据,采样频率一般为 100HZ(10毫秒采样一次)。数据包中的数据通过工具解析之后会先过渡写入 cencdb 这个 TDengine 库当中,写入 cencdb 的同时, TDengine 的订阅功能会取出该数据包,并再次进行解析,获取更多层次的数据写入 TDengine 集群当中。

站点的位置由其所属台网代码、台站代码和测点位置号码决定。地震仪每天不间断的持续采集地震动数据,并每隔 0.5秒将数据打成 miniSEED 数据包传输,形成数据流。基于 TDengine “一个设备采集点一张表”的建模思路,每道数据流分别对应一张数据表和一张元数据表。

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

当前,该集群共有约 5.9 万张数据表,代表流入库中的 5.9 万道地震数据流。另外还有 5.9 万张元数据表(上图),存储 5.9 万道数据流中每个数据包的描述信息。

项目运行至今,TDengine 接入的原始数据包每天约 900GB,每秒大概接入超过 5 万个地震数据包,每天总数据量约 5000 亿条。

由于原始数据包已使用 STEM2 算法压缩,TDengine 压缩后的数据库文件与原数据包所占磁盘空间相当。对于常规的 INT 类型数据,TDengine 压缩比可达到 5%-10% 之间,对于 VARCHAR 类型的数据,压缩比可达到 15-20%,极大程度地节约存储成本。

在集群日常负载上,单台数据库服务端 CPU 使用率 40%~50%,内存占用 14%~20%,运行平稳。

具体应用

在地震监测领域,以下这些是比较常见的需求:

1.通过使用 SQL 查询 “XJ_BKO_00_H_H_Z”表,就可以得到该地震仪器垂直分量的振幅数据。

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

2.对地震数据包内的数据时间,与实际入库时间做差,可以统计到数据包入库的时延。因此,我们对元数据表执行如下 SQL ,就能得到超过 5 秒时延的异常数据用作进一步分析。

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

3.在地震数据中,地震波传播路径上会出现多个不同的震相。地震学家可以对这些震相的到达时间和振幅特征,对地震事件进行精确定位、震源机制分析等工作。其中在地震信号中准确地识别和捕捉特定震相的行为,便是震相拾取。

我们通过 TDengine 的 UDF (自定义函数)功能,把已经训练好的 GPD 模型直接同 TDengine 的流计算/SQL 结合起来,实现了震相拾取的实时计算。

建流语句:create stream gpd_stream trigger at_once into gpd_stream_stb as select ts, gpd(calc_ts, tbname, ‘detail’) from detail.pick partition by tbname;

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

4.同样是通过流计算,实现了实时计算上万个台站的每秒最大峰值,对流计算生成的表进行查询。

建流语句: create stream xxxxxxx into max_val_per_seconds_test subtable(concat(‘max_test_val_per_seconds-‘,tbname)) as select ts,max(data) as max_data from data where channel_3th=’Z’ partition by tbname interval(1s) sliding(1s);

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

可视化

在地震监控领域的可视化中,最重要的就是展示信息的完整性、实时性、可交互性,灵活性。

TDengine 高效的查询能力以及简单易用的 SQL 语句可以很方便的完成上述工作。通过网页展示工具调用 TDengine 的 SQL ,我们完成了展示地震事件的主看板:看板中的地图可以展示台站的每秒峰值记录,点击近期地震事件便可以进行一段时间(例如该地震发生时刻前 1min 和后2min)内的地震数据回放。

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

另外,由于 TDengine 可以和 Grafana 无缝对接,通过执行 SQL 即可完成数据可视化工作。该项目使用 Grafana 完成了另一部分数据的监控。

该场景是按台网分组,统计最近 5 分钟内的台站可用率。

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

该场景是通过 SQL 查询某站台一段时间内的地震波原始数据,在 Grafana 中绘制出该时间段内该台站的地震波形图。

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用 - TDengine Database 时序数据库

整体效果

此前,该项目通过程序进行基于 miniseed 文件的处理:简单来说是对 miniseed 数据按照日期、台站等维度进行分片,通过调用 python/C 程序加载 miniseed 文件做分析处理。

切换到 TDengine 之后,有很多变化:

  • 不需要再维护繁多的 miniseed 文件,而是将他们解析成时间序列数据,在 TDengine 中分表存储,节省了使用者每次使用数据时解包的时间。
  • 通过简单的 SQL 实现了快速的实时查询/展示/分析,降低了数据展示和查询的使用难度。
  • 系统整体分布式扩展能力提升,通过增加节点的操作便可以应对未来可能快速增加的台站和数据。
  • TDengine 时序数据库系统支持插件式业务函数集成,将成熟业务函数甚至机器学习训练模型以 UDF 方式内置到时序库系统中,进行流式处理,方便创新、扩展业务。

这些便是 TDengine 3.0 在地震领域的应用,在气象、环境、交通等等很多其他领域都会有类似的场景和需求。在人类社会的智能化发展正处于不断演进迭代的过程中,TDengine 将会扮演更多重要的角色。

注:文中所提及的 GPD 模型出自:https://github.com/interseismic/generalized-phase-detection


 了解更多 TDengine Database的具体细节,可在GitHub上查看相关源代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144630.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C#求100-999之间的水仙花数,你知道多少个?让我们一起来探索!

目录 背景: 扩展: 水仙花数例子: 效果展示:​ 总结: 背景: 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong…

基于微信小程序的新闻发布平台小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

MySQL MMM高可用架构

MySQL MMM高可用架构一、MMM概述1、MMM简介2、MMM高可用架构3、MMM故障切换流程 二、MMM高可用双主双从架构部署1、配置主主复制(master),主从复制(slave)1)修改 Master1的MySQL配置文件2)把配置…

软件设计师笔记系列(四)

😀前言 随着技术的快速发展,软件已经成为我们日常生活中不可或缺的一部分。从智能手机应用到大型企业系统,软件都在为我们提供便利、增强效率和创造价值。然而,随之而来的是对软件质量的日益增长的关注。软件的质量不仅关乎其功能…

基于微信小程序的高校宿舍管理系统设计与实现(亮点:选择宿舍、宿舍评分、宿舍报修)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 文章目录 系列文章目录[TOC](文章目录) 前言1、Eureka 两大组件2、Eureka 服务注册与发现3、案例3.1、创建主工程3.1.1、主…

【Java 进阶篇】深入理解 SQL 聚合函数

在 SQL 数据库中,聚合函数是一组强大的工具,用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户,了解聚合函数都是非常重要…

Android12之Codec2.0配置编解码器为H264实现(四十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…

李宏毅机器学习第一课(结尾附作业模型详细分析)

机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的 如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient Descent Regression (输出的是一个scalar数值) Classification (在…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本:QT Creator 10.0.2 (community),MingW 6.4.3 (QT6),MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL"),这个时候是不支持MYSQL数据…

数据集笔记:2015上海地铁一卡通数据

数据地址:上海地铁数据_免费高速下载|百度网盘-分享无限制 (baidu.com) 数据介绍 上海2015年几天的地铁一卡通出入站信息 卡号、交易日期、交易时间、公交线路/地铁站点中文名称、行业名称(公交、地铁、出租、轮渡、PR停车场)、交易金额、交易性质(非优惠、优惠、…

PHP生成二维码带图标代码实例

PHP生成二维码带图标代码实例(PHP QR Code二维码生成类库) public static function png($text, $outfilefalse, $levelQR_ECLEVEL_L, $size3, $margin4, $saveandprintfalse) { $enc QRencode::factory($level, $size, $margin); return $enc->…

token登录的实现

token登录的实现 我这种token只是简单的实现token,就是后端利用UUID 生成简单随机码,利用随机码作为在Redis中的键,然后存储的用户信息作为值,在每次合理请求的时候对token的有效时间进行刷新(利用拦截器)&…

第P7周—咖啡豆识别(1)

数据集及wen件目录介绍: 数据集:工作台 - Heywhale.com 一、前期工作 1.1 数据详情 import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, datasets import os,…

笔试强训Day7

T1&#xff1a;合法括号序列判断 链接&#xff1a;合法括号序列判断__牛客网 给定一个字符串A和其长度n&#xff0c;请返回一个bool值代表它是否为一个合法的括号串&#xff08;只能由括号组成&#xff09;。 经典括号匹配问题&#xff0c;考察栈的使用 #include<iostre…

Pytest+Allure+Excel接口自动化测试框架实战

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不仅以 Web 的方式展示了简介的测试结果&#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中&#xff0c;最大限度地提取有用信息。 Allure 是由 Java 语言开发的…

常识判断 --- 科技常识

目录 力与热 光和声 航空成就 垃圾分类 百科知识 血型 二十四节气歌 春雨惊春清谷天 夏满忙夏暑相连 秋处露秋寒霜降 冬雪雪冬小大寒 力与热 光和声 航空成就 垃圾分类 百科知识 血型

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1问题总结

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

NFT Insider#109:The Sandbox推出了首个足球小将 NFT 作品集,YGG Web3 游戏峰会即将开启!

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…