Apache TsFile 2.5.0 介绍与选型指南

本文介绍物联网时序文件格式 Apache TsFile 2.5.0:设备-测点-时间模型、Page/Chunk/ChunkGroup/Index 结构、编码压缩表、tsfile-cli 示例,并与 Parquet、IoTDB 做许可、stars、发版节奏与兼容矩阵选型对比。

Apache TsFileApache TsFile2026/10/18

Apache TsFile 2.5.0 介绍与选型指南

一、信息基准

本次溯源的查询日期为 2026-10-18,信息全部取自 Apache TsFile 官方站点、官方 GitHub 仓库 README、官方发行目录与 Maven Central 元数据,未做本地安装或运行验证。

版本基准:Apache TsFile 2.5.0(GitHub Releases 于 2026-10-14 更新,Maven Central 元数据 lastUpdated 2026-10-14,官方发行目录含 2.5.0 目录)。

项目内容
软件名称Apache TsFile
当前版本2.5.0(另有 1.1.4 维护线,GitHub Releases 2026-09-16 更新)
项目定位面向物联网(IoT)时序数据的列式存储文件格式(官方站点描述:"File Format for Internet of Things")
项目状态ASF 顶级项目(TLP):官方发行目录位于 downloads.apache.org/tsfile/,版本号不带 -incubating 后缀
发行物Java SDK(Maven Central org.apache.tsfile)、C++ 模块、Python SDK(PyPI tsfile)、tsfile-cli 命令行工具
开源许可Apache License 2.0

官方来源清单:

来源用途地址
Apache TsFile 官网项目定位与文档入口https://tsfile.apache.org/
官方 GitHub 仓库 README特性、文件结构、编码压缩与官方对比表https://github.com/apache/tsfile
ASF 发行目录官方源码/二进制发行物核验https://downloads.apache.org/tsfile/
Maven Central 元数据版本序列与最新版核验https://repo1.maven.org/maven2/org/apache/tsfile/tsfile/maven-metadata.xml
GitHub Releases双维护线发版时间核验https://github.com/apache/tsfile/releases
PyPIPython SDK 发行核验https://pypi.org/project/tsfile

版本轨迹(Maven Central org.apache.tsfile:tsfile 元数据):1.0.0 → 1.1.0/1.1.1/1.1.2/1.1.3/1.1.4 → 2.0.0/2.0.1/2.0.2/2.0.3 → 2.1.0/2.1.1 → 2.2.0/2.2.1 → 2.3.0/2.3.1 → 2.4.0 → 2.5.0(lastUpdated 2026-10-14)。1.x 与 2.x 两条线均有近期发版记录(GitHub Releases:1.1.4 于 2026-09-16、2.4.0 于 2026-07-23)。

二、软件概述

本次介绍的是 Apache TsFile 2.5.0。官方 README 对 TsFile 的定义是:"TsFile is a columnar storage file format designed for time series data, which supports efficient compression, high throughput of read and write, and compatibility with various frameworks, such as Spark and Flink"(TsFile 是为时序数据设计的列式存储文件格式,支持高效压缩、高吞吐读写,并与 Spark、Flink 等多种框架兼容)。

在时序数据被广泛产生的物联网、智能控制、金融、日志分析与监控等场景中,长期以来缺少统一的标准文件格式;官方将 TsFile 定位为"时序数据的第一个既有标准文件格式",为时间维数据的统一管理提供文件层标准。TsFile 同时是时序数据库 Apache IoTDB 的底层存储文件格式,可以与 IoTDB 组成可插拔的存算分离架构。

TsFile 曾孵化于 ASF,现已毕业为顶级项目:官方发行目录直接位于 downloads.apache.org/tsfile/,发行版本号不再携带 -incubating 后缀。当前 2.5.0 于 2026-10-14 同步更新至 GitHub Releases 与 Maven Central,项目处于高频发版状态。

三、核心架构

3.1 设备—测点—时间三维数据模型

