Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

clickhouse-local データベースを使用する

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を使用します。起動するには、次を実行します。

ipython

clickhouse-local のインストール

clickhouse-local のダウンロードとインストールは、ClickHouse のダウンロードとインストールと同じです。 次のコマンドを実行します。

curl https://clickhouse.com/ | sh

データをディレクトリに永続化した状態で clickhouse-local を起動するには、--path を指定する必要があります:

./clickhouse -m --path demo.chdb

clickhouse-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 chs

demo.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 で分位点クエリを再実行できます。

Navigation