From 49148ae7c42e87401ce8bc851955d340e2f38eb2 Mon Sep 17 00:00:00 2001 From: gccgdb1234 Date: Thu, 25 Aug 2022 12:45:36 +0800 Subject: [PATCH] doc: add data model diagram in concpet chapter --- docs/en/04-concept/index.md | 4 +++- docs/en/04-concept/supertable.webp | Bin 0 -> 33420 bytes docs/en/07-develop/07-tmq.mdx | 2 +- docs/zh/04-concept/index.md | 3 +++ docs/zh/04-concept/supertable.webp | Bin 0 -> 33420 bytes 5 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 docs/en/04-concept/supertable.webp create mode 100644 docs/zh/04-concept/supertable.webp diff --git a/docs/en/04-concept/index.md b/docs/en/04-concept/index.md index 44dcad82fc..1f76a66d1a 100644 --- a/docs/en/04-concept/index.md +++ b/docs/en/04-concept/index.md @@ -156,7 +156,9 @@ The relationship between a STable and the subtables created based on this STable Queries can be executed on both a table (subtable) and a STable. For a query on a STable, TDengine will treat the data in all its subtables as a whole data set for processing. TDengine will first find the subtables that meet the tag filter conditions, then scan the time-series data of these subtables to perform aggregation operation, which reduces the number of data sets to be scanned which in turn greatly improves the performance of data aggregation across multiple DCPs. In essence, querying a supertable is a very efficient aggregate query on multiple DCPs of the same type. -In TDengine, it is recommended to use a subtable instead of a regular table for a DCP. +In TDengine, it is recommended to use a subtable instead of a regular table for a DCP. In the meters example, we can create subtables like d1001, d1002, d1003, and d1004 under super table meters. + +To better understand the data model using super table and subtable, please refer to [Meters Data Model Diagram](supertable.webp) ## Database diff --git a/docs/en/04-concept/supertable.webp b/docs/en/04-concept/supertable.webp new file mode 100644 index 0000000000000000000000000000000000000000..764b8f3de7ee92a103b2fcd0e75c03773af5ee37 GIT binary patch literal 33420 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 R`h(d2t?>V!QQ{7-{|8DPdy4=7 literal 0 HcmV?d00001 diff --git a/docs/en/07-develop/07-tmq.mdx b/docs/en/07-develop/07-tmq.mdx index ceeea64fca..17b3f5caa0 100644 --- a/docs/en/07-develop/07-tmq.mdx +++ b/docs/en/07-develop/07-tmq.mdx @@ -16,7 +16,7 @@ import CDemo from "./_sub_c.mdx"; TDengine provides data subscription and consumption interfaces similar to message queue products. These interfaces make it easier for applications to obtain data written to TDengine either in real time and to process data in the order that events occurred. This simplifies your time-series data processing systems and reduces your costs because it is no longer necessary to deploy a message queue product such as Kafka. -To use TDengine data subscription, you define topics like in Kafka. However, a topic in TDengine is based on query conditions for an existing supertable, standard table, or subtable - in other words, a SELECT statement. You can use SQL to filter data by tag, table name, column, or expression and then perform a scalar function or user-defined function on the data. Aggregate functions are not supported. This gives TDengine data subscription more flexibility than similar products. The granularity of data can be controlled on demand by applications, while filtering and preprocessing are handled by TDengine instead of the application layer. This implementation reduces the amount of data transmitted and the complexity of applications. +To use TDengine data subscription, you define topics like in Kafka. However, a topic in TDengine is based on query conditions for an existing supertable, table, or subtable - in other words, a SELECT statement. You can use SQL to filter data by tag, table name, column, or expression and then perform a scalar function or user-defined function on the data. Aggregate functions are not supported. This gives TDengine data subscription more flexibility than similar products. The granularity of data can be controlled on demand by applications, while filtering and preprocessing are handled by TDengine instead of the application layer. This implementation reduces the amount of data transmitted and the complexity of applications. By subscribing to a topic, a consumer can obtain the latest data in that topic in real time. Multiple consumers can be formed into a consumer group that consumes messages together. Consumer groups enable faster speed through multi-threaded, distributed data consumption. Note that consumers in different groups that are subscribed to the same topic do not consume messages together. A single consumer can subscribe to multiple topics. If the data in a supertable is sharded across multiple vnodes, consumer groups can consume it much more efficiently than single consumers. TDengine also includes an acknowledgement mechanism that ensures at-least-once delivery in complicated environments where machines may crash or restart. diff --git a/docs/zh/04-concept/index.md b/docs/zh/04-concept/index.md index c6d83ce4c3..a433e064a1 100644 --- a/docs/zh/04-concept/index.md +++ b/docs/zh/04-concept/index.md @@ -131,6 +131,7 @@ TDengine 建议用数据采集点的名字(如上表中的 D1001)来做表 对于复杂的设备,比如汽车,它有多个数据采集点,那么就需要为一台汽车建立多张表。 + ## 超级表 (STable) 由于一个数据采集点一张表,导致表的数量巨增,难以管理,而且应用经常需要做采集点之间的聚合操作,聚合的操作也变得复杂起来。为解决这个问题,TDengine 引入超级表(Super Table,简称为 STable)的概念。 @@ -158,6 +159,8 @@ TDengine 建议用数据采集点的名字(如上表中的 D1001)来做表 TDengine系统建议给一个数据采集点建表,需要通过超级表建表,而不是建普通表。在智能电表的示例中,我们可以通过超级表meters创建子表d1001, d1002, d1003, d1004等。 +为了更好地理解超级与子表的关系,可以参考 [智能电表数据模型示意图](supertable.webp) + ## 库 (database) 库是指一组表的集合。TDengine 容许一个运行实例有多个库,而且每个库可以配置不同的存储策略。不同类型的数据采集点往往具有不同的数据特征,包括数据采集频率的高低,数据保留时间的长短,副本的数目,数据块的大小,是否允许更新数据等等。为了在各种场景下 TDengine 都能最大效率的工作,TDengine 建议将不同数据特征的超级表创建在不同的库里。 diff --git a/docs/zh/04-concept/supertable.webp b/docs/zh/04-concept/supertable.webp new file mode 100644 index 0000000000000000000000000000000000000000..764b8f3de7ee92a103b2fcd0e75c03773af5ee37 GIT binary patch literal 33420 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 R`h(d2t?>V!QQ{7-{|8DPdy4=7 literal 0 HcmV?d00001 -- GitLab