最新の値のみを保持する
すべての Cloud Bigtable クライアント ライブラリでは、フィルタを使用して特定の行と列の最新の値を読み取ることができます。場合によっては、古いバージョンのデータを読み取る必要がないこともあります。必要のない古いデータを格納するための料金が発生しないように、このページの戦略を使用してデータを削除できます。
このページを読む前に、ガベージ コレクションの概要をご覧ください。
ゼロのタイムスタンプ
列ファミリーの列にある最新の値のみを読み取って、ガベージ コレクションによって古いセルが削除されるのを待ちたくない場合は、列ファミリーにデータを書き込むたびにタイムスタンプをゼロ(1970-01-01 00:00:00 UTC
)に設定します。この場合、新しい書き込みによって古い書き込みが直ちに非表示になるため、読み取りでは各列につき 1 つの値が常に返されます。それでも、前のデータが書き込まれてからの経過期間によっては、古いセルによるテーブル スペースの消費が停止し、ストレージ コストが発生しなくなるまで、コンパクションを待つことが必要な場合があります。
ゼロ タイムスタンプのメリット
- 列の最新の値を 1 つしか読み取ることができないため、データの読み取り時にフィルタを使用する必要はありません。
- この場合、既存のセルを上書きするたびに古いデータが削除されるため、ガベージ コレクション ポリシーを設定する必要はありません。
ゼロ タイムスタンプのデメリット
- セルの以前の値はすぐに上書きされ、取得できません。
- タイムスタンプは日付と時刻ではないため、値の古さを判断するなど、他のユースケースにセルのタイムスタンプを使用することはできません。回避策として、実際のタイムスタンプを別の列に書き込めますが、そうすると格納するデータ量が増えます。
次のステップ
- セルレベルの TTL をシミュレートする方法を探る。
- 連番のタイムスタンプの場合のガベージ コレクションについて読む。
- ガベージ コレクションの構成方法を示すコードサンプルを確認する。
- ストレージ料金の詳細を確認する。