相比于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. Elasticsearch——Templates 模板
  2. 如何修改eclipse里面Android虚拟机的存放路径
  3. WIN8 打开图片内置管理员无法激活此应用
  4. 设计模式7----代理模式
  5. VC按最小化、关闭按钮、Esc都隐藏主窗口
  6. 操作系统--多进程管理CPU
  7. pcm 降采样_Android_android downsample降低音频采样频率代码,使用Android AudioRecord 录制PCM文 - phpStudy...
  8. 数据中台VS业务中台、数据中台VS数据仓库,到底有什么区别?
  9. 什么是EulerOS
  10. JavaScript 的函数式编程与面向对象编程区别在哪?
  11. 使用记事本编写xml文件保存出现异常原因
  12. 编译原理(龙书):第七章部分题目参考答案
  13. ansys软件linux安装教程,ansys 15 for linux 安装纪录
  14. html如何导入字体样式表,导入html字体及其样式变体?
  15. Pygame详解(十):mouse 模块
  16. 解密360黑幕:离职奇虎360老员工的告白
  17. 什么是cookie?多御安全浏览器如何启用cookie?
  18. 微处理器flash及ram内容详解
  19. 考研英语-旧题高频词(齐雪妮老师)-2020-02-27,03-05,03-12,03-19
  20. 智慧物业小程序_物业小程序 物业管理小程序 微信物业小程序

热门文章

  1. 实验三 基于GUI的文件管理器——Java实现
  2. MySQL8.0.25安装教程
  3. 工业相机在涡轮叶片氧化铝检测成像系统中的应用
  4. 数据库查询谓词%和_的作用
  5. 微软office即点即用服务能关闭吗?_ppt用什么软件制作好(分享6款好用的制作软件)...
  6. 新浪微博的id和mid互相转换(10进制和62进制转换)
  7. 奥维互动地图浏览器如何添加自定义地图(文章内附地图二维码)
  8. windows之C# 桌面截图
  9. 根据最优特征进行分类并创建决策树
  10. 测试框架的(概述、构成以及常用框架类型)