填补市场空白,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++从练气到飞升】05---运算符重载

🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书。 目录 ⛳️推荐 一、运算符重载的引用 二、运算符重载 三、赋值运算符重载 1 .赋值运算符重载格式: 2 .赋值运算符只能重载成…

同源策略

浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作DOM&#xff0c;那么会有⼀套基础的安全策略的制约&#xff0c;我们把这称为 同源策略。它的存在可以保护用户隐私信息&#xff0c;防止身份伪造等(读取Cookie) <i…

【智能算法】飞蛾扑火算法(MFO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2015年&#xff0c;Mirjalili等人受到飞蛾受到火焰吸引行为启发&#xff0c;提出了飞蛾算法(Moth-Flame Optimization&#xff0c;MFO)。 2.算法原理 2.1算法思想 MFO基于自然界中飞蛾寻找光源的…

C++测试代码

C测试代码 目录 基于C实现的AOP功能 基于C实现的AOP功能 #include <iostream> #include <string>struct LogHeader {std::string prefix;std::string aspect; };template <typename T> void before(const std::string& msg, const LogHeader& heade…

Qt读取本地系统时间的几种方式

一&#xff0c;使用Windows API函数GetLocalTime&#xff08;精确到毫秒&#xff09; typedef struct _SYSTEMTIME //SYSTEMTIME结构体定义 {   WORD wYear;//年   WORD wMonth;//月   WORD wDayOfWeek;//星期&#xff0c;0为星期日&#xff0c;1为星期一&#xff0c…

2024年华为OD机试真题-考古学家-Java-OD统一考试(C卷)

题目描述: 有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗? 输入描述: 第一行输入n,n表示石碑碎片的个数。 第二行依次输入石碑碎片上…

PCL ICP配准高阶用法——统计每次迭代的配准误差并可视化

目录 一、概述二、代码实现三、可视化代码四、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 在进行论文写作时,需要做对比实验,来分析改进算法的性能,期间用到了迭代误差分布统计的比较分析,为直…

进一步理解C++里的封装有什么作用

当谈论封装时&#xff0c;我们实际上是在讨论面向对象编程中的一个重要概念&#xff0c;即数据隐藏。封装通过将数据和操作数据的方法捆绑在一起&#xff0c;从而防止外部对象直接访问和修改类的内部数据&#xff0c;以保护数据的完整性和安全性。 用费曼学习法&#xff08;Fe…

leetcode 322.零钱兑换

思路&#xff1a;完全背包。 首先分析问题我们可以知道&#xff0c;这个题的本质就是对于每一个硬币选于不选的问题&#xff0c;也就是所谓的背包问题。而后&#xff0c;这里的每一个硬币都是无限多的&#xff0c;也就是说&#xff0c;这不是01背包或者其他背包问题&#xff0…

Claude 3似乎比GPT-4性能更高,更多的人在尝试使用它

Anthropic 是 OpenAI 的主要竞争对手之一&#xff0c;于 3 月初推出了其最新的大型语言模型 (LLM)&#xff0c;称为 Claude 3。事实证明&#xff0c;Claude 3 的性能优于 OpenAI 的旗舰产品 GPT-4&#xff0c;这让 AI 社区感到惊讶&#xff0c;这标志着 GPT-4 的第一个实例被超…

C++中string容器的元素访问

以string容器为例&#xff0c;容器中元素访问的方式有三种&#xff1a; 1.下标[ ]运算符重载 访问元素 普通对象&#xff1a;char& operator[] (size_t pos) 常对象&#xff1a;const char& operator[] (size_t pos) const string s1("abcdefg"); cout &…

线程的常用方法有哪些?

1、典型回答 线程常用方法有以下这些&#xff1a; start()&#xff1a;启动线程&#xff0c;并调用线程的 run() 方法来执行任务。run()&#xff1a;线程的实际工作方法 (普通方法)&#xff0c;定义线程要执行的任务。sleep(long millis)&#xff1a;暂停当前线程的执行&#…

镜像中更新cuda 配置

1. 进入base 镜像对应的容器&#xff1a; 1.1 docker run -it --gpus all -v /home/huangxiujie:/home/huangxiujie iregistry.baidu-int.com/huangxiujie/tsai_reversing:paddlecloud-v2.3.0-gcc820-cuda11.0_cudnn8-nccl2.12.10 /bin/bash 1.2. docker 挂载本地目录 docker…

Java只有中国人在搞了吗?

还是看你将来想干啥。想干应用架构&#xff0c;与Java狗谈笑风生&#xff0c;沆瀣一气&#xff0c;你就好好写Java&#xff0c;学DDD&#xff0c;看Clean Architecture。你想成为炼丹玄学工程师&#xff0c;年入百万&#xff0c;就选python&#xff0c;专精各种paper。你不在意…

对话李喆:Martech在中国需要转化成以客户需求为驱动的模式

关于SaaS模式在中国的发展&#xff0c;网上出现多种声音。Marteker近期采访了一些行业专家&#xff0c;围绕SaaS模式以及Martech在中国的发展提出独特观点。赛诺贝斯副总裁李喆认为&#xff0c;SaaS可以分为场景化的SaaS、一体化的SaaS和功能化的SaaS&#xff0c;三者都有一定规…

【vue3学习之路(一)】

文章目录 前言一、vue3项目创建1.1环境准备1.1.1 基于 vue-cli 创建&#xff08;脚手架创建&#xff09;1.1.2 基于 vite 创建&#xff08;推荐&#xff09; 二、熟悉流程总结 前言 参考视频&#xff1a;https://www.bilibili.com/video/BV1Za4y1r7KE?p10&spm_id_frompag…

Switch搜不到5g wifi

Switch偶尔可以连上5GHz的SSID&#xff0c;但有时却又搜不到&#xff0c;其实只是频道在作祟。 频道是为了减少干扰 Switch仅有特定频道才能连接 刚刚提到&#xff0c;不论2.4GHz或是5GHz频段都有不同的频道可以选择&#xff0c;即便都是2.4GHz频段选择不同频道才能避免之间的…

代码随想录算法训练营第五十七天|647 回文子串 516.最长回文子序列

647. 回文子串 https://leetcode.com/problems/palindromic-substrings/ 思路&#xff1a; 当我们看到两个下标 i&#xff0c; j 上 s[i] ! s[j], 那么 s[i: j1] 一定不是回文子串。 如果s[i] s[j], 那么我们可以在检查 s[i1: j] 是不是回文串。如果暴力搜索的话是 O(n^3) 的…

【设计模式】单例模式详解

单例模式&#xff1a; 定义&#xff1a;确保一个类在任何情况下都绝对只有一个实例&#xff0c;并提供一个全局访问点。为了防止出现重复的创建。 单例模式是JAVA中最简单的设计模式之一。属于创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个…

辅助功能IOU(交并比)_3.2

实现两个目标框的交并比候选框在多目标跟踪中的表达方式及相应转换方法 IOU(Intersection over Union)&#xff0c;“交并比”&#xff0c;是计算机视觉和图像处理中常用的一个评价指标&#xff0c;尤其在目标检测任务中用来衡量模型预测的目标框与真实目标框的重合程度。 具体…