当前位置: 首页 > news >正文

填补市场空白,Apache TsFile 如何重新定义时序数据管理

eadf67bf6d66c69ec9215a426a9632c6.png

欢迎全球开发者参与到 Apache TsFile 项目中。

刚刚过去的 2023 年,国产开源技术再次获得国际认可。

2023 年 11 月 15 日,经全球最大的开源软件基金会 ASF 董事会投票决议,时序数据文件格式 TsFile 正式通过,直接晋升为 Apache Top-Level 项目(TLP),成为继时序数据库 Apache IoTDB 之后,Apache 时序数据领域第二个 Top-Level 项目。

TsFile 由时序数据库 Apache IoTDB 项目团队开发,是一种专门用于时序数据管理的文件格式,同时也是 IoTDB 的底层存储格式。

自项目成立以来,TsFile 社区发展迅速,在来自天谋科技、清华大学、华为、eBay、东方国信、用友等企业贡献者的共同努力下,于今年 2 月 20 日正式发布了 1.0.0 版本。据悉,Apache TsFile 1.0.0 版本支持多种数据类型、编码算法、压缩算法以及多种写入、查询模式。

7ed862680466ed6fe649302af9ec9c29.png

(TsFile 1.0.0 版本内容,原文链接:https://github.com/apache/tsfile/releases/tag/v1.0.0)

事实上,TsFile 的意义,不仅仅在于其晋升为 Apache TLP 证明着国内开源项目的实力,更重要的是,TsFile 填补了时序数据领域的一项市场空白

01

TsFile:为时序数据管理提供统一格式

时序数据即时间序列数据,是指带时间标签(按照时间的顺序变化,即时间序列化)的数据,其来源多元、数据量庞大,可广泛应用于物联网、智能制造、金融分析等领域。在数据驱动的当下,时序数据的重要性不言而喻。

尽管时序数据如此普遍且重要,但长期以来,时序数据的管理都缺乏标准化的文件格式

当前企业会面临着多种时序数据的存储格式,如自定义格式的 CSV、自定义的二进制格式,或者使用 Parquet、ORC 等通用文件格式,这导致时序数据源的统一管理和汇聚十分复杂。

同时,通用文件格式没有针对时间、设备、测点等时序数据特有的数据概念,可能导致主键信息存储冗余,并缺乏时序数据场景常用索引,使得快速定位与查询数据性能受限。

这便是 TsFile 针对这一市场空白,希望实现的价值:为时序数据提供统一和标准化的格式。IoTDB 团队在构思 TsFile 结构时,便考虑了几个关键因素: 

•    时序模型:专门为物联网设计的数据模型,每个时间序列与特定设备相关联,所有设备通过分层结构相互连接;

•    高压缩比:为时间序列量身定制的列式存储格式,将数据按设备进行组织,并保证每个序列的数据连续存储,最小化存储空间;

•    高效写入:数据可以按块写入,能够达到最大吞吐;

•    高效访问:为时间、设备、物理量构建了相关索引结构,实现快速数据检索。

02

TsFile 的几大特性

下面具体了解一下 TsFile 的性能亮点。

相比其他文件格式,TsFile 通过自研实现了时序数据高效率管理、高灵活传输,并支持多类软件深度集成。其特性包括: 

•    可独立使用:可以使用 SDK 直接读写 TsFile,使得一些轻量级的数据读写场景成为可能。

•    高效存储和压缩:TsFile 采用先进的压缩技术,可最大限度地减少存储需求磁盘空间消耗并提高系统效率,从而减少磁盘空间消耗和优化数据管理。相比通用文件格式,压缩比可提升 20% 以上

•    灵活的元数据管理架构:与传统写入方式不同,TsFile 支持灵活的元数据管理,无需预定义元数据即可实现数据写入。这种适应性结合时序数据的动态特性,简化了数据写入和管理过程。结合列式数据写入模式,相比通用文件格式,写入吞吐可提升 2-3 倍

•    高查询性能:通过设备、传感器和时间维度索引,TsFile 实现了基于特定时间范围的时序数据快速过滤和查询。相比通用文件格式,查询吞吐可提升 2-10 倍

•    协同同步:TsFile 是时序数据库 IoTDB 的底层存储文件格式,可与 IoTDB 形成可插拔的存算分离架构。通过 TsFile,用户可对 IoTDB 中的数据进行便捷的加载与导出。同一个 TsFile 可以在嵌入式设备、边缘服务器和云节点中灵活部署和同步。

•    开放集成:TsFile 支持与 Spark、Flink 等大数据软件建立无缝生态集成,从而确保跨不同数据处理环境的兼容性和互操作性,实现时序数据跨生态深度分析。

93ec4b414128266645be09670512686f.png

TsFile 文件格式示意

03

基于时序数据特性的内核创新

在时序数据管理上,TsFile 之所以能实现上述这些功能,主要源于其在结构层面的多项创新。在此重点介绍 TsFile 采用的列式存储文件结构、编码和压缩技术。 

1. 列式存储文件结构

下图为 Apache TsFile 的文件结构。

•    Page:一段连续的时序数据,存储的基本单元,按时间升序排序,时间戳和值各有单独的列进行存储。

•    Chunk:由同一序列的多个连续的 Page 组成,一个文件同一个序列可以存储多个 Chunk。

•    ChunkGroup:由一个设备的一至多个 Chunk 组成,多个 Chunk 可共享一列时间存储(多值模型)。

•    Index:TsFile 末尾的元数据文件包含序列内部时间维度的索引和序列间的索引信息。

1631f51eabad4c5cd2bf410c05b02762.png

TsFile 文件结构

由于每列数据的同质性,TsFile 可实现更好的压缩比;通过仅将必要的数据列加载到内存中,TsFile 可加快查询速度;通过将数据组织成可管理的单元进行处理和检索,TsFile 可提高可扩展性

2. 编码和压缩技术

TsFile 通过采用二阶差分编码、游程编码(RLE)、位压缩和 Snappy 等先进的编码和压缩技术,优化时序数据的存储和访问,并支持对时间戳列和数据值列进行单独编码,以实现更好的数据处理效能。

其独特之处在于编码算法专为时序数据特性设计,聚焦在时间属性和数据之间的相关性。此外,TsFile 结合了频域编码,利用量化和位宽缩减来高效存储频域数据,在不会影响数据准确性的情况下节省空间占用。

567b54cbebf05c2c40c6fdac76712d7b.png

TsFile、Parquet 和 ORC 三种文件格式的比较

基于对时序数据应用需求的深刻理解,TsFile 有助于实现时序数据高压缩比和实时访问速度,并为企业进一步构建高效、可扩展、灵活的数据分析平台提供底层文件技术支撑。

04

共创 Apache TsFile,共赢数据时代

通过上述介绍不难看出,基于时序数据特性,为时序数据管理量身定制的 TsFile 不仅在存储方面具有优势,也可提升时序数据的写入、查询、分析等多个核心环节的性能表现。这不仅可以帮助企业更好地控制部署成本,同时可以保障时序数据管理的灵活性与易用性。

从 IoTDB 的基础组件到独立项目的发展历程,也从侧面证明着 TsFile 的国产技术研发成果,正在国际上对时序数据管理产生着重要影响力。此前,国际软件领域媒体平台 The New Stack 专门采访介绍了 TsFile 项目。(采访直达:https://thenewstack.io/tsfile-a-standard-format-for-iot-time-series-data/)

数据时代,时序数据作为千行百业数字化转型的核心要素,优化其管理方式势在必行。

未来,围绕时序数据管理,TsFile 将进一步优化性能和多语言支持,集成更多的编码和压缩方法,并开发更多基于 TsFile 的时序数据可视化、解析和分析工具。

同时,随着晋升为 Apache TLP 项目,TsFile 希望与全球更多开发者合作,从底层文件技术角度,重新定义可靠、高效的时序数据管理方案,推动更多企业以时序数据价值为驱动,实现产能飞跃与业务创新。

29f6785fec56d02e686e6f9455f31bcf.gif

d90ecaedbea77a1e3d7cc8d2a64fd4ea.png

547d041d217b7f99ba67453d45965824.png

ed08fd495963f42f6e7b53d6f38a124b.png

4b2448aa70d1dd3f46460d4c1fde130e.gif

相关文章:

填补市场空白,Apache TsFile 如何重新定义时序数据管理

欢迎全球开发者参与到 Apache TsFile 项目中。 刚刚过去的 2023 年,国产开源技术再次获得国际认可。 2023 年 11 月 15 日,经全球最大的开源软件基金会 ASF 董事会投票决议,时序数据文件格式 TsFile 正式通过,直接晋升为 Apache T…...

Docker 笔记(七)--打包软件生成镜像

目录 1. 背景2. 参考3. 文档3.1 使用docker container commit命令构建镜像3.1.1 [Docker官方文档-docker container commit](https://docs.docker.com/reference/cli/docker/container/commit/)Description(概述)Options(选项)Exa…...

图论06-飞地的数量(Java)

6.飞地的数量 题目描述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法…...

Java设计模式之单例设计模式

单例设计模式就是保证整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得该对象的方法。 单例设计模式包括两种:饿汉式和懒汉式。 饿汉式: 含义: 在类加载时就创建并初始化单例对象。这种方式确保了…...

多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测

多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测 目录 多维时序 | MATLAB实现BiTCN-selfAttention自注意力机制结合双向时间卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.M…...

深入了解Android垃圾回收机制

文章目录 一、内存分配二、垃圾回收触发条件三、GC算法3.1 Dalvik虚拟机的GC算法3.2 ART的GC算法 四、优化GC性能五、监控GC耗时情况六、总结 在Android应用开发中,内存管理和垃圾回收(GC)对于应用性能和稳定性至关重要。理解GC机制有助于我们…...

如何学好Python语言

学习Python:一场充满探索与实践的编程之旅 Python,作为一种解释型、交互式和面向对象的编程语言,近年来在数据科学、人工智能、Web开发等多个领域得到了广泛的应用。掌握Python,不仅可以提升个人的编程技能,还能够为未…...

计算机408网课评测+资料分享

408当然有比较好的网课推荐,比如王道的视频课 现在大部分人备战408基本都用王道的讲义,然后再搭配王道408的课程来听,可以学的很好。 其中408视频课中,我认为讲的比较好的是数据结构,和操作系统,计算机组…...

使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,Z…...

JavaScript对象修饰教程

在JavaScript中,对象修饰是一种常见的编程模式,用于动态地向对象添加新的功能或修改现有功能,同时保持对象的原始结构不变。对象修饰可以帮助我们实现代码的复用、扩展和维护,让代码更加灵活和可扩展。本文将深入探讨JavaScript对…...

转置卷积(transposed-conv)

一、什么是转置卷积 1、转置卷积的背景 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作&#xff0c…...

P1481 魔族密码

P1481 魔族密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 字典树 在插入字符串 s s s时&#xff0c;不断记录 s 0... k s_{0...k} s0...k​的个数取最大即可。 #include <bits/stdc.h> using namespace std; const int N 1e5 21; int cnt[N], tr[N][30], idx,…...

无人机/飞控--ArduPilot、PX4学习记录(2)

这是一篇碎碎念&#xff0c;零零碎碎的记录了环境配置过程&#xff0c;仅供本人记录学习历程和参考。(记录的挺乱的&#xff0c;但是文章链接里的博客写的是真好) 本章主要完成的目标&#xff1a; 安装PX4 并 成功运行出3D无人机界面。 参考文章&#xff1a; 搭建PX4环境&…...

【Arxml专题】-29-使用Cantools将CAN Matrix Arxml自动生成C语言代码

目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 CAN Matrix Arxml自动生成C语言代码 2.1 批处理文件CAN_Matrix_Arxml_To_C.bat内容说明 2.2 CAN Matrix Arxml文件要求 2.3 如何…...

【id:21】【20分】E. 抄袭查找(结构体+指针+函数)

题目描述 已知一群学生的考试试卷&#xff0c;要求对试卷内容进行对比&#xff0c;查找是否有抄袭。 每张试卷包含&#xff1a;学号&#xff08;整数类型&#xff09;、题目1答案&#xff08;字符串类型&#xff09;、题目2答案&#xff08;字符串类型&#xff09;、题目3答案…...

ASP.NET-常用控件总结

一、ASP.NET基础控件 1、asp:TextBox (输入框) ASP.NET TextBox 控件用于接收用户输入。 <asp:TextBox ID"txtInput" runat"server"></asp:TextBox>2、asp:DropDownList (下拉框) ASP.NET DropDownList 控件用于提供一个下拉列表供用户选择…...

SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决 ⏱️ 创作时间&a…...

MQTT Keep Alive机制

MQTT 协议是承载于 TCP 协议之上的&#xff0c; 而 TCP 协议以连接为导向&#xff0c; 在连接双方之间&#xff0c; 提供稳定、 有序的字节流功能。 但是&#xff0c; 在部分情况下&#xff0c; TCP 可能出现半连接问题。 所谓半连接&#xff0c; 是指某一方的连接已经断开或者…...

基于springboot+vue的游戏交易系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

高职(大专)结构化面试之答题思路

目录 一、岗位认知 二、职教热点 三、教育教学 四、人际关系 五、组织管理 六、应急应变 七、时政与教育 八、专业知识 一、岗位认知 考试方向&#xff1a;主要考察对岗位的全面认识、职业目标、职业规划、职业理想。 必背题目&#xff1a; 1.“你为什么要报考我们学校的教师岗…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...