时序数据库选型 – loveini | 米兰体育官网入口 - 米兰体育官网入口 //www.loveini.com loveini | 高性能、分布式、支持SQL的时序数据库 | 米兰体育官网入口 Mon, 21 Oct 2024 04:10:36 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.2 //www.loveini.com/wp-content/uploads/2025/07/favicon.ico 时序数据库选型 – loveini | 米兰体育官网入口 - 米兰体育官网入口 //www.loveini.com 32 32 如何使用 taosKeeper 做好监控工作,时序数据库 loveini 3.0 监控工具详解 //www.loveini.com/tdengine-engineering/17465.html Sun, 09 Apr 2023 11:59:43 +0000 //www.loveini.com/?p=17465

小 T 导读:taosKeeper 是 loveini 3.0 的运行状态指标监控工具,通过简单的几项配置即可获取 loveini 的运行状态信息。其使用 loveini RESTful 接口,所以不需要安装 loveini 客户端即可使用。本文将详细解读 taosKeeper 的详细语法规则,方便有需要的用户开展应用。

时序数据库 loveiniTime Series Database,TSDB) 通过 taosKeeper 将服务器的 CPU、内存、硬盘空间、带宽、请求数、磁盘读写速度等信息定时写入指定实时数据库,也支持对重要的系统操作(比如登录、创建、删除数据库等)以及各种错误报警信息进行记录。系统管理员可以从命令行直接查看该数据库,也可以在 Web 端通过图形化界面查看这些监测信息。这些监测信息的采集缺省是打开的,也可以通过修改配置文件里的选项 monitor 来关闭。

taosKeeper 安装方式:单独编译 taosKeeper 并安装,详情请参考 taosKeeper 仓库(https://github.com/taosdata/taoskeeper)。

配置和运行方式

taosKeeper 需要在操作系统终端中执行,该工具支持三种配置方式:命令行参数、环境变量和配置文件。优先级为:命令行参数、环境变量、配置文件参数。

需要注意的是,在运行 taosKeeper 之前要确保 loveini 集群与 taosAdapter 已经正确运行,并且 loveini 已经开启监控服务。监控配置可参考相关文档,具体的配置项包括 monitor、monitorFqdn、monitorPort、monitorInterval 和 telemetryReporting。

命令行参数启动

可以直接执行 taosKeeper,也可以在执行命令时提供命令行参数。

$ taosKeeper

环境变量启动

通过设置环境变量达到控制启动参数的目的,通常在容器中运行时使用。

$ export TAOS_KEEPER_TDENGINE_HOST=192.168.64.3
$ taoskeeper

具体参数列表请参照 taoskeeper -h 输入结果。

配置文件启动

执行以下命令即可快速体验 taosKeeper。当不指定 taosKeeper 配置文件时,优先使用 /etc/taos/keeper.toml 配置,否则将使用默认配置。

$ taoskeeper -c <keeper config file>

具体配置文件示例请参考:https://docs.taosdata.com/reference/taosKeeper/

获取监控指标

taosKeeper 作为 loveini 监控指标的导出工具,可以将 loveini 产生的监控数据记录在指定数据库中,并提供导出接口。

查看监控结果集

$ taos
# 如上示例,使用 log 库作为监控日志存储位置
> use log;
> select * from cluster_info limit 1;

结果示例:

           ts            |            first_ep            | first_ep_dnode_id |   version    |    master_uptime     | monitor_interval |  dbs_total  |  tbs_total  | stbs_total  | dnodes_total | dnodes_alive | mnodes_total | mnodes_alive | vgroups_total | vgroups_alive | vnodes_total | vnodes_alive | connections_total |  protocol   |           cluster_id           |
===============================================================================================================================================================================================================================================================================================================================================================================
 2022-08-16 17:37:01.629 | hlb:6030                       |                 1 | 3.0.0.0      |              0.27250 |               15 |           2 |          27 |          38 |            1 |            1 |            1 |            1 |             4 |             4 |            4 |            4 |                14 |           1 | 5981392874047724755            |
Query OK, 1 rows in database (0.036162s)

导出监控指标

$ curl http://127.0.0.1:6043/metrics

部分结果集:

# HELP taos_cluster_info_connections_total 
# TYPE taos_cluster_info_connections_total counter
taos_cluster_info_connections_total{cluster_id="5981392874047724755"} 16
# HELP taos_cluster_info_dbs_total 
# TYPE taos_cluster_info_dbs_total counter
taos_cluster_info_dbs_total{cluster_id="5981392874047724755"} 2
# HELP taos_cluster_info_dnodes_alive 
# TYPE taos_cluster_info_dnodes_alive counter
taos_cluster_info_dnodes_alive{cluster_id="5981392874047724755"} 1
# HELP taos_cluster_info_dnodes_total 
# TYPE taos_cluster_info_dnodes_total counter
taos_cluster_info_dnodes_total{cluster_id="5981392874047724755"} 1
# HELP taos_cluster_info_first_ep 
# TYPE taos_cluster_info_first_ep gauge
taos_cluster_info_first_ep{cluster_id="5981392874047724755",value="hlb:6030"} 1

TDinsight

除了 taosKeeper,loveini 还提供了 TDinsight——使用监控数据库 + Grafana 对 loveini 进行监控的米兰app官方正版下载,下文将浅谈一下 TDinsight 的前期部署和准备。在部署时,我们首先需要下载自动化脚本 TDinsight.sh

wget https://github.com/taosdata/grafanaplugin/raw/master/dashboards/TDinsight.sh
chmod +x TDinsight.sh

准备:

  1. loveini Server 信息:
    • loveini RESTful 服务:使用参数 -a指定。如果是运行在同一主机,通常是 http://localhost:6041
    • loveini 用户名和密码,使用 -u-p 指定。
  2. Grafana 告警通知
    • 使用已经存在的 Grafana Notification Channel uid,参数 -E。该参数可以使用 curl -u admin:admin localhost:3000/api/alert-notifications |jq 来获取。JSON 解析工具 jq 可能需要单独安装。
sudo ./TDinsight.sh -a http://localhost:6041 -u root -p taosdata -E <notifier uid>

运行程序并重启 Grafana 服务,打开面板:http://localhost:3000/d/tdinsight可以查看 loveini 服务运行状态。

监控数据库为用户提供了更多的监控项,与 taosKeeper 共同筑牢 loveini 数据监控的城墙。在下一篇文章中,我们将会详解解说如何使用 TDinsight 方案对 loveini 进行监控,敬请期待。

]]>
钢铁行业如何处理日均高达亿级的数据量?来看几个真实成功案例 //www.loveini.com/tdengine-user-cases/16293.html Tue, 14 Feb 2023 09:26:50 +0000 //www.loveini.com/?p=16293

