diff --git a/docs-cn/04-connect/04-connect.mdx b/docs-cn/04-connect/index.mdx similarity index 96% rename from docs-cn/04-connect/04-connect.mdx rename to docs-cn/04-connect/index.mdx index 6c664f2a7516814802fdeae2579586d3320bfead..4594f5b907c6b49e65668f6205d909c9d417f0db 100644 --- a/docs-cn/04-connect/04-connect.mdx +++ b/docs-cn/04-connect/index.mdx @@ -1,8 +1,3 @@ ---- -sidebar_label: 建立连接 -sidebar_position: 4 ---- - # 建立连接 import Tabs from "@theme/Tabs"; @@ -70,7 +65,7 @@ TDengine 提供了 RESTful 接口,应用程序无需安装任何依赖,只 - + diff --git a/docs-cn/05-model/_category_.yml b/docs-cn/05-model/_category_.yml index c61397aa9b77ad3c29bdd4aed021d1e2c556c4a1..e5dae7c27cf17ff737aa8301bc79aad468c28791 100644 --- a/docs-cn/05-model/_category_.yml +++ b/docs-cn/05-model/_category_.yml @@ -1 +1,2 @@ label: 数据建模 + diff --git a/docs-cn/05-model/05-model.mdx b/docs-cn/05-model/index.mdx similarity index 99% rename from docs-cn/05-model/05-model.mdx rename to docs-cn/05-model/index.mdx index f7f0b51350be62ea2faf8992ba9fc93bd1092979..7b1ae38439a5644340d9600eb2332546b335bc14 100644 --- a/docs-cn/05-model/05-model.mdx +++ b/docs-cn/05-model/index.mdx @@ -1,3 +1,7 @@ +--- +slug: /model +--- + # TDengine 数据建模 TDengine 采用关系型数据模型,需要建库、建表。因此对于一个具体的应用场景,需要考虑库、超级表和普通表的设计。本节不讨论细致的语法规则,只介绍概念。 diff --git a/docs-cn/06-insert-data/01-sql-writing.mdx b/docs-cn/06-insert-data/01-sql-writing.mdx index 6e5605c75cf13b33406ca5457fdc7b537e8b2be6..1195b0c2a4eadae8b125da181ae7dc86dabf2da3 100644 --- a/docs-cn/06-insert-data/01-sql-writing.mdx +++ b/docs-cn/06-insert-data/01-sql-writing.mdx @@ -2,33 +2,52 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; +import JavaSQL from "./_java_sql.mdx"; +import JavaStmt from "./_java_stmt.mdx"; +import PySQL from "./_py_sql.mdx"; +import PyStmt from "./_py_stmt.mdx"; +import GoSQL from "./_go_sql.mdx"; +import GoStmt from "./_go_stmt.mdx"; +import RustSQL from "./_rust_sql.mdx"; +import RustStmt from "./_rust_stmt.mdx"; +import NodeSQL from "./_js_sql.mdx"; +import NodeStmt from "./_js_stmt.mdx"; +import CsSQL from "./_cs_sql.mdx"; +import CsStmt from "./_cs_stmt.mdx"; +import CSQL from "./_c_sql.mdx"; +import CStmt from "./_c_stmt.mdx"; ## SQL 写入 -应用通过 C/C++, Java, Go, C#, Python, Node.js 连接器执行 SQL insert 语句来插入数据,用户还可以通过 TAOS Shell,手动输入 SQL insert 语句插入数据。比如下面这条 insert 就将一条记录写入到表 d1001 中: +应用通过连接器执行 insert 语句来插入数据,用户还可以通过 TAOS Shell,手动输入 insert 语句插入数据。比如下面这条 insert 就将一条记录写入到表 d1001 中: -```mysql +```sql INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31); ``` TDengine 支持一次写入多条记录,比如下面这条命令就将两条记录写入到表 d1001 中: -```mysql +```sql INSERT INTO d1001 VALUES (1538548684000, 10.2, 220, 0.23) (1538548696650, 10.3, 218, 0.25); ``` TDengine 也支持一次向多个表写入数据,比如下面这条命令就向 d1001 写入两条记录,向 d1002 写入一条记录: -```mysql +```sql INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31) (1538548695000, 12.6, 218, 0.33) d1002 VALUES (1538548696800, 12.3, 221, 0.31); ``` -详细的 SQL INSERT 语法规则请见 [TAOS SQL 的数据写入](https://www.taosdata.com/cn/documentation/taos-sql#insert) 章节。 +详细的 SQL INSERT 语法规则请见 [TAOS SQL 的数据写入](/reference/taos-sql/insert) 章节。 -:::tip +:::info - 要提高写入效率,需要批量写入。一批写入的记录条数越多,插入效率就越高。但一条记录不能超过 16K,一条 SQL 语句总长度不能超过 1M 。 - TDengine 支持多线程同时写入,要进一步提高写入速度,一个客户端需要打开 20 个以上的线程同时写。但线程数达到一定数量后,无法再提高,甚至还会下降,因为线程频繁切换,带来额外开销。 + +::: + +:::warning + - 对同一张表,如果新插入记录的时间戳已经存在,默认情形下(UPDATE=0)新记录将被直接抛弃,也就是说,在一张表里,时间戳必须是唯一的。如果应用自动生成记录,很有可能生成的时间戳是一样的,这样,成功插入的记录条数会小于应用插入的记录条数。如果在创建数据库时使用了 UPDATE 1 选项,插入相同时间戳的新记录将覆盖原有记录。 - 写入的数据的时间戳必须大于当前时间减去配置参数 keep 的时间。如果 keep 配置为 3650 天,那么无法写入比 3650 天还早的数据。写入数据的时间戳也不能大于当前时间加配置参数 days。如果 days 为 2,那么无法写入比当前时间还晚 2 天的数据。 @@ -38,28 +57,67 @@ INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31) (1538548695000, 12.6, ### 普通 SQL 写入 - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + -### 动态绑定写入 +:::note -(补充介绍) +1. 无论 RESTFful 方式建立连接还是本地驱动方式建立连接,以上示例代码都能正常工作。 +2. 唯一需要注意的是:由于 RESTful 接口无状态, 不能使用 `use db` 语句来切换数据库。 -### 示例代码 +::: - - - - - - - - +### 动态绑定写入 + +TDengine 也提供了支持参数绑定的 Prepare API,与 MySQL 一样,这些 API 目前也仅支持用问号 `?` 来代表待绑定的参数。文档中有时也会把此功能称为“原生接口写入”。从 2.1.1.0 和 2.1.2.0 版本开始,TDengine 大幅改进了参数绑定接口对数据写入(INSERT)场景的支持。这样在通过参数绑定接口写入数据时,就避免了 SQL 语法解析的资源消耗,从而在绝大多数情况下显著提升写入性能。 + + + + + + + + + + + + + + + + + + + + + + + + +:::note + +只有使用本地驱动方式连接连接,才能使用动态绑定工具。 + +::: \ No newline at end of file diff --git a/docs-cn/06-insert-data/02-influxdb-line.mdx b/docs-cn/06-insert-data/02-influxdb-line.mdx index 9076b5bad488f1dfb40f25542ad7505b5a5c85b9..af7136cde408ef3bf11e5e9f2a85acfeea7256ae 100644 --- a/docs-cn/06-insert-data/02-influxdb-line.mdx +++ b/docs-cn/06-insert-data/02-influxdb-line.mdx @@ -4,4 +4,38 @@ sidebar_label: InfluxDB Line 协议 # InfluxDB Line 协议 +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import JavaLine from "./_java_line.mdx"; +import PyLine from "./_py_line.mdx"; +import GoLine from "./_go_line.mdx"; +import RustLine from "./_rust_line.mdx"; +import NodeLine from "./_js_line.mdx"; +import CsLine from "./_cs_line.mdx"; +import CLine from "./_c_line.mdx"; + ## 示例代码 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-cn/06-insert-data/03-opentsdb-telnet.mdx b/docs-cn/06-insert-data/03-opentsdb-telnet.mdx index 0bb8b33c8e98c1e20653a4b2af6e565d9b6e1d6d..9695933d06db42fff7c8151506b4a90c3be35931 100644 --- a/docs-cn/06-insert-data/03-opentsdb-telnet.mdx +++ b/docs-cn/06-insert-data/03-opentsdb-telnet.mdx @@ -4,4 +4,38 @@ sidebar_label: OpentsDB Telnet 协议 # OpentsDB Telnet 协议 -## 示例代码 \ No newline at end of file +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import JavaTelnet from "./_java_opts_telnet.mdx"; +import PyTelnet from "./_py_opts_telnet.mdx"; +import GoTelnet from "./_go_opts_telnet.mdx"; +import RustTelnet from "./_rust_opts_telnet.mdx"; +import NodeTelnet from "./_js_opts_telnet.mdx"; +import CsTelnet from "./_cs_opts_telnet.mdx"; +import CTelnet from "./_c_opts_telnet.mdx"; + +## 示例代码 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-cn/06-insert-data/04-opentsdb-json.mdx b/docs-cn/06-insert-data/04-opentsdb-json.mdx index 99c62d56cd504bc6b6a1f1c3a0179eebdc24d553..db5307f68ad069e4aa9db1c9325b9c704d0b0016 100644 --- a/docs-cn/06-insert-data/04-opentsdb-json.mdx +++ b/docs-cn/06-insert-data/04-opentsdb-json.mdx @@ -4,4 +4,38 @@ sidebar_label: OpentsDB JSON 格式协议 # OpentsDB JSON 格式协议 +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import JavaJson from "./_java_opts_json.mdx"; +import PyJson from "./_py_opts_json.mdx"; +import GoJson from "./_go_opts_json.mdx"; +import RustJson from "./_rust_opts_json.mdx"; +import NodeJson from "./_js_opts_json.mdx"; +import CsJson from "./_cs_opts_json.mdx"; +import CJson from "./_c_opts_json.mdx"; + ## 示例代码 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-cn/06-insert-data/_c_line.mdx b/docs-cn/06-insert-data/_c_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_c_opts_json.mdx b/docs-cn/06-insert-data/_c_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_c_opts_telnet.mdx b/docs-cn/06-insert-data/_c_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_c_sql.mdx b/docs-cn/06-insert-data/_c_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_c_stmt.mdx b/docs-cn/06-insert-data/_c_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_category_.yml b/docs-cn/06-insert-data/_category_.yml index 1b37afd70abc99638dd86b02ada3e02f61d1c526..b0d91789ea15e8cb40769d53be35bc94598858ae 100644 --- a/docs-cn/06-insert-data/_category_.yml +++ b/docs-cn/06-insert-data/_category_.yml @@ -1,15 +1,5 @@ label: 写入数据 link: type: generated-index - description: "TDengine 支持多种接口写入数据,包括 SQL,Prometheus,Telegraf,collectd,StatsD,EMQ MQTT Broker,HiveMQ Broker,CSV 文件等,后续还将提供 Kafka,OPC 等接口。数据可以单条插入,也可以批量插入,可以插入一个数据采集点的数据,也可以同时插入多个数据采集点的数据。支持多线程插入,支持时间乱序数据插入,也支持历史数据插入。" - keywords: - [ - SQL, - Prometheus, - Telegraf, - collectd, - StatsD, - EMQ MQTT Broker, - HiveMQ Broker, - CSV, - ] + slug: /insert-data/ + description: "TDengine 支持多种接口写入协议,包括 SQL,InfluxDB Line 协议, OpentsDB Telnet 协议, OpentsDB JSON 格式协议。数据可以单条插入,也可以批量插入,可以插入一个数据采集点的数据,也可以同时插入多个数据采集点的数据。支持多线程插入,支持时间乱序数据插入,也支持历史数据插入。" diff --git a/docs-cn/06-insert-data/_cs_line.mdx b/docs-cn/06-insert-data/_cs_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_cs_opts_json.mdx b/docs-cn/06-insert-data/_cs_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_cs_opts_telnet.mdx b/docs-cn/06-insert-data/_cs_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_cs_sql.mdx b/docs-cn/06-insert-data/_cs_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_cs_stmt.mdx b/docs-cn/06-insert-data/_cs_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_go_line.mdx b/docs-cn/06-insert-data/_go_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_go_opts_json.mdx b/docs-cn/06-insert-data/_go_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_go_opts_telnet.mdx b/docs-cn/06-insert-data/_go_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_go_sql.mdx b/docs-cn/06-insert-data/_go_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_go_stmt.mdx b/docs-cn/06-insert-data/_go_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_java_line.mdx b/docs-cn/06-insert-data/_java_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_java_opts_json.mdx b/docs-cn/06-insert-data/_java_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_java_opts_telnet.mdx b/docs-cn/06-insert-data/_java_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_java_sql.mdx b/docs-cn/06-insert-data/_java_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_java_stmt.mdx b/docs-cn/06-insert-data/_java_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_js_line.mdx b/docs-cn/06-insert-data/_js_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_js_opts_json.mdx b/docs-cn/06-insert-data/_js_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_js_opts_telnet.mdx b/docs-cn/06-insert-data/_js_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_js_sql.mdx b/docs-cn/06-insert-data/_js_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_js_stmt.mdx b/docs-cn/06-insert-data/_js_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_py_line.mdx b/docs-cn/06-insert-data/_py_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_py_opts_json.mdx b/docs-cn/06-insert-data/_py_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_py_opts_telnet.mdx b/docs-cn/06-insert-data/_py_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_py_sql.mdx b/docs-cn/06-insert-data/_py_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_py_stmt.mdx b/docs-cn/06-insert-data/_py_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_rust_line.mdx b/docs-cn/06-insert-data/_rust_line.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_rust_opts_json.mdx b/docs-cn/06-insert-data/_rust_opts_json.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_rust_opts_telnet.mdx b/docs-cn/06-insert-data/_rust_opts_telnet.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_rust_sql.mdx b/docs-cn/06-insert-data/_rust_sql.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/06-insert-data/_rust_stmt.mdx b/docs-cn/06-insert-data/_rust_stmt.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_c.mdx b/docs-cn/07-query-data/_c.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_c_async.mdx b/docs-cn/07-query-data/_c_async.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_cs.mdx b/docs-cn/07-query-data/_cs.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_cs_async.mdx b/docs-cn/07-query-data/_cs_async.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_go.mdx b/docs-cn/07-query-data/_go.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_go_async.mdx b/docs-cn/07-query-data/_go_async.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_java.mdx b/docs-cn/07-query-data/_java.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_js.mdx b/docs-cn/07-query-data/_js.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_js_async.mdx b/docs-cn/07-query-data/_js_async.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_py.mdx b/docs-cn/07-query-data/_py.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_py_async.mdx b/docs-cn/07-query-data/_py_async.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/_rust.mdx b/docs-cn/07-query-data/_rust.mdx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs-cn/07-query-data/07-query-data.mdx b/docs-cn/07-query-data/index.mdx similarity index 78% rename from docs-cn/07-query-data/07-query-data.mdx rename to docs-cn/07-query-data/index.mdx index f253b13b0d0b86b9e23a1c419e490fb85b081f85..1bea16873d9385d7667cc7b6e2fead7c8c0d1ad6 100644 --- a/docs-cn/07-query-data/07-query-data.mdx +++ b/docs-cn/07-query-data/index.mdx @@ -1,7 +1,23 @@ +--- +slug: /query-data +--- + # 查询数据 import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; +import JavaQuery from "./_java.mdx"; +import PyQuery from "./_py.mdx"; +import GoQuery from "./_go.mdx"; +import RustQuery from "./_rust.mdx"; +import NodeQuery from "./_js.mdx"; +import CsQuery from "./_cs.mdx"; +import CQuery from "./_c.mdx"; +import PyAsync from "./_py_async.mdx"; +import GoAsync from "./_go_async.mdx"; +import NodeAsync from "./_js_async.mdx"; +import CsAsync from "./_cs_async.mdx"; +import CAsync from "./_c_async.mdx"; ## 主要查询功能 @@ -103,25 +119,62 @@ Query OK, 5 row(s) in set (0.001521s) ## 示例代码 -### 同步查询 - - - - - - - - - +### 查询数据 + + + + + + + + + + + + + + + + + + + + + + + +:::note + +1. 无论 RESTFful 方式建立连接还是本地驱动方式建立连接,以上示例代码都能正常工作。 +2. 唯一需要注意的是:由于 RESTful 接口无状态, 不能使用 `use db` 语句来切换数据库。 + +::: + ### 异步查询 - - - - - - - + + + + + + + + + + + + + + + + + +:::note + +只有使用本地驱动方式连接连接,才能使用异步查询功能。 + +::: + diff --git a/docs-cn/08-advance-feature/01-continuous-query.mdx b/docs-cn/08-advance-feature/01-continuous-query.mdx index 2764bd408440bcb22cbb4136dbc8ea9753c7b7bc..afd39f6734fec454d72a5494e6a270eae23f100e 100644 --- a/docs-cn/08-advance-feature/01-continuous-query.mdx +++ b/docs-cn/08-advance-feature/01-continuous-query.mdx @@ -4,9 +4,6 @@ sidebar_label: 连续查询 # 连续查询(Continuous Query) -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - 连续查询是 TDengine 定期自动执行的查询,采用滑动窗口的方式进行计算,是一种简化的时间驱动的流式计算。针对库中的表或超级表,TDengine 可提供定期自动执行的连续查询,用户可让 TDengine 推送查询的结果,也可以将结果再写回到 TDengine 中。每次执行的查询是一个时间窗口,时间窗口随着时间流动向前滑动。在定义连续查询的时候需要指定时间窗口(time window, 参数 interval)大小和每次前向增量时间(forward sliding times, 参数 sliding)。 TDengine 的连续查询采用时间驱动模式,可以直接使用 TAOS SQL 进行定义,不需要额外的操作。使用连续查询,可以方便快捷地按照时间窗口生成结果,从而对原始采集数据进行降采样(down sampling)。用户通过 TAOS SQL 定义连续查询以后,TDengine 自动在最后的一个完整的时间周期末端拉起查询,并将计算获得的结果推送给用户或者写回 TDengine。 @@ -72,15 +69,3 @@ create table avg_vol as select avg(voltage) from meters where ts > now and ts <= 用户可在控制台中通过 `show streams` 命令来查看系统中全部运行的连续查询,并可以通过 `kill stream` 命令杀掉对应的连续查询。后续版本会提供更细粒度和便捷的连续查询管理命令。 -## 示例代码 - - - - - - - - - - - \ No newline at end of file diff --git a/docs-cn/08-advance-feature/02-subscribe.mdx b/docs-cn/08-advance-feature/02-subscribe.mdx index 96123d1a66ddbbc660760fba71ae56267ccab573..a7c8dcf0213b2e78bda26fecaedd9179f99878f0 100644 --- a/docs-cn/08-advance-feature/02-subscribe.mdx +++ b/docs-cn/08-advance-feature/02-subscribe.mdx @@ -1,9 +1,12 @@ --- sidebar_position: 2 -sidebar_label: 订阅 +sidebar_label: 数据订阅 --- -# 数据订阅(Publisher/Subscriber) +# 数据订阅 + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; 基于数据天然的时间序列特性,TDengine 的数据写入(insert)与消息系统的数据发布(pub)逻辑上一致,均可视为系统中插入一条带时间戳的新记录。同时,TDengine 在内部严格按照数据时间序列单调递增的方式保存数据。本质上来说,TDengine 中里每一张表均可视为一个标准的消息队列。 @@ -161,6 +164,18 @@ $ taos 这时,因为电流超过了 10A,您应该可以看到示例程序将它输出到了屏幕上。您可以继续插入一些数据观察示例程序的输出。 +## 示例代码 + + + + + + + + + + + ## Java 使用数据订阅功能 订阅功能也提供了 Java 开发接口,相关说明请见 [Java Connector](https://www.taosdata.com/cn/documentation/connector/java#subscribe)。需要注意的是,目前 Java 接口没有提供异步订阅模式,但用户程序可以通过创建 `TimerTask` 等方式达到同样的效果。 diff --git a/docs-cn/09-third-party/09-third-party.md b/docs-cn/09-third-party/09-third-party.md deleted file mode 100644 index 6c57defe891c056f42da0607e1a6791fa2ff2e21..0000000000000000000000000000000000000000 --- a/docs-cn/09-third-party/09-third-party.md +++ /dev/null @@ -1,3 +0,0 @@ -# 第三方工具 - -TDengine 通过对标准 SQL 命令、常用数据库连接器标准(例如 JDBC)、ORM 以及其他流行时序数据库写入协议(例如 InfluxDB Line Protocol、OpenTSDB JSON、OpenTSDB Telnet 等)的支持可以使 TDengine 非常容易和第三方工具共同使用。 diff --git a/docs-cn/09-third-party/_category_.yml b/docs-cn/09-third-party/_category_.yml index 95aee1e75b1165dcb963a376a86cc58b3917e054..cf9d95e5f9e0941f64159ffa17619839fdafbf05 100644 --- a/docs-cn/09-third-party/_category_.yml +++ b/docs-cn/09-third-party/_category_.yml @@ -1 +1,6 @@ label: 第三方工具 +link: + type: generated-index + slug: /third-party/ + description: TDengine 通过对标准 SQL 命令、常用数据库连接器标准(例如 JDBC)、ORM 以及其他流行时序数据库写入协议(例如 InfluxDB Line Protocol、OpenTSDB JSON、OpenTSDB Telnet 等)的支持可以使 TDengine 非常容易和第三方工具共同使用。 + diff --git a/docs-cn/10-cluster/_category_.yml b/docs-cn/10-cluster/_category_.yml index 356872bc73715fb8cb8d307d7fe2bfe6def86c27..df953cb6dd297c91f1e6d1e2d30690afab293982 100644 --- a/docs-cn/10-cluster/_category_.yml +++ b/docs-cn/10-cluster/_category_.yml @@ -1,6 +1,7 @@ label: 集群管理 link: type: generated-index + slug: /cluster/ description: "TDengine支持以集群方式部署,以提升系统的处理能力和高可用性。TDengine集群支持任意数据的多副本从而提升高可用性,并自动实现负载均衡。同时TDengine集群具有很好的横向扩展能力以处理更多的数据采集点和更大的数据量。" keywords: [ diff --git a/docs-cn/11-operation/_category_.yml b/docs-cn/11-operation/_category_.yml index 73e81280876190b72a1c05b454c4873f1889091f..930e441defdc80215ce5d90375a9cbd2d4bad947 100644 --- a/docs-cn/11-operation/_category_.yml +++ b/docs-cn/11-operation/_category_.yml @@ -1,3 +1,4 @@ label: 运维指南 link: - type: generated-index \ No newline at end of file + slug: /operation/ + type: generated-index diff --git a/docs-cn/13-tdinternal/_category_.yml b/docs-cn/13-tdinternal/_category_.yml index e654a7f3d212869be00d819f16dcdb7197244da2..73c78f68a520fefecc145daaa24fe7e28c7c78e2 100644 --- a/docs-cn/13-tdinternal/_category_.yml +++ b/docs-cn/13-tdinternal/_category_.yml @@ -1,3 +1,4 @@ label: 技术内幕 link: + slug: /tdinternal/ type: generated-index \ No newline at end of file diff --git a/docs-cn/14-reference/01-taos-sql/01-taos-sql.md b/docs-cn/14-reference/01-taos-sql/index.md similarity index 100% rename from docs-cn/14-reference/01-taos-sql/01-taos-sql.md rename to docs-cn/14-reference/01-taos-sql/index.md diff --git a/docs-cn/14-reference/03-connector/cpp.mdx b/docs-cn/14-reference/03-connector/cpp.mdx index a10fe7ef4c9e61e1207cc324b53423702a3afbe7..6ff6b413b9fcfb5d9c4552ef06184a4db2777a08 100644 --- a/docs-cn/14-reference/03-connector/cpp.mdx +++ b/docs-cn/14-reference/03-connector/cpp.mdx @@ -16,7 +16,7 @@ C/C++的 API 类似于 MySQL 的 C API。应用程序使用时,需要包含 TD - Linux:`/usr/local/taos/include` - Windows:`C:\TDengine\include` -```C +```c #include ``` @@ -72,7 +72,10 @@ C/C++的 API 类似于 MySQL 的 C API。应用程序使用时,需要包含 TD 返回值为空表示失败。应用程序需要保存返回的参数,以便后续 API 调用。 - **提示:** 同一进程可以根据不同的 host/port 连接多个 taosd 集群 + :::info + 同一进程可以根据不同的 host/port 连接多个 taosd 集群 + + ::: - `char *taos_get_server_info(TAOS *taos)` @@ -146,7 +149,10 @@ typedef struct taosField { 获取最近一次 API 调用失败的原因,返回值为错误代码。 -**注意**:2.0 及以上版本 TDengine 推荐数据库应用的每个线程都建立一个独立的连接,或基于线程建立连接池。而不推荐在应用中将该连接 (TAOS\*) 结构体传递到不同的线程共享使用。基于 TAOS 结构体发出的查询、写入等操作具有多线程安全性,但 “USE statement” 等状态量有可能在线程之间相互干扰。此外,C 语言的连接器可以按照需求动态建立面向数据库的新连接(该过程对用户不可见),同时建议只有在程序最后退出的时候才调用 taos_close 关闭连接。 +:::note +2.0 及以上版本 TDengine 推荐数据库应用的每个线程都建立一个独立的连接,或基于线程建立连接池。而不推荐在应用中将该连接 (TAOS\*) 结构体传递到不同的线程共享使用。基于 TAOS 结构体发出的查询、写入等操作具有多线程安全性,但 “USE statement” 等状态量有可能在线程之间相互干扰。此外,C 语言的连接器可以按照需求动态建立面向数据库的新连接(该过程对用户不可见),同时建议只有在程序最后退出的时候才调用 taos_close 关闭连接。 + +::: ### 异步查询 API @@ -174,7 +180,6 @@ typedef struct taosField { TDengine 的异步 API 均采用非阻塞调用模式。应用程序可以用多线程同时打开多张表,并可以同时对每张打开的表进行查询或者插入操作。需要指出的是,**客户端应用必须确保对同一张表的操作完全串行化**,即对同一个表的插入或查询操作未完成时(未返回时),不能够执行第二个插入或查询操作。 - ### 参数绑定 API 除了直接调用 `taos_query` 进行查询,TDengine 也提供了支持参数绑定的 Prepare API,与 MySQL 一样,这些 API 目前也仅支持用问号 `?` 来代表待绑定的参数。文档中有时也会把此功能称为“原生接口写入”。 @@ -269,7 +274,6 @@ typedef struct TAOS_MULTI_BIND { (2.1.3.0 版本新增) 用于在其他 stmt API 返回错误(返回错误码或空指针)时获取错误信息。 - ### Schemaless 方式写入接口 除了使用 SQL 方式或者使用参数绑定 API 写入数据外,还可以使用 Schemaless 的方式完成写入。Schemaless 可以免于预先创建超级表/数据子表的数据结构,而是可以直接写入数据,TDengine 系统会根据写入的数据内容自动创建和维护所需要的表结构。Schemaless 的使用方式详见 [Schemaless 写入](https://www.taosdata.com/cn/documentation/insert#schemaless) 章节,这里介绍与之配套使用的 C/C++ API。 @@ -391,13 +395,19 @@ TDengine 提供时间驱动的实时流式计算 API。可以每隔一指定的 - param:调用 `taos_subscribe`时客户程序提供的附加参数 - code:错误码 - **注意**:在这个回调函数里不可以做耗时过长的处理,尤其是对于返回的结果集中数据较多的情况,否则有可能导致客户端阻塞等异常状态。如果必须进行复杂计算,则建议在另外的线程中进行处理。 + :::note + 在这个回调函数里不可以做耗时过长的处理,尤其是对于返回的结果集中数据较多的情况,否则有可能导致客户端阻塞等异常状态。如果必须进行复杂计算,则建议在另外的线程中进行处理。 + + ::: - `TAOS_RES *taos_consume(TAOS_SUB *tsub)` 同步模式下,该函数用来获取订阅的结果。 用户应用程序将其置于一个循环之中。 如两次调用`taos_consume`的间隔小于订阅的轮询周期,API 将会阻塞,直到时间间隔超过此周期。 如果数据库有新记录到达,该 API 将返回该最新的记录,否则返回一个没有记录的空结果集。 如果返回值为 `NULL`,说明系统出错。 异步模式下,用户程序不应调用此 API。 - **注意**:在调用 `taos_consume()` 之后,用户应用应确保尽快调用 `taos_fetch_row()` 或 `taos_fetch_block()` 来处理订阅结果,否则服务端会持续缓存查询结果数据等待客户端读取,极端情况下会导致服务端内存消耗殆尽,影响服务稳定性。 + :::note + 在调用 `taos_consume()` 之后,用户应用应确保尽快调用 `taos_fetch_row()` 或 `taos_fetch_block()` 来处理订阅结果,否则服务端会持续缓存查询结果数据等待客户端读取,极端情况下会导致服务端内存消耗殆尽,影响服务稳定性。 + + ::: - `void taos_unsubscribe(TAOS_SUB *tsub, int keepProgress)` diff --git a/docs-cn/14-reference/_category_.yml b/docs-cn/14-reference/_category_.yml index 9381de6f82b806cb79e17e983c984de1c761fb18..f8031c35755f5912110136e8fdf3b176ddf5d6b0 100644 --- a/docs-cn/14-reference/_category_.yml +++ b/docs-cn/14-reference/_category_.yml @@ -1,3 +1,4 @@ label: 参考指南 link: + slug: /reference/ type: generated-index \ No newline at end of file diff --git a/docs-cn/15-application/_category_.yml b/docs-cn/15-application/_category_.yml index 725833f45110361f27e6fcb7015b4e2413fda7bb..141c9269b50a2155391543ecea1dfe5c918e113c 100644 --- a/docs-cn/15-application/_category_.yml +++ b/docs-cn/15-application/_category_.yml @@ -1,3 +1,4 @@ label: 应用实践 link: + slug: /application/ type: generated-index diff --git a/docs-cn/16-iot-big-data/_category_.yml b/docs-cn/16-iot-big-data/_category_.yml new file mode 100644 index 0000000000000000000000000000000000000000..0c389d56780a0eab585f4f0cee0311852037bc1f --- /dev/null +++ b/docs-cn/16-iot-big-data/_category_.yml @@ -0,0 +1 @@ +label: 物联网大数据 \ No newline at end of file diff --git a/docs-cn/16-iot-bigdata/iot-bigdata.md b/docs-cn/16-iot-big-data/index.md similarity index 100% rename from docs-cn/16-iot-bigdata/iot-bigdata.md rename to docs-cn/16-iot-big-data/index.md diff --git a/docs-cn/16-iot-bigdata/_category_.yml b/docs-cn/16-iot-bigdata/_category_.yml deleted file mode 100644 index 400c7656a3749cfd5ced4b8921f683c4a0054459..0000000000000000000000000000000000000000 --- a/docs-cn/16-iot-bigdata/_category_.yml +++ /dev/null @@ -1,3 +0,0 @@ -label: 物联网大数据 -link: - type: generated-index \ No newline at end of file diff --git a/docs-cn/17-train-fqa/_category_.yml b/docs-cn/17-train-fqa/_category_.yml index 27e8b47b49ee57d059b3088e583bf2c6a9d4df99..034d5894b9aea00e43caf4df21cb39487d8baf7b 100644 --- a/docs-cn/17-train-fqa/_category_.yml +++ b/docs-cn/17-train-fqa/_category_.yml @@ -1,3 +1,4 @@ label: FAQ、教程及其它 link: + slug: /train-faq/ type: generated-index diff --git a/docs-examples/java/src/main/java/com/taos/example/RestInsertExmaple.java b/docs-examples/java/src/main/java/com/taos/example/RestInsertExmaple.java new file mode 100644 index 0000000000000000000000000000000000000000..4d18c034a871f85c3144f9a3c485097514d4fb0e --- /dev/null +++ b/docs-examples/java/src/main/java/com/taos/example/RestInsertExmaple.java @@ -0,0 +1,4 @@ +package com.taos.example; + +public class RestInsertExmaple { +}