Pg_ClickHouse: A Postgres extension for querying ClickHouse

2025/12/11 2:14

Pg_ClickHouse: A Postgres extension for querying ClickHouse

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

改訂版サマリー

この発表では、pg_clickhouse v0.1.0 を紹介しています。これは PostgreSQL 拡張機能で、ClickHouse の分析クエリを再作成することなく PostgreSQL から直接実行できるようにします。Apache 2 ライセンスの下で配布され、PGXN と GitHub で入手可能です。Docker を使って起動できます(例:

docker run --name pg_clickhouse -e POSTGRES_PASSWORD=my_pass -d ghcr.io/clickhouse/pg_clickhouse:18
)。
拡張機能はクエリ実行を ClickHouse にプッシュし、準備済み INSERT、TLS(二進数および HTTP)、JSON 処理、およびほぼすべての PostgreSQL 集約関数に対応しています。TPC‑H のベンチマークでは SEMI JOIN サポート追加後に高いプッシュダウン率が確認され、コストベースのチューニングによりプランナーはさらに多くの作業をプッシュダウンするようになります。
この拡張機能は 2019 年に開始された旧 clickhouse_fdw フォークをモダナイズし、現在の FDW API を採用、CI/テストと Linux‑専用互換性を追加、PostgreSQL 13–18 と ClickHouse 22–25 のテストスイートをサポートします。計画中のロードマップ項目には、残りの TPC‑H プッシュダウン完了、完全な集約・データ型サポート、サブクエリプッシュダウン、サーバー/ユーザー設定処理、軽量 DELETE/UPDATE、COPY バッチ挿入、および UNION プッシュダウン(さらなる DML 強化前)があります。
ClickHouse テーブルを単一スキーマ内のネイティブ PostgreSQL オブジェクトとして公開することで、この拡張機能は移行を容易にし、最小限のコード変更で分析性能を向上させます。

本文

pg_clickhouse v0.1.0 – ClickHouse アナリティクス用 PostgreSQL エクステンション


概要

過去 1 年間で、ClickHouse Cloud にアナリティクスワークロードを移行したお客様の中で、自前でホストする ClickHouse の後に最も多く移行されるソースは PostgreSQL という強い傾向が見られました。
ClickPipes はデータレプリケーションとマイグレーションを簡単にしますが、PostgreSQL から ClickHouse へクエリやアプリコードを移行する際には依然として課題があります。

このプロセスを簡素化するために、pg_clickhouse を開発しました。これは PostgreSQL から直接 ClickHouse 上でアナリティクスクエリを透過的に実行できる拡張機能です。


クイックリンク

プラットフォームリンク
PGXNhttps://pgxn.org/package/pg_clickhouse
GitHubhttps://github.com/clickhouse/pg_clickhouse

Docker

docker run --name pg_clickhouse -e POSTGRES_PASSWORD=my_pass \
  -d ghcr.io/clickhouse/pg_clickhouse:18

チュートリアルを始めるか、Sai のウォークスルービデオをご覧ください。


なぜこの拡張機能なのか?

  1. 同一スキーマ・同一クエリ – ClickHouse テーブルは別スキーマに配置しても PostgreSQL テーブルと同様に見える。
  2. 変更不要なクエリ実行 – 既存の PostgreSQL クエリをそのまま実行できる。
  3. プッシュダウン – クエリ実行は ClickHouse にオフロードされる。
  4. 将来性 – 継続的なプッシュダウン進化の基盤となる。

仕組み

pg_clickhouse
は SQL/MED の外部データラッパー(FDW)機構を利用しています。
既存の
clickhouse_fdw
などは良い出発点でしたが、最近の PostgreSQL FDW API の改善や堅牢なテストが不足していました。そのため、Apache 2 ライセンスで pg_clickhouse としてフォークしました。

追加された主な機能:

機能内容
PGXS ビルドパイプライン標準的な PostgreSQL エクステンションビルドプロセス
Prepared INSERT サポート最新の ClickHouse C++ ライブラリ(最新版)を使用
テストマトリックスCI で PostgreSQL 13‑18 と ClickHouse 22‑25 を対象
TLS サポートバイナリプロトコルと HTTP API (ClickHouse Cloud) 用
データ型サポートBool、Decimal、JSON など
集計関数のプッシュダウン
percentile_cont()
等の順序付きセット集計も対応
SEMI‑JOIN プッシュダウンこのリリースで初登場

例:
percentile_cont()
quantile()

PostgreSQL:

SELECT type,
       round(min(price)) + 100 AS min,
       round(max(price))   AS max,
       round(percentile_cont(0.5) WITHIN GROUP (ORDER BY price)) AS median,
       round(percentile_cont(0.25) WITHOUT GROUP (ORDER BY price)) AS "25th",
       round(percentile_cont(0.75) WITHIN GROUP (ORDER BY price) ) AS 75th