官方 README 的 Basic Concepts 章节给出了 TsFile 的数据组织方式:一个 TsFile 可管理多台设备(device)的数据,每台设备可拥有不同测点(measurement),设备的每个测点对应一条时间序列;Time 与 deviceId 为内建字段,无需定义即可直接写入。

3.2 文件物理结构

TsFile 采用列式存储设计,物理结构由四个层次组成(官方 README 的 Design 章节):

结构官方定义
Page存储时序数据的基本单元,按时间升序组织,时间戳与值分列存放
Chunk由元数据头与若干 Page 组成,每个 Chunk 属于一条时间序列,尺寸可变,允许不同的压缩与编码方式
Chunk Group同一写入周期内、属于一台设备的一条或多条序列的多个 Chunk 的集合,便于高效查询处理
Index文件尾部的文件级元数据,包含 Chunk 级索引与文件级统计信息,用于高效数据访问

3.3 编码与压缩

官方 README 专门设计了面向时序特征的编码算法,注重时间属性与数据的关联性;时间戳列与值列可分别编码。官方推荐组合如下:

数据类型推荐编码推荐压缩
INT32 / INT64TS_2DIFFLZ4
FLOAT / DOUBLEGORILLALZ4
BOOLEANRLELZ4
TEXTDICTIONARYLZ4

压缩同时支持游程编码(RLE)、位压缩(bit-packing)与 Snappy 等手段。

3.4 多语言 SDK 与命令行工具

官方仓库提供 Java、C++、Python 三种语言 SDK 的独立模块文档;并随版本发行 tsfile-cli 命令行工具,支持 ls、meta、schema、stats、count、head、cat、sample、write 等子命令,其中元数据类命令无需解码数据页即可应答。

四、功能特性

基于官方 README,TsFile 2.x 的核心特性如下:

特性官方描述
多语言独立使用Java/C++/Python SDK 可直接读写 TsFile,覆盖轻量读写场景
高效写入与压缩按设备组织、序列连续存储的时序定制列存;官方数据称相比 CSV 压缩比可提升 90% 以上
高查询性能按设备、测点、时间三个维度建立索引,支持按时区间的快速过滤查询;官方数据称查询吞吐可比一般文件格式提升 2—10 倍
开放集成作为 IoTDB 底层存储格式,可与 IoTDB 构成可插拔存算分离架构;与 Spark、Flink 等大数据软件生态兼容
统一格式标准官方定位为时序数据的第一个标准文件格式,解决时序数据管理的格式碎片化问题
命令行检视与导入tsfile-cli 提供检视(ls/meta/schema/stats/count/head/cat/sample)与 CSV 导入(write)能力,输出支持 csv、tsv、json(NDJSON)、table

官方格式对比表(TsFile、CSV、Parquet,引自官方 README):

维度TsFileCSVParquet
数据模型IoTPlainNested
写入模式Tablet, LineLineLine
压缩支持不支持支持
读取模式Query, ScanScanQuery
序列索引有无无
时间索引有无无

五、快速上手

