【入門編】 オンラインスキーマ更新 – Cloud Spanner

こんにちは!クラウドの世界へようこそ。
今日は、世界中の巨大なシステムを裏から支えている「Cloud Spanner(クラウド スパンナー)」の、ちょっと驚くような魔法についてお話ししますね。

データベースの世界では、長年「お店を開けたまま(システムを止めずに)、お店のレイアウトをガラリと変えるのは至難の業」とされてきました。しかし、Cloud Spannerはこの常識をいとも簡単に覆してしまいます。

今回は、Cloud Spannerの「オンラインスキーマ更新」について、一緒に紐解いていきましょう。
ここをクリアすれば、Cloud Spannerの本質と凄さがぐっと身近になりますよ。それでは、さっそく始めましょう!

—

1. お店を営業しながら改装工事をするようなもの?

まず、「スキーマ」という言葉に馴染みがないかもしれませんね。
スキーマとは、いわば「データの設計図」や「棚のレイアウト」のようなものです。

例えば、ユーザーを管理する表(テーブル)があって、「名前」と「メールアドレス」という引き出し(カラム)だけを作っていたとします。後になって、「あ、やっぱり『電話番号』の引き出しも追加したいな」と思ったとき、通常のデータベースだとどうなるでしょうか?

多くの場合、安全のために「すいません、今から1時間ほどお店を閉めて改装工事をします!」と、システムを一時停止(メンテナンス)しなければなりませんでした。

しかし、Cloud Spannerは違います。
「お客さんに買い物をしてもらったまま、大工さんが店内に入って新しい棚をスッと取り付ける」ような芸ワザをやってのけます。これが、今回お話しする「オンラインスキーマ更新」です。システムを止める必要(ダウンタイム)は、一切ありません。

—

2. どうやって裏側で動いているの?(非同期処理の魔法)

「お店を開けたままどうやって工事するの?」と不思議に思いますよね。

私たちが「このテーブルに新しい列を追加して!」とCloud Spannerにお願い(DDLの実行)をすると、Spannerは「非同期(ひしゅき)処理」という方法で裏側でこっそり作業を進めてくれます。

  • 同期処理(普通のイメージ): お願いしたその場で作業が完了するまで、ずっと待ちぼうけを食らう状態。
  • 非同期処理(Spannerのイメージ): 「承知いたしました!裏でやっときますね!」と即座に返事をしてくれて、裏の作業員たちが世界中に散らばったデータを少しずつ安全に書き換えていく状態。

私たちが「お願い完了!」と爽やかにコーヒーを飲んでいる間に、裏ではCloud Spannerの頑強なエンジンが、何億行もあるデータ全体にそっと新しい設計図を適用し続けているのです。このスマートさ、痺れますよね。

—

3. 進捗はどうやって確認するの?

「裏でこっそりやってくれるのはありがたいけど、ちゃんと進んでるのか不安……」
大丈夫、そこは天下のCloud Spannerです。工事の進捗具合をいつでも確認できる仕組みがちゃんと用意されています。

Google Cloudの管理画面(コンソール)やコマンドを使うと、今スキーマの変更がどれくらい進んでいるかをパーセンテージなどで覗き見ることができます。

— 【イメージ】スキーマ変更の進捗を確認するような操作
— ※実際のSpannerでは、情報スキーマ(INFORMATION_SCHEMA)等から状態を確認できます
SELECT
TABLE_NAME,
COLUMN_NAME,
— 実際の進捗ステータスをチェックするクエリをここに書きます
FROM
INFORMATION_SCHEMA.COLUMNS;

大きなデータの塊(テーブル)であっても、職人が丁寧に仕上げるように確実に進んでいくので、進捗バーが100%になったときの達成感はなかなかのものです。

—

4. 知っておくべき「お約束」(制限事項)

なんでもできそうなCloud Spannerのオンラインスキーマ更新ですが、チート級の魔法にもいくつか「お約束(制限事項)」があります。ここを知っておくと、実務で絶対に慌てなくなりますよ。

1. 一度にできる変更は控えめに
「あれもこれも」と同時に大量の変更を一度にお願いすると、裏のシステムが混乱してしまいます。基本は「1回につき1つの大きな変更(または関連する小さな変更のセット)」を心がけましょう。
2. 巨大なデータに対する変更は時間がかかる
データが数千億行あるような超巨大テーブルの場合、安全最優先で作業するため、設計図の浸透には数分〜数十分かかることがあります。「エラーかな?」と焦らず、先ほどの進捗確認をしながらおおらかに待ちましょう。
3. 削除系は慎重に
列(カラム)や表(テーブル)を「消す」操作もオンラインでできますが、消したデータは二度と戻ってきません。「営業中の取り扱い注意」の看板を心の中に掲げて実行してくださいね。

—

おわりに

いかがでしたでしょうか?
Cloud Spannerの「オンラインスキーマ更新」は、止まらないシステムを求められる現代のWebサービスにおいて、なくてはならない最強の武器です。

「システムを止めずに進化させ続けられる」という安心感を手に入れたあなたは、もう立派なCloud Spanner使いの第一歩を踏み出しています。

ここをクリアできれば、Spannerの基本はバッチリマスターできたも同然です!ぜひ自信を持って、次のステップへ進んでいきましょう。応援しています!

コメント

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