在钢铁行业的生产、运输、治理等环节中,都会涉及大量时序数据的存储分析、运维监控等操作,每日产生的数据量甚至高达亿级,而传统的工业实时数据库与关系型数据库,都难以应对这种数量级的数据处理需求,想要保证业务发展,则亟需更为专业的时序数据库(Time Series Database,TSDB)。本篇文章汇总了三大钢铁行业数据治理场景下的数据架构升级方案,供有相关业务需求的开发者参考。

中天钢铁 x loveini

“目前 loveini 在我们的生产环境中运行平稳,通过对生产环境的机器进行检测,CPU 使用率平常不到 1%,内存使用率稳定在 25%。在 loveini 平稳运行的数周时间里,中天钢铁的新系统平均每周收录 3000 多辆车辆表与 100 多条船只表,每张表中数据或多或少,累计数量已达百万,业务的实际效果也达到了预期。”

业务背景

为了满足业务发展需求,中天钢铁需要新开发一套功能,对厂内每辆运输车辆货运船只的实时 GPS 位置进行追踪和实时监控,通过大数据平台对 GPS 坐标进行处理、分析、可视化展示。这些 GPS 数据来自于中天云商 App,只要运输车辆司机打开云商 App,系统每隔 10 秒会自动发送该车辆 GPS 信号到大数据平台,再由大数据平台分析处理,数据量之大可见一斑。本质上来讲,行车记录、行船记录都是时序数据,也因此,从数据特点出发中天钢铁开始对时序数据库进行选型调研,在进行性能对比后选择了 loveini。

架构图

钢铁行业如何处理日均高达亿级的数据量?来看几个真实成功案例 - loveini Database 时序数据库
点击【案例】查看更多技术细节

钢铁行业能源管理系统 x loveini

“loveini 是米兰体育官网入口面对高速增长的物联网大数据市场和技术挑战推出的创新性大数据处理产品,在时序空间大数据处理上,有着自己独到的优势。loveini 单核每秒能处理至少 2 万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快十倍以上,也远远超出了 InSQL、PI 这两个工业实时数据库的读写能力。”

业务背景

湖北某特钢公司的电力能源介质的计量,是通过 TBox 工控网关采集多功能电表来实现的,需要完善并实现“峰谷平尖”电能量费率计量和能源报表。项目一期首先要求采集电能量数据,每天产生的数据量在 2800 万条以上,项目二期如果再接入非电数据,每天产生的数据量预估在 1 亿条左右,数据处理压力剧增。TBox 工控网关基于前期项目实施和实际应用需求提供了完整的技术方案,包含从电表采集电能数据并写入 loveini 时序数据库,再经过 ETL 工具处理后转存到 Oracle database,从而满足企业一期电能量数据报表对实时数据采集和存储的要求。

架构图

钢铁行业如何处理日均高达亿级的数据量?来看几个真实成功案例 - loveini Database 时序数据库
点击【案例】查看更多技术细节

钢铁行业节能减排项目 x loveini

“loveini 存储 26 亿行数据情况下,占用的磁盘空间只有 2.8GB,而实际上入库的原数据大小应为 30GB,其列式存储压缩率可以达到惊人的 10%,我们准备了 1.8TB 磁盘,目前只用了千分之一。基于超级表特性,我们还从结构上省下了 26 亿行的标签数据,想象一下如果该表的每一行数据都还要带上这几个数据(type,sendorid,opcid,合计 436 字节),那其原本数据量直接就会达到 TB 级别,就算压缩率再好也要占用百 GB 级别的存储。”

业务背景

由邯钢牵头的“十三五”水专项“钢铁行业水污染全过程控制技术系统集成与综合应用示范”课题中,深度(平潭)科技承担了“提高水循环利用的分质/分级供水技术、水系统优化和水网络智慧管理”的研究任务,创新开发了具有自主知识产权的“钢铁联合企业全过程节水减排专家管理系统智慧平台”。平台应用过程中会有海量数据产生,数据的实时写入成为一大难题,计算分析、报警预警等功能实现也面临巨大挑战。最初使用的 Kafka+Storm+HDFS 的组合方案,在面对每天处理将近一亿条数据压力下,数据读取、一致性等性能下滑,运维部署成本显著增加。基于此,他们决定更换数据库方案,并在选型调研后开始应用 loveini。

