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

简介

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

推荐一个超级简单 Java 图形验证码模块

分享一个支付大屏实时监控数据平台

推荐一款清爽的实时监控大屏附安装教程

大屏监控 Metabase 集成到 Java 项目

一个超牛逼的 Java 文件在线预览项目

如何保障消息100%投递成功、消息幂等性

技术人,做的越多你才能走的更远

传统功夫,点到为止,这次不搞偷袭!

小清新前后端分离后台管理系统

一个开源免费的车牌识别训练实战项目

霸气分享 74 款绚丽的监控大屏

一个基于 Vue3.x 的数据可视化大屏项目

推荐一款基于 Vue 的电商级海报生成器

SpringBoot 的接口快速开发框架

基于 SpringBoot + Vue 的智能停车场管理平台

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值