开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请联系 liuaustin3 ,(共1760人左右 1 + 2 + 3 + 4 +5) 4群(260+),另欢迎 OpenGauss 的技术人员加入。
最近是百业萧条,本地前十的新能源的电池大厂也停工了,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 的开发者倡导者,热衷于通过数据分析、人工智能和机器学习使数据变得美丽。她通过混合研究、探索和工程的方式将收集到的数据转化为具有功能、价值和美感的东西。当她不在屏幕后面时,你可以在户外看到她绘画、伸展、滑板或追逐足球。文章来源:https://www.toymoban.com/news/detail-779442.html
文章来源地址https://www.toymoban.com/news/detail-779442.html
到了这里,关于数据库信息速递: Apache Arrow 如何加速 InfluxDB (翻译)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!