TDengine是否支持存储BLOB类型数据?
TDengine存储BLOB类型数据的实现方案
首先明确:TDengine完全支持携带二进制数据的时序数据存储,可根据二进制数据体积选择对应的存储方案。
基础操作(单条二进制数据≤1MB)
TDengine 3.0及以上版本原生支持BLOB数据类型,单字段最大存储容量为1MB,满足绝大多数中小体积二进制时序数据的存储需求:
- 建表时直接指定字段类型为
BLOB即可,示例建超级表语句:
CREATE STABLE dev_binary_data ( ts TIMESTAMP, raw_bin BLOB, collect_flag INT ) TAGS ( dev_id BINARY(32), group_id INT );
- 数据写入不需要额外转码,各语言官方连接器均支持直接传入二进制字节流绑定对应字段,无需做base64等编码转换,无额外性能开销。
- 如果二进制数据长度≤16374字节,也可选择
BINARY(n)类型存储,查询性能略优于BLOB类型,需要提前指定足够的字段长度n。
大体积二进制数据适配(单条二进制>1MB)
如果你的二进制数据单条体积超过1MB,可根据实际场景选择两种适配方案:
- 分片存储:将单条大二进制数据按固定大小拆分为多个分片,每个分片新增分片序号、数据唯一ID两个关联字段,写入TDengine;查询时按唯一ID过滤、按分片序号排序后拼接即可还原完整数据,该方案所有数据都存在TDengine中,不需要对接额外存储组件。
- 元数据关联存储:将大体积二进制文件存储到本地磁盘或对象存储中,TDengine中仅存储该文件的访问路径、文件哈希值、大小等元数据,关联对应的时间戳和设备标签,适合单条二进制超过10MB的场景,可大幅降低时序库的存储压力和查询开销。
注意:不建议在TDengine中存储单条超过10MB的二进制数据,会显著影响写入和查询性能
内容的提问来源于stack exchange,提问作者lsm
相关产品推荐
相关产品推荐

