守る:バックアップと権限
バックアップは「戻せること」まで確かめる
データベースは、機械の故障や操作ミス、外部からの攻撃でデータを失うことがあります。そのため定期的に バックアップ(写し)を取ります。
大事なのは、取っていることではなく 実際に戻せること です。いざ戻そうとしたら写しが壊れていた、戻すのに丸1日かかった、という失敗はよくあります。年に何回か、別の環境に戻してみる練習(復元テスト)をしておきます。
権限は「必要な分だけ」
データベースでは、人やシステムごとに、できることを細かく決められます。
- 見るだけ(SELECT だけできる)
- 行の追加・書き換えができる
- テーブルを作る・消すなど、形そのものを変えられる
分析をする人には「見るだけ」を渡し、給与や個人情報の列は見せない、というように 必要な分だけ 渡すのが基本です。これを 最小権限 と呼びます。間違えても壊せない状態にしておけば、第4章の WHERE の書き忘れも被害になりません。
本番と練習場を分ける
実際の業務で使うデータベースを 本番環境、試すためのものを 検証環境 と呼びます。新しい SQL や仕組みの変更は、まず検証環境で試してから本番に持っていきます。
速くする:インデックス(索引)
何百万行もある表から「請求番号 INV-102」を探すとき、1行目から順に見ていくと時間がかかります。そこで、本の巻末の索引のように「この値はこの辺りにある」という目次を別に作っておきます。これを インデックス と呼びます。
よく WHERE の条件に使う列や、JOIN でつなぐ列にインデックスを作ると、取り出しが大きく速くなります。ただし、行を追加・更新するたびに索引も直す必要があるので、何にでも作ればよいわけではありません。画面が急に遅くなったときは、まずインデックスの有無が確認されます。
この章のポイント
- バックアップは、戻せることを確かめて初めて意味がある
- 権限は必要な分だけ。本番と検証環境を分ける
- インデックスは本の索引。取り出しは速くなるが、書き込みの手間は増える