【入門編】 カラムとデータ型 – Cloud Spanner

やあ。Cloud Spannerの世界へようこそ。
世界中のエンジニアが「究極のデータベース」と呼ぶこのシステムを学ぼうとしている君に、まずは拍手を送りたい。

多くの人は「Spannerは難しい」と言って身構えるけれど、実はその本質はとてもシンプルだ。今日は、Spannerという巨大な図書館を管理するための「情報の書き込み方(データ型)」について、少しだけ肩の力を抜いて話そう。

—

1. 「データ型」とは、情報の仕分けボックス

Cloud Spannerという巨大な図書館には、何十億冊もの本(データ)が並んでいる。この本を整理整頓するために、「どんな種類の情報を入れるか」を決めるのがデータ型という箱なんだ。

この箱を間違えると、後で情報を探し出すときに大惨事になる。まずは代表的な箱を見ていこう。

・数値を入れる箱

  • INT64: 整数(1, 100, -50など)を入れる箱。数え上げやID管理に使うよ。
  • FLOAT64: 小数点を含む数字を入れる箱。科学計算や確率など、少しアバウトな精度が必要な時に使う。
  • NUMERIC: これが重要。「絶対に誤差が許されないお金の計算」にはこれを使う。金融システムでFLOAT64を使うのは禁忌だ。覚えておいてね。

・文字や情報の箱

  • STRING: 文字列。名前や住所など。
  • BYTES: 画像データや暗号化されたデータなど、「人間が直接読む必要のないバイナリデータ」を入れるための箱。
  • BOOL: 「はい」か「いいえ」か。スイッチのような箱だね。

・時間と空間の箱

  • DATE: カレンダーの日付。
  • TIMESTAMP: 「いつ」起きたかという、秒単位(あるいはそれ以下)の精密な時刻。

・最近のトレンド

  • JSON: これがSpannerの柔軟性を支えている。構造が決まっていないデータを「とりあえず丸ごと放り込む」ための便利な箱だ。

—

2. 「ARRAY」という魔法の小箱

Spannerを使いこなすエンジニアが必ず愛用するのが ARRAY(配列) だ。

例えば、「一人のユーザーが持っている複数のメールアドレス」を管理したいとする。普通なら別のテーブルに分けるけれど、SpannerならARRAYを使って一つのセルにまとめて入れられる。

— ユーザーテーブルにメールアドレスをARRAYで格納する例
CREATE TABLE Users (
UserId INT64 NOT NULL,
EmailList ARRAY — 複数のメールを一つの箱に入れる
) PRIMARY KEY (UserId);

ここが凄腕のポイント:
ARRAYを使うと、データをわざわざ別の場所に探しに行く必要がなくなる。読み込み速度が爆速になるんだ。ただし、あまりに大量のデータを一つのセルに詰め込みすぎると、整理整頓ができなくなるから「ほどほどに」が鉄則だよ。

—

3. 初学者がつまずきやすい「制限」という名のルール

Spannerのデータ型には、一つだけ守らなければならない「鉄の掟」がある。

「サイズ制限」を意識すること。

例えば、`STRING(MAX)`と書けば何でも入りそうに見えるけれど、Spannerには「一つの行(レコード)全体で保持できるデータ量」に物理的な上限がある(10MBまで)。

  • 初心者の罠: 「とりあえず全部STRING(MAX)にしておけば安全だろ?」
  • プロの回答: 「必要なサイズ分だけ確保する。無駄な領域は図書館のスペースを食いつぶすだけだ。」

最初から「名前なら50文字で十分だよね」と設計する習慣をつけること。これが、のちのち君のシステムが爆発的に成長したときに、足元をすくわれないための秘訣だよ。

—

まとめ:ここさえ押さえれば大丈夫!

1. 数値は適材適所: 金額なら`NUMERIC`、IDなら`INT64`。
2. ARRAYを活用せよ: 関連する情報を一つにまとめると爆速になる。
3. 箱のサイズは賢く決める: 無制限(MAX)に頼らず、予測して設計する。

どうだい? データ型というのは、単なるルールではなく「どうやってデータを効率よく出し入れするか」というパズルのようなものなんだ。

まずは小さなテーブルを作って、いろんな型のデータを投げ込んでみてほしい。失敗してもいい。Spannerは君の挑戦を何億回でも受け止める準備ができているからね。

次は、「主キー(Primary Key)」という図書館のインデックスの話をしようか。準備ができたらまたおいで。君の成長を待っているよ。

コメント

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