リレーショナル・データベースとは(RDBMS)

リレーショナル・データベースとは、データベースの一種であり、相互に関連するデータポイントを格納し、それらのデータポイントへのアクセスを提供します。リレーショナル・データベースは、テーブル内のデータを直感的でわかりやすい方法で表すリレーショナル・モデルに基づいています。リレーショナル・データベースでは、テーブルの各行は、キーと呼ばれる一意のIDを持つレコードです。テーブルの列にはデータの属性が保持され、通常、各レコードには各属性の値が含まれているため、データポイント間の関係を簡単に確立できます。

リレーショナル・データベースの例

中小規模の企業が製品の注文を処理するために使用する可能性のある2つのテーブルの簡単な例を以下に示します。1つ目のテーブルは顧客情報テーブルで、各レコードには顧客の名前、住所、配送先および請求先情報、電話番号、およびその他の連絡先情報が含まれます。情報の各ビット(各属性)は固有の列にあり、データベースは各行に一意のID(キー)を割り当てます。2つ目のテーブルは顧客注文テーブルです。各レコードには、注文した顧客のID、注文した製品、数量、選択したサイズと色などが含まれます。しかし、顧客の名前や連絡先情報は含まれません。

これら2つのテーブルには、ID列(キー)という共通点が1つだけあります。しかし、その共通の列があるために、リレーショナル・データベースは2つのテーブル間の関係を築くことができます。次に、この会社の注文処理アプリケーションがデータベースに注文を送信すると、データベースは顧客注文テーブルにアクセスして、製品注文に関する正しい情報を取得し、そのテーブルの顧客IDを使用して、顧客情報テーブルにある顧客の請求先情報と出荷先情報を検索します。その後、倉庫が正しい製品を引き当て、顧客に注文した製品が適切なタイミングで配達され、組織は支払いを受け取ることができます。

リレーショナル・データベースの構造

リレーショナル・モデルとは、論理データ構造、つまりデータテーブル、ビュー、およびインデックスが物理記憶域構造とは別になっていることを意味します。別になっているとは、データベース管理者が論理構造としてのデータへのアクセスに影響を与えることなく、物理データ記憶域を管理できるということです。たとえば、データベースファイルの名前を変更しても、そのファイルに格納されているテーブルの名前は変更されません。

論理と物理の違いは、データベース操作にも当てはまります。データベース操作とは、アプリケーションがデータベースのデータと構造を操作できるようにする明確に定義されたアクションです。論理操作では、アプリケーションが必要なコンテンツを指定できます。物理操作では、そのデータへのアクセス方法が決定され、タスクが実行されます。

データが常に正確でアクセス可能であることを保証するために、リレーショナル・データベースは特定の整合性ルールに従います。たとえば、整合性ルールでは、データベースに誤った情報が入力される可能性を排除するために、テーブルで重複する行を許可しないように指定できます。

リレーショナル・モデル

データベースが登場した初期には、すべてのアプリケーションが独自の構造でデータを保存していました。そのデータを使用するアプリケーションを構築したい開発者は、必要なデータを見つけるために特定のデータ構造を詳しく知っている必要がありました。これらのデータ構造は非効率的で、保守が難しく、優れたアプリケーション・パフォーマンスを提供するように最適化するのが困難でした。リレーショナル・データベース・モデルは、複数の任意のデータ構造の問題を解決するために設計されました。

リレーショナル・データ・モデルは、データを表現および照会する標準的な方法を提供し、どのアプリケーションでも使用できるようにしました。開発者は当初から、リレーショナル・データベース・モデルの最大の強みはテーブルの使用にあることを認識していました。テーブルは、構造化された情報を格納してアクセスするための直感的で効率的かつ柔軟な方法でした。

時が経つにつれて、開発者がデータベースにデータの書き込みや照会を行うために構造化クエリ言語(SQL)を使用し始めるようになると、リレーショナルモデルのもう1つの強みが現れました。長年にわたり、SQLはデータベース照会を行うための言語として広く使用されてきました。SQLは関係代数をベースとした内部的に一貫性のある数学的言語を提供し、すべてのデータベースクエリのパフォーマンスを簡単に向上させることができるようになっています。一方、他のアプローチでは個々のクエリを定義する必要があります。

