データベースとは何か
データベースは、アプリが使うデータを、保存、検索、更新しやすい形で管理するまとまりです。利用者、本、注文、投稿など、増えたり書き換わったりする情報を、決めた構造とルールで扱います。
日常会話では、保存されたデータそのものと、それを管理するDBMSというソフトウェアをまとめて「データベース」と呼ぶことがあります。
一文でいうと
データベースとは、アプリのデータを継続して保存し、必要な条件で読み書きするための仕組みです。
リレーショナルデータベースでは、データを表に似たテーブルへ置き、行と列で管理します。PostgreSQLの公式資料では、各テーブルは同じ名前の列を持つ行の集まりとして説明されています。一方で、すべてのデータベースが表形式とは限りません。
個人開発のどこで登場するか
アプリを閉じた後も情報を残したいときや、多数の記録から条件に合うものを探したいときに登場します。たとえば読書記録アプリなら、次のようなデータを扱います。
本のID、題名、読了日
利用者のIDと表示名
どの利用者がどの本を登録したか
作成日時と更新日時
画面に表示する順番や検索条件が増えるほど、ファイルへ文字列を追加するだけでは整合性を保ちにくくなります。データベースは、検索や更新に加えて、重複を防ぐ制約や複数の変更をまとめる機能を提供できます。
一冊を保存する例
利用者が本を登録するとき、アプリは題名だけでなく、誰の記録か、いつ作られたかを確かめて保存します。後から一覧を開くと、条件に合う行を検索して返します。
このとき、次の設計が必要です。
どの項目を保存するか
各項目を文字、数値、日付など、どの型で扱うか
一件を区別するIDをどう付けるか
空欄や重複を許すか
削除したとき、関連する記録をどう扱うか
画面を先に作れても、保存ルールが曖昧なままだと、後から修正や移行が難しくなります。
DBMS、ファイル、サーバーと区別する
データベース:管理対象となるデータのまとまり
DBMS:データベースを作成、検索、更新、保護するソフトウェア
ファイル:OSが扱う保存単位。JSONやCSVもデータ保存に使える
データベースサーバー:ほかのプロセスから接続を受けてDBMSの機能を提供するもの
SQLiteのように、別のサーバープロセスを使わず、アプリ内のライブラリが一つのファイルを直接読み書きするデータベースもあります。PostgreSQLのように、アプリが動作中のサーバーへ接続する構成もあります。「データベースを使う」と「別のDBサーバーを運用する」は同じ判断ではありません。
選ぶ前にデータ消失と復元を考える
データベースは保存先を用意しただけでは安全になりません。誤操作、プログラムの不具合、容量不足、サービス停止、認証情報の漏えいに備えます。
最初に次を決めます。
本当に永続保存が必要なデータか
個人情報や秘密情報を保存する必要があるか
誰が読み書きできるか
構造変更をどう記録して適用するか
バックアップをどこへ置くか
実際に復元できることをどう試すか
サービスを変えるときにデータを取り出せるか
バックアップが存在しても、復元手順を試していなければ回復できるとは限りません。開発用と本番用を取り違えない識別も必要です。
次に読む記事
アプリから保存機能を呼ぶ窓口はAPIとは何か、要求を受けてデータベースへ接続する側はサーバーとは何かで整理します。
どの製品や構成を選ぶかは、用語を理解した後に小さく始める技術スタックの選び方で、機能、運用、移行の条件から判断します。