时序数据库 TDengine 的入门体验和操作记录

时序数据库 TDengine 的学习和使用经验

    • 什么是 TDengine ?
    • 什么是时序数据 ?
    • 使用RPM安装包部署
      • 默认的网络端口
    • TDengine 使用
      • TDengine 命令行(CLI)
      • taosBenchmark
      • 服务器内存需求
      • 删库跑路测试
    • 使用体验
    • 文档纠错

什么是 TDengine ?

TDengine 核心是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网IoT平台、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网IoT、工业大数据平台

官网:https://www.taosdata.com/
GitHub 社区:https://github.com/taosdata/TDengine

什么是时序数据 ?

时序数据,即时间序列数据(Time-Series Data),是一组按照时间发生先后顺序进行排列的序列数据。日常生活中,设备、传感器采集的数据,证券交易的记录都是时序数据。这些时序数据是周期、准周期产生的,或事件触发产生的,有的采集频率高,有的采集频率低。一般被发送至服务器中进行汇总并进行实时分析和处理,对系统的运行做出实时监测或预警,对股市行情进行预测。这些数据也可以被长期保存下来,用以进行离线数据分析。

时序数据的十大特征:

  • 数据是时序的,一定带有时间戳
  • 数据是结构化的
  • 一个数据采集点就是一个数据流
  • 数据较少有更新删除操作
  • 数据不依赖于事务
  • 相对互联网应用,写多读少
  • 用户关注的是一段时间的趋势
  • 数据是有保留期限的
  • 需要实时分析计算操作
  • 流量平稳、可预测

使用RPM安装包部署

硬件环境:

[root@vdb ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@vdb ~]# uname -a
Linux vdb 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@vdb ~]# ll TDengine-server-3.3.2.0-Linux-x64.rpm 
-rw-r--r-- 1 root root 67616512 Sep 15 11:00 TDengine-server-3.3.2.0-Linux-x64.rpm

安装

[root@vdb ~]# rpm -ivh TDengine-server-3.3.2.0-Linux-x64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...1:tdengine-3.3.2.0-3.el7           ################################# [100%]
Start to install TDengine...System hostname is: vdbEnter FQDN:port (like h1.taosdata.com:6030) of an existing TDengine cluster node to join
OR leave it blank to build one:Enter your email address for priority support or enter empty to skip: 
Created symlink from /etc/systemd/system/multi-user.target.wants/taosd.service to /etc/systemd/system/taosd.service.To configure TDengine           : edit /etc/taos/taos.cfg
To configure taosAdapter        : edit /etc/taos/taosadapter.toml
To configure taos-explorer      : edit /etc/taos/explorer.toml
To start TDengine server        : sudo systemctl start taosd
To start taosAdapter            : sudo systemctl start taosadapter
To start taoskeeper             : sudo systemctl start taoskeeper
To start taos-explorer          : sudo systemctl start taos-explorerTDengine is installed successfully!To start all the components         : sudo start-all.sh
To access  Commnd Line Interface    : taos -h vdb
To access  Graphic User Interface   : http://vdb:6060

image.png

启动 TDengine 的服务进程

systemctl start taosd
systemctl start taosadapter
systemctl start taoskeeper
systemctl start taos-explorer

备注:systemctl stop taosd 指令在执行后并不会马上停止 TDengine 服务,而是会等待系统中必要的落盘工作正常完成。在数据量很大的情况下,这可能会消耗较长时间。

默认的网络端口

TDengine 的一些接口或组件的常用端口,这些端口均可以通过配置文件中的参数进行修改。

接口或组件端口
原生接口(taosc)6030
RESTful 接口6041
WebSocket 接口6041
taosKeeper6043
taosX6050, 6055
taosExplorer6060

TDengine 使用

TDengine 命令行(CLI)

客户端命令taos,语法特性跟MySQL有点类似
image.png

