请列举 TDengine 常用的数据类型,并说明在实际场景中应如何为数据列挑选恰当的类型。
考察说明
考查对 TDengine 数据类型体系的理解及表结构设计时的类型选择能力。
回答思路
- 【回答框架 1】TDengine 支持多种数据类型,包括数值型(如 INT、BIGINT、FLOAT、DOUBLE)、字符串型(如 BINARY、NCHAR)、时间戳类型(TIMESTAMP)、布尔型(BOOL),以及 JSON 等扩展类型。其中 BINARY 用于存 ASCII 字符串,NCHAR 用于 Unicode 文本,TIMESTAMP 是时间主键的常用类型。
- 【回答框架 2】选择类型时应遵循最小化存储空间和最大化查询效率的原则:整数类数据用 INT/BIGINT,带小数且精度要求高用 DOUBLE,简单状态标记用 BOOL,定长字符串可用 BINARY,需支持中文等多语言用 NCHAR,时间列优先用 TIMESTAMP 并注意精度(毫秒/微秒)与业务匹配。
- 【回答框架 3】在 TDengine 表设计中,第一列必须为 TIMESTAMP 主键,用于时间窗口聚合和降采样;标签(TAG)列建议用窄且重复度高的类型(如 INT、BINARY),子表数量大时更需控制标签数量和类型。
- 【回答框架 4】合理选择数据类型能减少存储占用、提升压缩率和查询性能;错误选择如将数值存为字符串,会导致空间膨胀且无法高效运算,需在建模阶段结合数据特征和查询模式规划。
- 【关键点 1】TDengine 支持数值、字符串、时间戳、布尔和 JSON 等类型,其中 TIMESTAMP 是必需的时间主键。
- 【关键点 2】数值数据按范围选 INT/BIGINT,浮点按精度选 DOUBLE,状态用 BOOL。
- 【关键点 3】字符串按内容选 BINARY(ASCII)或 NCHAR(Unicode),时间列用 TIMESTAMP 且对精度。
- 【关键点 4】标签列选择窄类型可提升多表聚合性能,减少元数据开销。
- 【关键点 5】类型选择需兼顾存储、查询与压缩,避免用字符串存数值。
- 【易错点 1】不能将时间字段设为非 TIMESTAMP 类型,否则无法利用 TDengine 的时间窗口优化。
- 【易错点 2】为所有字符串列一律使用 NCHAR,会显著增加存储和开销,应优先 BINARY。
- 【易错点 3】标签类型过度使用高精度或大宽度(如 DOUBLE 代替 INT),会放大元数据开销。