以下取自官方仓库 README(https://github.com/apache/tsfile)与官方构建文档,本文不做本地实测:

  1. Java SDK:在 Maven 工程中引入 org.apache.tsfile 构件(当前 2.5.0,见 Maven Central 元数据 org.apache.tsfile:tsfile),构建与使用细节见官方 java/tsfile 模块 README(https://github.com/apache/tsfile/tree/master/java/tsfile)。
  2. Python SDK:通过 PyPI 安装 tsfile 包(https://pypi.org/project/tsfile)。
  3. tsfile-cli 命令行检视与导入(引自官方 README 示例):
tsfile-cli ls data.tsfile                            # 列出表/设备
tsfile-cli meta data.tsfile                          # 文件概览(模型、数量、时间范围、大小)
tsfile-cli head -n 20 data.tsfile                    # 前 20 行
tsfile-cli cat -m temp -m humidity -f csv data.tsfile  # 按列流式输出 CSV

# 将 CSV 导入为新的表模型 .tsfile
printf 'time,id1,s1\n0,dev,0\n1,dev,10\n' \
  | tsfile-cli write --table t1 --tag id1 STRING --field s1 INT64 \
      --stdin -o out.tsfile

官方说明:构建 tsfile-cli 需与 C++ 模块一起以 ./mvnw clean package -P with-cpp 构建,当前支持 Linux 与 macOS 平台。

六、适用场景与限制

6.1 适用场景

  • 物联网数据落地与交换:传感器/设备数据的本地持久化与跨系统文件级交换,统一格式减少定制解析成本。
  • 时序数据的低成本归档:按设备与序列组织的列存加压缩,适合大规模历史时序数据的留存。
  • 与大数据生态协同:Spark、Flink 等框架读取 TsFile 做批量/流式分析。
  • 时序数据库配套:作为 IoTDB 的底层文件格式,参与存算分离部署与数据文件下沉。
  • 轻量侧读写:无数据库部署的采集端、边缘端以 SDK 直接读写时序文件。

6.2 限制

  • 格式专精时序:数据模型以设备—测点—时间为中心,通用 OLAP 嵌套结构(如 Parquet 的 Nested 模型)并非其设计目标。
  • 官方性能数字为官方口径:压缩比与吞吐提升数据来自官方 README,实际收益取决于数据形态,选型时应以自有数据验证。
  • 生态规模相对较小:相比 Parquet 等通用格式,第三方工具链(BI、查询引擎)对 TsFile 的原生支持以 IoTDB 系生态为主。
  • 1.x 与 2.x 双线并行:新旧版本线共存,升级时需关注版本间文件与 API 兼容性说明。

七、同类选型对比

对比对象选取通用列式格式 Apache Parquet 与其上层时序数据库 Apache IoTDB(TsFile 的主要使用方,作为同类时序方案参照)。数据联网实查,查询日期 2026-10-18;stars 采集自 GitHub 仓库页面,发版信息来自 GitHub Releases 与 Maven Central。

维度Apache TsFile 2.5.0Apache Parquet 1.18.1Apache IoTDB 2.0.11
开源许可Apache-2.0(ASF)Apache-2.0(ASF)Apache-2.0(ASF)
GitHub stars(2026-10-18)209(apache/tsfile)3087(apache/parquet-java)6420(apache/iotdb)
最近发版2.5.0(GitHub Releases/Maven Central,2026-10-14);1.1.4 维护线同步更新(2026-09-16)稳定版 1.18.1(Maven Central);1.19.0 处于 RC 阶段(GitHub Releases 2026-09-16 RC9)2.0.11(GitHub Releases,2026-09-13)
版本节奏高频发版,1.x/2.x 双线并行稳定线节奏稳健,新版本走 RC 流程2.0.x 补丁线高频维护
形态与兼容矩阵列式文件格式 + 多语言 SDK + CLI;面向 IoT 时序模型通用列式文件格式;Hadoop/Spark 等大数据生态广泛内建支持时序数据库;SQL 引擎 + TsFile 存储引擎

数据来源:GitHub 仓库页面与 releases.atom、Maven Central 元数据(org.apache.tsfile:tsfile、org.apache.parquet:parquet-column)、downloads.apache.org/tsfile/ 官方发行目录(2026-10-18 查询)。

选型建议:时序数据占比高、需要文件级标准格式并与 IoTDB/Spark/Flink 生态协同时选 Apache TsFile;追求通用列存与最广泛引擎兼容选 Parquet;需要完整时序数据库能力(查询引擎、索引、集群)则直接采用其上层方案 IoTDB。

八、参考链接

  1. Apache TsFile 官网:https://tsfile.apache.org/
  2. 官方 GitHub 仓库与 README:https://github.com/apache/tsfile
  3. ASF 官方发行目录:https://downloads.apache.org/tsfile/
  4. Maven Central 元数据:https://repo1.maven.org/maven2/org/apache/tsfile/tsfile/maven-metadata.xml
  5. GitHub Releases:https://github.com/apache/tsfile/releases
  6. Python SDK(PyPI):https://pypi.org/project/tsfile
  7. Apache IoTDB 官网:https://iotdb.apache.org/
  8. Apache Parquet:https://parquet.apache.org/