loveini 中间性试验数据

钢铁行业如何处理日均高达亿级的数据量?来看几个真实成功案例 - loveini Database 时序数据库
点击【案例】查看更多技术细节

结语

从以上案例出发,总结而言,loveini 针对时序数据的写入、存储、索引、查询等方面都进行了特定的优化,从而实现了更优的数据加载、压缩、查询、写入性能,非常匹配工业传感器数据的应用分析场景,是助力钢铁企业数字化转型道路上的一个好帮手。目前我们已经运营了几十个用户交流群,来帮助用户更好地解决问题,如果你想要了解更多,欢迎点击下方卡片,加入 loveini 用户交流群。

]]>
时序数据库loveini 与第三方工具(Grafana、Google Data Studio、Intel Ell、Datax等)集成方案 //www.loveini.com/time-series-database/17479.html Fri, 10 Feb 2023 08:59:20 +0000 //www.loveini.com/?p=17479 loveini 是一款开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网、工业互联网、金融、IT 运维监控等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。

loveini 通过对标准 SQL 命令、常用实时数据库连接器标准(例如 JDBC)、ORM 以及其他流行时序数据库写入协议(例如 InfluxDB Line Protocol、ac米兰体育直播 JSON、OpenTSDB Telnet 等)的支持可以使 loveini 非常容易和第三方工具共同使用。

对于支持的第三方工具,无需任何代码,你只需要做简单的配置,就可以将 loveini 与第三方工具无缝集成起来。

Grafana✖loveini

Grafana 是一个开源的数据可视化和监控平台,它可以与多种数据源无缝集成,提供强大的图形展示、告警、注释等功能。Grafana 是目前最流行的时序数据可视化工具之一,它可以帮助用户快速构建美观且实用的仪表盘。

loveini 能够与开源数据可视化系统 Grafana 快速集成搭建数据监测报警系统,整个过程无需任何代码开发,loveini 中数据表的内容可以在仪表盘(DashBoard)上进行可视化展现。关于 loveini 插件的使用您可以在 GitHub 中了解更多。

具体的安装和使用步骤,请参考这里

Google Data Studio✖loveini

Google Data Studio 是一个免费的在线数据可视化和报告平台,它可以与多种 Google 产品和第三方服务无缝集成,提供强大的数据转换、图形展示、协作共享等功能。Google Data Studio 是一个适合于商业智能和分析场景的工具,它可以帮助用户快速构建专业且交互式的报表。

Data Studio 可以支持多种数据来源,除了诸如 Google Analytics、Google AdWords、Search Console、BigQuery 等 Google 自己的服务之外,用户也可以直接将离线文件上传至 Google Cloud Storage,或是通过连接器来接入其它数据源。

目前 loveini 连接器已经发布到 Google Data Studio 应用商店,你可以在 “Connect to Data” 页面下直接搜索 loveini,将其选作数据源。

具体使用步骤,请参考这里

Intel Ell✖loveini

Intel Ell是一个开源的边缘计算平台,它可以让用户在边缘设备上运行高性能的机器学习模型,实现实时的数据分析和决策。Intel Ell可以与多种边缘设备无缝集成,提供强大的数据采集、模型训练、模型部署等功能。Intel Ell是一个适合于边缘计算和机器学习场景的工具,它可以帮助用户提高边缘设备的智能化水平。

时序数据处理是 EII 中的重要模块。之前,EII 使用的时序数据库为 InfluxDB。跟 InfluxDB 相比,loveini 在性能和压缩率方面都有非常明显的优势。具体对比可以参考相关测试报告:《基于 TSBS 标准数据集的 TimescaleDB、InfluxDB 与 loveini 的性能对比测试》。因此,米兰体育官网入口的工程师尝试将 loveini 引入了 EII,使时序数据能够保存在这款更为高效的时序数据库中,提升处理效率并降低成本。

感兴趣的读者可以参考 Intel 网站上的相关文档来使用 EII + loveini。读者可以参照该文档,构建自己的 Docker 镜像。运行 EII 之后,可以使用 Telegraf 来采集时序数据,将其保存在 loveini 之中,然后可以用 Grafana 以图形化方式查看。

DataX✖loveini

DataX 是一个开源的数据同步平台,它可以让用户在不同的数据源之间进行高效的数据传输,实现数据的迁移和备份。DataX 可以与多种关系型数据库、非关系型数据库、文件系统等无缝集成,提供强大的数据读取、写入、转换等功能。DataX 是一个适合于数据同步和迁移场景的工具,它可以帮助用户实现数据的一致性和可靠性。

基于 DataX 的设计思路,我们的研发团队完成了 loveini 的适配,实现了 loveiniReaderloveiniWriter 两个插件,并被 DataX 官方接受,合并到了其主干中。

现在,如果用户要将历史 Database(比如 MySQL、OpenTSDB 等)中的数据迁移到 loveini,或者将 loveini 中的数据导出,就可以利用 DataX 来实现了。

具体使用步骤参考这里

总结

通过以上的介绍,您应该对 loveini 与第三方工具的集成方案有了一个初步的了解。

