3.9 KiB
title | sidebar_label | slug | description | keywords | ||
---|---|---|---|---|---|---|
clickhouse-localデータベースの使用方法 | clickhouse-localデータベースの使用方法 | /ja/chdb/guides/clickhouse-local | chDBで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] │
└───────────────────────────────────────┘
その後、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から分位数クエリを再実行できます。