相比于influxdb,TDengine的全中文文档,类sql语句,对于一个英语渣来说就显得特别友好了。再加上教程丰富,案例又和我的需求比较类似,就选择TDengine实战了一把。

安装
第一步,当然是安装了,先把系统跑起来。
最方便的还是使用docker,一条命令跑起来。
当然,首先你得有个docker环境。我这里使用的是ubuntu系统。

docker run -d -p 6030:6030 -p 6041:6041 -p 6043-6049:6043-6049 -p 6043-6049:6043-6049/udp tdengine/tdengine

如无意外的话,运行docker ps -a可以看到数据库跑起来了,如上图。

下一步,进入数据库,查看一下

进入docker内部命令是:
docker exec -it <container name> bash
我这里的容器名字是reverent_tharp,所以运行命令如下:docker exec -it reverent_tharp bash进入容器后,执行taos,即可进入数据库客户端
show databases;
use power;
show tables;
select * from d1001;

golang执行读写操作
数据库可以了,那就把读写操作搞起来吧。
将数据库连接定义为一个包
让别的地方可以直接使用

package utilsimport ("database/sql""fmt"_ "github.com/taosdata/driver-go/v3/taosRestful"
)var TDB *sql.DBfunc init() {var taosDSN = "root:taosdata@http(192.168.118.164:6041)/"taos, err := sql.Open("taosRestful", taosDSN)if err != nil {fmt.Println("failed to connect TDengine, err:", err)return}fmt.Println("TDengine connected")TDB = taos
}

在做数据库查询,新增之前,把数据库结构建立好

CREATE DATABASE power;CREATE STABLE power.meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT);

插入数据

func InsterIntoTables(c *gin.Context) {sql := `INSERT INTO power.d1001 USING power.meters TAGS('California.SanFrancisco', 2) VALUES ('2018-10-03 14:38:05.000', 10.30000, 219, 0.31000) ('2018-10-03 14:38:15.000', 12.60000, 218, 0.33000) ('2018-10-03 14:38:16.800', 12.30000, 221, 0.31000)power.d1002 USING power.meters TAGS('California.SanFrancisco', 3) VALUES ('2018-10-03 14:38:16.650', 10.30000, 218, 0.25000)power.d1003 USING power.meters TAGS('California.LosAngeles', 2) VALUES ('2018-10-03 14:38:05.500', 11.80000, 221, 0.28000) ('2018-10-03 14:38:16.600', 13.40000, 223, 0.29000)power.d1004 USING power.meters TAGS('California.LosAngeles', 3) VALUES ('2018-10-03 14:38:05.000', 10.80000, 223, 0.29000) ('2018-10-03 14:38:06.500', 11.50000, 221, 0.35000)`res, err := utils.TDB.Exec(sql)if err != nil {fmt.Println("插入数据失败")c.Abort()}utils.Ok(c, res)
}

查询数据

func GetTableData(c *gin.Context) {fmt.Println("jinrule")sql := `SELECT * FROM power.d1001`res, _ := utils.TDB.Query(sql)var myslic = []map[string]interface{}{}for res.Next() {var r struct {ts      time.Timecurrent float32voltage intphase   float32}res.Scan(&r.ts, &r.current, &r.voltage, &r.phase)var item = map[string]interface{}{"ts":      r.ts,"current": r.current,"voltage": r.voltage,"phase":   r.phase,}myslic = append(myslic, item)}utils.Ok(c, myslic)
}

可视化查看数据
这里我们使用TDengineGui工具

git clone git@github.com:dinglezhang/TDengineGUI.git
进入目录
cnpm i
npm run start
即可打开软件界面
将上面的连接信息输入,即可连上数据库

