【物联网】深入解析时序数据库TDengine及其Java应用实践
文章目录
- 一、什么是时序数据库?
- 二、TDengine简介
- 三、TDengine的Java应用实践
- (1)环境准备
- (2)数据插入
- (3)数据查询
一、什么是时序数据库?
时序数据库(Time-Series Database,TSDB)是一种专门为处理时间序列数据而设计的数据库。时间序列数据是指按时间顺序排列的数据,通常用于记录和监测系统、设备、传感器等在一段时间内的运行状态和性能指标。时序数据库具有以下特点:
- 高效的数据存储:针对时间序列数据的特性进行优化,实现高效的数据压缩和存储。
- 快速的数据查询:提供高效的时间范围查询、聚合计算等操作。
- 简化的数据模型:通常包含时间戳、度量值和标签,易于理解和操作。
- 高并发的写入能力:支持大量数据点的快速写入。
二、TDengine简介
TDengine是由涛思数据(TAOS Data)公司开发的一款高性能、可扩展的时序数据库。它具有以下特点:
- 创新的数据存储结构:采用列式存储和索引技术,实现高效的数据压缩和查询。
- 强大的数据处理能力:支持数据降采样、聚合计算、实时查询等操作。
- 易用的数据模型:采用超级表(Supertable)概念,简化数据建模过程。
- 高性能和高可用性:支持分布式部署,实现数据的水平扩展和高可用。
三、TDengine的Java应用实践
以下将通过Java代码示例,演示如何使用TDengine进行数据插入和查询。
(1)环境准备
首先,确保已安装TDengine服务器,并配置好Java开发环境。在项目中添加TDengine的Java驱动依赖:
<dependency><groupId>com.taosdata.jdbc</groupId><artifactId>taos-jdbcdriver</artifactId><version>2.0.18</version>
</dependency>
(2)数据插入
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TDengineInsertExample {public static void main(String[] args) {// 连接TDengine服务器try (Connection conn = DriverManager.getConnection("jdbc:TAOS://localhost:6030/?user=root&password=taosdata")) {// 创建数据库和表try (PreparedStatement pstmt = conn.prepareStatement("CREATE DATABASE IF NOT EXISTS testdb KEEP 365 DAYS 10 BLOCKS 4;")) {pstmt.execute();}try (PreparedStatement pstmt = conn.prepareStatement("USE testdb; CREATE TABLE IF NOT EXISTS meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), id INT);")) {pstmt.execute();}// 插入数据String insertSql = "INSERT INTO meters USING meters TAGS ('Beijing', 1) VALUES (?, ?, ?, ?);";try (PreparedStatement pstmt = conn.prepareStatement(insertSql)) {// 设置时间戳、电流、电压和相位pstmt.setTimestamp(1, new java.sql.Timestamp(System.currentTimeMillis()));pstmt.setFloat(2, 10.6f);pstmt.setInt(3, 220);pstmt.setFloat(4, 0.32f);pstmt.execute();}} catch (SQLException e) {e.printStackTrace();}}
}
(3)数据查询
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class TDengineQueryExample {public static void main(String[] args) {// 连接TDengine服务器try (Connection conn = DriverManager.getConnection("jdbc:TAOS://localhost:6030/?user=root&password=taosdata")) {// 选择数据库try (Statement stmt = conn.createStatement()) {stmt.execute("USE testdb;");// 执行查询try (ResultSet rs = stmt.executeQuery("SELECT * FROM meters WHERE location='Beijing' AND id=1;")) {while (rs.next()) {System.out.println("Time: " + rs.getTimestamp("ts") + ", Current: " + rs.getFloat("current") + ", Voltage: " + rs.getInt("voltage") + ", Phase: " + rs.getFloat("phase"));}}}} catch (SQLException e) {e.printStackTrace();}}
}
在上述示例中,我们首先创建了一个数据库和一个表,然后向表中插入了一条数据。在查询示例中,我们从表中检索了满足条件的数据。
TDengine作为一款优秀的时序数据库,凭借其高性能、易用性和可扩展性,在物联网、大数据等领域具有广泛的应用前景。通过Java代码的实践操作,我们可以更深入地了解TDengine的使用方法,为实际项目开发提供参考。
相关文章:
【物联网】深入解析时序数据库TDengine及其Java应用实践
文章目录 一、什么是时序数据库?二、TDengine简介三、TDengine的Java应用实践(1)环境准备(2)数据插入(3)数据查询 一、什么是时序数据库? 时序数据库(Time-Series Datab…...
2023北华大学程序设计新生赛部分题解
时光如流水般逝去,我已在校园中奋战大二!(≧▽≦) 今天,静静回顾去年的新生赛,心中涌起无尽感慨,仿佛那段青春岁月如烟花般绚烂。✧。(≧▽≦)。✧ 青春就像一场燃烧的盛宴,激情澎湃&…...
PPP的配置
概述:PPP模式,即公私合作模式(Public-Private Partnership),是一种公共部门与私营部门合作的模式。 一、实验拓扑 实验一:PPP基本功能 实验步骤: (1)配置AR1的接口IP地…...
回溯算法总结篇
组合问题:N个数里面按一定规则找出k个数的集合 如果题目要求的是组合的具体信息,则只能使用回溯算法,如果题目只是要求组合的某些最值,个数等信息,则使用动态规划(比如求组合中元素最少的组合,…...
机器学习-点击率预估-论文速读-20240916
1. [经典文章] 特征交叉: Factorization Machines, ICDM, 2010 分解机(Factorization Machines) 摘要 本文介绍了一种新的模型类——分解机(FM),它结合了支持向量机(SVM)和分解模型的优点。与…...
【leetcode】堆习题
215.数组中的第K个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输…...
前端大模型入门:编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入
LLM的核心是通过对语言进行建模来生成自然语言输出或理解输入,两个重要的概念在其中发挥关键作用:Tokenizer 和 Embedding。本篇文章将对这两个概念进行入门级介绍,并提供了针对前端的js示例代码,帮助读者理解它们的基本原理/作用和如何使用。 1. 什么是…...
一文读懂 JS 中的 Map 结构
你好,我是沐爸,欢迎点赞、收藏、评论和关注。 上次聊了 Set 数据结构,今天我们聊下 Map,看看它与 Set、与普通对象有什么区别?下面直接进入正题。 一、Set 和 Map 有什么区别? Set 是一个集合࿰…...
C++校招面经(二)
欢迎关注 0voice GitHub 6、 C 和 Java 区别(语⾔特性,垃圾回收,应⽤场景等) 指针: Java 语⾔让程序员没法找到指针来直接访问内存,没有指针的概念,并有内存的⾃动管理功能,从⽽…...
Python Web 面试题
1 Web 相关 get 和 post 区别 get: 请求数据在 URL 末尾,URL 长度有限制 请求幂等,即无论请求多少次,服务器响应始终相同,这是因为 get 至少获取资源,而不修改资源 可以被浏览器缓存,以便以后…...
java日志框架之JUL(Logging)
文章目录 一、JUL简介1、JUL组件介绍 二、Logger快速入门三、Logger日志级别1、日志级别2、默认级别info3、原理分析4、自定义日志级别5、日志持久化(保存到磁盘) 三、Logger父子关系四、Logger配置文件 一、JUL简介 JUL全程Java Util Loggingÿ…...
ARM驱动学习之PWM
ARM驱动学习之PWM 1.分析原理图: GPD0_0 XpwmTOUT0定时器0 2.定时器上的资源: 1.5组32位定时器 2.定时器产生内部中断 3.定时器0,1,2可编程实现pwm 4.定时器各自分频 5.TCN--,TCN TCMPBN 6.分频器 24-2 7.24.3.4 例子࿱…...
我的AI工具箱Tauri版-VideoClipMixingCut视频批量混剪
本教程基于自研的AI工具箱Tauri版进行VideoClipMixingCut视频批量混剪。 VideoClipMixingCut视频批量混剪 是自研AI工具箱Tauri版中的一款强大工具,专为自动化视频批量混剪设计。该模块通过将预设的解说文稿与视频素材进行自动拼接生成混剪视频,适合需要…...
postgres_fdw访问存储在外部 PostgreSQL 服务器中的数据
文章目录 一、postgres_fdw 介绍二、安装使用示例三、成本估算四、 远程执行选项执行计划无法递推解决 参考文件: 一、postgres_fdw 介绍 postgres_fdw 模块提供外部数据包装器 postgres_fdw,可用于访问存储在外部 PostgreSQL 服务器中的数据。 此模块…...
什么是3D展厅?有何优势?怎么制作3D展厅?
一、什么是3D展厅? 3D展厅是一种利用三维技术构建的虚拟展示空间。它借助虚拟现实(VR)、增强现实(AR)等现代科技手段,将真实的展示空间数字化,呈现出逼真、立体、沉浸的展示效果。通过3D展厅&a…...
Linux下的CAN通讯
CAN总线 CAN总线简介 CAN(Controller Area Network)总线是一种多主从式 <font color red>异步半双工串行 </font> 通信总线,它最早由Bosch公司开发,用于汽车电子系统。CAN总线具有以下特点: 多主从式&a…...
【Python】pip安装加速:使用国内镜像源
【Python】pip安装加速:使用国内镜像源 零、使用命令行设置 设置全局镜像源 随便使用下面任一命令即可! 阿里云: pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/豆瓣: pip config set global.in…...
SpringBoot lombok(注解@Getter @Setter)
SpringBoot lombok(注解Getter Setter) 使用lombok注解的方式,在编译生成的字节码文件中就会存在setter/getter等方法,减少代码量,方便了代码的维护 添加依赖 <dependency><groupId>org.projectlombok</groupId><artif…...
descrTable常用方法
descrTable 为 R 包 compareGroups 的重要函数,有关该函数以及 compareGroups 包的详细内容见:R包compareGroups详细用法 加载包和数据 library(compareGroups)# 加载 REGICOR 数据(横断面,从不同年份纳入,每个变量有…...
回归预测 | Matlab实现ReliefF-XGBoost多变量回归预测
回归预测 | Matlab实现ReliefF-XGBoost多变量回归预测 目录 回归预测 | Matlab实现ReliefF-XGBoost多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.ReliefF-xgboost回归预测代码,对序列数据预测性能相对较高。首先通过ReleifF对输入特征计算权…...
KinhDown:突破百度网盘限速的效率革命
KinhDown:突破百度网盘限速的效率革命 【免费下载链接】baidupcs-web 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcs-web 在数字化时代,云存储已成为我们工作与生活中不可或缺的一部分。然而,百度网盘对免费用户实施的严格限…...
GitHub Copilot 默认启用训练之后 企业安全如何应对
文章目录前言一、这次政策改动,到底改了什么二、为什么企业不能只看“Business 和 Enterprise 不受影响”三、content exclusion 为什么挡不住所有风险四、从 IDE 到 Agent,企业研发边界已经变了五、企业现在就该做的几件事总结前言 GitHub 这次关于 Co…...
2026年03月29日最热门的开源项目(Github)
这个榜单展示了当前开源项目的情况,特别集中在与人工智能、代理和代码管理相关的工具。以下是对榜单的分析: 总体趋势 人工智能工具的兴起:所有上榜项目均与人工智能、代理和工具开发相关,表明这一领域的关注度持续上升。开发者越…...
学术符号的生产与思想的停滞——评童世骏《“来往”与“交往”如何形成良性循环》
学术符号的生产与思想的停滞——评童世骏《“来往”与“交往”如何形成良性循环》摘要:本文以岐金兰对童世骏文章的批判为切入点,系统分析童文在学术生产体制中的位置与局限。研究发现,童文虽以哈贝马斯“交往理性”为理论资源,但…...
别再让反归一化坑了你!用TensorFlow+Keras做LSTM时序预测的完整避坑指南
LSTM时序预测中的归一化陷阱:从原理到实战的完整解决方案 当你兴奋地看着训练好的LSTM模型在测试集上展现出漂亮的损失曲线,却在最后一步——将预测值还原为业务可理解的单位时栽了跟头,这种挫败感我深有体会。归一化是时序预测的标准预处理步…...
Kubernetes 与边缘计算集成最佳实践
Kubernetes 与边缘计算集成最佳实践 一、前言 哥们,别整那些花里胡哨的。边缘计算是现代云原生架构的重要组成部分,今天直接上硬货,教你如何在 Kubernetes 中集成边缘计算。 二、边缘计算架构模式 模式适用场景优势劣势集中式简单场景管理简单…...
重构macOS开发流程:OpenInTerminal如何提升开发者环境切换效率
重构macOS开发流程:OpenInTerminal如何提升开发者环境切换效率 【免费下载链接】OpenInTerminal ✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty. 项目地址: https://gitcode.com/gh_mirrors/op/OpenInT…...
零基础玩转OpenClaw:Qwen3-32B镜像快速入门5个示例
零基础玩转OpenClaw:Qwen3-32B镜像快速入门5个示例 1. 为什么选择OpenClawQwen3-32B组合? 去年冬天,当我第一次看到同事用自然语言命令电脑自动整理桌面文件时,仿佛打开了新世界的大门。经过两周的折腾,我终于在本地…...
SDXL 1.0电影级绘图工坊真实案例:文化遗产数字化重建与风格复原实践
SDXL 1.0电影级绘图工坊真实案例:文化遗产数字化重建与风格复原实践 想象一下,你面前有一张因年代久远而模糊不清的古建筑照片,或是仅存于文字描述中的历史场景。如何将它们清晰地、生动地、甚至以不同艺术风格再现出来?这曾是考…...
【2026唯一认证流式部署标准】:FastAPI 2.0 + Uvicorn 24.8 + ASGI 4.0协同流控协议详解(含OpenTelemetry追踪模板)
第一章:FastAPI 2.0 异步 AI 流式响应的范式演进与2026标准定位FastAPI 2.0 将原生支持全链路异步流式响应(StreamingResponse)与 Server-Sent Events(SSE)语义融合,标志着 AI 应用后端从“请求-响应”单次…...
