taosdata / TDengine

High-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios
https://tdengine.com
GNU Affero General Public License v3.0
23.39k stars 4.86k forks source link

SpringDataJPA是否支持 #4267

Closed MorganArthur closed 2 years ago

MorganArthur commented 3 years ago

我看之前2月份有issue提问暂不支持SpringDataJPA,请问下现在支持了吗,我目前在使用的时候还是出错了

zyyang90 commented 3 years ago

目前还没有做SpringDataJPA的适配,JPA是为典型的关系型数据库设计的,我的建议是TDengine并不完全适合用JPA框架去做应用开发。

  1. TDengine里有超级表,超级表上可以指定tag标签,建表可以使用自动建表语句,这些特性都是传统关系数据库里没有的。
  2. 我们在测试中发现,使用原生的JDBC接口去访问TDengine比使用框架要快很多,要发挥TDengine的性能优势建议基于JDBC或者Mybatis等框架做应用开发。
zyyang90 commented 3 years ago

Java Developer想用TDengine的话,可以参考一下这个目录下的代码: https://github.com/taosdata/TDengine/tree/develop/tests/examples/JDBC

MorganArthur commented 3 years ago

我参照提供的例子写了几个测试用例:

但是这种形式的插入语句并没有案例,我尝试使用运行了一下

image

结果jdbc报错了,错误的语句我在taos里执行了是没问题的。这是不是说明jdbc支持的还不全面

image image

MorganArthur commented 3 years ago

插入操作报错之后,我再去运行之前测通过的查询测试用例,报了同样的错

image

MorganArthur commented 3 years ago

这两个测试用例没有任何关系

MorganArthur commented 3 years ago

好像是找到问题所在了。我配置文件中设置里打印日志扫描包的日志等级就报错了。注释掉之后,运行就正常了。现在的疑问是这两者有什么关系吗,应用在运行时如果需要打印出执行的语句就只能在代码里手动打印了吗?

image

MorganArthur commented 3 years ago

@zyyang-taosdata

stephenkgu commented 3 years ago

insert 语句的第一列需要确保是TIMESTAMP类型。

MorganArthur commented 3 years ago

insert语句的第一列需要确保是TIMESTAMP类型。

我的第一列是TIMESTAMP类型的,运行的正常的(只要注释掉扫描jdbc包路径的日志等级配置)。

zyyang90 commented 3 years ago

TDengine的JDBC驱动里没有实现getLogger的相关接口,要是mybatis框架打印SQL,这个和你用的SQL框架有关,因为SQL是你自己拼的你就自己管怎么打印,你用mybatis拼的就用mybatis的框架打印。 image

MorganArthur commented 3 years ago

我使用的是jdbcTemplate,使用mybatis扫描自己路径下mapper包确实是可以打印的。

image

这种的就只能自己去打印了吗,jdbcTemplate的debug等级中明明也是有打印SQL的

MorganArthur commented 3 years ago

image

我使用jdbcTemplate调日志等级为debug时,就会报错的原因是TSDB驱动中没有处理getWarnings而是直接抛错了,为什么要这样子呢

image

zyyang90 commented 2 years ago

This issue is stale because it has been open for 30 days with no activity.