TDengine(windows)(go集成)

基本认识

下载的是windows客户端和服务端(在本机)

  1. 安装时没有路径可以选择,默认C:\TDengine
  2. TDengine开发文档:https://docs.taosdata.com/intro/
  3. 服务端与客户端的区别:服务端比客户端多一个taosd.exe文件(可以理解为服务端包含客户端)
  4. 需要启动taosd.exe保持服务端开启状态,然后使用taos.exe客户端taos命令启动
  5. 默认用户名及密码:root taosdata

编辑taos.cfg文件(C:\TDengine\cfg\taos.cfg),需要将firstEP修改为TDengine服务器的End Ponit(即服务器的ip加端口号)

  1. 服务器是远程的情况下修改,firstEP默认值为localhost:6030,secondEp默认值是空
  2. 文件中存在的形式firstEp hostname:6030,即需要修改hostname:6030
  3. 注意:#注释需要去除

利用FQDN连接服务器,需要确认本机网络环境DNS已配置或在hosts文件中添加FQDN寻址记录

  1. C:\Windows\system32\drivers\etc\hosts中添加192.168.1.01 h1.taos.com

启动类型:自动

在windows系统中,由于taosd.exe文件点击启动是不优雅的

  1. 此电脑右键打开管理界面,进入服务和应用程序中的服务界面
  2. 找到taosd服务,可将其启动类型改为自动

在服务界面我们也可以看到一个taosAdapter服务

在TDengine开发文档中是这么介绍的:

  1. taosAdapter 是一个 TDengine 的配套工具,是 TDengine 集群和应用程序之间的桥梁和适配器。它提供了一种易于使用和高效的方式来直接从数据收集代理软件(如 Telegraf、StatsD、collectd 等)摄取数据。它还提供了 InfluxDB/OpenTSDB 兼容的数据摄取接口,允许 InfluxDB/OpenTSDB 应用程序无缝移植到 TDengine

可视化

可视化工具使用Grafana

如使用其他可视化工具,可以看TDengine开发文档-第三方工具:https://docs.taosdata.com/third-party/

Grafana

下载地址:https://grafana.com/grafana/download

下载安装启动流程可看官方文档:https://grafana.com/docs/grafana/latest/setup-grafana/installation/windows/

安装
  1. 按电脑配置下载对应程序,如windows下载安装程序:grafana-enterprise-10.0.1.windows-amd64.msi
  2. 安装时除了修改安装目录(非C盘,如:D:\LovliSoft\GrafanaLabs)以外,一路next即可
  3. 安装成功后Grafana会作为windows的服务存在(这是由于NSSM的缘故)(默认自动启动)
