Amazon KinesisとClickHouse Cloudの統合
前提条件
ClickPipesの紹介に目を通し、IAM資格情報またはIAMロールをセットアップしたことを確認してください。ClickHouse Cloudで動作するロールのセットアップ方法についてはKinesisロールベースのアクセスガイドを参照してください。
最初のClickPipeの作成
- ClickHouse CloudサービスのSQLコンソールにアクセスします。

- 左側のメニューから
データソース
ボタンを選択し、「ClickPipeをセットアップ」をクリックします。

- データソースを選択します。

- ClickPipeの名前、説明(オプション)、IAMロールまたは資格情報、その他の接続詳細を提供してフォームに記入します。

- Kinesisストリームと開始オフセットを選択します。UIは選択したソースからのサンプルドキュメント(Kafkaトピックなど)を表示します。また、Kinesisストリームのパフォーマンスと安定性を向上させるためにEnhanced Fan-outを有効にすることもできます(Enhanced Fan-outの詳細についてはこちらを参照してください)。

- 次のステップでは、新しいClickHouseテーブルにデータを取り込むか、既存のテーブルを再利用するかを選択できます。画面の指示に従って、テーブル名、スキーマ、および設定を変更してください。変更のリアルタイムプレビューが画面の上部に表示されます。

提供されているコントロールを使用して、詳細設定をカスタマイズすることもできます。

- あるいは、既存のClickHouseテーブルにデータを取り込むこともできます。その場合、UIはソースから選択した宛先テーブルのClickHouseフィールドへのフィールドをマッピングできるようにします。

- 最後に、内部ClickPipesユーザーの権限を構成できます。
権限: ClickPipesは、宛先テーブルにデータを書き込むための専用ユーザーを作成します。この内部ユーザーの役割は、カスタムロールまたは定義済みの役割のいずれかを使用して選択できます。
フルアクセス
: クラスターへのフルアクセスを提供。これは、宛先テーブルにMaterialized ViewやDictionaryを使用する場合に有用です。宛先テーブルのみ
: 宛先テーブルへのINSERT
権限のみを持つ。

- 「セットアップを完了」をクリックすると、システムはClickPipeを登録し、要約テーブルに表示されるようになります。


要約テーブルでは、ClickHouse内のソースまたは宛先テーブルからのサンプルデータを表示するコントロールが提供されます。

ClickPipeを削除し、取り込みジョブの概要を表示するコントロールもあります。

- おめでとうございます! あなたは最初のClickPipeを正常に設定しました。これがストリーミングClickPipeであれば、リモートデータソースからリアルタイムでデータを継続的に取り込みます。そうでない場合は、バッチを取り込み、完了します。
サポートされているデータ形式
サポートされている形式は次のとおりです。
サポートされているデータ型
現在、ClickPipesでサポートされているClickHouseのデータ型は次のとおりです。
- 基本数値型 - [U]Int8/16/32/64およびFloat32/64
- 大きな整数型 - [U]Int128/256
- 小数型
- ブール値
- 文字列
- FixedString
- 日付、Date32
- DateTime、DateTime64(UTCタイムゾーンのみ)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- すべてのClickHouse LowCardinality型
- 上記の任意の型(Nullableを含む)を使用するキーと値のあるマップ
- 上記の任意の型(Nullableを含む、1レベル深さのみ)を使用するタプルおよび配列
Kinesis仮想カラム
次の仮想カラムがKinesisストリームに対応しています。新しい宛先テーブルを作成する際に、カラムを追加
ボタンを使用して仮想カラムを追加できます。
名前 | 説明 | 推奨データ型 |
---|---|---|
_key | Kinesisパーティションキー | 文字列 |
_timestamp | Kinesisの近似到着タイムスタンプ(ミリ秒精度) | DateTime64(3) |
_stream | Kinesisストリーム名 | 文字列 |
_sequence_number | Kinesisシーケンス番号 | 文字列 |
_raw_message | 完全なKinesisメッセージ | 文字列 |
_raw_messageフィールドは、完全なKinesis JSONレコードが必要な場合(下流のmaterialized viewをポピュレートするためにClickHouseのJsonExtract*
関数を使用する場合など)に使用できます。このようなパイプの場合、ClickPipesのパフォーマンスを改善するために、すべての「非仮想」カラムを削除することが望ましいことがあります。
制限事項
- DEFAULTはサポートされていません。
パフォーマンス
バッチ処理
ClickPipesはデータをClickHouseにバッチ処理で挿入します。これは、データベース内にパーツを多く作成することを避け、クラスターのパフォーマンス問題を引き起こす可能性があります。
バッチが挿入されるのは、以下のいずれかの条件が満たされたときです。
- バッチサイズが最大サイズ(100,000行または20MB)に達した場合
- バッチが最大時間(5秒)オープンされている場合
遅延
遅延(Kinesisメッセージがストリームに送信され、メッセージがClickHouseで利用可能になるまでの時間)は、Kinesisの遅延、ネットワークの遅延、メッセージのサイズ/形式など、さまざまな要因に依存します。上記のバッチ処理も遅延に影響を与えます。具体的なユースケースをテストして、期待される遅延を理解することを推奨します。
特定の低遅延要件がある場合は、お問い合わせください。
スケーリング
Kinesis用のClickPipesは、水平スケーリングを目的としています。デフォルトでは、1つのコンシューマを持つコンシューマグループを作成します。この設定は、ClickPipeの詳細ビューでのスケーリングコントロールを使用して変更できます。
ClickPipesは、高可用性を持つ可用性ゾーン分散アーキテクチャを提供します。これには、少なくとも2つのコンシューマへのスケーリングが必要です。
実行中のコンシューマの数に関わらず、フォールトトレランスは設計上の特徴です。コンシューマまたはその基盤となるインフラストラクチャに障害が発生すると、ClickPipeは自動的にコンシューマを再起動し、メッセージの処理を続行します。
認証
Amazon Kinesisストリームにアクセスするには、IAM資格情報またはIAMロールを使用できます。IAMロールの設定方法に関する詳細については、ClickHouse Cloudで動作するロールを設定する方法についてのこのガイドを参照してください。