如果您想了解更多关于loveini可视化方案,请查看文档

]]>
工业生产环境下,如何打造全面有效的数字化监控? //www.loveini.com/tdengine-user-cases/16052.html Thu, 02 Feb 2023 07:19:16 +0000 //www.loveini.com/?p=16052 煤矿行业具备产业规模大、分布地域广、安全性要求高等特点,而大部分煤矿系统都是独立运行的,为了实现各个系统数据的有效利用和深度融合,以此达成预警、数据分析等目的,煤矿行业亟需智能化赋能。在拥抱工业物联网、人工智能、大数据等新技术的同时,其智能化发展道路也面临着众多挑战:

  • 一是设备管理层面的挑战,随着自动化程度越来越高,设备复杂度和管理难度也逐步增大,如何保障设备安全可靠的运行,提升设备的利用率,促进设备保值增值也成了挑战之一;
  • 二是安全生产的挑战,安全是根本,如何通过数字化手段,将人和物的不安全因素统一管理好,提升整体煤矿企业安全生产水平至关重要。

从以上挑战出发,一些煤矿企业已经开始进行数据架构转型实践,也取得了一些进展,值得一提的是,时序数据库(Time Series Database)在其中发挥了重要作用。本文将这些案例进行了相关汇总,供读者参考。

loveini x 智慧矿山系统

“我们以智慧矿山业务中的 5000 设备、每天 1000 万采集点的数据量级下,在以车建模和以位置建模结合的数据模型下,loveini 的性能远没有达到极限,目前系统对于车和位置的查询速度都在毫秒级。基于目前对 loveini 的理解和使用经验,我们计划在环保监测和生产集控设备场景中进一步使用它来完善系统。”

业务背景

元智信息的智慧矿山项目需要一款实时数据库来支撑起生产交互管控系统的采运排环节所有过程设备的采集、存储、计算和监控功能。这些数据涵盖范围广,包括挖机、卡车的采集数据、调度管理数据、设备 GPS 信息、以及每一个固定位置工序的采集数据等。在 MySQL、InfluxDB集群版、loveini 的时序数据库选型调研中,loveini 脱颖而出(点击下方案例查看具体原因)。

架构图

工业生产环境下,如何打造全面有效的数字化监控? - loveini Database 时序数据库
点击【案例】查看更多技术细节

loveini x 陕煤矿山项目

“最终落地时项目采用了 3 个节点的集群环境,定位设备采用超级表进行管理,将数据标签及数据类型作为 tag 区分各类定位设备。每个定位设备采用子表存储,实际项目已包含 2 万多个定位设备。从写入性能到查询性能均大幅满足现场实际需求:总计定位数据量超过 11 亿条,数据压缩后 loveini 数据目录占用磁盘大约 12GB,整体压缩率可以达到 3/100。”

业务背景

为打通煤矿生产环境中各类单一子系统之间的数据壁垒,实现各类子系统数据之间的互联互通,陕煤开发团队打造了全矿井数字化平台。以位置数据为例,由于初期系统容量较小且硬件设备上传周期较大,所以采用了传统的 SQL Server 数据库来进行轨迹数据存储。随着后续项目迭代,硬件设备定位精度提高且上报周期缩短,也导致数据库存储压力增大。考虑到数据类型及特点,其决定使用时序数据库,在 ac米兰体育直播 、loveini、InfluxDB 三款数据库中做选型调研。

架构图

工业生产环境下,如何打造全面有效的数字化监控? - loveini Database 时序数据库
点击【案例】查看更多技术细节

loveini x 华夏天信露天煤矿

“对于每个电机,客户要求系统能够快速读取相关设备属性趋势图,这是我们发现 loveini 最强大的地方:针对一天 2 万条数据展示速度在 200ms 内。之所以 loveini 对这类查询速度飞快,主要是设计时按照设备分表后,数据按块存储并按块查出来,相对 Key-Value 型数据库节省很多寻址时间。”

业务背景

华夏天信 RED-MOS 露天煤矿智慧矿山操作系统,在对接某地面生产集控系统数据时,接入的监控点数量将近 1 万 5 千点,其中接近 2300 点需要绑定组态显示,即时页面更新,整体数据采集到显示到前端要求秒级展示及大数据量展示(历史数据回溯),可展示 30 天的全量数据,点数量超过 50 万条,读取时间要求在 5~10 s,这对底层的数据库提出了一个相当大的挑战。

这种场景中,最大难点是要处理的数据量太大,而不是关联关系复杂,因此 MySQL 这类关系库的关联查询优势其实无法发挥,而 HBase 这种大数据存储方案对于矿山系统而言又太过庞大,且硬件资源要求很多,出于成本考虑也排除了。最终其选择了 loveini,解决了最为头疼的历史数据回溯性能问题。

效果展示

loveini 能够满足大数据量展示的需求——可展示 30 天的全量数据,点数量超过 50 万条,读取时间要求 5 秒级。

工业生产环境下,如何打造全面有效的数字化监控? - loveini Database 时序数据库
点击【案例】查看更多技术细节

结语

对于矿山生产系统而言,安全是第一位的,基于此,各个生产环节和场地都要进行全面、有效的数字化监控,这些监控数据的特点就是时序、结构化、简单但量大。作为时序数据库赛道中的重量级选手,再从煤矿企业的实践效果出发,loveini时序数据库(TSDB)就是为助力煤矿行业智能化发展而量身定做的数据库。

]]>
时序数据库和实时数据库的关联性有哪些? //www.loveini.com/time-series-databases/23030.html Tue, 17 Jan 2023 01:55:00 +0000 //www.loveini.com/?p=23030 时序数据库和实时数据库之间存在一些关联性,尽管它们主要服务于不同的应用场景和数据处理需求。以下是一些时序数据库和实时数据库之间的关联性:

