データベースとは
データベースの定義、種類、例
データベースとは
最も基本的な定義では、データベースとは相互に関連した情報のコレクションです。食料品店で買う物のリストを紙に書き出すときは、小さなアナログのデータベースを作っているといえます。しかし、コンピューター サイエンスにおけるデータベースとは何でしょうか? この文脈での "データベース" とは、データとしてコンピューター システムに保存されている情報のコレクションであり、その例としては食料品店の在庫一覧があります。
データベースの用途
データベースを使用する目的は、管理とアクセスを容易にできるようにデータを保存して組織化することです。データのコレクションが拡大して複雑になると、そのデータが組織化されてアクセス可能で安全である状態を維持することが難しくなります。これを解決するために、データベース管理システム (DBMS) が使用されます。この中には、データベース管理ツールのレイヤーが含まれています。
データとは
データとは、1 人の人または 1 つの場所、物、またはオブジェクト (エンティティといいます) に関して捕捉されて保存される任意の情報、およびそのエンティティの属性を指します。
たとえば、地元のレストランに関する情報を捕捉して保存する場合は、レストランそれぞれが 1 つのエンティティであり、その名前、住所、営業時間などはそのエンティティの属性です。お気に入りのレストランに関して収集して保存する情報すべてがデータです。
データベースの種類
データベースの種類は、大きく分けてリレーショナル データベースと非リレーショナル データベースがあります。リレーショナル データベースは高度に構造化されており、構造化照会言語 (SQL) と呼ばれるプログラミング言語を理解します。非リレーショナル データベースはきわめて多様であり、さまざまなデータ構造がサポートされています。非リレーショナル データベースの多くでは SQL が使用されないことから、NoSQL データベースと呼ばれることもあります。
データ構造の種類
テーブル構造はリレーショナル データベースの構造であり、データが行および列として組織化されます。行にはエンティティが格納され、列にはエンティティの属性が格納されます。 ワイド テーブル (ワイド カラム ストア ともいいます) では、空の属性を持つスパース列が使用されるため、テーブル内に持つことができる列の総数を大幅に増やすことができます。一部のスペースが空であることから、ワイド テーブルは非リレーショナル データベース構造の一例といえます。
線形構造では要素が 1 つのシーケンスとして組織化されます
配列
リンクされたリスト
バイナリ ツリー
ツリー構造では、多数のノードから成る階層的データベースとしてデータベース要素が組織化され、ノードは 1 つのルート ノードを起点として親子関係を形成します。
グラフ
グラフ構造では、多数のノードから成る非階層的ネットワークとしてデータベース要素が組織化され、ノードどうしの間には複雑な関係があります。
ハッシュ テーブル
ハッシュベース構造では、ハッシュ関数を使用してキーが値にマッピングされます。この関数によってハッシュ テーブルにインデックスが割り当てられ、これで関連するデータが結び付けられます。
ドキュメント指向データベース
ドキュメント指向データベースでは、1 つのエンティティに関する大量の情報が 1 つのオブジェクト (ドキュメントといいます) として組織化され、他のオブジェクトとは分離されます。オブジェクトを互いに関連付けてマッピングする必要はなく、1 つのオブジェクトを編集しても他のオブジェクトに影響が及ぶことはありません。
リレーショナル データベース
リレーショナル データベースは、最も一般的な種類であり、データはテーブルとして組織化されます。このテーブルが各エンティティに関する情報を保持し、あらかじめ定義されたカテゴリを行と列で表します。このように構造化されたデータは、効率的かつ柔軟にアクセスすることができます。
リレーショナル データベースの例としては、SQL Server、Azure SQL、MySQL、PostgreSQL、MariaDB があります。
非リレーショナル データベース
非リレーショナル データベースは、非構造化または半構造化データを格納するデータベースです。リレーショナル データベースとは異なり、列と行を持つテーブルは使用されません。代わりに、格納されるデータの種類に固有の要件に応じて最適化されたストレージ モデルが使用されます。非リレーショナル データベースを使用すると、大規模な分散データのアクセス、更新、分析が速くできるようになります。
非リレーショナル データベースの例としては、MongoDB、Azure Cosmos DB、DocumentDB、Cassandra、Couchbase、HBase、Redis、Neo4j があります。
非リレーショナル データベースの中には NoSQL データベースと呼ばれるものもあります。NoSQL とは、クエリに SQL をまったく使用しない、または SQL 以外も使用するデータ ストアのことです。代わりに、NoSQL データベースでは他のプログラミング言語や構成体がデータのクエリに使用されます。多くの NoSQL データベースでは SQL 互換クエリがサポートされていますが、そのクエリの実行方法は、従来のリレーショナル データベースで同じ SQL クエリを実行する場合の方法とは異なるのが一般的です。
非リレーショナル データベースの種類の 1 つであるオブジェクト データベースでは、オブジェクト指向プログラミングが使用されます。オブジェクトはコード化されて状態 (事実に関するデータ) と挙動を持ち、状態は 1 つのフィールドまたは変数に格納され、挙動はメソッドまたは関数として表現されます。オブジェクトは永続的ストレージに永久に保持することができ、その読み取りとマッピングは API やツールを使わずに直接行うことができるので、データへのアクセス速度とパフォーマンスが向上します。ただし、オブジェクト データベースは他のデータベースほどには普及していないため、サポートが簡単ではない場合があります。
インメモリ データベースとキャッシュ
インメモリ データベースのデータはすべて、コンピューターのランダム アクセス メモリ (RAM) に格納されます。この種類のデータベースのクエリや更新を行うときは、メイン メモリに直接アクセスします。ディスクは使用されません。メイン メモリ (マザーボード上でプロセッサの近くにあります) へのアクセスはディスクへのアクセスよりもはるかに高速であるため、データが速く読み込まれます。
インメモリ データベースの一般的な用途は、頻繁にアクセスされる情報 (たとえば価格や在庫のデータ) のコピーを格納することです。これをキャッシュといいます。データのキャッシュとは、そのデータが次回要求されたときにより速く読み込まれるようにするために、そのコピーを一時的な場所に格納しておくことです。キャッシュについてさらに学ぶには、こちらをご覧ください。
データベースの例
データベースは目に見えない神秘的な存在に思われるかもしれませんが、私たちの多くは毎日これに接しています。ここでは、リレーショナル データベース、NoSQL データベース、インメモリ データベースの一般的な例を紹介します。
金融取引
銀行では、顧客の取引の記録にデータベースが使用されており、残高照会から口座間の振替まで、あらゆる取引がこれに含まれます。これらの取引はほぼ瞬時に行われる必要があり、膨大な量の取引からのデータは常に最新の状態であることが求められます。このような目的のために、銀行はリレーショナル データベースを用いたオンライン取引処理システムを使用しており、これによって膨大な数の顧客、取引による頻繁なデータ変更、高速の応答時間を扱うことができます。
電子商取引のカタログ
電子商取引 Web サイトのカタログには、それぞれ独自の多様な属性を持つ製品が個別に掲載されています。非リレーショナル データベースの一例であるドキュメント指向データベースでは、個別のドキュメントを使用して 1 つの製品のすべての属性を表します。そのドキュメント内で属性が変更されても、他の製品に影響が及ぶことはありません。インメモリ データベースは、在庫や価格などの頻繁にアクセスされる電子商取引データをキャッシュするためによく使用され、これでデータの取り出しが速くなり、データベースへの負荷が軽減します。
ソーシャル ネットワーク
ソーシャル ネットワークに新しいメンバーが加わると、そのネットワークを使用するメンバー全員が登録された非リレーショナル データベースにその人の情報が追加されます。ネットワーク内の他の人々とつながると、そのメンバーはソーシャル グラフの一部になります。このような仕組みがあるため、自分の友人または仕事上の知り合いをフィルタリングしたリストを見ることや、その友人または知り合いの人脈を新たに知ることができます。
パーソナライズされた結果
非リレーショナル データベースによってオンラインでのパーソナライゼーションが進んでいますが、あまりにも浸透しているため、人々が気づいていないこともあります。たとえば、フライトを旅行会社の Web サイトから予約すると、ホテルやレンタカーを予約するオプションも表示されます。Web サイトのデータベースには、豊富な非構造化情報が格納されています。たとえば利用者のフライトの詳細、旅行の好み、過去のレンタカーやホテルの予約などであり、これらを使用して利用者への提案がパーソナライズされるため、利用者の時間、支出、労力を減らすことができます。インメモリ データベースも同様に、セッション ストアとして使用され、アプリケーション使用中の一時データ (検索の設定やショッピング カートなど) が効率的に保持されます。
ビジネス分析
組織が保有するデータからインサイトを引き出したいときに、リレーショナル データベースを使用すると、分析を管理しやすくなります。たとえば、技術系のヘルプ デスクでは、顧客の問題をさまざまなディメンションで、たとえば問題の種類、問題解決までの時間、顧客満足度について追跡します。テーブル構造を使用するリレーショナル データベースでは、顧客の問題データの組織化に使用されるディメンションは一度に 2 つだけですが、オンライン分析処理システムを使用すると、ヘルプ デスクは一度に複数のテーブルに注目することができるため、多次元分析を行って大量のデータを高速処理することができます。
データベース管理システム
データベース管理者はデータベース管理システム (DBMS) を使用してデータを制御します。特に、ビッグ データでの作業を行うときです。ビッグ データとは、大量の構造化および非構造化データのことであり、多くの場合はシステムがリアルタイムで、またはほぼリアルタイムで受信します。DBMS は、複数のアプリケーション間で使用されるデータや、複数の場所に存在するデータの管理にも役立ちます。
データベース管理システムごとに、組織化、スケーラビリティ、アプリケーションのレベルが異なります。どの DBMS を使用するかは、組織化したいデータの種類と、そのデータにアクセスする方法に加えて、データが存在する場所、データベースで使用するアーキテクチャの種類、およびスケーリングの計画にも左右されます。
データはオンプレミスか、クラウドか、またはその両方か?
オンプレミスのデータベースでは、データはプライベートのオンサイト ハードウェア (多くの場合プライベート クラウドと呼ばれます) 上に存在します。データ容量を追加するには、データベース管理者がオンサイトのサーバー上に十分なスペースを用意するか、インフラストラクチャを拡張して新しいハードウェアを追加することでスペースを増やす必要があります。
クラウドベースのデータベースでは、構造化または非構造化データがプライベート、パブリック、またはハイブリッドのクラウド コンピューティング プラットフォーム (プライベートとパブリック クラウドのストレージを組み合わせたプラットフォーム) 上に存在します。クラウド データベースは仮想化環境向けに設計されていることから、スケーラビリティと可用性の両方が高くなります。また、コスト低下にもつながります。適切な数のハードウェアを自分で購入する必要はなく、支払いは使用するストレージの分だけであるからです。
データベースのアーキテクチャは中央集中型か、分散型か、フェデレーション型か?
中央集中型データベースでは、すべてのデータが 1 つのシステム、1 つの場所に存在します。この 1 つのシステムが、すべてのユーザーのアクセス ポイントとなります。
分散型データベースでは、1 つのデータベースがリレーショナルと非リレーショナルの両方のデータベースの種類にまたがることがあります。分散型データベースでは、データは複数の物理的な場所に保存されます。これは複数のオンプレミス コンピューター上のこともあれば、相互接続された複数のコンピューターから成るネットワーク上に分散することもあります。
フェデレーション型データベースでは、多数の異なる、それぞれが別々のサーバー上で稼働するデータベースが統合されて 1 つの大きなオブジェクトとなります。ブロックチェーンはフェデレーション型データベースの一種であり、会計台帳やその他の取引記録を安全に管理するために使用されます。
データが増大したときにスケール アップするか、それともスケール アウトするか?
スケール アップ (またはダウン) は垂直スケーリングとも呼ばれ、既存のサーバーにリソース (メモリや、より高性能な CPU) を追加するプロセスです。
スケール アウト (またはイン) は水平スケーリングとも呼ばれ、リソースのプールにマシンを追加することです。
垂直スケーリングの代わりに水平スケーリングすると、既存のハードウェアのライフサイクルを延ばすことができ、ベンダーのロックインなしに自由にアップグレードでき、コストが縮小され、長期的な柔軟性を得ることができます。
Azure のデータベース
スケーラビリティ、可用性、セキュリティを自動化するフル マネージド データベースを利用して、データ オペレーションをシンプルにしましょう。リレーショナル、NoSQL、インメモリのデータベースから選ぶことができ、エンジンはプロプライエタリとオープンソースの両方があります。
Azure 上のデータベースの中から自分に必要なものを見つける
Azure の SQL データベース ファミリを知る
互換性を犠牲にすることなく、SQL ポートフォリオを統一できます。アプリケーションの移行、モダン化、デプロイをエッジからクラウドまで、使い慣れた SQL Server テクノロジを使用して行うことができます。
Azure Database for PostgreSQL で自信を持ってスケーリング
Azure Database for PostgreSQL は高可用性、AI によるパフォーマンス最適化、高度なデータベース セキュリティが特長であり、お客様のワークロードを迅速に、自信を持ってスケーリングすることができます。
Azure Cosmos DB を使用してハイパフォーマンス アプリを構築する
Azure Cosmos DB はフル マネージドの NoSQL データベースで、オープンな API も備えており、規模を問わずスピードが保証されています。
Azure Cache for Redis を使用して高トラフィックを効率的に処理する
Azure Cache for Redis を使用すると、お客様のアプリのアーキテクチャにクイックキャッシュ レイヤーを追加して数千人の同時ユーザーをほぼ瞬時に処理することができるようになります。
Azure での構築を始めましょう
Azureのクラウド コンピューティング サービスを無料で最大 30 日間お試しいただけます。または、従量課金制の価格で始めることもできます。事前コミットメントはなく、いつでもキャンセルできます。