庚顿(Golden)时序数据库入门
·
这段时间公司项目需要用到时序数据库,公司选择了庚顿,一起学习一下
一、什么是 时序数据库?
时序数据库是专门用于存储和处理时间序列数据的数据库,支持时序数据高效读写、高压缩存储、插值和聚合等功能。
时间序列数据集跟踪整个系统的改动并不断插入新数据,而不是更新原有数据。
围绕“变化”的定义,不同时序数据库有以下三个共同点:
- 抵达的数据几乎总是作为新条目被记录(也有少量补写的历史数据)
- 数据通常按照时间顺序抵达(但受传输影响,部分数据延迟抵达是常见现象,甚 至不是按顺序抵达)
- 时间是一个主坐标轴
二、为什么要有时序数据库?
了解了时序数据库的定义,那么为什么需要时序数据库呢?
分析过去的变化,监测现在的变化,以及预测未来将如何变化。
下面列举了一些时序数据库的应用场景:
公共安全:上网记录、通话记录、个体追踪、区间筛选;
电力行业:智能电表、电网、发电设备的集中监测;
互联网:服务器/应用监测、用户访问日志、广告点击日志;
物联网:电梯、锅炉、机械、水表等各种联网设备;
交通行业:实时路况、路口流量监测、卡口数据;
金融行业:交易记录、存取记录、ATM、POS机监测;
三、怎么用Golden?
下面我将使用springboot集成golden数据库的sdk;
1、首先将相关的sdk包放到src/main/resources/libs下

2、配置maven依赖
配置sdk的目录:
<dependency>
<groupId>com.example</groupId>
<artifactId>golden-java-sdk</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/libs/golden-java-sdk.jar</systemPath>
</dependency>
需要配置引用本地依赖:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
3、数据库连接配置
3.1 配置类
@Configuration
public class GoldenConfig {
@org.springframework.beans.factory.annotation.Value("${golden.host}")
private String host;
@org.springframework.beans.factory.annotation.Value("${golden.port}")
private int port;
@org.springframework.beans.factory.annotation.Value("${golden.username}")
private String username;
@org.springframework.beans.factory.annotation.Value("${golden.password}")
private String password;
@org.springframework.beans.factory.annotation.Value("${golden.minConnections}")
private int minConnections;
@org.springframework.beans.factory.annotation.Value("${golden.maxConnections}")
private int maxConnections;
//在bean销毁时,调用自带的关闭连接池方法
@Bean(destroyMethod = "closePool")
public ServerImplPool ServerImplPool(){
return new ServerImplPool(host, port, username, password, minConnections, maxConnections);
}
}
3.2 初始化工具类(这里使用了单例模式中的双重检查锁懒汉式
public class GoldenUtils {
//这里为了避免多线程创建造成开启了多个连接,这里使用了双重检测锁的单例模式
private static volatile ServerImplPool serverImplPool;
public static ServerImplPool getServerImplPool(){
if (null == serverImplPool){
synchronized (GoldenUtils.class){
if (null == serverImplPool){
serverImplPool = new ServerImplPool(goldenConfig.getHost(), goldenConfig.getPort(), goldenConfig.getUsername(),
goldenConfig.getPassword(), goldenConfig.getMinConnections(), goldenConfig.getMaxConnections());
}
}
}
return serverImplPool;
}
public static void closeServerImplPool() {
if (serverImplPool != null) {
serverImplPool.closePool();
serverImplPool = null; // 避免重复关闭
}
}
}
然后根据官方的sdk文档接口,可以愉快的开发了!
更多推荐



所有评论(0)