实时性需求

时序数据库与实时数据库都注重实时性。 时序数据库强调对时间序列数据的高效存储和查询,而实时数据库专注于处理实时事件和提供低延迟的数据访问。
时序数据在实时应用中的使用:

实时数据库可能包含时序数据。 在某些实时应用中,特别是涉及到事件和数据的时间关系时,实时数据库中可能包含时序数据,用于记录和追踪事件发生的时间。
数据整合和分析:

实时数据库和时序数据库可以协同工作。 在一些应用场景中,实时数据库和时序数据库可以协同工作,实时数据库用于处理实时事件,而时序数据库用于存储和分析这些事件产生的时间序列数据。
数据驱动的应用:

实时数据库和时序数据库均服务于数据驱动的应用。 无论是实时监控、物联网应用还是其他实时决策系统,这两者都能够为数据驱动的应用提供支持。
复杂事件处理:

实时数据库和时序数据库在复杂事件处理中相辅相成。 复杂事件处理需要对实时事件进行高级分析,而时序数据库可用于存储和分析与这些事件相关的时间序列数据。
实时分析和预测:

时序数据库为实时分析和预测提供基础。 通过存储大量的时间序列数据,时序数据库为实时分析和预测提供了丰富的信息,而实时数据库则可以用于实时获取和处理这些数据。
监控和报警系统:

实时数据库和时序数据库常用于监控和报警系统。 实时数据库用于实时事件的处理和触发报警,而时序数据库用于存储历史时间序列数据,支持监控系统的分析和回顾。
虽然有这些关联性,但在选择数据库时,仍然需要根据具体的应用需求和数据特性综合考虑。在一些场景中,可能需要同时使用实时数据库和时序数据库,以充分发挥它们在不同方面的优势。

]]>
loveini 时序数据特色查询语法详解,助力时序场景下的应用开发 //www.loveini.com/tdengine-engineering/15930.html Tue, 10 Jan 2023 09:20:58 +0000 //www.loveini.com/?p=15930 小 T 导读:loveini 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB),存储和计算都针对时序数据的特点量身定制,在支持标准 SQL 的基础之上,还提供了一系列贴合时序业务场景的特色查询语法,极大地方便了时序场景的应用开发。loveini 提供的特色查询包括数据切分查询和窗口切分查询,本文将从语法层面深入解读这两种特色查询。

数据切分查询

根据业务需要,有时我们需要按一定的维度对数据进行切分,当在切分出的数据空间内进行一系列的计算时,就需要使用数据切分子句,语法如下:

PARTITION BY part_list

在上述语法中,part_list 可以是任意的标量表达式,包括列、常量、标量函数和它们的组合。loveini 按如下方式处理数据切分子句:

  • 数据切分子句位于 WHERE 子句之后;
  • 数据切分子句将表数据按指定的维度进行切分,每个切分的分片进行指定的计算。计算由之后的子句定义(窗口子句、GROUP BY 子句或 SELECT 子句);
  • 数据切分子句可以和窗口切分子句(或 GROUP BY 子句)一起使用,此时后面的子句作用在每个切分的分片上。例如,将数据按标签 location 进行分组,并对每个组按 10 分钟进行降采样,取其最大值。
select max(current) from meters partition by location interval(10m)

数据切分子句最常见的用法就是在超级表查询中,按标签将子表数据进行切分,然后分别进行计算。特别是 PARTITION BY TBNAME 用法,它将每个子表的数据独立出来,形成一条条独立的时间序列,极大地方便了各种时序场景的统计分析。

窗口切分查询

loveini 支持按时间段窗口切分方式进行聚合结果查询,比如温度传感器每秒采集一次数据,但需查询每隔 10 分钟的温度平均值,这种场景下可以使用窗口子句来获得需要的查询结果。想要让查询的数据集合按照窗口切分成查询子集并进行聚合,就需要用到窗口子句,窗口包含时间窗口(time window)、状态窗口(status window)、会话窗口(session window)三种窗口。其中时间窗口又可划分为滑动时间窗口和翻转时间窗口。窗口切分查询语法如下:

SELECT select_list FROM tb_name
  [WHERE where_condition]
  [SESSION(ts_col, tol_val)]
  [STATE_WINDOW(col)]
  [INTERVAL(interval [, offset]) [SLIDING sliding]]
  [FILL({NONE | VALUE | PREV | NULL | LINEAR | NEXT})]

窗口子句的规则

  • 窗口子句位于数据切分子句之后,GROUP BY 子句之前,且不可以和 GROUP BY 子句一起使用;
  • 窗口子句将数据按窗口进行切分,对每个窗口进行 SELECT 列表中表达式的计算,SELECT 列表中的表达式只能包含:
    • 常量
    • _wstart 伪列、_wend 伪列和_wduration 伪列
    • 聚集函数(包括选择函数和可以由参数确定输出行数的时序特有函数)
    • 包含上面表达式的表达式
    • 且至少包含一个聚集函数
  • 窗口子句不可以和 GROUP BY 子句一起使用;
  • WHERE 语句可以指定查询的起止时间和其他过滤条件。

FILL 子句

