1 of 15

Apache Arrow ekosystém

jOpenSpace 2026

Tomáš Karela Procházka

2 of 15

Data a SQL

• jistota IT světa: SQL

• ODBC (1992), JDBC (1997), Python DB-API (1999), JavaScript: ¯\_(ツ)_/¯

Connection c = DriverManager.getConnection("jdbc:...");

ResultSet rs = c.createStatement().executeQuery("SELECT ...");

3 of 15

Analytické databáze

• 2004 MapReduce → Hadoop → Hive (SQL nad MapReduce)

• 2005 Vertica, 2010 Dremel/BigQuery, 2012 Redshift, 2014 Snowflake

• ukládají po sloupcích: čte se jen potřebné, komprese, CPU cache, SIMD

4 of 15

Ven to leze po řádcích

• BigQuery, Snowflake → JSON

• Redshift → Postgres wire protokol

• klienti přitom chtějí sloupce: pandas, Polars, ML

5 of 15

2016: ClickHouse a Apache Arrow

• ClickHouse – sloupcová DB, nativní protokol posílá sloupce i po síti

• Apache Arrow – specifikace layoutu v paměti pro sloupcová data

– stejné bajty v C++, Javě, Pythonu, Rustu, … i po síti

– předání bez serializace – bajty se jen zkopírují, nic se nepřevádí

– v jednom procesu nebo přes mmap dokonce bez kopírování (zero-copy)

– Parquet = na disk, Arrow = v paměti

6 of 15

Bez Arrow

7 of 15

S Arrow

8 of 15

Arrow adopce

• klienti: Polars (2020), pandas 2.0 (2023)

• databáze: Snowflake (2019), BigQuery Storage Read API (2020) vrací Arrow

Každý dodavatel má vlastní nestandardní API.

9 of 15

Standardy jsou po řádcích

while (rs.next()) { rs.getLong("id"); ... } // JDBC

row = cursor.fetchone() # Python DB-API

Dvojí transpozice + JSON = pálíme CPU

10 of 15

ADBC – Arrow Database Connectivity

• „JDBC / ODBC, ale pro Arrow“ (Apache Arrow, 2023)

• ovladače: PostgreSQL, MySQL, ClickHouse, Snowflake, BigQuery, DuckDB, …

• ovladač = jedna sdílená knihovna (.so) pro všechny jazyky; Java přes JNI

cur.execute("SELECT ...")

table = cur.fetch_arrow_table() # → Polars / pandas

$ databow --driver duckdb # SQL shell nad libovolným ADBC ovladačem

11 of 15

Stejná cesta přes ADBC

• Postgres: řádky z wire protokolu rovnou do Arrow, bez objektů v jazyce

Žádná transpozice navíc.

12 of 15

Kolik to stojí: DuckDB, ODBC vs ADBC

TPC-H lineitem, 6 mil. řádků, Apple M1 Max

​

ODBC 28,149 s

ADBC 0,724 s → 38× rychlejší

• DuckDB běží v procesu → žádná síť, čistě CPU čas

• přes síť: BigQuery, 6 mil. řádků – nejrychlejší ODBC ~2,7× pomalejší

13 of 15

Slíbil jsem AI

• stejné dotazy, stejná data, stejná ušetřená sekunda

• u agenta je čekání na data většina času

14 of 15

Flight SQL

• standardní wire protokol nad gRPC, Arrow i po síti (2022, pozdě, ale přece)

• DB s Flight SQL → hned má ovladače: ADBC, JDBC, ODBC

15 of 15

Shrnutí

Řádkové rozhraní nad sloupci = CPU cykly spálené na transpozici tam a zpátky.