このトピックでは、Apache Paimon (Paimon) のデータレイテンシと一貫性について説明します。
スナップショットファイル
スナップショットファイルは、Paimon テーブルのデータへのアクセスを提供します。スナップショットファイルは、特定の時点における Paimon テーブルのデータをキャプチャします。異なる時点で生成されたスナップショットファイルを使用して、ストリーミングモードでのコンシューマーオフセットを変更し、バッチモードでのタイムトラベル機能を実装できます。
Paimon テーブルのスナップショットファイルとその作成時間のクエリ方法については、「スナップショットテーブル」を参照してください。
スナップショットファイルは、Paimon テーブルからデータを使用するために使用されます。デフォルトでは、スナップショットファイルは削除されるまで 1 時間保持されます。保持期間が非常に短いか、消費速度が遅い場合、スナップショットファイルは使用中に削除される可能性があり、エラーが発生します。前述の問題を解決するには、スナップショットファイルの保持期間を変更するか、コンシューマー ID を指定するか、Paimon テーブルのパフォーマンスを最適化します。
レイテンシ
Paimon テーブルにデータが書き込まれているとき、ライターはデータをメモリと一時ファイルにキャッシュします。Flink デプロイメントがチェックポイントをトリガーした後、ライターはデータをコミットしてスナップショットファイルを生成します。ストリーミングモードでは、ダウンストリームコンシューマーはスナップショットファイルのリストをリッスンし、検出された最新のスナップショットファイルからのみデータを読み取ります。
データレイテンシとは、データの書き込みとデータの消費の間の遅延を指します。データレイテンシは、スナップショットファイルが生成される頻度によって異なります。Flink デプロイメントでバックプレッシャーが発生しない場合、スナップショットファイルは各チェックポイントで生成されます。これは、Paimon テーブルのデータレイテンシがチェックポイント間隔と等しいことを意味します。チェックポイント間隔が非常に小さい場合、Flink デプロイメントのパフォーマンスに影響を与える可能性があることに注意してください。チェックポイント間隔を 1 ~ 10 分の値に設定することをお勧めします。ビジネス要件に基づいて、読み取りと書き込みの効率を向上させるために、範囲内で間隔を増やすことができます。
一貫性
Paimon は、2 フェーズコミットプロトコルを使用してデータをアトミックにコミットします。2 つの Flink デプロイメントを使用して Paimon テーブルに同時にデータを書き込む場合は、次の点に注意してください。
同じバケットを変更しないことをお勧めします。これにより、2 つのデプロイメントで同時コミットが可能になり、順次一貫性が確保されます。
同じバケットを変更する場合、Paimon はフェイルオーバーをトリガーしてデータの競合を解決し、スナップショット分離のみを保証します。これにより、データの変更が失われることはありませんが、Paimon テーブルの最終状態には両方のデプロイメントからのコミットが含まれる場合があります。