在表模型中,数据库是表的上层组织结构,用于管理一组业务相关的表。创建表、写入数据或查询数据前,通常需要先创建数据库,并通过 USE <DATABASE_NAME> 指定当前会话使用的数据库。
数据库可以设置 TTL、时间分区间隔、SchemaRegionGroup 数量和 DataRegionGroup 数量等属性。其中 TTL 会作为数据库下表的默认数据保留周期;如果表单独设置了 TTL,则以表级 TTL 为准。
数据库用于组织和管理多张表。通常可以按业务域、项目、租户或数据隔离需求划分数据库。例如,将同一业务系统的一组设备表放在同一个数据库中,便于统一管理生命周期、权限和查询空间。
在表模型中,数据库名称也是表的命名空间。执行 USE database1 后,后续未显式指定数据库名的表操作会默认作用于 database1。
TTL 用于指定数据保存时间,单位为毫秒。超过 TTL 的数据会被自动过期删除。合理设置 TTL 可以控制磁盘空间占用,避免历史数据持续累积影响存储成本和查询性能。
TTL 可以在数据库级别设置,也可以在表级别设置。如需了解更详细的功能介绍可查阅:数据保留时间。
时间分区间隔决定数据在磁盘上按多长时间进行目录分组,默认值为 604800000 ms,即 1 周。通常采用默认值即可。
IoTDB 会将元数据和数据划分为 Region,并由 DataNode 管理。数据库级属性中的 MAX_SCHEMA_REGION_GROUP_NUM 和 MAX_DATA_REGION_GROUP_NUM 分别用于表示元数据副本组和数据副本组允许达到的最大数量,一般不需要手动修改。
用于创建数据库。
语法:
CREATE DATABASE (IF NOT EXISTS)? <DATABASE_NAME> (WITH properties)?
说明:
<DATABASE_NAME> 数据库名称,具有以下特性:
"" 括起来。WITH properties 子句可配置如下属性:
| 属性 | 含义 | 默认值 |
|---|---|---|
TTL | 数据自动过期删除,单位 ms,此值需要为正整数 | INF |
TIME_PARTITION_INTERVAL | 数据库的时间分区间隔,单位 ms,此值需要为正整数 | 604800000 |
MAX_SCHEMA_REGION_GROUP_NUM | 数据库自动扩展 SchemaRegionGroup 时允许达到的最大 SchemaRegionGroup 数量,此值需要为正整数,V2.0.11 起支持 | 1 |
MAX_DATA_REGION_GROUP_NUM | 数据库自动扩展 DataRegionGroup 时允许达到的最大 DataRegionGroup 数量,此值需要为正整数,V2.0.11 起支持 | 2 |
注意:
iotdb-common.properties 配置文件中的 schema_region_group_extension_policy 和 data_region_group_extension_policy 参数设置为 CUSTOM 策略时,才支持通过 SQL 在创建或修改数据库时设置或调整 schema/data region group 最大配额,即 maxSchemaRegionGroupNum 和 maxDataRegionGroupNum。示例:
CREATE DATABASE IF NOT EXISTS database1 WITH (TTL=31536000000);
用于指定当前数据库作为表的命名空间。
语法:
USE <DATABASE_NAME>
示例:
USE database1;
返回当前会话所连接的数据库名称,若未执行过 use语句指定数据库,则默认为 null。
语法:
SHOW CURRENT_DATABASE
示例:
USE database1; SHOW CURRENT_DATABASE;
+---------------+ |CurrentDatabase| +---------------+ | database1| +---------------+
用于查看所有数据库和数据库的属性信息。
语法:
SHOW DATABASES (DETAILS)?
语句返回列含义如下:
| 列名 | 含义 |
|---|---|
| Database | 数据库名称。 |
| TTL | 数据保留周期。如果在创建数据库时指定 TTL,则 TTL 默认对该数据库下所有表生效。也可以通过 CREATE TABLE 或 ALTER TABLE 设置或更新表的 TTL。 |
| SchemaReplicationFactor | 元数据副本数,用于确保元数据的高可用性。可以在 iotdb-system.properties 中修改 schema_replication_factor 配置项。 |
| DataReplicationFactor | 数据副本数,用于确保数据的高可用性。可以在 iotdb-system.properties 中修改 data_replication_factor 配置项。 |
| TimePartitionInterval | 时间分区间隔,决定数据在磁盘上按多长时间进行目录分组,通常采用默认值 1 周即可。 |
| SchemaRegionGroupNum | 使用 DETAILS 语句会返回此列,展示数据库当前拥有的元数据副本组数量。 |
| MaxSchemaRegionGroupNum | 使用 DETAILS 语句会返回此列,展示数据库允许拥有的最大元数据副本组数量。 |
| DataRegionGroupNum | 使用 DETAILS 语句会返回此列,展示数据库当前拥有的数据副本组数量。 |
| MaxDataRegionGroupNum | 使用 DETAILS 语句会返回此列,展示数据库允许拥有的最大数据副本组数量。 |
示例:
SHOW DATABASES DETAILS;
+------------------+-------+-----------------------+---------------------+---------------------+--------------------+-----------------------+------------------+---------------------+ | Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|MaxSchemaRegionGroupNum|DataRegionGroupNum|MaxDataRegionGroupNum| +------------------+-------+-----------------------+---------------------+---------------------+--------------------+-----------------------+------------------+---------------------+ | database1| INF| 1| 1| 604800000| 1| 1| 2| 2| |information_schema| INF| null| null| null| null| null| null| null| +------------------+-------+-----------------------+---------------------+---------------------+--------------------+-----------------------+------------------+---------------------+
用于统计数据库的总数。该语法自 V2.0.11 版本起支持。
语法:
COUNT DATABASES
示例:
TimechoDB> COUNT DATABASES +-----+ |count| +-----+ | 2| +-----+
用于修改数据库中的部分属性。
语法:
ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments
说明:
ALTER DATABASE 操作目前仅支持对数据库的 MAX_SCHEMA_REGION_GROUP_NUM、MAX_DATA_REGION_GROUP_NUM 以及 TTL 属性进行修改。示例:
ALTER DATABASE database1 SET PROPERTIES TTL=31536000000; ALTER DATABASE database1 SET PROPERTIES MAX_SCHEMA_REGION_GROUP_NUM=2, MAX_DATA_REGION_GROUP_NUM=4;
用于删除数据库。
语法:
DROP DATABASE (IF EXISTS)? <DATABASE_NAME>
说明:
示例:
DROP DATABASE IF EXISTS database1;