Chapter 4
データベースの用語を順に解説します。
第3正規形とは第3正規形とは、リレーショナルデータベース(RDB)の設計において、データの重複や不整合を防ぐために、テーブル(表)を分割して整理するステップ(正規化)の一つです。データベース設計では、ある値が決まると他の値が自動的に決まる「関数従属」という関係を整理します。第3正規形では、「主キー(その行を一意に特定するID)」以外の項目同士に依存関係(推移的関数従属)がある場合、それらを別のテーブルとして切り離します。例えば、「社員ID」が決まると「所属部署ID」が決まり、「所属部署ID」が決まると「部署名」が決
多対多の関連とは多対多の関連とは、データベース設計において、テーブルAの1つのデータに対してテーブルBの複数のデータが対応し、同時にテーブルBの1つのデータに対してもテーブルAの複数のデータが対応するような関係性のことです。リレーショナルデータベースでは、「多対多」の関係を直接テーブル同士で繋ぐことができません。もし直接繋ごうとすると、データが重複したり、検索が著しく困難になったりします。そのため、多対多の関連を表現する際は、その間に「中間テーブル(連関エンティティ)」と呼ばれる中継用のテーブルを1つ挟み、「1対多
直列化可能性とは直列化可能性(シリアライザビリティ)とは、データベースにおいて複数の処理(トランザクション)が同時に(並行して)実行された結果が、それらを1つずつ順番に(直列に)実行した場合と同じ結果になることを保証する性質です。データベースの処理速度を上げるために、システムは複数のユーザーからのリクエストを同時に並行処理します。しかし、同じデータに対して同時に書き込みや読み込みを行うと、データの辻褄が合わなくなる(不整合が起きる)リスクがあります。直列化可能性が保証されているということは、同時にたくさんの処理が混
2相コミットとは2相コミット(2フェーズコミット)とは、複数のサーバーに分散しているデータベース群において、データの更新処理(トランザクション)を行う際、すべてのデータベースで一斉に更新を確定(コミット)させるか、あるいは一斉に取り消す(ロールバック)かを厳密に揃えるためのプロトコル(ルール)です。システムがいくつかのサーバーに分かれている場合、一部のサーバーだけ更新に成功し、別のサーバーが通信エラーなどで失敗してしまうと、システム全体でデータの矛盾が生じてしまいます。これを防ぐために、司令塔となる「調整役(コーデ
デッドロック検出とはデッドロック検出とは、データベースなどで複数の処理がお互いに相手が使っているデータの解放を待ち合ってしまい、処理が完全に停止(フリーズ)してしまう「デッドロック」という状態を、システムが自動的に見つけ出す仕組みのことです。データを書き換える際、他の処理に邪魔されないようにデータに鍵をかける「ロック」を行います。2つの処理がそれぞれ異なるデータにロックをかけた後、お互いにもう一方のデータを使おうとすると、永久に終わらない「待ち合い状態」が発生します。デッドロック検出機能は、システム内部の待ち関係を
レプリケーションとはレプリケーションとは、データベースやサーバーのデータを、ネットワークを経由して別のコンピュータにリアルタイムで複製(コピー)し、常に同じ状態のバックアップ(複製)を維持しておく技術のことです。この技術の主な目的は「信頼性の向上」と「負荷の分散」です。万が一、メインのデータベースサーバーが物理的な故障や災害で停止してしまっても、複製されたサーバーが即座に処理を引き継ぐ(フェイルオーバー)ことで、サービスを止めることなく継続できます。また、普段のデータの読み込み(検索処理)を複製側のサーバーに振り分
シャーディングとはシャーディング(水平分割)とは、データベースの規模が大きくなりすぎた際に、1つの巨大なテーブルに保存されているデータを、行単位(横方向)で細かく分割し、複数の異なるデータベースサーバーに分散して保存する技術です。データ量が数億件に達すると、いくらサーバーの性能を上げても検索や書き込みに時間がかかるようになります。シャーディングでは、例えばユーザーIDの奇数・偶数や、住んでいる地域といった特定のルールに従って、データを「シャード」と呼ばれる小さなデータベースに切り分けます。これにより、それぞれのサー
公式資料へのリンクと確認日を各記事に掲載しています。