Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ADBC最前線?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
eitsupi
October 03, 2026
Programming
31
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ADBC最前線?
第122回R勉強会@東京(Tokyo.R)発表資料
eitsupi
October 03, 2026
More Decks by eitsupi
See All by eitsupi
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
490
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
180
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
[2026-10-09]一枚の布で作らなくてもいい。 信頼性は「パッチワーク」で紡がれる~既存の運用と新しい可能性をつなぎ合わせてきたCREの話~
tosite
0
110
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
510
Groovy as a human and AI friendly programming language
paulk
0
100
Domain-Driven Transformation
hschwentner
2
2.3k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
170
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
140
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
350
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
230
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
240
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
The Cult of Friendly URLs
andyhume
79
7k
Building an army of robots
kneath
307
47k
Become a Pro
speakerdeck
PRO
31
6.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
610
sira's awesome portfolio website redesign presentation
elsirapls
0
460
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Ace a Technical Interview
jacobian
280
24k
GraphQLとの向き合い方2022年版
quramy
50
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Transcript
Tokyo.R 122 · 2026-10-03 ADBC 最前線? Apache Arrow 時代のデータベース接続 @eitsupi
自己紹介 @eitsupi • 本業:手料理サブスク Tsuklio のデータ周り • 副業:Columnar 社で Apache
Arrow ADBC 周りの開発 - 本資料は個人の見解であり所属組織とは関係ありません (※言ってみたかった) • Excel が嫌になり R を使い始めて 7 年 • 近況 - arf 等の R 関連ツール開発 - R コンソーシアムの助成金応募してみた - 停滞していた vscode-R の 3.0.0 リリース関与
Apache Arrow とは
フォーマットの N×M 問題 バラバラの形式を直接つなぐと、変換が N×M に増える。 共通形式なし Apache Arrow が共通形式に
Apache Arrow でやり取りすることで複製・変換処理を減らせる。 図の出典:Apache Arrow 公式 Overview
Apache Arrow が標準化したもの 列指向 列ごとに並ぶメモリ上のデータ形式 言語非依存 言語をまたぐ共通の表現 C Data Interface
異なる言語・実装間でデータを受け渡す仕組み Parquet は保存するファイル形式。Apache Arrow は主にメモリ上の共通表現。 Apache Arrow Overview · C Data Interface
Apache Arrow は 10 周年。R でも当たり前に使える そろそろ R ユーザーも Apache
Arrow で Parquet を使っ 2019 年 てみませんか? 「CSV をやめて人間を続けよう」 2026 年 Apache Arrow は 10 周年。 R では dbplyr から ADBC(後述)が利用可能に。 「使ってみませんか?」から、R でも普段使うデータ基盤へ。 Apache Arrow 10 周年 · dbplyr 2.6.0
Apache Arrow ADBC とは
接続にも N×M 問題がある アプリ・言語 N 個 多様なクライアント N×M データベース M
個 さまざまな接続先 BigQuery · Snowflake · Databricks · PostgreSQL · DuckDB · SQLite … 各アプリ・言語が DB ごとの接続方式を直接扱うと、組み合わせごとに実装が必要。 ADBC FAQ · Apache Arrow 公式: Introducing ADBC · Columnar 社 ADBC Quickstarts
ADBC は接続の共通 API アプリは同じ ADBC API を使い、接続先ごとの差はドライバーが受け持つ。 図中の Flight SQL
は接続先への経路の一例。ADBC が通信方式を決めるわけではない。 図の出典:Apache Arrow 公式: Introducing ADBC
ADBC は何を決める? Arrow Database Connectivity Apache Arrow を共通形式にしたデータベース接続 API 接続
ステートメント クエリ実行 メタデータ トランザクション 一括投入 SQL 方言もクライアントと DB の通信方式も定義しない。 ADBC FAQ · ADBC API Standard
ODBC / JDBC との違い
30 年続く接続 API 1992 ODBC 1.0 が登場 1996 JDBC が登場
2022 ごろ Apache Arrow を土台に ADBC が生まれる Columnar 社のローンチ記事は「接続規格が長く使われる」ことから話を始める。 Microsoft: 1992 年の製品史 · Columnar 社: Announcing Columnar (2025-10-29)
3 つともデータベース接続 API JDBC ODBC ResultSet が基本。行ベースの API。 行単位・列単位のデータ受け取りが可能。Apache Arrow
形式は共 ADBC 通契約ではない。 Apache Arrow をデータ交換の中心に置く。 いずれも通信プロトコルは決めない。ADBC は ODBC/JDBC の全面置換でもない。 ADBC FAQ: Why not JDBC/ODBC?
Flight SQL との違い
Flight SQL とは? Apache Arrow Flight の上で SQL を扱う通信プロトコル。DB 側にも対応が必要。
SQL クライアント ↓ Flight SQL SQL 命令・メタデータ + Apache Arrow のデータ ↓ Flight SQL 対応 DB Apache Arrow: Flight SQL specification · Flight SQL 発表(2022 年)
ADBC と何が違う? どちらも「SQL」と「Apache Arrow」を扱うので、似て見える。 データ表現 Apache Arrow クライアント API ADBC
/ ODBC / JDBC 通信プロトコル Flight SQL / PostgreSQL プロトコル / TDS / Quack ADBC はクライアント側の API。ドライバーが DB と使う通信プロトコルは決めない。 ADBC Glossary · ADBC FAQ: Flight SQL · ADBC? Flight SQL?
Flight SQL は ADBC 経由で利用可能 アプリ → ADBC API ↓
Flight SQL ドライバー Quack ドライバー ↓ ↓ Flight SQL Quack ↓ ↓ Flight SQL 対応 DB DuckDB サーバー ADBC FAQ · Columnar 社: Quack ADBC driver
Flight SQL の設計上のトレードオフ 2022 年登場の Flight SQL。クエリの結果取得には、少なくとも 2 回の通信が必要。 ①
GetFlightInfo SQL を送り、結果の取得先を受け取る ↓ ② DoGet 結果データを取得する 小さなクエリを多数実行する用途では、この 2 往復は効率が悪い。 仕様見直しの issue「Flight SQL evolution」は 2024 年に作成され、現在も open。 Flight SQL specification · DuckDB: Why Not Arrow Flight SQL? · Apache Arrow #41840
Flight SQL がいつも最速とは限らない DuckDB が Quack を発表したときの転送時間の比較。 Quack Flight SQL
/ GizmoSQL 4.94 秒 17.40 秒 TPC-H lineitem 6,000 万行の read。AWS Arm 同一 AZ、5 回の中央値。サーバー実装も異なる特定条件で の比較で、ADBC 自体の性能比較ではない。 ADBC は通信方式を決めない。Quack も Flight SQL も、対応ドライバーを通して使える。 DuckDB: Quack remote protocol (2026-05-12)
ADBC のこの 1 年
ドライバーは言語をまたいで使える Go で実装した Snowflake ドライバー ↓ 共有ライブラリ .so / .dylib
/ .dll ↓ ADBC Driver Manager 動的に読み込む さまざまな言語・アプリの ADBC クライアント ADBC Drivers · 接続例:ADBC 公式ドキュメント / Columnar 社 adbc-quickstarts
ドライバーをどう配る? Driver Manager で使うには、共有ライブラリの配布・インストールが必要。 dbc → ドライバー + 設定情報 →
Driver Manager dbc install sqlite dbc install snowflake dbc はコマンドとして使えるほか、0.3.0 から Go のライブラリとしてアプリにも組み込める。 ADBC Drivers: installation · dbc 0.3.0
2025–2026 年の動き 2025.10 dbc と ADBC Driver Foundry が登場 2026.05
dbc 0.3.0:Go のライブラリとして利用可能に 2026.07 ADBC 24:一部ドライバーの開発が Foundry へ 2026.10.01 dbc 0.3.1 がリリース(一昨日) Foundry は Apache Arrow から独立したコミュニティプロジェクト。Apache Arrow は ADBC の中核と仕 様を維持。 Columnar 社ローンチ · dbc 0.3.0 · ADBC 24 · dbc 0.3.1
dbt v2 も ADBC を採用 dbt v1 dbt v2 adapter
A → 接続実装 A adapter B → 接続実装 B dbt / Rust ↓ ADBC ↓ 各 DB のドライバー Go 実装なども利用可能 言語をまたいで使えるドライバーの仕組みが、製品の共通接続層に使われている。 dbt: Arrow ADBC and dbt v2 · dbt v2 GA
R から使う
いまの R での経路 dplyr → dbplyr 操作を SQL へ翻訳 DBI
→ adbi DBI 互換の接続・実行 adbcdrivermanager ドライバーを読み込む ADBC ドライバー 接続先 DB と通信 adbi のおかげで、既存の dplyr / dbplyr コードから ADBC を利用できる。 DBI にも Apache Arrow API があり、adbi は dbGetQueryArrow() などを実装している。 adbi README: Apache Arrow API · ADBC R client
SQLite で試す 準備:dbc install sqlite。adbi、adbcdrivermanager、DBI、dplyr、dbplyr を使用。 con <- DBI::dbConnect( adbi::adbi(adbcdrivermanager::adbc_driver("sqlite")),
uri = ":memory:" ) DBI::dbWriteTable(con, "mtcars", mtcars) dplyr::tbl(con, "mtcars") |> dplyr::filter(cyl == 6) |> dplyr::summarise(n = dplyr::n(), avg_mpg = mean(mpg, na.rm = TRUE)) |> dplyr::collect() DBI::dbDisconnect(con) 結果:n = 7、avg_mpg = 19.7 ADBC Drivers · adbi README
接続クラスと SQL 方言を結び付ける限界 従来の自然な前提 汎用の接続 API では RPostgresConnection AdbiConnection ↓
↓ PostgreSQL 方言 PostgreSQL / SQLite / Snowflake ODBC/JDBC/ADBC では、接続クラスだけでは接続先の SQL 方言が決まらない。 Posit 社: dbplyr 2.6.0
dbplyr 2.6.0 で SQL 方言を分離 AdbiConnection ↓ ADBC_INFO_VENDOR_NAME ドライバーに接続先の製品名を問い合わせる ↓
sql_dialect() PostgreSQL → dialect_postgres() など dbplyr は接続先の製品名から SQL 方言を選ぶ。未対応なら汎用 ODBC 方言の dialect_odbc()へ。 dbplyr backend-adbc.R · dbplyr sql-dialect.R
接続を作るだけで 3 つのパッケージの関数が必要!? 先ほどの SQLite 例から、接続部分だけを抜き出すと… con <- DBI::dbConnect( adbi::adbi(
adbcdrivermanager::adbc_driver("sqlite") ), uri = ":memory:" ) adbcdrivermanager adbi DBI ドライバーを指定 DBI につなぐ 接続を作る adbi は有用な互換レイヤー。ただ、dbplyr から ADBC へ進む実行経路は複雑。 → 個人的には、dbplyr が ADBC を DBI と並ぶ実行バックエンドとして直接扱えるとうれしい。 adbi README · ADBC R client
R での活用例
Posit 社の 2 つの例 ggsql 0.5.0 汎用のデータベース読み込み手段として ADBC を追加。ODBC とも並んで使える。
skiLift 通常は Snowflake SQL API(HTTPS / JSON)。大量データの転送時は、利用可能なら ADBC / Apache Arrow を使用。 上位の R API と、下で使う接続・転送方式は別々に選べる。 Posit 社: ggsql 0.5.0 · Posit 社: skiLift
まとめ Apache Arrow ADBC この 1 年 データ表現の N×M 問題に共通形式を用意した
接続の N×M を減らす Apache Arrow ベースの共通 API。 通信プロトコルは規定しない ドライバー配布と dbt v2 採用。 念願の dbplyr からの利用が可能に Enjoy! Apache Arrow Overview · ADBC FAQ · ADBC Drivers · dbt v2 · dbplyr 2.6.0