リレーショナル データベースとは、データを保存している列と行の 1 つ以上のテーブル(「関係」)において、事前定義済みの関係でデータを整理する情報の集まりで、さまざまなデータ構造が互いにどのように関係しているか簡単に確認、把握できます。関係は、テーブル間の相互作用に基づいて確立された、異なるテーブル間の論理接続です。
Google Cloud のリレーショナル データベースである Cloud SQL、Cloud Spanner 、AlloyDB for PostgreSQL が、運用コストの削減と革新的なアプリケーションの構築にどのように役立つかについて説明します。
準備ができたら10 GB のストレージを無料で利用できる、90 日間の Cloud Spanner の無料トライアル インスタンスを作成できます。
リレーショナル データベース(RDB)は、テーブル、行、列の情報を構造化する方法の一つです。RDB は、テーブルを結合して情報間のリンク(関係)を確立できるため、さまざまなデータポイント間の関係を簡単に理解し、分析情報を得ることができます。
1970 年代に IBM で E.F. Codd 氏によって開発されたリレーショナル データベース モデルでは、共通の属性を使用して任意のテーブルを別のテーブルに関連付けることができます。データの整理に階層構造を使用する代わりに、Codd 氏は、データを含むテーブルを再編成することなく、テーブルにデータを格納、アクセス、関連付けるデータモデルの使用への移行を提案しました。
リレーショナル データベースは、企業がデータの整理、管理、関連付けを行うのに役立つスプレッドシート ファイルを集めたものであると考えてください。リレーショナル データベース モデルでは、各「スプレッドシート」は情報を格納するテーブルであり、列(属性)と行(レコードまたはタプル)として表されます。
属性(列)はデータ型を指定し、各レコード(または行)にはその特定のデータ型の値が含まれます。リレーショナル データベース内のすべてのテーブルには、主キーと呼ばれる属性(行の固有識別子)があり、各行は、外部キー(別の既存テーブルの主キーへの参照)を使用して異なるテーブル間の関係を作成するために使用することができます。
リレーショナル データベース モデルの動作を実際に確認してみましょう。
たとえば、顧客 テーブルと オーダー テーブルがあるとします。
顧客テーブルには、お客様に関する次のデータが含まれています。
[顧客] テーブルでは、お客様 ID は顧客をリレーショナル データベース内で一意に識別するための主キーです。同じお客様 ID を持つ顧客は他にいません。
オーダーテーブルには、注文に関するトランザクション情報が含まれています。
ここで、特定の注文を識別するための主キーはオーダー ID です。顧客を注文に関連付けるには、外部キーを使用して [顧客] テーブルのお客様 ID をリンクします。
この 2 つのテーブルは、共有されたお客様 ID に基づいて関連付けられます。つまり、両方のテーブルに対してクエリを実行して、正式なレポートを作成したり、他のアプリケーションでデータを使用したりできます。たとえば、小売業の支店長が特定の日付に購入したすべての顧客に関するレポートを作成したり、注文者のうち過去 1 か月間に配送が遅かった顧客を把握したりできます。
上記の説明はシンプルであることを意図しています。ただし、リレーショナル データベースはデータ間の非常に複雑な関係を示すのにも優れており、データがデータベースの事前定義済みリレーショナル スキーマに準拠している限り、より多くのテーブルでデータを参照できます。
データは事前定義された関係として編成されているため、宣言的にデータに対してクエリを実行できます。宣言型クエリは、システムによる結果の計算方法を指定せずに、システムから抽出したいものを定義する方法です。これは、他のシステムとは異なり、リレーショナル システムの中核をなすものです。
リレーショナル データベースの仕組みがわかったところで、次はリレーショナル データベース モデルを使用する多くのリレーショナル データベース管理システムについて学びましょう。リレーショナル データベース管理システム(RDBMS)は、リレーショナル データベースの作成、更新、管理に使用されるプログラムです。よく知られている RDBMS には、MySQL、PostgreSQL、MariaDB、Microsoft SQL Server、Oracle Database などがあります。
Cloud SQL や Cloud Spanner、AlloyDB のようなクラウドベースのリレーショナル データベースは、データベースのメンテナンス、パッチ適用、容量管理、プロビジョニング、インフラストラクチャ サポートのためのマネージド サービスを提供するため、ますます一般的になっています。
準備ができたら10 GB のストレージを無料で利用できる、90 日間の Cloud Spanner の無料トライアル インスタンスを作成できます。
リレーショナル データベース モデルの主な利点は、データを直感的に表現する方法と、関連するデータポイントに簡単にアクセスできることです。そのため、リレーショナル データベースは、在庫の追跡からトランザクション データの処理、アプリケーションのロギングに至るまで、大量の構造化データを管理する必要がある組織で最も一般的に利用されています。
リレーショナル データベースを使用してデータを管理し、保存することには、他にも多くの利点があります。以下に例を示します。
柔軟性
全体的なデータベース構造の変更や既存のアプリケーションに影響を与えることなく、必要に応じてテーブルや関係の追加、更新、削除や、データ変更を簡単に行うことができます。
ACID コンプライアンス
リレーショナル データベースは、ACID(アトミック性、整合性、独立性、耐久性)のパフォーマンスをサポートし、エラー、障害、その他の潜在的な構成ミスに関係なく、データの有効性を保証します。
使いやすさ
SQL を使用すると複雑なクエリを簡単に実行できるため、技術者でなくても、データベースの操作方法を学習できます。
コラボレーション
複数のユーザーが同時にデータにアクセスし、操作できます。組み込みのロックにより、更新中のデータへの同時アクセスを防ぐことができます。
組み込みのセキュリティ機能
ロールベースのセキュリティにより、データアクセスが特定のユーザーに限定されます。
データベースの正規化
リレーショナル データベースでは、正規化と呼ばれる設計手法によりデータの冗長性が低減され、データの完全性が向上します。
リレーショナル データベースと非リレーショナル データベース(NoSQL データベース)の主な違いは、データの保存方法と整理方法です。非リレーショナル データベースでは、データをルールベースの表形式で保存しません。代わりに、データを接続されていない個別のファイルとして保存し、ドキュメントやリッチメディア ファイルなどの複雑な非構造化データタイプに使用できます。
リレーショナル データベースとは異なり、NoSQL データベースは柔軟なデータモデルに従うため、頻繁に変更されるデータの保存や、多様なデータを処理するアプリケーションに最適です。