Springboot整合taos时序数据库TDengine

1.首先安装TDengine服务端在linux上

TDengine多种安装包的安装和卸载 - TDengine | 涛思数据安装过程直接去官网看,非常详细简单

2.出现的问题 windows连接  invalid app version 版本不对应   

版本不对应的问题,需要在linux上安装的版本和windows client版本一致,不然windows无法连接服务端

3.windows client 安装的时候必须要用管理员模式下安装这样   在  c://windows//system32/taos.dll  才会有这个文件,而且安装好了taos程序会在  c://TDengine下

如果 c://windows//system32/taos.dll 没有这个文件,可将c://TDengine下conf的taos.dll复制到 c://windows//system32/下

以下是官方原话

java.lang.UnsatisfiedLinkError: no taos in java.library.path

原因:程序没有找到依赖的本地函数库 taos。

解决方法:windows 下可以将 C:\TDengine\driver\taos.dll 拷贝到 C:\Windows\System32\ 目录下,linux 下将建立如下软链 ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so 即可。

java.lang.UnsatisfiedLinkError: taos.dll Can't load AMD 64 bit on a IA 32-bit platform

原因:目前 TDengine 只支持 64 位 JDK。

解决方法:重新安装 64 位 JDK。

这个里面是函数,是连接linux服务器上的taos服务的关键  ,如果没有那个文件会报错无法连接!!!!

4.linux上安装好了taos进行测试   默认端口6030 而且还需要配置一个域名!!!!

5.windows的host上配置一个  ip   域名   是连接linux上的taos用到的,如果没有配置是连接不上的!!!切记很重要

6.数据源用了druid阿里的,做了ValidationQuery 伪表dual校验  但是目前好像TDengine不支持这个,会提示报错  dual  table  not  exit

Springboot整合taos时序数据库TDengine_第1张图片

7.传时间类型到数据库切记用时间戳传,如果直接传Date时间不准确,传时间的毫秒数

搭建好后下载GUI界面可视化

下载地址

GitHub - skye0207/TDengineGUI: A simple TDengine DeskTop Manager

TDengineGUI: TDengineGUI是一个基于electron构建的,针对时序数据库TDengine的图形化管理工具。具有跨平台、易于使用、版本适应性强等特点。

可以通过“新建连接”按钮,添加新的服务器进行管理。需要提供数据库服务器的ip地址、restful服务的端口号(默认为6041)注意这里不是6030端口了,用的是restful端口6041、连接服务器的用户名和密码(默认为root:taosdata)

Springboot整合taos时序数据库TDengine_第2张图片

注意数据保存在

保留配置文件
/etc/taos/taos.cfg 
数据库文件
/var/lib/taos
日志文件
/var/log/taos
配置文件目录:/etc/taos/taos.cfg, 软链接到/usr/local/taos/cfg/taos.cfg;
数据库目录:/var/lib/taos, 软链接到/usr/local/taos/data;
日志目录:/var/log/taos, 软链接到/usr/local/taos/log;

github上有一个taos数据库常见问题的汇总

Issues · taosdata/TDengine · GitHub

如果报错

Springboot整合taos时序数据库TDengine_第3张图片

在druid的配置文件properties里 

去掉wall防火墙 ,去掉wall

最后附上整合的demo

配置数据源


taos:
  datasource:
##不用restful则用这个driver类: com.taosdata.jdbc.TSDBDriver
##用restful风格则用:com.taosdata.jdbc.rs.RestfulDriver类
    driver-class-name: com.taosdata.jdbc.TSDBDriver
##用restful的话则用jdbc:TAOS-RS,6041端口默认是reftful
    url: jdbc:TAOS://xxx.xxx.x.xx:6030/db?timezone=Asia/Beijing&charset=UTF-8
    username: root
    password: taosdata

 pom


 
        
        
            com.taosdata.jdbc
            taos-jdbcdriver
            2.0.24
        

 数据源配置