启动
  1. 打开浏览器并转到Grafana端口(默认为 http://localhost:3000/)
  2. 如果想要更改默认端口号
    1. 在conf(如D:\LovliSoft\GrafanaLabs\grafana\conf路径下)中,复制一个sample.ini文件,并重命名为custom.ini,然后编辑custom.ini
    2. custom.ini文件中的http_port取消注释(在ini文件中;是注释字符),然后更改后面的端口号为8080等端口即可
  3. 最后打开服务,将其中的Grafana服务重新启动,即可使用新端口号打开网页
登录
  1. Grafana默认账号密码:Admin/admin
  2. 第一次登录可以修改密码
引入TDengine

在TDengine开发文档v3.0版本中,说是在首页找到Configuratons再去找Plugins,目前10.0.1版本应该是弃用该名了,转用Administration

  1. (在10.0.1版本中)在首页找到Administration -> Plugins -> 将State改成All -> 搜索TDengine并install
  2. 注意在Create a TDengine Datasource data source时Host不要使用6030端口,而是使用6041端口
    1. 这是因为Grafana连接将使用 TDengine RESTful API(由默认端口为 6041 的 taosAdapter 提供服务)
    2. 当然在连接时也要确保taosd服务和taosAdapter服务都在运行着
  3. 之后就可以使用该数据源来创建仪表盘查看数据走势,至于如何创建可以参考TDengine开发文档-第三方工具-Grafana:https://docs.taosdata.com/third-party/grafana/

go集成TDengine

引入依赖

go get -u github.com/taosdata/driver-go/v3

官方文档注意事项:

  1. driver-go 使用 cgo 封装了 taosc 的 API

  2. cgo 需要使用 GCC 编译 C 的源码,因此需要确保你的系统上有 GCC

解决注意事项(如果不解决会出现报错问题,具体看当前目录下报错

  1. 设置属性启动CGO:go env -w CGO_ENABLED=1
  2. 确保系统有GCC,没有就需要安装GCC(详情可看报错中的gcc安装

案例

import (
	"server/global"
	"database/sql"
    _ "github.com/taosdata/driver-go/v3/taosSql"
	"go.uber.org/zap"
)

func TDengineDriver() {
    // url
    // 和其他数据库连接一样,后面需要带有数据库,如/power,否则无法ping
	var taosDSN = "root:taosdata@tcp(localhost:6030)/power"

    
	taos, err := sql.Open("taosSql", taosDSN)
	defer taos.Close()

	if err != nil {
        //global.GLOBAL_LOG是全局变量
		global.GLOBAL_LOG.Error("failed to connect TDengine", zap.Error(err))
		return
	}

	err = taos.Ping()

	if err != nil {
		global.GLOBAL_LOG.Error("failed to ping TDengine", zap.Error(err))
		return
	}

	global.GLOBAL_LOG.Info("Connected")
}

报错信息获取

	if err != nil {
		//TDengine错误可以通过以下方式获取错误码和错误信息
		tError, is := err.(*errors.TaosError)
		if is {
			global.GLOBAL_LOG.Error("errorCode:" + string(tError.Code))
			global.GLOBAL_LOG.Error("errorMessage:" + tError.ErrStr)
		} else {
			global.GLOBAL_LOG.Error("failed to connect TDengine", zap.Error(err))
		}
		return
	}

注意

  1. _ "github.com/taosdata/driver-go/v3/taosSql"此包可能不会自动导入,需要手动导入

报错

  1. 报错build constraints exclude all Go files in ……

    # 在注意事项中说明driver-go 使用 cgo 封装了 taosc 的 API
    # 因此需要启动CGO,而CGO默认是不启动的
    go env -w CGO_ENABLED=1
    
  2. 报错cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%

    1. 说明本地没有gcc环境,缺少gcc编译器,需要下载安装
    2. 详情看gcc安装
gcc安装

gcc可以安装MinGW、MinGW-w64、TDM-GCC

  1. 其中TDM-GCC是衍生自 MinGW 和 MinGW-w64 的项目
  2. 这里选用TDM-GCC来安装

TDM-GCC网址:https://jmeubank.github.io/tdm-gcc/

  1. 进入网址后点击最新版本,选择一个installer(根据电脑配置以及需求选择下载),如下载tdm64-gcc-10.3.0-2.exe
  2. 打开安装包后 -> 点击create -> 选择下载版本,如64-bit -> 选择下载路径 -> 勾选所有的components -> install
  3. 在安装过程中会下载一些包,由于是github的缘故,可能需要开启代理
  4. 在安装后,程序会帮我们配置好环境变量(在系统变量Path中);如果没有可以手动配置,即将gcc.exe文件路径保存在系统变量Path中(如:D:\LovliSoft\TDM-GCC-64\bin
  5. 可以使用gcc --version命令查看当前版本,并确认是否安装成功

语法

对TDengine开发文档的理解

用户管理

# 查看所有用户
show users;

# 修改当前root用户密码
alter user root pass '123456';

# 创建用户user_1且设置密码
create user user_1 pass '123456';

# 删除用户user_1
drop user user_1;

# 修改用户权限为write或read(系统内还有super权限,但是无法用alter命令把super赋予用户)
alter user user_1 privilege write|read;
报错
  1. 修改root密码后,服务端程序taosd.exe报无法登录的错误,客户端程序taos.exe无法自动登录成功

    解决方法:

    # 假如密码被修改成123456,可以使用如下命令登录
    taos -u root -p123456
    
    # 原因是修改用户密码后,taos命令会自动使用默认密码来登录,即使用taosdata;所以自动登录会失败
    

创建库

# 创建一个名为 power 的库,这个库的数据将保留 365 天(超过 365 天将被自动删除),每 10 天一个数据文件,每个 VNode 的写入内存池的大小为 16 MB,对该数据库入会写 WAL 但不执行 FSYNC
CREATE DATABASE power KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1;

# 切换到power库
USE power;

其他部分命令

# 显示所有数据库
show databases;

# 删除库
drop database power;

# 删除库(如果存在)
drop database if exists power;

# ……
报错
  1. 报错DB error: Invalid duration value, should be keep2 >= keep1 >= keep0 >= duration

    # 使用如下命令,会报上述错误
    create database power keep 1;
    
    # 原因:没有设置时间跨度 duration
    # 解决方法
    create database power keep 1 duration 1;
    

创建表

超级表是普通表的模板

超级表
# 创建一张超级表,可以理解为设备有几种静态属性(即TAGS后定义的),而温度、湿度这种每单位时间都要记录的属性可以理解为动态属性,即相对于TAGS后属性来说它们非常多(每个设备在不同地点测定的数据都有很多),这可以理解为一个模板
CREATE STABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);
普通表
# 建表
CREATE TABLE d1001 USING meters TAGS ("California.SanFrancisco", 2);

# 在TDengine数据库中,使用insert插入数据,发现没有d1001表时,会自动创建表,根据TAGS属性来创建
INSERT INTO d1001 USING meters TAGS ("California.SanFrancisco", 2) VALUES (NOW, 10.2, 219, 0.32);

多列模型/单列模型

根据采集物理量来建超级表可分为多列模型或单列模型

  1. 假如要采集的设备有温度、湿度、二氧化碳含量三种属性
  2. 根据三种属性来建超级表即多列模型
  3. 根据一种属性来建超级表即单列模型
  4. 建议使用多列

其他语法可以看TDengine开发文档

TDengine开发文档-SQL手册:https://docs.taosdata.com/taos-sql/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值