FROM uk.uk_price_paid
GROUP BY type;

pg_clickhouse
は次のように書き換えます:

SELECT type,
       (round(min(price)) + 100),
       round(max(price)),
       round(quantile(0.5)(price)),
       round(quantile(0.25)(price),
       round(quantile(0.75)(price))
FROM uk.uk



The translation incomplete due to truncation. Need finish remaining part and rest of article.**pg_clickhouse v0.1.0 – ClickHouse アナリティクス用 PostgreSQL エクステンション**

---

### 概要

過去 1 年間で、ClickHouse Cloud にアナリティクスワークロードを移行したお客様の中で、**自前でホストする ClickHouse の後に最も多く移行されるソースは PostgreSQL** といった強いパターンが観測されています。  
ClickPipes はデータレプリケーションとマイグレーションを簡単にしますが、それでも PostgreSQL から ClickHouse へクエリやアプリコードを移行する際には依然として苦労しています。

このプロセスを簡素化するため、*pg_clickhouse* を開発しました。これは PostgreSQL から直接 ClickHouse 上でアナリティクスクエリを透過的に実行できる拡張機能です。

---

### クイックリンク

| プラットフォーム | リンク |
|-----------------|--------|
| **PGXN** | <https://pgxn.org/package/pg_clickhouse> |
| **GitHub** | <https://github.com/clickhouse/pg_clickhouse> |

**Docker**

```bash
docker run --name pg_clickhouse -e POSTGRES_PASSWORD=my_pass \
  -d ghcr.io/clickhouse/pg_clickhouse:18

チュートリアルを始めるか、Sai のウォークスルービデオをご覧ください。


なぜこの拡張機能なのか?

  1. 同一スキーマ・同一クエリ – ClickHouse テーブルは別スキーマに置いても PostgreSQL テーブルと同じように扱える。
  2. 変更不要なクエリ実行 – 既存の PostgreSQL クエリをそのまま実行できる。
  3. プッシュダウン – クエリ処理は ClickHouse にオフロードされる。
  4. 将来性 – 継続的にプッシュダウン機能を拡張していく基盤になる。

仕組み

pg_clickhouse
は SQL/MED の外部データラッパー(FDW)メカニズムを利用しています。
既存の
clickhouse_fdw
等は良い出発点でしたが、最近の PostgreSQL FDW API の改善や堅牢なテストが不足していました。そのため、Apache 2 ライセンスで pg_clickhouse としてフォークしました。

追加された主な機能:

機能内容
PGXS ビルドパイプライン標準的な PostgreSQL エクステンションビルドプロセス
Prepared INSERT サポート最新の ClickHouse C++ ライブラリ(最新版)を使用
テストマトリックスCI で PostgreSQL 13‑18 と ClickHouse 22‑25 を対象
TLS サポートバイナリプロトコルと HTTP API (ClickHouse Cloud) 用
データ型サポートBool、Decimal、JSON など
集計関数のプッシュダウン
percentile_cont()
等の順序付きセット集計も対応
SEMI‑JOIN プッシュダウンこのリリースで初登場

例:
percentile_cont()
quantile()

PostgreSQL:

SELECT type,
       round(min(price)) + 100 AS min,
       round(max(price))   AS max,
       round(percentile_cont(0.5) WITHIN GROUP (ORDER BY price)) AS median,
       round(percentile_cont(0.25) WITHIN GROUP (ORDER BY price)) AS "25th",
       round(percentile_cont(0.75) WITHIN GROUP (ORDER BY price)) AS "75th"
FROM uk.uk_price_paid
GROUP BY type;

pg_clickhouse
は次のように書き換えます:

SELECT type,
       (round(min(price)) + 100),
       round(max(price)),
       round(quantile(0.5)(price)),
       round(quantile(0.25)(price)),
       round(quantile(0.75)(price))
FROM uk.uk_price_paid
GROUP BY type;

FILTER (WHERE …)
句は
…If(...) > 0
に変換されます。


プッシュダウン実行例

クエリPostgres 実行時間元の pg_clickhouseSEMI‑JOIN 実行時間
114 478 ms✅ 82 ms✅ 73 ms

(完全表は省略)

SEMI‑JOIN プッシュダウンにより、ほとんどのクエリが数ミリ秒で実行されるようになりました。


ロードマップ

  • 残り TPC‑H クエリのプッシュダウン網羅を完了
  • ClickBench のプッシュダウンテストと修正
  • すべて の PostgreSQL 集計関数・機能をプッシュダウン
  • サブクエリの完全なプッシュダウン
  • CREATE SERVER
    /
    CREATE USER
    でサーバー/ユーザー単位の ClickHouse 設定を行う
  • すべての ClickHouse データ型に対応
  • 軽量な
    DELETE
    /
    UPDATE
    サポート
  • バッチ
    COPY
    インジェスト
  • 任意の ClickHouse クエリを実行しテーブルとして返す関数
  • 同一リモートへ向かう全ブランチで
    UNION
    をプッシュダウン

取得方法

GitHub または PGXN からインストールし、実際のワークロードで試してみてください。プッシュダウン失敗があればプロジェクトの issue トラッカーへ報告してください – 私たちが修正します。

Happy querying!

同じ日のほかのニュース

一覧に戻る →

2025/12/13 5:57

GNU Unifont

2025/12/13 7:02

Show HN: Tiny VM sandbox in C with apps in Rust, C and Zig

## Japanese Translation: uvm32 は、単一の C ファイルで書かれたミニマリストで依存関係を持たない仮想マシンサンドボックスです。 STM32L0 のような非常に小型のマイクロコントローラ上で動作し、4 KB 未満のフラッシュと 1 KB の RAM を使用します。静的割り当てのみで非同期設計となっています。 この VM は RISC‑V のサブセットを実装しており、軽量な管理インタフェースを公開しています。「if‑this‑then‑that」ロジックのために Lua、Duktape、MicroPython などの軽量スクリプトエンジンを置き換え、信頼できないコンポーネントや不安定な部品をサンドボックス化し、ターゲットコンパイラなしでモダン言語の「一度書けばどこでも実行できる」スクリプトを書けるようにすることが目的です。 主な特徴: - バイトコードアプリは C、Zig、Rust、またはアセンブリで記述可能。 - 非ブロッキングでシンプルな実行モデル。安全かつ最小限の型付けを備えた FFI を使用し、ホスト IO(stdio/ネットワーク)は想定していません。 - デザインは高速よりも安全性を優先しています。 - すべてのソースコードは `uvm32/` ディレクトリにあります。最小限のホスト例は `host‑mini` にあり、より高度なホストは `host/`、`host-parallel`、`host-arduino` にあります。 サンプルアプリケーションは VM の機能を示しています(C: helloworld, heap, conio, lissajous, maze, fib, sketch; Zig: zig‑mandel, zigtris, zigalloc, zigdoom; Rust: rust‑hello; アセンブリ: hello‑asm)。 ビルドとテスト用の Dockerfile が提供されており、`make dockerbuild`、`make dockershell` で構築・起動し、その後 `make` を実行してサンプルをコンパイル・実行します。ドキュメントはヘッダファイル `uvm32/uvm32.h` と `doc/README.md` にあります。本プロジェクトは MIT ライセンスで公開されています。

2025/12/13 5:15

Rats Play DOOM

## Japanese Translation: > **概要:** > 著者らは、ラットがDOOMをプレイできる完全にオープンソースの仮想現実装置をリリースしました。ゼロから構築されたこのシステムには、ハードウェア設計・ファームウェア・ソフトウェアがGitHubに掲載されており、他研究室でも簡単に再現または改良できます。バージョン 1(v1)はニューヨークのヴィクトール・トー氏によって開発され、ラットにDOOMコリドーを走行させるよう訓練しました。この実装はViceとPC Gamerで紹介されました。 > > 改良版(v2)はよりモジュラー化され、180°×80°の視野を持つ折りたたみ可能なAMOLEDスクリーン、新しいボールドライバー、強化された給餌器、ゲームイベントに同期した正確な10 µLの砂糖水投与が可能な改良リワード回路を備えています。追加センサーとランニングマシンのボール周囲に設置された光学フロー運動捕捉システムでトラッキング精度が向上しています。 > > ソフトウェアはPythonベースのモジュラースタック(arena_scenario.py)で、PC上で実行され、Raspberry PiとTCP経由で通信します。Piはリアルタイムセンサー読み取り・ボール駆動・リワード制御を担当します。すべてのコンポーネントはGitHubに文書化されており、3Dプリント可能なパーツや回路図も公開されています。 > > チーム(ヴィクトール・トー=ゲーマーラットコーチ、サンドル・マクラ=電気技師、アコス・ブラシュェク=ドキュメントリード)は、ラットが約2週間で慣れることを示しましたが、完全な訓練はまだ完了していません。 > > 現在の制限として、自動キャリブレーションスイートが無いため、ユーザーはセンサーの整列とリワードタイミングを手動で検証する必要があります。 > > 今後の課題は完全な訓練プロトコルの完成、キャリブレーションツールの改良、および他の行動タスクや種へ装置を拡張することです。低コストで完全にオープンなプラットフォームを提供することで、このプロジェクトは世界中の神経科学研究室の参入障壁を下げ、動物VR実験に依存する研究のスピードアップに寄与できる可能性があります。