@Configuration
@MapperScan(basePackages = TaosDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "taosSqlSessionFactory")
public class TaosDataSourceConfig {
    static final String PACKAGE = "com.xxxx";
    private static final String TYPE_ALIASES_PACKAGE = "com.xxxx";
    private static final String MAPPER_LOCATIONS = "classpath:mapper/*.xml";

    @Value("${taos.datasource.url}")
    private String dbUrl;

    @Value("${taos.datasource.username}")
    private String username;

    @Value("${taos.datasource.password}")
    private String password;

    @Value("${taos.datasource.driver-class-name}")
    private String driverClassName;

    @Value("${spring.datasource.druid.initial-size}")
    private int initialSize;

    @Value("${spring.datasource.druid.min-idle}")
    private int minIdle;

    @Value("${spring.datasource.druid.max-active}")
    private int maxActive;

    @Value("${spring.datasource.druid.max-wait}")
    private int maxWait;

    @Value("${spring.datasource.druid.time-between-eviction-runs-millis}")
    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.druid.min-evictable-idle-time-millis}")
    private int minEvictableIdleTimeMillis;

    @Value("${spring.datasource.druid.validation-query}")
    private String validationQuery;

    @Value("${spring.datasource.druid.test-while-idle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.druid.test-on-borrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.druid.test-on-return}")
    private boolean testOnReturn;

    @Value("${spring.datasource.druid.pool-prepared-statements}")
    private boolean poolPreparedStatements;

    @Value("${spring.datasource.druid.max-pool-prepared-statement-per-connection-size}")
    private int maxPoolPreparedStatementPerConnectionSize;

    @Value("${spring.datasource.druid.filters}")
    private String filters;

    @Bean(name = "taosDataSource")
    @ConfigurationProperties(prefix = "taos.datasource")
    public DataSource taosDataSource() {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setName("taosDataSource");
        datasource.setUrl(this.dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);

        // configuration
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        //不用伪表dual校验登录信息,貌似TDengine不支持
       // datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        List filterList = new ArrayList<>();
        filterList.add(wallFilter());
        datasource.setProxyFilters(filterList);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {

        }
        return datasource;
    }

    @Bean
    public WallFilter wallFilter() {
        WallFilter wallFilter = new WallFilter();
        wallFilter.setConfig(wallConfig());
        return wallFilter;
    }

    @Bean
    public WallConfig wallConfig() {
        WallConfig config = new WallConfig();
        //允许一次执行多条语句
        config.setMultiStatementAllow(true);
        //允许非基本语句的其他语句
        config.setNoneBaseStatementAllow(true);

        return config;
    }

    @Bean(name = "taosTransactionManager")
    public DataSourceTransactionManager taosTransactionManager() {
        return new DataSourceTransactionManager(taosDataSource());
    }

    @Bean(name = "taosJdbcTemplate")
    public JdbcTemplate taosJdbcTemplate() {
        return new JdbcTemplate(taosDataSource());
    }

    @Bean(name = "taosSqlSessionFactory")
    public SqlSessionFactory taosSqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(taosDataSource());
        //解决jar包找不到mapperTYPE_ALIASES_PACKAGE问题
        sessionFactory.setVfs(SpringBootVFS.class);
         sessionFactory.setTypeAliasesPackage(TYPE_ALIASES_PACKAGE);
         sessionFactory.setMapperLocations(new         
        PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATIONS));
 
        return sessionFactory.getObject();
    }
}

最后一个test类测试

  @Resource(name = "taosJdbcTemplate")
    private JdbcTemplate jdbcTemplate;
    @Test
    public void testToas() throws Exception {
        int num = jdbcTemplate.update(
                "insert into tb(temperature, ts, humidity) VALUES(?,?,?)",
                "35",new Date().getTime(), "123000123"
        );

你可能感兴趣的:(Linux,数据库,tdengine,涛思数据)