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

Amazon KinesisとClickHouse Cloudの統合

前提条件

ClickPipesの紹介に目を通し、IAM認証情報またはIAMロールを設定しました。ClickHouse Cloudと連携するロールの設定に関する情報は、Kinesisロールベースアクセスガイドを参照してください。

最初のClickPipeを作成する

  1. ClickHouse CloudサービスのSQLコンソールにアクセスします。
  1. 左側のメニューからData Sourcesボタンを選択し、「ClickPipeの設定」をクリックします。
  1. データソースを選択します。
  1. ClickPipeの名前、説明(任意)、IAMロールまたは認証情報、及び他の接続の詳細を提供してフォームに記入します。
  1. Kinesisストリームと開始オフセットを選択します。UIは選択したソース(Kafkaトピックなど)からのサンプルドキュメントを表示します。また、ClickPipeのパフォーマンスと安定性を向上させるために、KinesisストリームのEnhanced Fan-outを有効にすることもできます(Enhanced Fan-outの詳細はこちらにあります)。
  1. 次のステップでは、新しいClickHouseテーブルにデータを取り込むか、既存のテーブルを再利用するかを選択できます。画面の指示に従ってテーブル名、スキーマ、および設定を変更してください。上部のサンプルテーブルでリアルタイムの変更プレビューを見ることができます。

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

  1. あるいは、既存のClickHouseテーブルにデータを取り込むことに決めることもできます。その場合、UIはソースのフィールドを選択した宛先テーブルのClickHouseフィールドにマッピングできるようにします。
  1. 最後に、内部ClickPipesユーザーの権限を設定できます。

権限: ClickPipesは、宛先テーブルにデータを書き込むための専用ユーザーを作成します。この内部ユーザーのロールをカスタムロールまたは定義されたロールのいずれかから選択できます。

  • フルアクセス: クラスターへのフルアクセスを持ちます。これは、宛先テーブルにMaterialized ViewやDictionaryを使用する場合に役立ちます。
  • 宛先テーブルのみ: 宛先テーブルに対するINSERT権限のみを持ちます。
  1. 「セットアップ完了」をクリックすると、システムがClickPipeを登録し、概要テーブルに表示されます。

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

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

  1. おめでとうございます! 最初のClickPipeを正常にセットアップしました。これがストリーミングClickPipeの場合、遠隔データソースからリアルタイムでデータを取り込むために継続的に実行されます。そうでない場合は、バッチを取り込み完了します。

サポートされるデータ形式

サポートされている形式は次のとおりです:

サポートされるデータ型

現在ClickPipesでサポートされているClickHouseのデータ型は次のとおりです:

  • 基本的な数値型 - [U]Int8/16/32/64およびFloat32/64
  • 大きな整数型 - [U]Int128/256
  • 小数型
  • ブール型
  • 文字列
  • 固定文字列
  • 日付、Date32
  • DateTime、DateTime64(UTCタイムゾーンのみ)
  • Enum8/Enum16
  • UUID
  • IPv4
  • IPv6
  • すべてのClickHouse LowCardinality型
  • 上記の型(Nullableを含む)を使用したキーと値のあるマップ
  • 上記の型(Nullableを含む、一階層の深さのみ)を使用した要素のタプルと配列

Kinesis仮想カラム

Kinesisストリームのためにサポートされている仮想カラムは次のとおりです。新しい宛先テーブルを作成する際には、Add Columnボタンを使用して仮想カラムを追加できます。

名前説明推奨データ型
_keyKinesisパーティションキー文字列
_timestampKinesisおおよその到着タイムスタンプ(ミリ秒精度)DateTime64(3)
_streamKinesisストリーム名文字列
_sequence_numberKinesisシーケンス番号文字列
_raw_message完全なKinesisメッセージ文字列

_raw_messageフィールドは、完全なKinesis JSONレコードが必要な場合(例:ClickHouseのJsonExtract*関数を使用して、下流のMaterialized Viewを構築する場合)に使用できます。このようなパイプの場合、すべての「非仮想」カラムを削除することで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と連携するロールの設定に関する情報をこちらのガイドを参照してください。