Kafka はイベントを保持し、設定可能な期間またはサイズの間、パーティションログにイベントを保持します。消費後もイベントが削除されないため、リプレイと複数のコンシューマーが可能になります。保持とログ管理の理解は、Kafkaを使用し、ストレージを管理する上で重要です。
保持 — イベントは保持される
Unlike traditional queues, Kafka RETAINS events (doesn't delete on consumption):
→ events stay in the partition log for a configured RETENTION period (e.g. 7 days) or
SIZE limit
→ enables: REPLAY (re-read history), multiple consumers reading independently, late
consumers catching up
→ after retention expires → old segments are deleted (or compacted)
→ Kafka is a durable LOG, not just a transient queue
保持設定
→ TIME-based → retention.ms (keep events for N time, e.g. 7 days)
→ SIZE-based → retention.bytes (keep up to N bytes per partition)
→ configured per topic; events past the limit are removed (oldest first)
→ choose based on replay needs, consumer lag tolerance, and storage capacity
ログコンパクション
LOG COMPACTION → an alternative retention mode: keep the LATEST value per KEY (not all events):
→ retains the most recent record for each key, removing older ones for that key
→ useful for: changelog/state topics (the current state per key matters, not full history)
→ e.g. a topic of "user → latest profile" → keep the latest per user
→ vs time/size retention (keep recent history) — compaction keeps latest-per-key forever
なぜ重要なのか
Kafkaのデータ保持とストレージを理解することは価値があります。保持はKafkaの特徴的で重要な機能であり、機能とストレージに影響を与えるため、Kafkaを使用および運用する際の関連知識です。
イベント保持(消費後もパーティションログにイベントを保持すること)はKafkaが従来のキューと異なる重要な差別化要因であり、Kafkaの特徴的な機能を実現します。
保持を理解する — Kafkaは設定された期間またはサイズの間イベントを保持し、消費時に削除されないこと、リプレイ(履歴の再読み込み)、複数のコンシューマーが独立して読み取る、遅れたコンシューマーがキャッチアップできることを実現することを理解することは、Kafkaが一時的なキューではなく永続的なログである理由、またそのリプレイと複数コンシューマー機能の仕組みを明確にします。
保持設定を理解する — 時間ベース(retention.ms、例:7日)およびサイズベース(retention.bytes)の保持、トピックごとの設定、リプレイニーズ、コンシューマーラグ耐性、ストレージ容量に基づいた選択は、データ保持期間と関連ストレージを管理するための重要な実践知識です。
ログコンパクションを理解する — すべてのイベントではなくキーごとの最新値を保持する代替保持モード。変更ログ/状態トピックに有用です。現在の状態がキーごとに重要な場合(「ユーザー→最新プロフィール」など、ユーザーごとの最新値を保持)です。これはKafkaの特徴的で価値のある機能であり、状態指向トピック用で、時間/サイズ保持と対比されます。
保持とコンパクションを理解することは、Kafkaの機能(リプレイ、状態トピック)を使用し、ストレージを管理する上で重要です。
これらの概念は機能(コンシューマーが読み取ってリプレイできる内容)と運用(ストレージ管理)の両方に影響を与えます。
保持はKafkaの特徴的で重要な機能(リプレイと複数のコンシューマーを実現し、キューと区別)であり、機能とストレージに影響を与えます。保持設定とログコンパクションの理解はKafkaの機能を使用し、ストレージを管理する際に関連しています。ログコンパクションは状態トピック向けの価値のある機能であり、Kafkaを効果的に使用および運用する際に重要です。したがって、Kafkaのデータ保持とストレージを理解することは価値ある、実践的に関連した知識です — Kafkaの特徴的な機能(リプレイ、複数のコンシューマー)とストレージ管理の中核的な知識であり、ログコンパクションは状態トピック向けの価値のある機能です。