[root@vdb ~]# taos
Welcome to the TDengine Command Line Interface, Client Version:3.3.2.0
Copyright (c) 2023 by TDengine, all rights reserved.*********************************  Tab Completion  **************************************   The TDengine CLI supports tab completion for a variety of items,                   **   including database names, table names, function names and keywords.                **   The full list of shortcut keys is as follows:                                      **    [ TAB ]        ......  complete the current word                                  **                   ......  if used on a blank line, display all supported commands    **    [ Ctrl + A ]   ......  move cursor to the st[A]rt of the line                     **    [ Ctrl + E ]   ......  move cursor to the [E]nd of the line                       **    [ Ctrl + W ]   ......  move cursor to the middle of the line                      **    [ Ctrl + L ]   ......  clear the entire screen                                    **    [ Ctrl + K ]   ......  clear the screen after the cursor                          **    [ Ctrl + U ]   ......  clear the screen before the cursor                         *****************************************************************************************Server is TDengine Community Edition, ver:3.3.2.0 and will never expire.taos> show databases;name              |
=================================information_schema             |performance_schema             |log                            |
Query OK, 3 row(s) in set (0.001579s)taos> CREATE DATABASE demo;
Create OK, 0 row(s) affected (0.173739s)taos> use demo;
Database changed.taos> CREATE TABLE t (ts TIMESTAMP, speed INT);
Create OK, 0 row(s) affected (0.002680s)taos> INSERT INTO t VALUES ('2024-09-15 00:00:00', 10);
Insert OK, 1 row(s) affected (0.000937s)taos> INSERT INTO t VALUES ('2014-09-15 01:00:00', 20);DB error: Timestamp data out of range (0.000959s)
taos> INSERT INTO t VALUES ('2024-09-15 01:00:00', 20);
Insert OK, 1 row(s) affected (0.000789s)taos> INSERT INTO t VALUES ('2024-09-15 00:00:00', 30);
Insert OK, 1 row(s) affected (0.000893s)taos> INSERT INTO t VALUES ('2024-09-14 00:00:00', 40);
Insert OK, 1 row(s) affected (0.000929s)taos> SELECT * FROM t;ts            |    speed    |
========================================2024-09-14 00:00:00.000 |          40 |2024-09-15 00:00:00.000 |          30 |2024-09-15 01:00:00.000 |          20 |
Query OK, 3 row(s) in set (0.001628s)

image.png

  • 默认TIMESTAMP日期是有范围的
  • 插入相同日期会直接做覆盖处理

taosBenchmark

taosBenchmark 是一个专为测试 TDengine 性能而设计的工具,它能够全面评估TDengine 在写入、查询和订阅等方面的功能表现。

taosBenchmark -y

image.png

备注:非事务操作,中途中断(Cont+C)插入的数据不会回滚

系统将自动在数据库 test 下创建一张名为 meters的超级表。这张超级表将包含 10,000 张子表,表名从 d0 到 d9999,每张表包含 10,000条记录。每条记录包含 ts(时间戳)、current(电流)、voltage(电压)和 phase(相位)4个字段。时间戳范围从 “2017-07-14 10:40:00 000” 到 “2017-07-14 10:40:09 999”。每张表还带有 location 和 groupId 两个标签,其中,groupId 设置为 1 到 10,而 location 则设置为 California.Campbell、California.Cupertino 等城市信息。
image.png
通过系统提供的伪列_wstart 来给出每个窗口的开始时间

备注:实际数据量占用不到590MB的磁盘空间

根据库vgroup_id查找对应数据目录下库对应的目录:

show vgroups;
show vnodes;

image.png

服务器内存需求

每个数据库能够创建固定数量的 vgroup,默认情况下为两个。在创建数据库时,可以通过 vgroups 参数指定 vgroup 的数量,而副本数则由 replica 参数确定。由于每个 vgroup 中的副本会对应一个 vnode,因此数据库所占用的内存计算方式:vgroups ×replica × (buffer + pages × pagesize + cachesize)

系统管理员可以通过如下 SQL 查看 information_schema 库中的 ins_vnodes 表来获得所有数据库所有 vnodes 在各个 dnode 上的分布。

taos> select * from information_schema.ins_vnodes;dnode_id   |  vgroup_id  |            db_name             |   status    |        role_time        |       start_time        | restored |
==========================================================================================================================================1 |           2 | log                            | leader      | 2024-09-25 19:21:41.490 | 2024-09-25 19:21:41.436 | true     |1 |           5 | demo                           | leader      | 2024-09-25 19:33:39.978 | 2024-09-25 19:33:39.937 | true     |1 |           6 | demo                           | leader      | 2024-09-25 19:33:39.901 | 2024-09-25 19:33:39.850 | true     |1 |          11 | test                           | leader      | 2024-09-25 20:10:01.895 | 2024-09-25 20:10:01.854 | true     |1 |          12 | test                           | leader      | 2024-09-25 20:10:01.971 | 2024-09-25 20:10:01.930 | true     |
Query OK, 5 row(s) in set (0.002143s)

