リファレンス
サポートされているデータソース
| Name | Logo | Type | Status | Description |
|---|---|---|---|---|
| Amazon S3 | オブジェクトストレージ | 安定版 | ClickPipes を使用して、オブジェクトストレージから大量のデータを取り込むように設定します。 | |
| Google Cloud Storage | オブジェクトストレージ | 安定版 | ClickPipes を使用して、オブジェクトストレージから大量のデータを取り込むように設定します。 | |
| DigitalOcean Spaces | オブジェクトストレージ | 安定版 | ClickPipes を使用して、オブジェクトストレージから大量のデータを取り込むように設定します。 | |
| Azure Blob Storage | オブジェクトストレージ | 安定版 | ClickPipes を使用して、オブジェクトストレージから大量のデータを取り込むように設定します。 |
ClickPipes には今後さらに多くのコネクタが追加される予定です。詳細についてはお問い合わせください。
サポートされているデータ形式
サポートされている形式は次のとおりです。
Exactly-once セマンティクス
大規模なデータセットを取り込む際にはさまざまな種類の障害が発生し得るため、部分的な挿入や重複データが発生する可能性があります。Object Storage ClickPipes は挿入時の障害に対して堅牢であり、Exactly-once セマンティクスを提供します。これは一時的な「ステージング」テーブルを使用することで実現されています。データはまずステージングテーブルに挿入されます。この挿入で問題が発生した場合、ステージングテーブルを TRUNCATE してクリーンな状態から挿入を再試行できます。挿入が完了して正常に終了した場合にのみ、ステージングテーブル内のパーティションがターゲットテーブルに移動されます。この戦略の詳細については、このブログ記事を参照してください。
View のサポート
ターゲットテーブル上のマテリアライズドビューもサポートされています。ClickPipes はターゲットテーブルだけでなく、それに依存するマテリアライズドビューに対してもステージングテーブルを作成します。
非マテリアライズドビューに対してはステージングテーブルを作成しません。つまり、ターゲットテーブルに 1 つ以上の下流のマテリアライズドビューがある場合、それらのマテリアライズドビューでは、ターゲットテーブルに対する SELECT をビュー経由で行うことは避ける必要があります。そうしないと、マテリアライズドビューでデータが欠落していることに気付く可能性があります。
スケーリング
オブジェクトストレージ向け ClickPipes は、垂直オートスケーリング設定 で決定される最小の ClickHouse サービスサイズに基づいてスケールされます。ClickPipe のサイズは、パイプ作成時に決定されます。その後に ClickHouse サービス設定を変更しても、ClickPipe のサイズには影響しません。
大規模なデータ取り込みジョブのスループットを向上させるには、ClickPipe を作成する前に ClickHouse サービスをスケールアップすることを推奨します。
制限事項
- 宛先テーブル、そのマテリアライズドビュー(カスケードするマテリアライズドビューを含む)、またはマテリアライズドビューの対象テーブルへの変更は、再試行される一時的なエラーを引き起こす可能性があります。最良の結果を得るには、パイプを停止し、必要な変更を加えてからパイプを再起動し、変更が取り込まれてエラーを回避できるようにすることを推奨します。
- サポートされるビューの種類には制限があります。詳細については、exactly-once semantics と view support のセクションを参照してください。
- GCP または Azure 上にデプロイされた ClickHouse Cloud インスタンス向けの S3 ClickPipes では、ロール認証は利用できません。ロール認証は AWS 上の ClickHouse Cloud インスタンスでのみサポートされます。
- ClickPipes が取り込もうと試みるオブジェクトは、サイズが 10GB 以下のものに限られます。ファイルが 10GB を超える場合は、ClickPipes 専用のエラーテーブルにエラーが追記されます。
- 10万個を超えるファイルを含むコンテナに対して継続的取り込みを行う Azure Blob Storage パイプでは、新しいファイルの検出に約 10〜15 秒のレイテンシーが発生します。レイテンシーはファイル数が増えるにつれて増加します。
- Object Storage ClickPipes は、S3 Table Function および Azure の AzureBlobStorage Table function のいずれともリスト構文を共有 しません。
?- 任意の 1 文字を置換*-/を除く任意の文字列を任意の長さで置換(空文字列を含む)**-/を含む任意の文字列を任意の長さで置換(空文字列を含む)
これは有効なパスです(S3 の場合):
https://datasets-documentation.s3.eu-west-3.amazonaws.com/http/**.ndjson.gz
これは有効なパスではありません。{N..M} は ClickPipes ではサポートされていません。
https://datasets-documentation.s3.eu-west-3.amazonaws.com/http/{documents-01,documents-02}.ndjson.gz
Continuous Ingest
ClickPipes は、S3、GCS、Azure Blob Storage、DigitalOcean Spaces からの継続的なインジェストをサポートします。有効化すると、ClickPipes は指定されたパスからデータを継続的にインジェストし、30 秒に 1 回の頻度で新しいファイルをポーリングします。ただし、新しいファイルは最後にインジェストされたファイルよりも辞書順で後ろである必要があります。つまり、インジェスト順序を定義できるような名前を付ける必要があります。たとえば、file1、file2、file3 のように名前が付けられたファイルは順番にインジェストされます。file0 のような名前の新しいファイルが追加された場合、最後にインジェストされたファイルより辞書順で後ろではないため、ClickPipes はそれをインジェストしません。
取り込まれたファイルの追跡
どのファイルが取り込まれたかを追跡するには、フィールドマッピングに _file 仮想カラム を含めます。_file 仮想カラムには元のオブジェクトのファイル名が含まれるため、どのファイルが処理済みかを簡単にクエリして特定できます。
認証
S3
公開アクセス可能な S3 バケットと保護された S3 バケットの両方がサポートされています。
公開バケットのポリシーでは、s3:GetObject と s3:ListBucket の両方のアクションを許可する必要があります。
保護されたバケットには、IAM 認証情報または IAM ロールを使用してアクセスできます。 IAM ロールを使用するには、このガイドで説明されているとおりに IAM ロールを作成する必要があります。作成後に新しい IAM ロールの ARN をコピーし、ClickPipe の設定の "IAM ARN role" に貼り付けてください。
GCS
S3 と同様に、公開バケットには設定なしでアクセスでき、保護されたバケットには AWS IAM 認証情報の代わりに HMAC Keys を使用できます。これらのキーの設定方法については、Google Cloud のこのガイドを参照してください。
GCS の Service Account は直接サポートされていません。非公開バケットに対して認証を行う場合は、HMAC (IAM) 認証情報を使用する必要があります。
HMAC 認証情報に紐づく Service Account には、storage.objects.list と storage.objects.get の権限が必要です。
DigitalOcean Spaces
現在、DigitalOcean Spaces では保護されたバケットのみサポートされています。バケットおよびそのファイルにアクセスするには、「Access Key」と「Secret Key」が必要です。アクセスキーの作成方法については、このガイドを参照してください。
Azure Blob Storage
現在、Azure Blob Storage では保護されたバケットのみサポートされています。認証は接続文字列を使用して行われ、アクセスキーおよび共有キーをサポートします。詳細については、このガイドを参照してください。