Apache Arrow
Apache Arrow 是一种与语言无关的软件框架,用于开发处理栏式数据库的数据分析应用程序。始发于2016年10月,其包含一个标准化的物件栏内存格式,且能够表示平面及层级化数据,以便在现代CPU和GPU硬件上进行高效率的分析操作。这种功能反而会减少或则消除限制使用大型数据集的可行性因素,比如动态随机存取存储器的成本、易变性或则物理性的约束。主要采用C++编写开发并在ApacheV2.0协议下授权使用。

Apache Arrow is a universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics. It contains a set of technologies that enable data systems to efficiently store, process, and move data.
对C, C++, C#, Go, Java, JavaScript, MATLAB, Python, R语言, Ruby, Rust提供了绑定。
它做为一种开放的、独立于语言的列式内存数据格式,用于平面和分层数据并组织用于高效的数据分析操作;arrow被广泛应用于数据湖、数据仓库产品中,例如DuckDB。
特点:
顺序扫描访问的数据邻接性,所以对某列进行大范围扫描时吞吐特别高。
O(1)(恒定时间)随机访问,任意行随机访问效率一样。
SIMD和向量化友好,充分利用CPU的批量计算,提升大量数据的计算性能。
可重定位,无需“指针混淆”,允许在共享内存中实现真正的零拷贝访问。
可在PostgreSQL数据库中通过table access method可以整合一众存储引擎,例如duckdb;现在github上开源了一个pg_arrow模块可在PG里创建arrow纯内存表了。
最新版本:18.1.0
于2024年11月24日发布的稳定版本。
官方主页:
https://arrow.apache.org/
https://github.com/apache/arrow

Apache Arrow is a universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics. It contains a set of technologies that enable data systems to efficiently store, process, and move data.
对C, C++, C#, Go, Java, JavaScript, MATLAB, Python, R语言, Ruby, Rust提供了绑定。
它做为一种开放的、独立于语言的列式内存数据格式,用于平面和分层数据并组织用于高效的数据分析操作;arrow被广泛应用于数据湖、数据仓库产品中,例如DuckDB。
特点:
顺序扫描访问的数据邻接性,所以对某列进行大范围扫描时吞吐特别高。
O(1)(恒定时间)随机访问,任意行随机访问效率一样。
SIMD和向量化友好,充分利用CPU的批量计算,提升大量数据的计算性能。
可重定位,无需“指针混淆”,允许在共享内存中实现真正的零拷贝访问。
可在PostgreSQL数据库中通过table access method可以整合一众存储引擎,例如duckdb;现在github上开源了一个pg_arrow模块可在PG里创建arrow纯内存表了。
最新版本:18.1.0
于2024年11月24日发布的稳定版本。
官方主页:
https://arrow.apache.org/
https://github.com/apache/arrow