image.png

删库跑路测试

image.png

删库过程无需等待,即使有正在操作的会话也会被直接干掉

image.png

使用体验

  • rpm安装体贴还是比较友好的,安装后会打印各个配置文件基本信息和操作命令
  • 客户端命令taos,语法特性跟MySQL数据库有点像
  • 可视化组件—taosExplorer注册需要连接互联网,对完全内网环境不是很友好,这块是否可以考虑分开单独特供一个网页注册平台,使用taosExplorer可视化管理工具就不要连网注册了

image.png

文档纠错

创建的d1003是普通表,且列未指定默认值,但后面插入数据时存在列缺少问题
image.png

d1003是普通表:
文档链接:https://docs.taosdata.com/basic/insert/
image.png

# 错误SQL
INSERT INTO d1001 VALUES ("2018-10-03 14:38:05", 10.2, 220, 0.23),("2018-10-03 14:38:15", 12.6, 218, 0.33),("2018-10-03 14:38:25", 12.3, 221, 0.31) 
d1002 VALUES ("2018-10-03 14:38:04", 10.2, 220, 0.23),("2018-10-03 14:38:14", 10.3, 218, 0.25),("2018-10-03 14:38:24", 10.1, 220, 0.22)
d1003 VALUES("2018-10-03 14:38:06", 11.5, 221, 0.35),("2018-10-03 14:38:16", 10.4, 220, 0.36),("2018-10-03 14:38:26", 10.3, 220, 0.33)
;
# 更正写法一:补全d1003表插入所有列数据
INSERT INTO d1001 VALUES ("2018-10-03 14:38:05", 10.2, 220, 0.23),("2018-10-03 14:38:15", 12.6, 218, 0.33),("2018-10-03 14:38:25", 12.3, 221, 0.31) 
d1002 VALUES ("2018-10-03 14:38:04", 10.2, 220, 0.23),("2018-10-03 14:38:14", 10.3, 218, 0.25),("2018-10-03 14:38:24", 10.1, 220, 0.22)
d1003 VALUES("2018-10-03 14:38:06", 11.5, 221, 0.35, "California.SanFrancisco", 2),("2018-10-03 14:38:16", 10.4, 220, 0.36, "California.SanFrancisco", 2),("2018-10-03 14:38:26", 10.3, 220, 0.33, "California.SanFrancisco", 2)
;
# 更正写法二:指定表d1003插入列
INSERT INTO d1001 VALUES ("2018-10-03 14:38:05", 10.2, 220, 0.23),("2018-10-03 14:38:15", 12.6, 218, 0.33),("2018-10-03 14:38:25", 12.3, 221, 0.31) 
d1002 VALUES ("2018-10-03 14:38:04", 10.2, 220, 0.23),("2018-10-03 14:38:14", 10.3, 218, 0.25),("2018-10-03 14:38:24", 10.1, 220, 0.22)
d1003(ts, current, voltage, phase) VALUES("2018-10-03 14:38:06", 11.5, 221, 0.35),("2018-10-03 14:38:16", 10.4, 220, 0.36),("2018-10-03 14:38:26", 10.3, 220, 0.33)
;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI GPT o1技术报告阅读(2)- 关于模型安全性的测试案例

✨报告阅读:使用大模型来学习推理(Reason) 首先是原文链接:https://openai.com/index/learning-to-reason-with-llms/ 接下来我们看一个简单的关于模型安全性的测试,当模型被问到一个有风险的话题时,会如何思考并回答用户呢&…

C++ | Leetcode C++题解之第421题数组中两个数的最大异或值

