十分钟上手TDengine大数据平台|【绽放吧!数据库】

举报
liuzhen007 发表于 2021/08/19 21:22:07 2021/08/19
【摘要】 ​ 目录前言正文一、TDengine的优势和特点1.1 10倍以上的性能提升1.2 硬件或云服务成本降至1/51.3 全栈时序数据处理引擎1.4 强大的分析功能1.5 与第三方工具无缝连接1.6 零运维成本、零学习成本二、性能数据展示三、使用Docker模式体验TDengine3.1 安装Docker3.2 拉取 TDengine 镜像3.3 后台启动 TDengine3.4 查看容器运行状...

 目录

前言

正文

一、TDengine的优势和特点

1.1 10倍以上的性能提升

1.2 硬件或云服务成本降至1/5

1.3 全栈时序数据处理引擎

1.4 强大的分析功能

1.5 与第三方工具无缝连接

1.6 零运维成本、零学习成本

二、性能数据展示

三、使用Docker模式体验TDengine

3.1 安装Docker

3.2 拉取 TDengine 镜像

3.3 后台启动 TDengine

3.4 查看容器运行状态

3.5 进入容器

3.6 执行 taos shell

3.7 生成测试数据

3.8 查看数据库

3.9 查看数据库表

3.10 测试查询速度

3.11 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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。