时序数据库TDengine,实战解决用电量监控管理系统相关推荐

  1. TDengine 入门教程⑪——基于Spring Boot+Alibaba Druid框架的智能电表项目的后端时序数据库开发实战

    文章目录 一.前文 二.工程依赖 三.配置数据源 四.数据库连接池 五.电表数据实体类 六.数据库建表 七.业务Service层 八.总结 一.前文 TDengine 入门教程--导读 本开发实战配置 ...

  2. 替换 Wonderware,云原生时序数据库 TDengine 助力工业数字化

    长期以来,工业软件领域一直是传统国外软件的天下,PI 和 Wonderware 就是其中的佼佼者.近年来,随着国内软件替代浪潮和大批互联网技术向传统行业的技术溢出,这个市场正在开始发生巨大的变化. 以 ...

  3. Spark 读取、写入时序数据库TDengine以及TDengine概述

    一.TDengine是什么 TDengine 是一款高性能.分布式.支持 SQL 的时序数据库,其核心代码,包括集群功能全部开源(开源协议,AGPL v3.0).TDengine 能被广泛运用于物联网 ...

  4. 时序数据库TDengine基本概念和建模思路

    目录 一 . TDengine数据库基本概念 采集量 标签 数据采集点 表 超级表 子表 库 二. TDengine数据库建模策略 建表模式 建表情形 时序数据库: 时序数据:时间序列数据是指按时间顺 ...

  5. 时序数据库-TDengine涛思(taos)使用以及踩坑

    时序数据库 时序数据库(Time Series Database,TSDB) 全称为时间序列数据库.时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也 ...

  6. 数据库监控工具--PIGOSSBSM运维监控管理系统

    数据就是一切,各类数据在企业生产经营中都起着至关重要的作用,是所有的经营活动所依赖的,不可或缺的信息.数据就犹如企业经营者的眼睛一样,通过数据可以反映出所有的问题,就犹如舵手依赖导航一样. 现在每个企 ...

  7. 基于时序数据库做监控,这里有超流行的开源方案

    点击上方"朱小厮的博客",选择"设为星标" 回复"666"获取新整理的1000+GB资料 在微服务架构下,我们对服务进行了拆分,所以用户的每 ...

  8. 互联网级监控系统必备-时序数据库之Influxdb技术

    时间序列数据库,简称时序数据库,Time Series Database,一个全新的领域,最大的特点就是每个条数据都带有Time列. 时序数据库到底能用到什么业务场景,答案是:监控系统. Baidu一 ...

  9. 涅磐:时序数据库的终局与重生

    近年来,物联网.车联网.工业互联网和智慧城市快速发展,时序数据库成为数据架构技术栈的标配.据 DB-Engines 数据显示,自2017年以来,每年时序数据库在"过去24个月排名榜" ...

最新文章

  1. android 上键,在Android键盘上设置Return键
  2. 【企业管理】价值创造的文化支撑
  3. 每日程序C语言44-反向输出一个链表(递归)
  4. 双机调试和windbg的命令
  5. Linux系统编程28:进程间通信之共享内存和相关通信接口(ftok,shmget,shmctl,shmat,shmdt)
  6. 解压mysql server_2018-05-09 MySql-server解压缩版安装及配置
  7. 题目7 街区最短路径问题
  8. mysql tb_Mysql数据库分库和分表方式
  9. Scala学习小小总结
  10. 每周荐书:JVM、Nginx、小程序(评论送书)
  11. scala case class与class区别
  12. PHP动态网页设计与制作案例教程pdf
  13. 电商产品经理的那些图 订单、确认支付、发货、退货、退款、换货...
  14. Android音视频开发入门(一)
  15. 基于深度相机的下肢外骨骼的自适应梯级步态生成方法
  16. 【SaaS播客】onboard4. 连线硅谷顶尖Product-Led Growth公司产品经理,聊聊如何打造一流PLG产品
  17. 项目5-模板类中使用友元函数
  18. Qt编写地图综合应用3-省市区域图
  19. 关于Canvas画布大小问题
  20. 人脸识别门禁的那些“坑”,你中招了吗?

热门文章

  1. 使用putty访问本机虚拟机没有响应的问题
  2. excel中vlookup函数的使用方法_价格表自动生成报价单,Excel中的VLOOKUP函数来搞定...
  3. ssh连接服务器时出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
  4. 连接mysql异常Communications link failure
  5. php期末考试题机考_《儿童心理学》国家开放大学期末考试机考题库(部分)
  6. mysql共享表空间转化为独立表空间
  7. C语言的数据类型及其存储方式
  8. 庄子 内篇 人间世第四
  9. python电影评论的情感分析流浪地球_《流浪地球》影评分析(一):使用Python爬取豆瓣影评...
  10. ICLR 2023 | 扩散生成模型新方法:极度简化,一步生成