题目: 题解: struct Trie {// 左子树指向表示 0 的子节点Trie* left nullptr;// 右子树指向表示 1 的子节点Trie* right nullptr;Trie() {} };class Solution { private:// 字典树的根节点Trie* root new Trie();// 最高位的二进制位编号为 30static…

【linux】gcc makefile

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.gcc如何完成02.gcc选项03.函数库与动静态链接静态链接动态链接库文件特点和用途动态链接版本和兼容性 04.makefile自动推导 01.gcc如何完成 预处理(进行宏替换) 预处理功能主要…

828华为云征文|使用Flexus X实例创建FDS+Nginx服务实现图片上传功能

一、Flexus X实例 什么是Flexus X实例呢,这是华为云最新推出的云服务器产品,如下图: 华为云推出的Flexus云服务器X系列,是在华为顶尖技术团队,特别是荣获国家科技进步奖的领军人物顾炯炯博士及其团队的主导下精心研发…

通过document获取节点元素

1.层级节点 <ul><li id"li1">1</li><li>2</li><li id"li3">3</li><li>4</li><li>5</li></ul><script>//获取id名为li1的元素赋值给li1let li1document.getElementById(li…

Java语言程序设计基础篇_编程练习题**18.34 (游戏:八皇后问题)

目录 题目&#xff1a;**18.34 (游戏:八皇后问题) 代码示例 代码解析 输出结果 使用文件 题目&#xff1a;**18.34 (游戏:八皇后问题) 八皇后问题是要找到一个解决方案&#xff0c;将一个皇后棋子放到棋盘上的每行中&#xff0c;并且两个皇后棋子之间不能相互攻击。编写个…

基于C#+SQL Server2005(WinForm)图书管理系统

图书管理系统 一、 首先把数据库脚本贴出来(数据库名为library) USE [library] GO /****** Object: Table [dbo].[books] Script Date: 06/12/2016 11:27:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[books]([bNum] [nvarchar](10…

宝塔部署vue项目出现的各种问题

使用宝塔面板&#xff0c;网站页面&#xff0c;构建php静态网页 问题一&#xff1a;图片等静态资源无法加载 找到真正请求的url&#xff0c; 然后在项目目录下面创建对应的目录&#xff0c;将资源放入 问题二&#xff1a;刷新出现404 在这里任意位置添加 ## 添加上这个配…

socket.io-client实现实前后端时通信功能

这里我使用的后端 基于node.js的koa框架 前端使用的是vite {"name": "hou","version": "1.0.0","description": "","main": "app.js","scripts": {"test": "echo …

ARM单片机的内存分布(重要)

ARM单片机的内存分布&#xff08;重要&#xff09; 一、S32K344的内存布局 MEMORY {int_pflash : ORIGIN 0x00400000, LENGTH 0x003D4000 /* 4096KB - 176KB (sBAF HSE)*/int_dflash : ORIGIN 0x10000000, LENGTH 0x00020000 /* 128KB …

BUUCTF [SCTF2019]电单车详解两种方法(python实现绝对原创)

使用audacity打开&#xff0c;发现是一段PT2242 信号 PT2242信号 有长有短&#xff0c;短的为0&#xff0c;长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》&#xff0c;2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W&#xff0c;而私营单位就业人员平均月薪只有5.7K左右。 图源&#xff1a;…

两数之和、三数之和、四数之和

目录 两数之和 题目链接 题目描述 思路分析 代码实现 三数之和 题目链接 题目描述 思路分析 代码实现 四数之和 题目链接 题目描述 思路分析 代码实现 两数之和 题目链接 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 题目…

EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)

摘要 EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势&#xff0c;通过一系列高效的设计改进和搜索方法&#xff0c;实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式&#xff1a;RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上&#xff0c;可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照&#xff0c;可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs

代码思路是受一个洛谷题解里面大佬的启发。应该算是一个dfs和回溯的入门题目&#xff0c;很好的入门题目了下面我会先给我原题解思路我想可以很快了解这个思路。下面是我自己根据力扣大佬写的。 我会进行详细讲解并配上图辅助理解大家请往下看 #include<iostream> #inc…

初始MYSQL数据库(7)—— 视图

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 引言 前面我们学习MySQL数据库时&#xff0c;创建表之后&#xff0c;会在表中插入数据&#xff0c;在需要的时候&#xff0c;也会进行…

python文字转wav音频

借鉴博客 一.前期准备 1. pip install baidu-aip 2. pip install pydub 3. sudo apt-get install ffmpeg 二.代码 from aip import AipSpeech from pydub import AudioSegment import time#input your own APP_ID/API_KEY/SECRET_KEY APP_ID 14891501 API_KEY EIm2iXtvD…

示例:WPF中Grid显示网格线的几种方式

一、目的&#xff1a;介绍一下WPF中Grid显示网格线的几种方式 二、几种方式 1、重写OnRender绘制网格线&#xff08;推荐&#xff09; 效果如下&#xff1a; 实现方式如下&#xff1a; public class LineGrid : Grid{private readonly Pen _pen;public LineGrid(){_pen new P…

【Linux】深度解析与实战应用:GCC/G++编译器入门指南

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…