这段时间公司项目需要用到时序数据库,公司选择了庚顿,一起学习一下

一、什么是 时序数据库?

         时序数据库是专门用于存储和处理时间序列数据的数据库,支持时序数据高效读写、高压缩存储、插值和聚合等功能。
时间序列数据集跟踪整个系统的改动并不断插入新数据,而不是更新原有数据。

       围绕“变化”的定义,不同时序数据库有以下三个共同点:

  1.  抵达的数据几乎总是作为新条目被记录(也有少量补写的历史数据)
  2.  数据通常按照时间顺序抵达(但受传输影响,部分数据延迟抵达是常见现象,甚 至不是按顺序抵达)
  3. 时间是一个主坐标轴

二、为什么要有时序数据库?

        了解了时序数据库的定义,那么为什么需要时序数据库呢?

        分析过去的变化,监测现在的变化,以及预测未来将如何变化。

       

下面列举了一些时序数据库的应用场景:

公共安全:上网记录、通话记录、个体追踪、区间筛选;
电力行业:智能电表、电网、发电设备的集中监测;
互联网:服务器/应用监测、用户访问日志、广告点击日志;
物联网:电梯、锅炉、机械、水表等各种联网设备;
交通行业:实时路况、路口流量监测、卡口数据;
金融行业:交易记录、存取记录、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文档接口,可以愉快的开发了!

更多推荐