ClickHouse/docs/ja/chdb/guides/clickhouse-local.md
2024-11-18 11:58:58 +09:00

3.9 KiB
Raw Blame History

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