TDengine在数字治理系统中处理轨迹数据的应用
巧遇TDengine
场景介绍
一个网格账号一张坐标记录表,这个网格员巡查产生的坐标记录全都按时间顺序记录到这个表上来;
巡查线路坐标点的检索按线路的巡查时间范围,时序数据库对时间的处理是天生的优势,这样也降低了跨库的耦合;
我们还借助了微服务低耦合易扩展的特性,独立出坐标读写模块,以下是完整的系统架构,供参考,欢迎批评指正。
数据模型
快速开发
server.port=8085server.servlet.context-path=/api#taostaosdata.url=jdbc:TAOS://192.168.1.241:0/db?user=root&password=taosdatataosdata.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”);//业务处理略去…}
总结
相关文章