十分钟上手TDengine大数据平台|【绽放吧!数据库】
目录
前言
TDengine是涛思数据专为物联网、车联网、工业互联网、IT运维等设计和优化的大数据平台。除核心的快10倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度,且核心代码,包括集群功能全部开源。
正文
TDengine大数据平台线上实例下载量超过68.8k次,Github上的star数也多达15.5k。可以说是非常热门且使用广泛的大数据平台之一。那么,TDengine大数据平台具备哪些优势和特点呢?另外,我们应该如何使用TDengine大数据平台呢?就是今天讨论的主要内容。本文将分别从这两个方面进行展开讨论。
一、TDengine的优势和特点
我们知道TDengine是一个大数据平台服务,在它广泛使用的背景下,它已经具备一定的优势和特点。换句话说,我们为什么要选择TDengine大数据平台呢?TDengine大数据平台都具备哪些优势和特点呢?接下来,我们一点点分析。
1.1 10倍以上的性能提升
定义了创新的数据存储结构,单核每秒就能处理至少2万次请求,插入数百万个数据点,读出一千万以上数据点,比现有通用数据库快了十倍以上。
1.2 硬件或云服务成本降至1/5
由于超强性能,计算资源不到通用大数据方案的1/5;通过列式存储和先进的压缩算法,存储空间不到通用数据库的1/10。
1.3 全栈时序数据处理引擎
将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成Kafka/Redis/HBase/Spark等软件,大幅降低应用开发和维护成本。
1.4 强大的分析功能
无论是十年前还是一秒钟前的数据,指定时间范围即可查询。数据可在时间轴上或多个设备上进行聚合。即席查询可通过Shell/Python/R/Matlab随时进行。
1.5 与第三方工具无缝连接
不用一行代码,即可与Telegraf, Grafana, EMQ X, Prometheus, Matlab, R集成。后续还将支持MQTT, OPC, Hadoop,Spark等, BI工具也将无缝连接。
1.6 零运维成本、零学习成本
安装、集群一秒搞定,无需分库分表,实时备份。标准SQL,支持JDBC,RESTful,支持Python/Java/C/C++/Go/Node.JS, 与MySQL相似,零学习成本。
二、性能数据展示
为了帮助用户了解 TDengine 的指标,这里将 TDengine 与 MySQL, Cassandra, InfluxDB, OpenTSDB, ClickHouse 做了读写性能对比测试。同时,对 TDengine 单机的其他指标以及集群的水平扩 展性做了测试。
查询速度具体对比测试结果如下:
由上图结果,我们可以知道 TDengine 的查询速度和查询能力远远高于 MySQL, Cassandra, InfluxDB, OpenTSDB, ClickHouse。
写入速度具体对比测试结果如下:
由上图结果,我们可以知道 TDengine 的写入速度远远高于 MySQL, Cassandra, InfluxDB, OpenTSDB等工具,和 ClickHouse 在客户端连接数为1或2时,不相上下,但是随着客户端连接数的增加写入速度开始甩开 ClickHouse。
三、使用Docker模式体验TDengine
好了,讲了这么多关于 TDengine 的理论知识,我们接下来开始实际动手操作。为了能够达到题目要求的时间限制,最快的部署方式就是Docker模式。虽然并不推荐在生产环境中通过 Docker 来部署 TDengine 服务,但 Docker 工具能够很好地屏蔽底层操作系统的环境差异,很适合在开发测试或者初次体验时用于安装运行 TDengine 的工具集。借助 Docker 模式能够比较方便地在 Mac OSX 和 Windows 系统上尝试 TDengine 服务,而无需安装虚拟机或额外租用 Linux 服务器。
3.1 安装Docker
因为我们想要使用 Docker 的模式跑 TDengine 服务,首先需要我们在机器上安装了 Docker 依赖环境。
使用如下命令:
yum install docker-ce
具体操作步骤可以参考文章《linux系统中解决docker: command not found》。
安装成功后,我们可以如下命令查看 Docker 的版本:
docker -v
输入如下信息,表示安装成功:
root@ubuntu ~# docker -v
Docker version 20.10.5, build 55c4c88
3.2 拉取 TDengine 镜像
使用命令拉取 TDengine 镜像,默认是最新镜像,我们也可以指定版本。
docker pull tdengine/tdengine
执行结果如下,表示拉取镜像成功。
root@ubuntu ~# docker pull tdengine/tdengine
Using default tag: latest
latest: Pulling from tdengine/tdengine
4bbfd2c87b75: Pull complete
d2e110be24e1: Pull complete
889a7173dcfe: Pull complete
4710c122052d: Pull complete
d5c1a989e6cb: Pull complete
809ba0c8d80f: Pull complete
0cc2cd9b7023: Pull complete
9f78a6051779: Pull complete
Digest: sha256:4e3660c40d374ed8c7e316707470e96d53321c6d98d8ad188a09e2bcc2cb83a0
Status: Downloaded newer image for tdengine/tdengine:latest
docker.io/tdengine/tdengine:latest
3.3 后台启动 TDengine
完成拉取镜像后,我们可以使用如下命令在后台启动 TDengine 服务。其实,我们可以跳过上一步拉取镜像的操作,如果我们直接执行如下命令,当本地不存在对应的 TDengine 镜像时,也会自动下载拉取对应的镜像。
docker run -d tdengine/tdengine
执行结果如下,返回的是对应的 TDengine 容器ID。
root@ubuntu ~# docker run -d tdengine/tdengine
d7fc8faa2549798533cf3fd0e5411e335d4cdf39174020c69c24b336e3a301ae
3.4 查看容器运行状态
使用如下命令可以查看 TDengine 服务是否已经正常启动,“Up About a minute”表示服务已经启动一分钟左右。
root@ubuntu ~# docker container ls | grep tdengine
d7fc8faa2549 tdengine/tdengine "taosd" About a minute ago Up About a minute 6030-6042/tcp bold_dewdney
3.5 进入容器
可以使用如下命令进入到容器内部:
root@ubuntu ~# docker exec -it d7fc8faa2549 bash
root@d7fc8faa2549:~/TDengine-server-2.1.3.2# ls
connector driver examples install.sh taos.tar.gz
3.6 执行 taos shell
在服务器 shell 中执行 taos 命令,TDengine 终端成功连接服务端,打印出了欢迎消息和版本信息。如果失败,会有错误信息打印出来。在 TDengine 终端中,可以通过 SQL 命令来创建/删除数据库、表、超级表等,并可以进行插入和查询操作。
具体执行结果如下:
root@d7fc8faa2549:~/TDengine-server-2.1.3.2# taos
Welcome to the TDengine shell from Linux, Client Version:2.1.3.2
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
3.7 生成测试数据
使用 taosdemo 命令生成测试数据,执行晚命令,回车,将新建一个数据库 test,并且自动创建一张超级表 meters,并以超级表 meters 为模版创建了 1 万张表,表名从 "t0" 到 "t9999"。每张表有 10 万条记录,每条记录有 f1,f2,f3 三个字段,时间戳 ts 字段从 "2017-07-14 10:40:00 000" 到 "2017-07-14 10:41:39 999"。每张表带有 areaid 和 loc 两个标签 TAG,areaid 被设置为 1 到 10,loc 被设置为 "beijing" 或 "shanghai"。
执行结果如下:
root@d7fc8faa2549:~/TDengine-server-2.1.3.2# taosdemo
interface: taosc
host: 127.0.0.1:6030
user: root
password: taosdata
configDir:
resultFile: ./output.txt
thread num of insert data: 10
thread num of create table: 10
top insert interval: 0
number of records per req: 30000
max sql length: 1048576
database count: 1
database[0]:
database[0] name: test
drop: yes
replica: 1
precision: ms
super table count: 1
super table[0]:
stbName: meters
autoCreateTable: no
childTblExists: no
childTblCount: 10000
childTblPrefix: t
dataSource: rand
iface: taosc
insertRows: 10000
interlaceRows: 0
disorderRange: 1000
disorderRatio: 0
maxSqlLen: 1048576
timeStampStep: 1
startTimestamp: 2017-07-14 10:40:00.000
sampleFormat:
sampleFile:
tagsFile:
columnCount: 4
column[0]:INT column[1]:INT column[2]:INT column[3]:INT
tagCount: 2
tag[0]:INT tag[1]:BINARY(16)
Press enter key to continue or Ctrl-C to stop
create database test success!
Spent 6.2820 seconds to create 10000 tables with 10 thread(s)
3.8 查看数据库
使用如下命令查看数据库,一共有两个,分别是test和log。其中,test库有10000张数据表,log库有4张数据表。注意:taos 语句必须带分号!
执行结果如下:
taos> show databases;
name | created_time | ntables | vgroups | replica | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update | status |
====================================================================================================================================================================================================================================================================================
test | 2021-07-11 14:52:11.845 | 10000 | 10 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ms | 0 | ready |
log | 2021-07-11 14:43:17.324 | 4 | 1 | 1 | 1 | 10 | 30 | 1 | 3 | 100 | 4096 | 1 | 3000 | 2 | 0 | us | 0 | ready |
Query OK, 2 row(s) in set (0.001062s)
3.9 查看数据库表
使用 use test 命令选择数据库,再使用如下命令查看数据库表,一共10000张表,终端瞬间被刷屏。
taos> use test;
Database changed.
taos> show tables;
......
3.10 测试查询速度
好啦,我们现在测试一下 TDengine 的查询速度,我们查找第100张表的前15条数据,具体命令和执行结果如下:
taos> select * from test.t99 limit 15;
ts | col0 | col1 | col2 | col3 |
==================================================================================
2017-07-14 10:40:00.000 | 46128 | 43635 | 43635 | 47625 |
2017-07-14 10:40:00.001 | 48767 | 23015 | 38987 | 60167 |
2017-07-14 10:40:00.002 | 25223 | 18686 | 18686 | 56218 |
2017-07-14 10:40:00.003 | 27975 | 59365 | 37706 | 17246 |
2017-07-14 10:40:00.004 | 33828 | 33828 | 65500 | 43519 |
2017-07-14 10:40:00.005 | 12169 | 39308 | 62496 | 33360 |
2017-07-14 10:40:00.006 | 1370 | 21448 | 23940 | 15708 |
2017-07-14 10:40:00.007 | 37875 | 47965 | 39073 | 11296 |
2017-07-14 10:40:00.008 | 56074 | 58317 | 13196 | 26983 |
2017-07-14 10:40:00.009 | 14746 | 51094 | 26880 | 21838 |
2017-07-14 10:40:00.010 | 53468 | 60227 | 19184 | 28709 |
2017-07-14 10:40:00.011 | 54294 | 25317 | 60700 | 8795 |
2017-07-14 10:40:00.012 | 19892 | 19892 | 47551 | 15622 |
2017-07-14 10:40:00.013 | 14187 | 27385 | 64117 | 63378 |
2017-07-14 10:40:00.014 | 7355 | 37160 | 21846 | 21846 |
Query OK, 15 row(s) in set (0.003815s)
执行时发现,查询结果几乎是瞬时出来的,说明TDengine的查询速度还是非常快的。
3.11 TDengine支持的系统平台
这么强大的 TDengine 都支持哪些平台呢,最后让我们一起看一下。
由上图可知,TDengine服务基本上覆盖了我们常用的平台和系统。
最后
TDengine社区版是一开源版本,采用的是AGPL许可证,是一个处理中小规模的物联网数据平台。TDengine企业版是一个运营商级别的分布式版本,它具备超高的可靠性,超强的水平扩展能力,以应对大数据的挑战,包含社区版所有功能。TDengine云服务版是将TDengine企业版运行公有云上,具备弹性伸缩、零管理的特点,通过专业的技术服务团队,提供运营商级的物联网大数据平台服务。
【绽放吧!数据库】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/285617
- 点赞
- 收藏
- 关注作者
评论(0)