SpringBoot 2.x 开发案例之整合国产数据库 IoTDB

Java研发军团

共 4296字,需浏览 9分钟

 ·

2021-08-29 09:39

简介

IoTDB 是清华大学主导的 Apache 孵化项目,是一款专为物联网时序数据打造的数据库,提供数据采集、存储、分析的功能。IoTDB 提供端云一体化的解决方案,在云端,提供高性能的数据读写以及丰富的查询能力,针对物联网场景定制高效的目录组织结构,并与 Apache Hadoop、Spark、Flink 等大数据系统无缝打通;在边缘端,提供轻量化的 TsFile 管理能力,端上的数据写到本地 TsFile,并提供一定的基础查询能力,同时支持将 TsFile 数据同步到云端。

架构图

安装

## 下载
wget https://apache.website-solution.net/iotdb/0.12.1/apache-iotdb-0.12.1-server-bin.zip
## 解压
unzip apache-iotdb-0.12.1-server-bin.zip

软件目录结构

  • sbin 启动和停止脚本目录

  • conf 配置文件目录

  • tools 系统工具目录

  • lib 依赖包目录

启动

> nohup sbin/start-server.sh >/dev/null 2>&1 &
or
> nohup sbin/start-server.sh -c <conf_path> -rpc_port <rpc_port> >/dev/null 2>&1 &
  • “-c” and “-rpc_port” 都是可选的。

  • 选项 “-c” 指定了配置文件所在的文件夹。

  • 选项 “-rpc_port” 指定了启动的 rpc port。

  • 如果两个选项同时指定,那么rpc_port将会覆盖conf_path下面的配置。

进入客户端控制台:

sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

配置 MQTT

修改配置文件 conf/otdb-engine.properties

####################
### MQTT Broker Configuration
####################
enable_mqtt_service=true
mqtt_port=1883
mqtt_handler_pool_size=1
mqtt_payload_formatter=json
mqtt_max_message_size=1048576

整合

新增配置类 IotDBSessionConfig:

/**
* @author 小柒2012
* @version 1.0
* @description: IoTDB配置
* @date 2021/8/5 22:49
*/

@Configuration
public class IotDBSessionConfig {

@Value("${spring.iotdb.username:root}")
private String username;

@Value("${spring.iotdb.password:root}")
private String password;

@Value("${spring.iotdb.ip:127.0.0.1}")
private String ip;

@Value("${spring.iotdb.port:6667}")
private int port;

@Value("${spring.iotdb.maxSize:10}")
private int maxSize;

@Bean
public SessionPool getSessionPool() {
return new SessionPool(ip, port, username, password, maxSize);
}
}

模拟测试数据:

public static void main(String[] args) {
try {
MQTT mqtt = new MQTT();
mqtt.setHost("127.0.0.1", 1883);
mqtt.setUserName("root");
mqtt.setPassword("root");
BlockingConnection connection = mqtt.blockingConnection();
connection.connect();
Random random = new Random();
for (int i = 0; i < 10; i++) {
String payload = String.format("{\n" +
"\"device\":\"root.DNC002\",\n" +
"\"timestamp\":%d,\n" +
"\"measurements\":[\"speed\"],\n" +
"\"values\":[%f]\n" +
"}", System.currentTimeMillis(), random.nextDouble());
System.out.println(payload);
connection.publish("root.DNC002", payload.getBytes(), QoS.AT_LEAST_ONCE, false);
}
connection.disconnect();
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

进入控制台查询数据:

[root@localhost iotdb-0.12.1-server]# sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root
---------------------
Starting IoTDB Cli
---------------------
_____ _________ ______ ______
|_ _| | _ _ ||_ _ `.|_ _ \
| | .--.|_/ | | \_| | | `. \ | |_) |
| | / .'`
\ \ | | | | | | | __'.
_|
|_| \__. | _| |_ _| |_.' /_| |__) |
|_____|'.__.' |_____| |______.'|_______/ version 0.12.1


IoTDB> login successfully
IoTDB>
IoTDB> select * from root.DNC002
+-----------------------------+-----------------+
| Time|root.DNC002.speed|
+-----------------------------+-----------------+
|
2021-08-10T22:58:48.854+08:00| 0.798263|
|2021-08-10T22:58:48.914+08:00| 0.589887|
|
2021-08-10T22:58:48.922+08:00| 0.097675|
|2021-08-10T22:58:48.936+08:00| 0.92061|
|
2021-08-10T22:58:48.947+08:00| 0.9796|
|2021-08-10T22:58:48.955+08:00| 0.873128|
|
2021-08-10T22:58:48.964+08:00| 0.627699|
|2021-08-10T22:58:48.976+08:00| 0.506671|
|
2021-08-10T22:58:48.983+08:00| 0.550821|
|2021-08-10T22:58:48.993+08:00| 0.840226|
+-----------------------------+-----------------+
Total line number = 30
It costs 0.335s
地址:https://iotdb.apache.org/zh


END


顺便给大家推荐一个GitHub项目,这个 GitHub 整理了上千本常用技术PDF,绝大部分核心的技术书籍都可以在这里找到,

GitHub地址:https://github.com/javadevbooks/books

Gitee地址:https://gitee.com/javadevbooks/books

电子书已经更新好了,你们需要的可以自行下载了,记得点一个star,持续更新中..


浏览 54
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报