# 连接器

TDengine 提供了丰富的应用程序开发接口，其中包括 C/C++、Java、Python、Go、Node.js、C# 、RESTful 等，便于用户快速开发应用。

![image-connecotr](/img/connector.png)

## 支持的系统

目前 TDengine 的连接器可支持的平台广泛，包括：X64/X86/ARM64/ARM32/MIPS/Alpha 等硬件平台，以及 Linux/Win64/Win32 等开发环境。对照矩阵如下：

| **CPU**        | **OS**    | **JDBC** | **Python** | **Go** | **Node.js** | **C#** | **Rust** | **RESTful** |
| -------------- | --------- | -------- | ---------- | ------ | ----------- | ------ | -------- | ----------- |
| **X86 64bit**  | **Linux** | ●        | ●          | ●      | ●           | ●      | ●        | ●           |
| **X86 64bit**  | **Win64** | ●        | ●          | ●      | ●           | ●      | ●        | ●           |
| **X86 64bit**  | **Win32** | ●        | ●          | ●      | ●           | ○      | ○        | ●           |
| **X86 32bit**  | **Win32** | ○        | ○          | ○      | ○           | ○      | ○        | ●           |
| **ARM64**      | **Linux** | ●        | ●          | ●      | ●           | ○      | ○        | ●           |
| **ARM32**      | **Linux** | ●        | ●          | ●      | ●           | ○      | ○        | ●           |
| **MIPS 龙芯**  | **Linux** | ○        | ○          | ○      | ○           | ○      | ○        | ○           |
| **Alpha 申威** | **Linux** | ○        | ○          | --     | --          | --     | --       | ○           |
| **X86 海光**   | **Linux** | ○        | ○          | ○      | --          | --     | --       | ○           |

其中 ● 表示官方测试验证通过，○ 表示非官方测试验证通过，-- 表示未经验证。

## 特性矩阵

连接器对 TDengine 特性的支持对照矩阵如下[1]：

| **Feature**        | **Java**  | **Python** | **Go**   | **C#**   | **Node.js** | **Rust** |
| ------------------ | --------- | ---------- | -------- | -------- | ----------- | -------- |
| **连接管理**       | 支持      | 支持       | 支持     | 支持     | 支持        | 支持     |
| **同步查询**       | 支持      | 支持       | 支持     | 支持     | 支持        | 支持     |
| **异步查询**       | 不支持[2] | 支持       | 支持     | 支持     | 支持        | 暂不支持 |
| **参数绑定**       | 支持      | 支持       | 支持     | 支持     | 支持        | 支持     |
| **获取系统信息**   | 暂不支持  | 支持       | 暂不支持 | 暂不支持 | 支持        | 暂不支持 |
| **错误信息**       | 支持      | 支持       | 支持     | 支持     | 支持        | 支持     |
| **订阅功能**       | 支持      | 支持       | 支持     | 支持     | 支持        | 暂不支持 |
| **Schemaless**     | 支持      | 支持       | 支持     | 支持     | 支持        | 支持     |
| **RESTful 连接**   | 支持      | 支持       | 支持     | 暂不支持 | 支持        | 支持     |
| **批量拉取（WS）** | 支持      | 暂不支持   | 暂不支持 | 暂不支持 | 暂不支持    | 暂不支持 |

备注：

[1]: 由于不同语言数据库框架规范不同，并不意味着所有 C/C++ 接口都需要对应支持。

[2]: JDBC 标准为同步查询。

:::warning

- 在没有安装 TDengine 服务端软件的系统中使用连接器（除 RESTful 外）访问 TDengine 数据库，需要安装相应版本的客户端安装包来使应用驱动（Linux 系统中文件名为 libtaos.so，Windows 系统中为 taos.dll）被安装在系统中，否则会产生无法找到相应库文件的错误。
- 所有执行 SQL 语句的 API，例如 C/C++ Connector 中的 `tao_query`、`taos_query_a`、`taos_subscribe` 等，以及其它语言中与它们对应的 API，每次都只能执行一条 SQL 语句，如果实际参数中包含了多条语句，它们的行为是未定义的。
- 升级 TDengine 到 2.0.8.0 版本的用户，必须更新 JDBC。连接 TDengine 必须升级 taos-jdbcdriver 到 2.0.12 及以上。详细的版本依赖关系请参见 [taos-jdbcdriver 文档](https://www.taosdata.com/cn/documentation/connector/java#version)。
- 无论选用何种编程语言的连接器，2.0 及以上版本的 TDengine 推荐数据库应用的每个线程都建立一个独立的连接，或基于线程建立连接池，以避免连接内的“USE statement”状态量在线程之间相互干扰（但连接的查询和写入操作都是线程安全的）。

:::

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import InstallOnWindows from "./_linux_install.mdx";
import InstallOnLinux from "./_windows_install.mdx";
import VarifyWindows from "./_varify_linux.mdx";
import VarifyLinux from "./_varify_windows.mdx";

## 安装客户端驱动

:::info
只有在没有安装 TDengine 服务端软件的系统上使用非 RESTFful 连接器才需要安装客户端驱动。

:::

### 安装步骤

<Tabs defaultValue="linux" groupId="os">
  <TabItem value="linux" label="Linux">
    <InstallOnWindows />
  </TabItem>
  <TabItem value="windows" label="Windows">
    <InstallOnLinux />
  </TabItem>
</Tabs>

### 安装验证

以上安装和配置完成后，并确认 TDengine 服务已经正常启动运行，此时可以执行 taos 客户端进行登录。

<Tabs defaultValue="linux" groupId="os">
  <TabItem value="linux" label="Linux">
    <VarifyLinux />
  </TabItem>
  <TabItem value="windows" label="Windows">
    <VarifyWindows />
  </TabItem>
</Tabs>