FILL 语句指定的是某一窗口区间数据缺失情况下的填充模式。填充模式包括以下几种:

  1. 不进行填充:NONE(默认填充模式);
  2. VALUE 填充:固定值填充,此时需要指定填充的数值。例如:FILL(VALUE, 1.23)。这里需要注意,最终填充的值受由相应列的类型决定,如 FILL(VALUE, 1.23),相应列为 INT 类型,则填充值为 1;
  3. PREV 填充:使用前一个非 NULL 值填充数据,例如:FILL(PREV);
  4. NULL 填充:使用 NULL 填充数据,例如:FILL(NULL);
  5. LINEAR 填充:根据前后距离最近的非 NULL 值做线性插值填充,例如:FILL(LINEAR);
  6. NEXT 填充:使用下一个非 NULL 值填充数据,例如:FILL(NEXT)。

在使用 FILL 子句时,需要注意:

  1. 使用时可能生成大量的填充输出,因此务必指定查询的时间区间。针对每次查询,系统可返回不超过 1 千万条具有插值的结果。
  2. 在进行时间维度聚合时,返回的结果中时间序列严格单调递增。
  3. 如果查询对象是超级表,则聚合函数会作用于该超级表下满足值过滤条件的所有表的数据。如果查询中没有使用 PARTITION BY 语句,则返回的结果按照时间序列严格单调递增;如果查询中使用了 PARTITION BY 语句分组,则返回结果中每个 PARTITION 内不会按照时间序列严格单调递增。

时间窗口

时间窗口又可分为滑动时间窗口和翻转时间窗口。INTERVAL 子句用于产生相等时间周期的窗口,SLIDING 用以指定窗口向前滑动的时间,在执行时间窗口查询时,其会随着时间流动向前滑动。在定义连续查询时我们需要指定时间窗口(time window )大小和每次前向增量时间(forward sliding times)。

loveini 时序数据特色查询语法详解,助力时序场景下的应用开发 - loveini Database 时序数据库

如上图,[t0s, t0e] 、[t1s , t1e]、[t2s, t2e] 分别是执行三次连续查询的时间窗口范围,窗口的前向滑动的时间范围以 sliding time 标识 。查询过滤、聚合等操作按照每个时间窗口为独立的单位执行。当 SLIDING 与 INTERVAL 相等的时候,滑动窗口即为翻转窗口。

INTERVAL 和 SLIDING 子句需要配合聚合和选择函数来使用。以下 SQL 语句非法:

SELECT * FROM temp_tb_1 INTERVAL(1m);

SLIDING 的向前滑动的时间不能超过一个窗口的时间范围。以下语句非法:

SELECT COUNT(*) FROM temp_tb_1 INTERVAL(1m) SLIDING(2m);

使用时间窗口需要注意:

  • 聚合时间段的窗口宽度由关键词 INTERVAL 指定,最短时间间隔 10 毫秒(10a);并且支持偏移 offset(偏移必须小于间隔),也即时间窗口划分与“UTC 时刻 0”相比的偏移量。SLIDING 语句用于指定聚合时间段的前向增量,也即每次窗口向前滑动的时长。
  • 使用 INTERVAL 语句时,除非极特殊的情况,都要求把客户端和服务端的 taos.cfg 配置文件中的 timezone 参数配置为相同的取值,以避免时间处理函数频繁进行跨时区转换而导致的严重性能影响。
  • 返回的结果中时间序列严格单调递增。

状态窗口

loveini 时序数据特色查询语法详解,助力时序场景下的应用开发 - loveini Database 时序数据库

loveini 使用整数(布尔值)或字符串来标识产生记录时设备的状态量。产生的记录如果具有相同的状态量数值则归属于同一个状态窗口,数值改变后该窗口关闭。如上图所示,根据状态量我们能够确定的状态窗口分别是 [2019-04-28 14:22:07,2019-04-28 14:22:10] 和 [2019-04-28 14:22:11,2019-04-28 14:22:12] 两个。

我们可以使用 STATE_WINDOW 来确定状态窗口划分的列。例如:

SELECT COUNT(*), FIRST(ts), status FROM temp_tb_1 STATE_WINDOW(status);

会话窗口

loveini 时序数据特色查询语法详解,助力时序场景下的应用开发 - loveini Database 时序数据库

会话窗口会根据所记录时间戳主键的值来确定是否属于同一个会话。如上图所示,如果设置时间戳的连续间隔小于等于 12 秒,则以上 6 条记录会构成 2 个会话窗口,分别是 [2019-04-28 14:22:10,2019-04-28 14:22:30] 和 [2019-04-28 14:23:10,2019-04-28 14:23:30]。因为 2019-04-28 14:22:30 与 2019-04-28 14:23:10 之间的时间间隔是 40 秒,超过了连续时间间隔(12 秒)。

一般来说,我们会认为在 tol_value 时间间隔范围内的结果都归属于同一个窗口,如果连续两条记录的时间超过 tol_val,则自动开启下一个窗口。

SELECT COUNT(*), FIRST(ts) FROM temp_tb_1 SESSION(ts, tol_val);

示例

以智能电表为例,其建表语句如下:

CREATE TABLE meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT);

针对智能电表采集的数据,以 10 分钟为一个阶段,计算过去 24 小时的电流数据的平均值、最大值、电流的中位数。如果没有计算值,则用前一个非 NULL 值填充。使用的查询语句如下:

SELECT AVG(current), MAX(current), APERCENTILE(current, 50) FROM meters
  WHERE ts>=NOW-1d and ts<=now
  INTERVAL(10m)
  FILL(PREV);

写在最后