リレーショナル・データベース管理システムのメリット

シンプルでありながら強力なリレーショナルモデルは、さまざまな情報ニーズに合わせてあらゆる種類と規模の組織で使用されています。リレーショナル・データベースは、在庫の追跡、eコマース・トランザクションの処理、業務上重要な大量の顧客情報の管理などに使用されます。リレーショナル・データベースは、データポイントが相互に関連し、それらをルールベースの一貫した安全な方法で管理する必要があるという情報ニーズがある場合に検討できます。

リレーショナル・データベースは1970年代から存在しています。現在でも、リレーショナルモデルはその利点のおかげで、依然としてデータベースで最も広く受け入れられているモデルとなっています。

リレーショナル・モデルとデータの整合性

リレーショナルモデルは、アプリケーションとデータベースコピー(インスタンス)間でデータの整合性を維持するのに最適です。たとえば、顧客がATMでお金を預け入れてから携帯電話で口座残高を確認する場合、顧客はその預金が口座残高にすぐに反映されることを期待します。リレーショナル・データベースは、このようなデータの整合性に優れており、データベースの複数のインスタンスが常に同じデータを持つようにします。

他のタイプのデータベースでは、大量のデータに対してこのレベルの一貫性をタイムリーに維持することは困難です。NoSQLなど最近の一部のデータベースは、結果整合性のみを提供します。この原則の下で、データベースの規模が大きくなったり、複数のユーザーが同時に同じデータにアクセスしたりした場合、データの整合性をとるために少し時間がかかります。結果整合性は、製品カタログのリストを維持するなどの一部の用途では許容されますが、ショッピングカートのトランザクションなどの重要なビジネス・オペレーションでは、リレーショナル・データベースが依然として絶対的な基準となっています。

コミットメントと原子性

リレーショナル・データベースは、コミットメント(つまり、データベースへの変更を永続的にする)に関する厳格なポリシーを用いて、ビジネスルールとポリシーを非常にきめ細かいレベルで処理します。たとえば、常に一緒に使用される3つの部品を追跡する在庫データベースについて考えてみます。1つの部品を在庫から引き当てるときは、他の2つの部品も引き当てる必要があります。3つの部品のいずれかの在庫がない場合、どの部品も引き当ててはいけません。データベースがコミットする前に、3つの部品すべての在庫がある必要があります。リレーショナル・データベースは3つすべてに対してコミットできることがわかるまでは、どの部品に対してもコミットしません。この多面的なコミットメント機能を原子性と呼びます。原子性は、データベース内のデータを正確に保ち、ビジネスのルール、規制、ポリシーに準拠するようにするための鍵です。

ACIDプロパティとRDBMS

リレーショナル・データベース・トランザクションを定義する4つの重要なプロパティは、原子性、一貫性、分離性、および永続性です。通常、ACIDと呼ばれます。

  • 原子性は、1つの完全なデータベース・トランザクションを構成するすべての要素を定義するものです。
  • 一貫性は、トランザクション後にデータポイントを正しい状態に維持するためのルールを定義するものです。
  • 独立性は、混乱を避けるために、トランザクションがコミットされるまではその影響が他の人に見えないように保つことです。
  • 永続性は、トランザクションがコミットされると、データの変更が永続的になるようにすることです。

ストアドプロシージャとリレーショナル・データベース

データアクセスには、繰り返し可能な多くのアクションが関係します。たとえば、データテーブルから情報を取得するための単純なクエリは、目的の結果が得られるように数百回も数千回も繰り返すことが必要になる場合があります。これらのデータアクセス関数は、データベースにアクセスするために何らかのタイプのコードを必要とします。アプリケーション開発者は新しいアプリケーションを作成するたびにこれらの関数のコードを新たに記述したくはありません。幸いなことに、リレーショナル・データベースではストアドプロシージャを使用できます。これは、簡単なアプリケーション呼び出しでアクセスできるコードのブロックです。たとえば、単一のストアドプロシージャで、複数のアプリケーションのユーザーに一貫したレコードタグ付け機能を提供できます。ストアドプロシージャは、開発者がアプリケーションの特定のデータ関数を特定の方法で実装されるようにしたい場合にも役立ちます。

データベースのロックと並行性

