Azure Event Hubs でのログ圧縮
ログ圧縮とは、イベント キー ベースの保持を使用して Event Hubs でデータを保持する方法です。 既定では、各イベント ハブ/Kafka トピックは、保持期間の有効期限が切れた時点でイベントが消去される、時間ベースの保持ポリシーまたは "削除" クリーンアップ ポリシーを指定して作成されます。 粒度が粗い時間ベースのリテンション期間を使用せずに、イベント キー ベースの保持メカニズムを使用することで、イベント ハブまたは Kafka トピックの各イベント キーの最後の既知の値を Event Hubs が再トレーニングするようにできます。
Note
ログ圧縮機能は * Basic サービス レベルではサポートされていません。
以下のイメージに示されているように、(イベント ハブ パーティションの) イベント ログには、同じキーを持つ複数のイベントが含まれる場合があります。 圧縮されたイベント ハブを使用している場合、Event Hubs サービスは古いイベントの消去を処理し、特定のイベント キーの最新イベントのみを保持します。
圧縮キー
各イベントで設定したパーティション キーが圧縮キーとして使用されます。
廃棄標識
クライアント アプリケーションは、圧縮ジョブ中に削除されるイベント ハブの既存のイベントにマークを付けることができます。 これらのマーカーは "廃棄標識" と呼ばれます。 クライアント アプリケーションは、既存のキーと null
イベント ペイロードを指定して新しいイベントを送信することで廃棄標識を設定します。
ログ圧縮のしくみ
ログ圧縮は、各イベント ハブ/Kafka トピック レベルで有効にすることができます。 圧縮された記事に、任意のサポート プロトコルからイベントを取り込むことができます。 Azure Event Hubs サービスは、圧縮されるイベント ハブごとに圧縮ジョブを実行します。 圧縮ジョブは、特定のイベント キーの最新のイベントのみを保持することで、各イベント ハブ パーティション ログをクリーンアップします。
特定の時点で、圧縮されるイベント ハブのイベント ログには、"クリーンアップされた" 部分と "ダーティ" 部分が含まれる可能性があります。 クリーン部分には圧縮ジョブによって圧縮されたイベントが含まれ、ダーティ部分はこれから圧縮されるイベントで構成されています。
圧縮ジョブの実行は Event Hubs サービスによって管理されるため、ユーザーはそれを制御できません。 そのため、圧縮を開始するタイミングと、特定の圧縮されるイベント ハブを圧縮する速度は、Event Hubs サービスが決定します。
圧縮の保証
Event Hubs のログ圧縮機能では、次のことが保証されます。
- メッセージの順序は、常にキー レベルとパーティション レベルで維持されます。 圧縮ジョブはメッセージの順序を変更せず、同じキーの古いイベントを破棄するだけです。
- メッセージのシーケンス番号とオフセットが変更されることはありません。
- イベント ログの先頭から処理を開始したコンシューマーには、少なくともすべてのイベントの最終状態が書き込まれた順序で提示されます。
- コンシューマーは、[廃棄標識の保持時間 (時間)] で定義された時間に対して、削除済みとしてマークされたイベントを引き続き表示できます。
ログ圧縮のユース ケース
ログ圧縮は、更新可能なイベントの同じセットをストリーミングするシナリオで便利です。 圧縮されるイベント ハブには最新のイベントのみが保持されるため、ユーザーがイベント ストレージの増大について心配する必要はありません。 そのため、ログ圧縮は、ストリーム処理アプリケーションやイベント キャッシュのためにテーブルでイベントを維持する変更データ キャプチャ (CDC) などのシナリオで一般的に使用されます。
クォータと制限
制限 | Basic | Standard | Premium | 専用 |
---|---|---|---|---|
圧縮されたイベント ハブのサイズ | 該当なし | パーティションあたり 1 GB | パーティションあたり 250 GB | パーティションあたり 250 GB |
その他のクォータと制限については、Event Hubs のクォータと制限に関する記事を参照してください
次のステップ
Event Hubs でログ圧縮を使用する方法については、「ログ圧縮を使用する」を参照してください