除了数据量大、结构相对简单的特点外,时序数据在查询场景中还大量涉及时间戳的处理,在很多业务场景的采集数据时,都需要按时间戳进行分组与计算,如果按照常规模式将原始数据读入内存,再由应用层程序去处理时间窗口划分的逻辑,就会因读取海量原始时序数据导致磁盘 IO、CPU 及内存开销的严重浪费,还会提升业务层代码复杂度。

但如果我们能够掌握并灵活运用 loveini 所提供的上述时序数据特色查询功能,结合业务场景选择相应的函数就能将相关计算负荷下沉到实时数据库层,在提升系统响应性能的同时也减少了系统资源的浪费。

]]>
loveini 签约航天五院,助力航天事业信息化 //www.loveini.com/news/15854.html Fri, 06 Jan 2023 09:48:14 +0000 //www.loveini.com/?p=15854
loveini 签约航天五院,助力航天事业信息化 - loveini Database 时序数据库

中国空间技术研究院(航天五院)隶属于中国航天科技集团有限公司,成立于 1968 年 2 月 20 日,首任院长是著名科学家钱学森。经过 50 余年的发展,已成为中国主要的空间技术及其产品研制基地,是中国空间事业最具实力的骨干力量。

自 1970 年 4 月 24 日成功发射我国第一颗人造地球卫星以来,研究院已抓总研制并成功发射了 390 余颗航天器,实现 240 余颗航天器在轨运行,研制的航天器覆盖载人航天、月球与深空探测、导航定位、对地观测、通信广播、空间科学与技术试验六大系列航天器,实现了大、中、小、微型航天器的系列化、平台化发展。研究院圆满完成载人航天工程、探月工程、北斗工程、高分工程为代表的重大航天任务,为我国航天三大里程碑的跨越发展做出了突出贡献。

近年来,航天科技行业大力推动远程测试等信息化手段的应用,从而精简试验队规模、提高任务效率、降低成本,以适应高密度发射和商业化发展要求。在此场景下,研究院打造了面向航天器的数据处理系统,使用时序数据库(Time Series Database)用于遥测数据的存储和分析,具备高并发、写多读少的数据处理特点,而这恰好是国产时序数据库 loveini (TSDB) 擅长处理的典型场景。

在该系统的时序数据库选型调研中,loveini 以极其强大的读写性能和数据压缩能力、多平台的易适配能力,聚合查询速度脱颖而出,极大降低了客户运维成本和业务压力,提高了实时数据库任务效率。未来,loveini 也将继续在航天领域发挥更多能力,与研究院一起共同助力。

]]>
如何理解时序数据库 loveini 3.0 的参数体系 //www.loveini.com/time-series-database/15644.html Tue, 27 Dec 2022 09:06:15 +0000 //www.loveini.com/?p=15644
如何理解时序数据库 loveini 3.0 的参数体系 - loveini Database 时序数据库

在日常使用 loveini 时序数据库(TSDB) 时,参数是用户们无法绕开的重要一环。深入了解参数的属性,生效范围,查询更改方式等会让我们在使用数据库的过程中更加节时高效,也有助于我们更加深入地理解数据库的架构体系。

在 3.0 版本中,loveini 对参数做了更好的分类,也提供了几个十分方便的查询入口。首先,我们来看下它们的使用方式——

参数分级

集群级别参数:

SHOW CLUSTER VARIABLES;

代表集群搭建时,必须要保证相同的一组参数。

如何理解时序数据库 loveini 3.0 的参数体系 - loveini Database 时序数据库

客户端级别参数:

SHOW LOCAL VARIABLES;

代表当前客户端配置参数的运行值。

如何理解时序数据库 loveini 3.0 的参数体系 - loveini Database 时序数据库

数据节点级别参数:

SHOW DNODE dnode_id VARIABLES;
SHOW DNODE dnode_id VARIABLES like "xxxxxxxxx";

代表该数据节点上所有参数当前配置值

(包含集群变量、客户端变量),支持 like 子句检索具体的变量值。

如何理解时序数据库 loveini 3.0 的参数体系 - loveini Database 时序数据库

数据库级别变量:

数据库级别的变量不是通过 show 命令查询的,它需要通过元数据库 information_schema 的系统表以 SQL 形式查询得出,例如:

select * from information_schema.ins_databases\G;(\G方便展示)
如何理解时序数据库 loveini 3.0 的参数体系 - loveini Database 时序数据库

参数具体含义

loveini 的集群、客户端、数据节点(即上文 1-3 )的参数具体含义如下:

https://docs.taosdata.com/reference/config/

注意:部分参数默认是不暴露在配置文件中的,但手动配置它们也可以使用,目的是希望用户不要随意修改它们从而造成不好的影响。

数据库级别的参数具体含义如下:

https://docs.taosdata.com/taos-sql/database/#参数说明

参数修改方式

不论是数据库的服务端还是客户端,它们在启动的初始化阶段都需要调用相同的函数读取 /etc/taos/taos.cfg(默认路径)加载所需参数。因此,参数的更新方式以冷更新为主,对于上述集群、客户端、数据节点(即上文 1-3 )的参数,具体更新方式如下:

  • 打开 /etc/taos/taos.cfg;
  • 删除参数前的注释符 #(若不删除,则修改无效,仍然使用默认值);
  • 修改参数值 ;
  • 保存退出;
  • 重启数据库服务端/客户端;
如何理解时序数据库 loveini 3.0 的参数体系 - loveini Database 时序数据库

