clickhouse-local は、ClickHouse を組み込んだ CLI ツールです。 サーバーをインストールしなくても、ClickHouse の機能を利用できます。 このガイドでは、chDB から clickhouse-local データベースを使用する方法を学びます。
セットアップ
まずは、仮想環境を作成します。
python -m venv .venv
source .venv/bin/activateそれでは、chDB をインストールします。 バージョン 2.0.2 以上であることを確認してください。
pip install "chdb>=2.0.2"それでは、ipython をインストールしましょう。
pip install ipythonこのガイドの以降の手順では、コマンドの実行にipythonを使用します。起動するには、次を実行します。
ipythonclickhouse-local のインストール
clickhouse-local のダウンロードとインストールは、ClickHouse のダウンロードとインストールと同じです。 次のコマンドを実行します。
curl https://clickhouse.com/ | shデータをディレクトリに永続化した状態で clickhouse-local を起動するには、--path を指定する必要があります:
./clickhouse -m --path demo.chdbclickhouse-local にデータを取り込む
デフォルトのデータベースはデータをメモリ内にしか保存しないため、取り込んだデータが確実にディスクへ永続化されるよう、名前付きのデータベースを作成する必要があります。
CREATE DATABASE foo;テーブルを作成し、ランダムな数値をいくつか挿入してみましょう:
CREATE TABLE foo.randomNumbers
ORDER BY number AS
SELECT rand() AS number
FROM numbers(10_000_000);どのようなデータがあるかを確認するために、クエリを書いてみましょう。
SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers┌─quants────────────────────────────────┐
│ [69,2147776478,3221525118,4252096960] │
└───────────────────────────────────────┘それが終わったら、このディレクトリのロックを保持できるプロセスは1つだけなので、CLI で必ず exit; してください。
そうしないと、chDB からデータベースに接続しようとしたときに、次のエラーが発生します:
ChdbError: Code: 76. DB::Exception: Cannot lock file demo.chdb/status. Another server instance in same directory is already running. (CANNOT_OPEN_FILE)clickhouse-local データベースへの接続
ipython シェルに戻り、chDB から session モジュールをインポートします。
from chdb import session as chsdemo.chdb を指定したセッションを初期化します:
sess = chs.Session("demo.chdb")次に、数値の分位点を返す同じクエリを実行できます:
sess.query("""
SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers
""", "Vertical")
Row 1:
──────
quants: [0,9976599,2147776478,4209286886]chDB からこのデータベースにデータを挿入することもできます:
sess.query("""
INSERT INTO foo.randomNumbers
SELECT rand() AS number FROM numbers(10_000_000)
""")
Row 1:
──────
quants: [0,9976599,2147776478,4209286886]その後、chDB または clickhouse-local で分位点クエリを再実行できます。