複数のユーザーやアプリケーションが同じデータを同時に変更しようとすると、データベースで競合が発生する可能性があります。ロックと並行性の手法を利用することで、データの整合性を維持しながら、競合の可能性を減らせます。

ロックは、データの更新中に他のユーザーやアプリケーションがそのデータにアクセスできないようにすることです。一部のデータベースでは、ロックがテーブル全体に適用されるため、アプリケーションのパフォーマンスに悪影響を及ぼします。Oracleリレーショナル・データベースなどのデータベースは、レコードレベルでロックを適用し、テーブル内の他のレコードは使用可能なままにするため、アプリケーションのパフォーマンスが向上します。

並行性は、複数のユーザーやアプリケーションが同じデータベースで同時にクエリを呼び出すときのアクティビティを管理することです。この機能は、データ制御用に定義されたポリシーに従って、ユーザーとアプリケーションに適切なアクセスを提供します。

リレーショナル・データベースを選択する際の注意事項

リレーショナル・データベースに格納されているデータの格納、管理、照会、および取得に使用するソフトウェアは、リレーショナル・データベース管理システム(RDBMS)と呼ばれます。RDBMSは、ユーザーとアプリケーションとデータベースの間のインターフェイス、およびデータ記憶域、アクセス、パフォーマンスを管理するための管理機能を提供します。

データベースタイプとリレーショナル・データベース製品を選択する際に、決定の判断材料となる要素がいくつかあります。選ぶべきRDBMSは、ビジネスニーズによって変わります。次の質問を自分自身に問いかけてみてください。

  • データの精度に関してどのような要件がありますか。データの保存と精度はビジネスロジックによって変わりますか。データには、精度に関する厳しい要件がありますか(財務データや政府のレポートなど)。
  • スケーラビリティが必要ですか。管理するデータの規模と、予想される成長率はどのくらいですか。スケーラビリティを実現するために、データベースモデルではミラーリングされたデータベースコピーを(別のインスタンスとして)サポートする必要がありますか。もしそうであれば、それらのインスタンス間でデータの一貫性を維持できますか。
  • 並行性はどのくらい重要ですか。複数のユーザーとアプリケーションが同時にデータにアクセスする必要がありますか。データベース・ソフトウェアは、データを保護しながら同時実行をサポートしていますか。
  • パフォーマンスと信頼性に関してどのようなニーズがありますか。高性能で信頼性の高い製品が必要ですか。クエリ応答のパフォーマンスの要件は何ですか。サービス・レベル・アグリーメント(SLA)または計画外のダウンタイムに対するベンダーのコミットメントはどのようになっていますか。

将来のリレーショナル・データベース:自動運転データベース

時代とともに、リレーショナル・データベースはより良く、より速く、より強力に、そして扱いやすくなりました。しかし同時に、ますます複雑になってもいます。データベースの管理は長い間専任の担当者が必要な仕事でした。開発者は、ビジネスに価値をもたらす革新的なアプリケーションの開発に集中するために専門知識を使用するのではなく、ほとんどの時間をデータベースのパフォーマンスの最適化に必要な管理作業に費やす必要がありました。

現在では、リレーショナル・モデル、クラウド・データベーステクノロジ、機械学習の長所をベースとして自律型テクノロジが構築され、新しいタイプのリレーショナル・データベースを提供しています。自律運転データベース(自律型データベースとも呼ばれる)は、リレーショナルモデルの能力と利点は維持したまま、人工知能(AI)、機械学習、自動化を使用して、クエリのパフォーマンスと管理タスクを監視して向上させます。たとえば、クエリのパフォーマンスを向上させるために、自律運転データベースはクエリを高速化するインデックスについて仮説を立ててテストを行い、最適なものを本番環境にプッシュするといった作業をすべて自動で行います。自律運転データベースは、人間の関与を必要とせずに、これらの改善を継続的に行います。

自律型テクノロジにより、開発者はデータベースを管理するという日常的なタスクから解放されます。たとえば、インフラストラクチャの要件を事前に決定する必要はもうありません。それどころか、自律運転データベースを使用すると、データベースの成長に対応するために必要なストレージリソースとコンピューティング・リソースをデータベースが自動で追加できます。開発者は、わずか数ステップで自律型リレーショナル・データベースを簡単に作成でき、アプリ開発の時間を短縮できます。