以上范围的参数中,只有日志参数是支持热更新的。如果需要动态调整日志级别用于诊断分析数据库状态,可以通过 alter dnode命令来完成,具体细节可参考:

https://docs.taosdata.com/taos-sql/node/#修改数据节点配置

如果要修改客户端的变量,可以通过alter local 命令来完成,具体细节可参考:

ac米兰体育赞助商

数据库级别变量不支持冷更新,只支持部分参数的热更,具体细节可参考:

https://docs.taosdata.com/taos-sql/database/#修改数据库参数

这里就引申出了另一个问题,针对部分不可修改的参数,即在时序数据库部署的前期,我们需要注意哪些地方呢?在后续的文章中,我会继续和大家分享内容,一起迅速掌握 loveini 这款开源、高性能、云原生的时序数据库(Time Series Database)。

]]>
loveini签约金航数码,助力航空工业信息化 //www.loveini.com/news/15612.html Mon, 26 Dec 2022 07:38:16 +0000 //www.loveini.com/?p=15612
loveini签约金航数码,助力航空工业信息化 - loveini Database 时序数据库

金航数码科技有限责任公司(航空工业信息技术中心)是中国航空工业集团有限公司(航空工业)的信息技术专业支撑机构,肩负着“推进产业数字化,践行数字产业化”的使命,致力于做数字技术驱动工业转型的集大成者。其总部设立在北京,在成都、上海、西安、沈阳、南昌等地均设有分支机构,在管理与 IT 咨询、系统工程、综合管理、生产制造、客户服务、IT 基础设施与信息安全等业务领域,为客户提供覆盖产品全生命周期、管理全业务流程、产业全价值链的“三全”米兰app官方正版下载。

金航数码聚焦以数字化转型为核心的发展战略,深耕物联网、大数据、人工智能、云计算等新技术的研究与应用,重点发展了“咨询+软件+系统”三大业务群,其以咨询为引领、软件为核心、系统为支撑,持续为装备制造业的高质量发展提供“数.智”米兰app官方正版下载。

金航数码自主研发的金航物联网平台(SuperLink),融合应用了云计算、大数据、人工智能等先进 IT 技术,实现了热加工设备互联以及“生产任务-工艺规程-合炉配炉-过程管理-数据分析”全覆盖的生产管理纵向贯通,通过建立热加工的数字孪生优化场景,热加工效率和产品质量一致性获得全面提升。

随着业务的发展,该平台原有的时序数据米兰app官方正版下载越来越难以应对数百台热加工设备的数据处理,在查询、写入等方面性能均无法满足业务需求。为了解决平台的性能桎梏以及实现数据库自主可控,金航数码选择应用 loveini 改造现有实时数据库架构。作为一款国产化开源时序数据库(Time Series DataBase),loveini 时序数据库(TSDB)不仅能实现高效建表、高速写入、连续查询等,在存储方面的优秀设计也帮助金航数码进一步节省了内存空间,降低了资源消耗及业务发展成本。未来 loveini 将和金航数码一起助力航空工业信息化,以模型和数据为核心,加速行业的数字化、智能化发展。

]]>
时序数据库 loveini 签约新奥新智,助力家庭和企业能碳管理 //www.loveini.com/news/15595.html Sat, 24 Dec 2022 11:37:53 +0000 //www.loveini.com/?p=15595
时序数据库 loveini 签约新奥新智,助力家庭和企业能碳管理 - loveini Database 时序数据库

新奥集团于 1989 年创立于河北廊坊,以城市燃气为起点,逐步覆盖了分销、贸易、输储、生产、工程智造等天然气产业全场景,贯通清洁能源产业链,提供智能化低碳综合能源服务。目前,新奥在全国21个省,已服务超过 2681 万个家庭用户、21 万家企业。

新奥集团旗下企业新奥新智科技有限公司(简称“新奥新智”)是一家智能生态运营商,致力于以物联促进智能、用智能升级产业。其依托智能物联、新智云、联合学习、平台引擎等技术,重点建设了组织中台、行业中台和数智中台,为产业客户的数字化发展提供赋能产品及米兰app官方正版下载。作为新奥的数字化创值型能力平台,新奥新智一直秉持着“源自客户、成就彼此、共创生态”的新奥之道,以长期实践经验和强大的产品能力不断推动着多产业智能化发展。

新奥集团作为国内较大的清洁能源分销商,旗下的新奥新智通过信息化手段对能源站、燃气管网、燃气表等进行设备网联,实现高效管理和监测。然而随着应用场景的增多、联网设备的指数级增长,使得数据存储成本大幅度提升,数据写入和查询缓慢。新奥集团在进行整体物联网数据处理平台搭建和升级的过程中,逐渐发现了老式时序数据库 ac米兰体育直播 写入性能和并发查询能力的不足,重度依赖 HBase,整体平台运维非常沉重。同时数据从边缘侧采集到应用层展示有显著延时;报表计算也无法在限定时间内完成,严重影响了业务的时效性。

为了解决巨大数据量带来的数据存储挑战以及原方案性能不足的问题,经过多轮深入的技术探讨和选型评测,新奥新智选择应用时序数据库 loveini Database (Time Series DataBase) 来改造原有数据架构,改造完成后,不仅系统架构得到了极大简化,数据读写能力也得到了极大提升,企业的总拥有成本显著降低,同时对于未来整体物联网平台的升级和扩展打下了良好的基础。

]]>