TDengine在数字治理系统中处理轨迹数据的应用
巧遇TDengine
场景介绍
一个网格账号一张坐标记录表,这个网格员巡查产生的坐标记录全都按时间顺序记录到这个表上来;
巡查线路坐标点的检索按线路的巡查时间范围,时序数据库对时间的处理是天生的优势,这样也降低了跨库的耦合;
我们还借助了微服务低耦合易扩展的特性,独立出坐标读写模块,以下是完整的系统架构,供参考,欢迎批评指正。
数据模型
快速开发
server.port=8085
server.servlet.context-path=/api
#taos
taosdata.url=jdbc:TAOS://192.168.1.241:0/db?user=root&password=taosdata
taosdata.driverClassName=com.taosdata.jdbc.TSDBDriver
<!-- taos Start -->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>1.0.1</version>
</dependency>
<!-- taos END -->
@Component
@ConfigurationProperties(prefix = “taosdata”)
public class TaosdataConfig {
private String url;
private String driverClassName;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
}
建库、建表:
String sql1 = “create database if not exists coor”;
stmt.executeUpdate(sql1);
String sql2 = “use coor”;
stmt.executeUpdate(sql2);
String sql3 = “create table if not exists super (ts timestamp, lng double, lat double) tags (id nchar(32))”;
stmt.executeUpdate(sql3);
String sql4 = “create table if not exists “ + (“u” + userid) + “using super tags(‘” + userid + “’)”;
stmt.executeUpdate(sql4);
插入数据:
String sql5 = insert into “ + (“u” + userid) + “ values(“ + now.getTime()+”,” + lng + “,” + lat + “)”;
stmt.executeUpdate(sql5);
查询:
StringBuilder sql6 = new StringBuilder(“select * from u”)
.append(userid)
.append(“ where ts>=’”)
.append(stime)
.append(“’ and ts <= ‘”)
.append(etime)
.append(“’”);
ResultSet resSet = stmt.executeQuery(sql6.toString());
Timestamp ts = null;
while(resSet.next()) {
ts = resSet.getTimestamp(“ts”);
lng = resSet.getDouble(“lng”);
lat = resSet.getDouble(“lat”);
//业务处理略去…
}
总结
相关文章