前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库信息速递: Apache Arrow 如何加速 InfluxDB (翻译)

数据库信息速递: Apache Arrow 如何加速 InfluxDB (翻译)

作者头像
AustinDatabases
发布2023-12-11 16:08:17
3870
发布2023-12-11 16:08:17
举报
文章被收录于专栏:AustinDatabases

最近是百业萧条,本地前十的新能源的电池大厂也停工了,2023年还有一个月结束,真是令人记忆深刻。

——————————————————————————————

在翻译前,我们先把基础知识建立以下,apache arrow 是一个跨语言的内存交换格式,通过内存中的列式内存和零拷贝技术,提供了高速数据访问和互操作的能力,基于这个技术,对于时序数据库influxDB有什么帮助?

在历史上,处理大数据是一个巨大的挑战,那些要利用大数据集的公司面临与数据处理相关的重大性能开销,具体而言,在不同的工具和系统之间移动数据需要使用不同的程序语言,网络协议,和文件格式,在数据处理流水线上,这样的情况下,数据的转换是非常昂贵和低效的。

于是apache arrow 应运而生 ,apache arrow 是一个开源的框架定义了一种内存中列式数据的格式,每个分析处理引擎都可以使用, apache arrow 由impala ,spark, calcite 等,和其他的开源领导者共同开发,成为无关语言的标准,用于高效的列式内存表示,,Arrow 提供了零拷贝读取,减少了内存需求和CPU周期,由于Arrow 是针对现代CPU 和 GPU 设计的,可以并行处理数据,并利用单指令/多数据SIMD, 和矢量化处理和查询。

历史上,处理大数据是一个大的挑战,要利用大数据数据集的公司面临着与数据处理的开销,在不同的工具和系统之间移动数据需要使用不同的编程语言、网络协议和文件格式。在数据流水线的每个步骤中进行数据转换都是昂贵且低效的。

于是,Apache Arrow 应运而生了。Apache Arrow 是一个开源框架,定义了一种内存中的列式数据格式,每个分析处理引擎都可以使用。

Apache Arrow 由 Impala、Spark、Calcite 和其他开源领导者共同开发,旨在成为无关语言的标准,用于高效的列式内存表示,以促进互操作性。Arrow 提供了零拷贝读取,减少了内存需求和 CPU 周期。由于 Arrow 是针对现代 CPU 和 GPU 设计的,它可以并行处理数据,并利用单指令/多数据(SIMD)和矢量化处理和查询。

Apache Arrow 在许多数据分析和存储解决方案的项目中发挥着作用,包括:

Apache Spark是一个大规模并行处理数据引擎,使用 Arrow 将 Pandas DataFrames 转换为 Spark DataFrames。这使得数据科学工作者可以将小数据集上开发的 POC 模型迁移到大数据集上。Apache Parquet是一个极其高效的列式存储格式,在Parquet 使用 Arrow 进行矢量化读取,通过将多行批处理为列式格式,使得列式存储更加高效。InfluxDB是一个时间序列数据平台,使用 Arrow 支持接近无限的基数用例,支持多种查询语言(包括 Flux、InfluxQL、SQL 等),并可以与 BI 和数据分析工具具备互操作性。Pandas是一个构建在 Python 之上的数据分析工具包。Pandas 使用 Arrow 提供对 Parquet 的读写支持。

今年早些时候,InfluxData 推出了一个基于 Apache 生态系统构建的新数据库引擎。开发人员使用 Rust 在 Apache Arrow、Apache DataFusion 和 Apache Parquet 之上构建了这个新引擎。借助 Apache Arrow,InfluxDB 可以通过提供高效的列式数据交换来支持接近无限的基数或维度用例。举个例子,想象一下我们将以下数据写入 InfluxDB:

通过以列式格式存储数据,数据库可以将相似的数据组合在一起以实现廉价压缩。具体而言,Apache Arrow 定义了一种进程间通信机制,用于传输一组 Arrow 列式数组(称为“记录批次”)这可以通过进程间同步或将数据持久化到存储中来异步完成。

此外,时间序列数据是独特的,因为它通常具有两个相关变量。时间序列的值取决于时间,并且值与之前的值有一定的相关性。时间序列的这个属性意味着 InfluxDB 可以通过词典编码更充分地利用记录批次的压缩。词典编码允许 InfluxDB 消除重复值的存储,而时间序列数据中经常存在重复值。InfluxDB 还通过使用 SIMD 指令实现了矢量化查询指令。

除了提供免费的 InfluxDB Cloud 版本外,InfluxData 还在宽松的 MIT 许可下提供了 InfluxDB 的开源版本。开源软件提供了社区构建自己解决方案的自由,以及演进代码的能力,从而创造了实际影响的机会。

开源的真正力量在于开发人员不仅提供开源代码,而且还为流行项目做出贡献。跨组织的协作产生了一些最受欢迎的开源项目,如 TensorFlow、Kubernetes、Ansible 和 Flutter。InfluxDB 的数据库工程师对 Apache Arrow 做出了重大贡献,包括每周发布的 https://crates.io/crates/arrow 和 https://crates.io/crates/parquet 版本。他们还帮助撰写 DataFusion 的博客文章。InfluxData 对 Arrow 的其他贡献还包括:快速、内存高效的排序算法。在各个层面上提升性能(apache/arrow-rs#1248 和 apache/arrow-rs#2646)。通过默认安全和额外的错误检查使 Arrow crate 更加安全(apache/arrow-rs#817)。Apache Arrow 正在成为许多公司架构中的关键组件。它的内存列式格式支持分析数据库系统、数据框架库等的需求。通过充分利用 Apache Arrow,开发人员将节省时间,同时也获得支持 Arrow 的新工具。

主要的开发人员,Anais Dotis-Georgiou 是 InfluxData 的开发者倡导者,热衷于通过数据分析、人工智能和机器学习使数据变得美丽。她通过混合研究、探索和工程的方式将收集到的数据转化为具有功能、价值和美感的东西。当她不在屏幕后面时,你可以在户外看到她绘画、伸展、滑板或追逐足球。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档