どうも、バックエンドのプログラマーになろうとしているものです。
さて今回はデータベースについてちょっと勉強したことがあるので、そのことについて簡単にまとめておきます。結局データベースがないと何が困るのかという部分です。
データベースがないと何が困るのか
大量のデータの中から必要なものを返せない
まずデータベースがないと大量のデータの中から目的のデータを探してくるのが、大変になります。
例えばデータの数が10とかそんな程度ならなんの問題もありませんが、データ数が100万とかなってきたりした場合に、レコードの全件検索をしてるようだと相当な時間がかかってしまいます。
そこでデータベースの出番です。詳しく述べませんが「インデックス」という技術を使えば、あっという間に必要なデータを取り出してくることができます。
大量のデータを扱えない
データベースなしだと、シンプルに大量のデータを扱うのが難しいです。
例えば自分のパソコンでもデータを入れて扱うことはできますが、そもそもそこまで容量も大きくないですし、高速に処理させようと思うと、パソコンのメモリを使うことになります。
当然メモリは大きくないので、すぐに処理速度が遅くなって行ってしまいます。
障害が起きたときの復旧が難しい
これがデータベースを使う際の最も重要な理由かと思いますが、データを復旧するのが簡単だということです。
もし何か障害が起きた時にデータを消失した場合、データを復旧する作業が必要になりますが、データベースを使わないとこれが相当難しいです。
当然、復元して行くことになりますし、残っているデータをサルベージして行くことになるのですが、相当な時間がかかりますし、そもそも消えてしまうデータも多くなるでしょう。
そんな時にデータベースを使っていれば、かなり容易にデータを復旧できます。またデータベースのほとんどに標準装備されているトランザクションや、レプリケーションといった方法によって、突然の障害であってもデータが改変されることから守ってくれます。
並列性の制御がしにくい
これは大規模なサービスになってくると起こる問題ですが、ユーザーが同じファイルに同時にアクセスしてきた時に排他制御が難しいという部分があります。
もしデータベースを使っていないと、プログラムでそういった排他制御処理を記述することになってなかなかな手間になってしまいます。
しかしデータベースを使えばそういった排他制御もやってくれます。ワンダフル。
データの整合性を保証しにくい
これは並列性の制御とも強く関連している要素ですが、データそのものの不整合が起きないような仕組みが大切です。
同じファイルを同じタイミングで別のユーザーが更新した時に、どんな処理にするのかということですね。これらもデータベースを使っていれば、バッチリよきに計らってくれます。