未验证 提交 f261f4b5 编写于 作者: W wade zhang 提交者: GitHub

Merge pull request #11888 from taosdata/docs/TD-14869

docs: use same expression for rest api
......@@ -8,7 +8,6 @@ description: 此连接器基于标准 JDBC API 实现。
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import Preparition from './_preparition.mdx';
`taos-jdbcdriver` 是 TDengine 的官方 Java 语言连接器。Java 开发人员可以通过它开发存取 TDengine 数据库的应用软件。
......@@ -16,11 +15,10 @@ import Preparition from './_preparition.mdx';
![tdengine-connector](tdengine-jdbc-connector.png)
上图显示了种 Java 应用使用连接器访问 TDengine 的方式:
上图显示了种 Java 应用使用连接器访问 TDengine 的方式:
- JDBC 原生连接:Java 应用在物理节点 1(pnode1)上使用 JDBC 原生连接的 API ,直接调用客户端驱动(libtaos.so 或 taos.dll)的 API 将写入和查询请求发送到位于物理节点 2(pnode2)上的 taosd 实例。
- RESTful:应用将 SQL 发送给位于物理节点 2(pnode2)上的 REST 连接器,再调用客户端驱动 API。
- JDBC-RESTful:Java 应用通过 JDBC-RESTful 的 API ,将 SQL 封装成一个 REST 请求,发送给物理节点 2 的 REST 连接器。
- JDBC 原生连接:Java 应用在物理节点 1(pnode1)上使用 TSDBDriver 直接调用客户端驱动(libtaos.so 或 taos.dll)的 API 将写入和查询请求发送到位于物理节点 2(pnode2)上的 taosd 实例。
- JDBC REST 连接:Java 应用通过 RestfulDriver 将 SQL 封装成一个 REST 请求,发送给物理节点 2 的 REST 服务器(taosAdapter),通过 REST 服务器请求 taosd 并返回结果。
:::info
TDengine 的 JDBC 驱动实现尽可能与关系型数据库驱动保持一致,但 TDengine 与关系对象型数据库的使用场景和技术特征存在差异,所以`taos-jdbcdriver` 与传统的 JDBC driver 也存在一定差异。在使用时需要注意以下几点:
......@@ -65,8 +63,7 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Java 对
使用 Java Connector 连接数据库前,需要具备以下条件:
- 已安装 Java 1.8 或以上版本运行时环境和 Maven 3.6 或以上版本
<Preparition />
- 已安装客户端驱动(使用原生连接必须安装,使用 REST 连接无需安装),具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动)
<Tabs defaultValue="maven">
<TabItem value="maven" label="使用 Maven 安装">
......@@ -184,9 +181,9 @@ String jdbcUrl = "jdbc:TAOS-RS://taosdemo.com:6041/test?user=root&password=taosd
Connection conn = DriverManager.getConnection(jdbcUrl);
```
以上示例,使用 JDBC-RESTful 的 driver,建立了到 hostname 为 taosdemo.com,端口为 6041,数据库名为 test 的连接。这个 URL 中指定用户名(user)为 root,密码(password)为 taosdata。
以上示例,使用了 JDBC REST 连接的 driver,建立了到 hostname 为 taosdemo.com,端口为 6041,数据库名为 test 的连接。这个 URL 中指定用户名(user)为 root,密码(password)为 taosdata。
使用 JDBC-RESTful 接口,不需要依赖本地函数库。与 JDBC 原生连接相比,仅需要:
使用 JDBC REST 连接,不需要依赖本地函数库。与 JDBC 原生连接相比,仅需要:
1. driverClass 指定为“com.taosdata.jdbc.rs.RestfulDriver”;
2. jdbcUrl 以“jdbc:TAOS-RS://”开头;
......@@ -194,25 +191,27 @@ Connection conn = DriverManager.getConnection(jdbcUrl);
- user:登录 TDengine 用户名,默认值 'root'。
- password:用户登录密码,默认值 'taosdata'。
- batchfetch: true:在执行查询时批量拉取结果集;false:逐行拉取结果集。默认值为:false。逐行拉取结果集使用 HTTP 方式进行数据传输。从 taos-jdbcdriver-2.0.38 和 TDengine 2.4.0.12 版本开始,JDBC-RESTful 的 driver 增加批量拉取数据功能。taos-jdbcdriver 与 TDengine 之间通过 WebSocket 连接进行数据传输。相较于 HTTP,WebSocket 可以使 JDBC-RESTful 支持大数据量查询,并提升查询性能。
- batchfetch: true:在执行查询时批量拉取结果集;false:逐行拉取结果集。默认值为:false。逐行拉取结果集使用 HTTP 方式进行数据传输。从 taos-jdbcdriver-2.0.38 和 TDengine 2.4.0.12 版本开始,JDBC REST 连接增加批量拉取数据功能。taos-jdbcdriver 与 TDengine 之间通过 WebSocket 连接进行数据传输。相较于 HTTP,WebSocket 可以使 JDBC REST 连接支持大数据量查询,并提升查询性能。
- batchErrorIgnore:true:在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败,继续执行下面的 SQL 了。false:不再执行失败 SQL 后的任何语句。默认值为:false。
**注意**:部分配置项(比如:locale、timezone)在 REST 连接中不生效。
:::note
- 与原生连接方式不同,RESTful 接口是无状态的。在使用 JDBC-RESTful 时,需要在 SQL 中指定表、超级表的数据库名称。例如:
- 与原生连接方式不同,REST 接口是无状态的。在使用 JDBC REST 连接时,需要在 SQL 中指定表、超级表的数据库名称。例如:
```sql
INSERT INTO test.t1 USING test.weather (ts, temperature) TAGS('beijing') VALUES(now, 24.6);
```
- 从 taos-jdbcdriver-2.0.36 和 TDengine 2.2.0.0 版本开始,如果在 url 中指定了 dbname,那么,JDBC-RESTful 会默认使用/rest/sql/dbname 作为 resful 请求的 url,在 SQL 中不需要指定 dbname。例如:url 为 jdbc:TAOS-RS://127.0.0.1:6041/test,那么,可以执行 sql:insert into t1 using weather(ts, temperatrue) tags('beijing') values(now, 24.6);
- 从 taos-jdbcdriver-2.0.36 和 TDengine 2.2.0.0 版本开始,如果在 url 中指定了 dbname,那么,JDBC REST 连接会默认使用/rest/sql/dbname 作为 resful 请求的 url,在 SQL 中不需要指定 dbname。例如:url 为 jdbc:TAOS-RS://127.0.0.1:6041/test,那么,可以执行 sql:insert into t1 using weather(ts, temperatrue) tags('beijing') values(now, 24.6);
:::
</TabItem>
<TabItem value="properties" label="指定 URL 和 Properties 获取连接">
</Tabs>
### 指定 URL 和 Properties 获取连接
除了通过指定的 URL 获取连接,还可以使用 Properties 指定建立连接时的参数。
......@@ -259,8 +258,7 @@ properties 中的配置参数如下:
- TSDBDriver.PROPERTY_KEY_TIME_ZONE:仅在使用 JDBC 原生连接时生效。 客户端使用的时区,默认值为系统当前时区。
- 此外对 JDBC 原生连接,通过指定 URL 和 Properties 还可以指定其他参数,比如日志级别、SQL 长度等。详见 [config](/reference/config#为客户端指定配置文件) 中对客户端适用的参数。
</TabItem>
<TabItem value="priority" label="配置参数的优先级">
### 配置参数的优先级
通过前面三种方式获取连接,如果配置参数在 url、Properties、客户端配置文件中有重复,则参数的`优先级由高到低`分别如下:
......@@ -272,9 +270,6 @@ properties 中的配置参数如下:
> 更多详细配置请参考[客户端配置](/reference/config/#仅客户端适用)
</TabItem>
</Tabs>
## 使用示例
### 创建数据库和表
......@@ -357,7 +352,7 @@ JDBC 连接器可能报错的错误码包括 3 种:JDBC driver 本身的报错
**注意**:
- JDBC-RESTful 实现并不提供参数绑定这种使用方式
- JDBC REST 连接暂时不提供参数绑定这种使用方式
- 以下示例代码基于 taos-jdbcdriver-2.0.36
- binary 类型数据需要调用 setString 方法,nchar 类型数据需要调用 setNString 方法
- setString 和 setNString 都要求用户在 size 参数里声明表定义中对应列的列宽
......@@ -627,7 +622,7 @@ public void setNString(int columnIndex, ArrayList<String> list, int size) throws
**注意**:
- JDBC-RESTful 实现并不提供无模式写入这种使用方式
- JDBC REST 连接暂时不提供无模式写入这种使用方式
- 以下示例代码基于 taos-jdbcdriver-2.0.36
示例代码:
......@@ -805,11 +800,11 @@ Query OK, 1 row(s) in set (0.000141s)
## 重要更新记录
| taos-jdbcdriver 版本 | 主要变化 |
| :------------------: | :---------------------------: |
| 2.0.36 | 增加对 schemaless 写入支持 |
| 2.0.37 | 增加对 json tag 支持 |
| 2.0.38 | 增加对 RESTful 中批量拉取功能 |
| taos-jdbcdriver 版本 | 主要变化 |
| :------------------: | :----------------------------: |
| 2.0.36 | 增加对 schemaless 写入支持 |
| 2.0.37 | 增加对 json tag 支持 |
| 2.0.38 | JDBC REST 连接增加批量拉取功能 |
## 常见问题
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册