インジェスト
パス A: ClickPipes (マネージド、ClickHouse Cloud のみ)
- ストリーミング: Apache Kafka (MSK、Confluent Cloud、Redpanda、Azure Event Hubs、WarpStream を含む) 、Amazon Kinesis
- オブジェクトストレージ: Amazon S3 (および S3 互換ストレージ) 、Google Cloud Storage、Azure Blob Storage
- CDC: PostgreSQL、MySQL、MongoDB、BigQuery
パス B: 公式言語クライアントを使った自前のインジェスト
- 公式クライアント: Python、Go、Java、JavaScript、Rust、C#、C++
- 両方のワイヤプロトコル: HTTP (すべてのクライアント) とネイティブ TCP (Go と C++ クライアントのみ)
- 認証: デフォルトでは TLS 上でのユーザー名とパスワードによる認証。mTLS と SSL クライアント証明書認証は、主要なすべてのクライアントでサポートされています
- データフォーマットは通常、実装の詳細です。クライアントはランタイム型を ClickHouse Native または RowBinary フォーマットに変換します。すでに Arrow、Parquet、JSONEachRow、または別のフォーマットを生成している場合は、ほとんどのクライアントで、事前にシリアライズ済みのデータ向け raw-bytes API を利用できます
- スループットを確保するには、1万〜10万行を 1 バッチの目安とし、同期挿入では上限の目安として1 秒あたりおよそ 1 回の挿入を目指してください。クライアント側でのバッチ処理が現実的でない場合は、非同期挿入 を使用してバッチ処理をサーバー側に移してください
利用
- アプリケーションコード: インジェストと同じ 公式言語クライアント を使用します
- BI および SQL ツール: ClickHouse は公式の JDBC v2 ドライバー (Java) と ODBC ドライバ を提供しています。Tableau、Looker、Power BI、Metabase、Apache Superset、Grafana は、これらのドライバー、または ClickHouse とパートナーが保守する専用コネクタ経由で連携できます
- 結果フォーマット: 通常、シリアライゼーションはクライアント側で処理します。製品上必要であれば、転送時のフォーマットとして Arrow、Parquet、またはその他の列指向フォーマットを指定できます
結果セットのサイズ設計
SELECT * を実行すると、テラバイト級のデータが منتقلされる可能性があります。アプリケーション側でリクエストを適切に設計してください。 LIMIT、ページネーション、ストリーミング読み取り、明示的なカラムリストを活用します。ユーザー向け分析機能を構築する場合、制限のない結果セットは転送の問題ではなく、UX の問題として捉えてください。
ClickHouse は豊富な型システムを備えており、Array、Tuple、Map、JSON、Nested、LowCardinality などをサポートしています。公式クライアントはこれらを各言語で自然に扱える型へマッピングします。製品で ClickHouse のデータをエンドユーザーに提示する場合は、早い段階で型マッピング戦略を検討してください。
次のステップ
ユーザーエージェント文字列の規約
User-Agent 文字列を設定する必要があります。ClickHouse はこれをサーバー側で解析し、導入状況の追跡、使用状況テレメトリーの把握、ロードマップへの反映に役立てます。
フォーマット:
clickhouse-java/0.8.0my-analytics-app/3.1.2 clickhouse-js/1.2.0 (env: staging; region: us-east-1; lv: node/20.10)
- クライアント名やバージョンに空白を含めないこと
- コメントを含める場合は、先頭に置く必要があります
- 標準メタデータキー:
lv(言語またはフレームワークのバージョン) 、os、arch - TCP およびネイティブプロトコルのクライアントは、
User-Agentではなくプロトコルのフィールドを通じてクライアント名とバージョンを送信します
User-Agent と関連フィールドをどのように設定するかについて、クライアント識別 を参照してください。