【入門編】 行削除ポリシー – Cloud Spanner

やあ。Cloud Spannerの世界へようこそ。
世界中のエンジニアが「究極のデータベース」と呼ぶこのSpannerだけど、実はその強さは「巨大なデータをいかに整理整頓するか」という点にも隠されているんだ。

今日は、その整理整頓の強い味方、「行削除ポリシー(TTL:Time To Live)」について話そう。

専門用語を並べるのは簡単だけど、まずは君の身近なものに例えてみるね。

—

「期限切れのメモ」をどう処理する?

君のデスクの上に、たくさんの付箋(メモ)が貼ってあると想像してみてほしい。
「今日のランチの予約」「3日後の会議の資料」「1ヶ月前の古いメモ」……。

もし、この付箋を全部自分の手で「これは期限が切れたから捨てよう」と選別していたら、仕事なんて終わらないよね? しかも、もし捨て忘れたらデスクはどんどん散らかっていく。

この「古くなったメモを、誰にも言わずに勝手に片付けてくれる専属の秘書」が、Spannerにおける「行削除ポリシー(TTL)」なんだ。

行削除ポリシー(TTL)って何?

Cloud Spannerは、銀行のシステムに使われるほど「間違いが許されない」非常に強力なデータベースだ。でも、あまりにデータが増えすぎると、管理が大変になるよね。

例えば、ログデータや一時的なメッセージなど、「一定期間経ったらもう必要ない」というデータがあるはずだ。これらをプログラムでいちいち消すのは、実はすごく大変で、ミスも起きやすい。

そこで登場するのがTTL。
「このテーブルのデータは、期限が来たら勝手に消してね」と一度設定してしまえば、あとはSpannerが自動的にバックグラウンドで掃除してくれるんだ。

どうやって設定するの?

難しいコードは一旦置いておいて、考え方だけ見てみよう。
基本的には、テーブルを作る時に「このデータはいつ消えるべきか」というルールを添えるだけだよ。

— テーブルを作る時に、TTLの設定を付け加える例
CREATE TABLE Logs (
LogId INT64 NOT NULL,
Message STRING(MAX),
CreatedAt TIMESTAMP OPTIONS (allow_commit_timestamp = true),
) PRIMARY KEY (LogId),
— ここが重要:CreatedAtから30日経ったら自動削除するよ!という設定
ROW DELETION POLICY (OLDER_THAN(CreatedAt, INTERVAL 30 DAY));

  • `OLDER_THAN`: 「これより古いものは」という意味。
  • `INTERVAL 30 DAY`: 「30日経過したら」という期間の指定。

これだけで、君のデータベースは常に「最新の状態」に保たれるようになる。素晴らしいと思わないかい?

なぜこれが「伝説級」に重要なの?

ここからは、ちょっとだけプロの話をしよう。

普通、データベースで大量のデータを消そうとすると、システム全体が重くなってしまうことが多いんだ。でも、SpannerのTTLは違う。

Spannerは、世界中に分散して動いている超巨大なコンピュータ群だ。TTLは、その裏側(バックグラウンド)でひっそりと、システム全体の動きを邪魔しないように、少しずつ、丁寧に掃除してくれる。

つまり、君が「データを消さなきゃ!」と焦る必要はまったくないし、システムが止まる心配もしなくていい。これが、世界最高峰のデータベースたる所以(ゆえん)なんだ。

—

今日持ち帰ってほしいポイント

1. 「整理整頓」を自動化しよう: 人間の手でデータを消すのは、時代遅れかつリスクが高い。
2. TTLは専属の秘書: 設定さえすれば、期限切れのデータを自動で綺麗にしてくれる。
3. システムへの負荷を最小限に: SpannerのTTLは、裏側で賢く動くから、本番環境でも安心。

ここをクリアできれば、君はもうCloud Spannerの「データ管理の入り口」に立っているよ。

最初は難しく感じるかもしれないけれど、仕組みさえ分かってしまえば、Spannerは君の最強の相棒になる。何かわからないことがあれば、いつでも聞いてくれ。君のエンジニアとしての冒険を、これからも応援しているよ。

さあ、次はどんな機能を深掘りしようか?

コメント

タイトルとURLをコピーしました