MongoDB向けClickPipesのよくある質問
JSONデータ型の個々のフィールドに対してクエリできますか?
{"user_id": 123} のようにフィールドに直接アクセスするには、ドット記法を使用できます。
{"address": { "city": "San Francisco", "state": "CA" }} のようなネストされたオブジェクトのフィールドに直接アクセスするには、^ 演算子を使用します。
集計する場合は、CAST 関数または :: 構文を使用して、フィールドを適切な型に変換します。
JSON の扱いについて詳しくは、JSON の操作ガイドを参照してください。
ClickHouseでネストされたMongoDBドキュメントをフラット化するにはどうすればよいですか?
MongoDBドキュメントは、デフォルトではネスト構造を保持したまま、ClickHouseにJSON型としてレプリケートされます。このデータをフラット化する方法はいくつかあります。データをカラムにフラット化したい場合は、通常のビュー、materialized view、またはクエリ時アクセスを使用できます。
- 通常のビュー: フラット化ロジックをカプセル化するには、通常のビューを使用します。
- Materialized Views: 小規模なデータセットでは、
FINALmodifier を使用する refreshable materialized view により、データを定期的にフラット化して重複排除できます。大規模なデータセットでは、データをリアルタイムでフラット化するためにFINALを使わないインクリメンタルmaterialized view を使用し、その後クエリ時にデータを重複排除することを推奨します。 - クエリ時アクセス: フラット化の代わりに、ドット記法を使用してクエリ内でネストされたフィールドに直接アクセスします。
詳細な例については、JSON の操作ガイド を参照してください。
パブリック IP を持たない、またはプライベートネットワーク内にあるMongoDBデータベースに接続できますか?
パブリック IP を持たない、またはプライベートネットワーク内にあるMongoDBデータベースへの接続では、AWS PrivateLink をサポートしています。Azure Private Link および GCP Private Service Connect は現在サポートされていません。
MongoDB データベースでデータベース/テーブルを削除するとどうなりますか?
MongoDB からデータベース/テーブルを削除すると、ClickPipes は引き続き動作しますが、削除されたデータベース/テーブルについては以後の変更がレプリケートされなくなります。ClickHouse 内の対応するテーブルは保持されます。
MongoDB CDC コネクタはトランザクションをどのように処理しますか?
トランザクション内の各ドキュメントの変更は、ClickHouse に個別に処理されます。変更は oplog に現れる順序で適用され、コミットされた変更のみが ClickHouse にレプリケートされます。MongoDB のトランザクションがロールバックされた場合、それらの変更は変更ストリームには現れません。
その他の例については、JSON の操作ガイドを参照してください。
resume of change stream was not possible, as the resume point may no longer be in the oplog. エラーはどのように対処すればよいですか?
このエラーは通常、oplog が切り詰められ、ClickPipe が想定した位置から 変更ストリーム を再開できなくなった場合に発生します。この問題を解決するには、ClickPipe を再同期します。再発を防ぐには、oplog の保持期間を延長することを推奨します。MongoDB Atlas、セルフマネージド MongoDB、または Amazon DocumentDB の手順を参照してください。
レプリケーションはどのように管理されますか?
データベース内の変更を追跡するために、MongoDBのネイティブ Change Streams API を使用します。Change Streams API は、MongoDB の oplog (operations log) を利用して、再開可能なデータベース変更ストリームを提供します。ClickPipe は MongoDB の resume token を使用して oplog 内の位置を追跡し、すべての変更が確実に ClickHouse にレプリケートされるようにします。
どの read preference を使用すればよいですか?
どの read preference を使用するかは、具体的なユースケースによって異なります。プライマリノードの負荷を最小限に抑えたい場合は、secondaryPreferred read preference の使用を推奨します。インジェストのレイテンシを最適化したい場合は、primaryPreferred read preference の使用を推奨します。詳細については、MongoDB のドキュメントを参照してください。
MongoDB ClickPipe は分片クラスターに対応していますか?
はい、MongoDB ClickPipe は Replica Set と分片クラスターの両方に対応しています。
MongoDB ClickPipe は Amazon DocumentDB をサポートしていますか?
はい、MongoDB ClickPipe は Amazon DocumentDB 5.0 をサポートしています。詳細は、Amazon DocumentDB ソースセットアップガイドを参照してください。
MongoDB ClickPipe は PrivateLink をサポートしていますか?
AWS の MongoDB (および DocumentDB) クラスターでのみ、PrivateLink をサポートしています。
単一ノードのリレーショナルデータベースとは異なり、MongoDB クライアントは、設定された ReadPreference を有効に機能させるために、レプリカセットの検出に成功する必要がある点に注意してください。そのため、MongoDB クライアントがレプリカセット接続を正常に確立し、接続先のノードが停止した場合に別のノードへ切り替えられるようにするには、クラスター内のすべてのノードで PrivateLink をセットアップする必要があります。
クラスター内の単一ノードへの接続を優先する場合は、ClickPipes のセットアップ時に接続文字列で /?directConnection=true を指定することで、レプリカセットの検出を省略できます。この場合の PrivateLink のセットアップは、単一ノードのリレーショナルデータベースの場合と同様で、PrivateLink を利用する最も簡単な方法です。
レプリカセット接続の場合、MongoDB の PrivateLink は VPC Resource または VPC Endpoint Service のいずれかでセットアップできます。VPC Resource を使用する場合は、GROUP リソース設定に加えて、クラスター内の各ノードごとに CHILD リソース設定を作成する必要があります。VPC Endpoint Service を使用する場合は、クラスター内の各ノードごとに個別の Endpoint Service (および個別の NLB) を作成する必要があります。
詳細については、AWS PrivateLink for ClickPipes のドキュメントを参照してください。支援が必要な場合は、ClickHouse Support までお問い合わせください。