データベース ・ Chapter 1

データベースとは何か

記事 ・ 冒頭を無料公開中

このコースでは、データベースを扱います。Webアプリの裏側で、データを保存し、探し出し、守り続けている仕組みです。最初の章では、SQLの文法に入る前に「そもそもなぜデータベースというものが存在するのか」を固めます。ここが腹落ちしていると、この先の全部の文法に理由が見えるようになります。

アプリのデータは、どこに置く?

たとえば、ToDoアプリを考えます。タスクのデータをプログラムの中の配列に持っているだけだと、重大な欠点があります——アプリを閉じると、タスクが全部消える。データは実行中のメモリの上にしかないので、プログラムが終われば消滅します。

「ではファイルに保存すれば?」——正しい方向です。タスクをJSONファイルに書き出せば、閉じても残ります。個人の小さなツールなら、実際それで十分なこともあります。しかし、アプリを複数の人が使うサービスに育てようとした瞬間、ファイル保存は限界を迎えます。3つの壁に当たるからです。

壁① 同時に書くと、壊れる

あるECサイトで、最後の在庫1個の商品を、AさんとBさんが同時に買ったとします。ファイル方式だとこうなります——Aさんの処理がファイルを読む(在庫1)。ほぼ同時にBさんの処理もファイルを読む(在庫1)。Aさんの処理が「在庫0」を書き込む。Bさんの処理も「在庫0」を書き込む。2人とも購入成功、実際の在庫はマイナス1個の大事故です。ファイルは「同時に読み書きする人が大勢いる」状況を守ってくれません。データベースは、この同時アクセスの交通整理を仕組みとして引き受けます。

壁② 探すのが、遅い

ユーザーが100万人いるサービスで、「田中さんのデータ」をJSONファイルから探すには、原理的にファイルを頭から読んでいくしかありません。100万件を毎回全部読む——1回の検索のたびに、です。データベースは、データの持ち方と探し方を最初から工夫してあるので(このコースの後半で仕組みに触れます)、100万件から狙った1件を一瞬で取り出せます。「大量のデータから、条件に合うものを速く探す」は、データベースの最も得意な仕事です。

壁③ 途中で止まると、中途半端が残る

銀行の送金を考えます。「Aの残高を1万円減らす→Bの残高を1万円増やす」の2手です。ファイル方式で、1手目を書き込んだ直後にプログラムが落ちたら——Aから1万円が消えただけの世界が残ります。データベースには「2手をセットで成功させる。途中で失敗したら、全部なかったことにする」という仕組みがあります(トランザクションと呼びます。このコースでは深入りしませんが、「中途半端を残さない」がデータベースの約束だと覚えてください)。

このチャプターの続きは受講生限定です

本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。

料金プランを見る