| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| |
| # 常见概念 |
| |
| ## 1. 数据模型相关概念 |
| |
| ### 1.1 数据模型(sql_dialect) |
| |
| IoTDB 支持两种时序数据模型(SQL语法),管理的对象均为设备和测点树:以层级路径的方式管理数据,一条路径对应一个设备的一个测点表;以关系表的方式管理数据,一张表对应一类设备。 |
| |
| ### 1.2 元数据(Schema) |
| |
| 元数据是数据库的数据模型信息,即树形结构或表结构。包括测点的名称、数据类型等定义。 |
| |
| ### 1.3 设备(Device) |
| |
| 对应一个实际场景中的物理设备,通常包含多个测点。 |
| |
| ### 1.4 测点(Timeseries) |
| |
| 又名:物理量、时间序列、时间线、点位、信号量、指标、测量值等。<br> |
| 测点是多个数据点按时间戳递增排列形成的一个时间序列。通常一个测点代表一个采集点位,能够定期采集所在环境的物理量。 |
| |
| ### 1.5 编码(Encoding) |
| |
| 编码是一种压缩技术,将数据以二进制的形式进行表示,可以提高存储效率。IoTDB 支持多种针对不同类型的数据的编码方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。 |
| |
| ### 1.6 压缩(Compression) |
| |
| IoTDB 在数据编码后,使用压缩技术进一步压缩二进制数据,提升存储效率。IoTDB 支持多种压缩方法,详细信息请查看:[压缩和编码](../Technical-Insider/Encoding-and-Compression.md)。 |
| |
| ## 2. 分布式相关概念 |
| |
| 下图展示了一个常见的 IoTDB 3C3D(3 个 ConfigNode、3 个 DataNode)的集群部署模式: |
| |
| <img src="/img/Cluster-Concept01.png" alt="" style="width: 60%;"/> |
| |
| IoTDB 的集群包括如下常见概念: |
| |
| - 节点(ConfigNode、DataNode、AINode) |
| - Region(SchemaRegion、DataRegion) |
| - 多副本 |
| |
| 下文将对以上概念进行介绍。 |
| |
| |
| ### 2.1 节点 |
| |
| IoTDB 集群包括三种节点(进程):ConfigNode(管理节点),DataNode(数据节点)和 AINode(分析节点),如下所示: |
| |
| - ConfigNode:管理集群的节点信息、配置信息、用户权限、元数据、分区信息等,负责分布式操作的调度和负载均衡,所有 ConfigNode 之间互为全量备份,如上图中的 ConfigNode-1,ConfigNode-2 和 ConfigNode-3 所示。 |
| - DataNode:服务客户端请求,负责数据的存储和计算,如上图中的 DataNode-1,DataNode-2 和 DataNode-3 所示。 |
| - AINode:负责提供机器学习能力,支持注册已训练好的机器学习模型,并通过 SQL 调用模型进行推理,目前已内置自研时序大模型和常见的机器学习算法(如预测与异常检测)。 |
| |
| ### 2.2 数据分区 |
| |
| 在 IoTDB 中,元数据和数据都被分为小的分区,即 Region,由集群的各个 DataNode 进行管理。 |
| |
| - SchemaRegion:元数据分区,管理一部分设备和测点的元数据。不同 DataNode 相同 RegionID 的 SchemaRegion 互为副本,如上图中 SchemaRegion-1 拥有三个副本,分别放置于 DataNode-1,DataNode-2 和 DataNode-3。 |
| - DataRegion:数据分区,管理一部分设备的一段时间的数据。不同 DataNode 相同 RegionID 的 DataRegion 互为副本,如上图中 DataRegion-2 拥有两个副本,分别放置于 DataNode-1 和 DataNode-2。 |
| - 具体分区算法可参考:[数据分区](../Technical-Insider/Cluster-data-partitioning.md) |
| |
| ### 2.3 多副本 |
| |
| 数据和元数据的副本数可配置,不同部署模式下的副本数推荐如下配置,其中多副本时可提供高可用服务。 |
| |
| | 类别 | 配置项 | 单机推荐配置 | 集群推荐配置 | |
| | :----- | :------------------------ | :----------- | :----------- | |
| | 元数据 | schema_replication_factor | 1 | 3 | |
| | 数据 | data_replication_factor | 1 | 2 | |
| |
| |
| ## 3. 部署相关概念 |
| |
| IoTDB 有两种运行模式:单机模式、集群模式。 |
| |
| ### 3.1 单机模式 |
| |
| IoTDB单机实例包括 1 个ConfigNode、1个DataNode,即1C1D; |
| |
| - **特点**:便于开发者安装部署,部署和维护成本较低,操作方便。 |
| - **适用场景**:资源有限或对高可用要求不高的场景,例如边缘端服务器。 |
| - **部署方法**:[单机版部署](../Deployment-and-Maintenance/Stand-Alone-Deployment_apache.md) |
| |
| |
| ### 3.2 集群模式 |
| |
| IoTDB 集群实例为 3 个ConfigNode 和不少于 3 个 DataNode,通常为 3 个 DataNode,即3C3D;当部分节点出现故障时,剩余节点仍然能对外提供服务,保证数据库服务的高可用性,且可随节点增加提升数据库性能。 |
| |
| - **特点**:具有高可用性、高扩展性,可通过增加 DataNode 提高系统性能。 |
| - **适用场景**:需要提供高可用和可靠性的企业级应用场景。 |
| - **部署方法**:[集群版部署](../Deployment-and-Maintenance/Cluster-Deployment_apache.md) |
| |
| ### 3.3 特点总结 |
| |
| | 维度 | 单机模式 | 集群模式 | |
| | ------------ | ---------------------------- | ------------------------ | |
| | 适用场景 | 边缘侧部署、对高可用要求不高 | 高可用性业务、容灾场景等 | |
| | 所需机器数量 | 1 | ≥3 | |
| | 安全可靠性 | 无法容忍单点故障 | 高,可容忍单点故障 | |
| | 扩展性 | 可扩展 DataNode 提升性能 | 可扩展 DataNode 提升性能 | |
| | 性能 | 可随 DataNode 数量扩展 | 可随 DataNode 数量扩展 | |
| |
| - 单机模式和集群模式,部署步骤类似(逐个增加 ConfigNode 和 DataNode),仅副本数和可提供服务的最少节点数不同。 |