メインコンテンツまでスキップ
メインコンテンツまでスキップ

ClickHouseでのMoose OLAPの開発

Community Maintained

Moose OLAPは、リアルタイム分析バックエンドをTypescriptとPythonで構築するためのオープンソース開発者ツールキットであるMoose Stackのコアモジュールです。

Moose OLAPは、ClickHouseにネイティブに構築された開発者フレンドリーな抽象化とORMのような機能を提供します。

Moose OLAPの主な機能

  • コードとしてのスキーマ: 型安全性とIDEのオートコンプリートを備えたTypeScriptまたはPythonでClickHouseテーブルを定義
  • 型安全なクエリ: 型チェックとオートコンプリートサポートを備えたSQLクエリを記述
  • ローカル開発: 本番環境に影響を与えずにローカルのClickHouseインスタンスに対して開発およびテスト
  • マイグレーション管理: スキーマ変更のバージョン管理とコーディングを介したマイグレーション管理
  • リアルタイムストリーミング: ストリーミング取り込みのためにClickHouseとKafkaまたはRedpandaをペアリングするための組み込みサポート
  • REST API: ClickHouseテーブルとビューの上に完全に文書化されたREST APIを簡単に生成

5分以内での始め方

最新のインストールガイドおよび開始ガイドについては、Moose Stackドキュメントを参照してください。

または、既存のClickHouseまたはClickHouse Cloudデプロイメントで5分以内にMoose OLAPをセットアップするためにこのガイドに従ってください。

前提条件

  • Node.js 20+ または Python 3.12+ - TypeScriptまたはPythonの開発に必要
  • Docker Desktop - ローカル開発環境用
  • macOS/Linux - WindowsはWSL2経由で動作します

Mooseをインストール

Moose CLIをシステムにグローバルにインストール:

bash -i <(curl -fsSL https://fiveonefour.com/install.sh) moose

プロジェクトを設定

オプションA: 自分の既存のClickHouseデプロイメントを使用

重要: あなたの本番ClickHouseは影響を受けません。これは、ClickHouseテーブルから派生したデータモデルを持つ新しいMoose OLAPプロジェクトを初期化するだけです。


# TypeScript
moose init my-project --from-remote <YOUR_CLICKHOUSE_CONNECTION_STRING> --language typescript


# Python
moose init my-project --from-remote <YOUR_CLICKHOUSE_CONNECTION_STRING> --language python

あなたのClickHouse接続文字列は次の形式である必要があります:

https://username:password@host:port/?database=database_name

オプションB: ClickHouseプレイグラウンドを使用

ClickHouseがまだ動作していませんか?ClickHouseプレイグラウンドを使用してMoose OLAPを試してみてください!


# TypeScript
moose init my-project --from-remote https://explorer:@play.clickhouse.com:443/?database=default --language typescript


# Python
moose init my-project --from-remote https://explorer:@play.clickhouse.com:443/?database=default --language python

依存関係をインストール


# TypeScript
cd my-project
npm install


# Python
cd my-project
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

次のメッセージが表示されるはずです: Successfully generated X models from ClickHouse tables

生成されたモデルを探索する

Moose CLIは、既存のClickHouseテーブルから自動的にTypeScriptインターフェースまたはPython Pydanticモデルを生成します。

新しいデータモデルをapp/index.tsファイルで確認してください。

開発を開始

開発サーバーを起動して、すべての本番テーブルが自動的にコード定義から再現されたローカルClickHouseインスタンスをスピンアップします:

moose dev

重要: あなたの本番ClickHouseは影響を受けません。これはローカル開発環境を作成します。

ローカルデータベースをシード

ローカルClickHouseインスタンスにデータをシードします:

自分のClickHouseから

moose seed --connection-string <YOUR_CLICKHOUSE_CONNECTION_STRING> --limit 100

ClickHouseプレイグラウンドから

moose seed --connection-string https://explorer:@play.clickhouse.com:443/?database=default --limit 100

Moose OLAPでのビルディング

コードでテーブルを定義したので、APIおよびMaterialized Viewを分析データの上に構築する際にORMデータモデルの利点と同様の型安全性とオートコンプリートを得ることができます。次のステップとして、以下を試してみることができます:

ヘルプを得てつながる

  • リファレンスアプリケーション: オープンソースのリファレンスアプリケーション、Area Codeをチェックしてください。特化したインフラを必要とする機能が豊富でエンタープライズ向けのアプリケーションに必要なすべてのビルディングブロックを持つスターターレポです。ユーザーフェイシングアナリティクスとオペレーショナルデータウェアハウスの2つのサンプルアプリケーションがあります。
  • Slackコミュニティ: Moose StackメンテイナーとSlackでつながり、サポートとフィードバックを得る
  • チュートリアルを見る: Moose Stackの機能に関するビデオチュートリアル、デモ、詳細な説明をYoutubeで見る
  • 貢献する: コードをチェックし、Moose Stackに貢献し、GitHubで問題を報告