ナビゲーションをスキップする

データベースとは

データベースの定義、種類、例

データベースとは

最も基本的な定義では、データベースとは、相互に関連した情報のコレクションです。紙に食料品のリストを書くことは、小さなアナログのデータベースを作っていることになります。しかし、コンピューター サイエンスにおけるデータベースとは何でしょうか? この文脈では、「データベース」とは、コンピューター システムにデータとして保存されている情報のコレクション、たとえば、近所の食料品店の在庫などを指します。

データベースの用途

データベースは、管理やアクセスを容易にするためにデータを保存および整理するために使用されます。データのコレクションが増えて複雑になると、データを整理し、そこにアクセスできるようにし、セキュリティを確保することが難しくなります。そこで、データベース管理システム (DBMS) を使用します。これには、管理ツールのレイヤーが含まれています。

データとは

データとは、1 人の人間、場所、物、オブジェクトなどの情報 (エンティティと呼ばれます)、そしてそのエンティティの属性を収集して保存したものです。

たとえば、地元のレストランに関する情報を収集して保存する場合、各レストランは 1 つのエンティティであり、その名前、住所、営業時間などはエンティティの属性です。お気に入りのレストランに関して収集して保存する情報は、すべてデータです。

データベースの種類

データベースには、大きく分けてリレーショナルおよび非リレーショナル データベースがあります。リレーショナル データベースは高度に構造化されており、構造化照会言語 (SQL) と呼ばれるプログラミング言語を理解します。非リレーショナル データベースは多様性に富み、さまざまなデータ構造に対応しています。非リレーショナル データベースは SQL が使用されないものが多いため、NoSQL データベースと呼ばれることもあります。

データ構造の種類

テーブル構造は、データを行と列に分けて整理するリレーショナル データベースの構造で、行にはエンティティが、列にはエンティティの属性が格納されています。ワイド テーブル (ワイド カラム ストア) は、空の属性を持つスパース列を使用して、テーブル内に置ける列の総数を大幅に増やすことができます。空のスペースがあるので、ワイド テーブルは非リレーショナル データベース構造の一例です。

線形構造は、要素を順序立てて整理します。

Array

リンクされたリスト

バイナリ ツリー

ツリー構造では、1 つのルート ノードから生じる階層的なデータベースのノードに、要素が親子関係に整理されます。

グラフ

グラフ構造は、互いに複雑な関係を持つ非階層的ノード ネットワークに要素を整理します。

ハッシュ テーブル

ハッシュベース構造は、ハッシュ テーブルにインデックスを割り当てて関連するデータを関連付けるハッシュ関数を使用することで、キーと値をマッピングします。

ドキュメント指向データベース

ドキュメント指向データベースでは、あるエンティティに関する大量の情報が 1 つのオブジェクト (ドキュメント) にまとめられ、他のオブジェクトとは分離されます。オブジェクト同士をマッピングする必要がなく、1 つのオブジェクトを編集しても他のものに影響を与えないようにすることができます。

リレーショナル データベース

最も一般的なリレーショナル データベースでは、データは各エンティティに関する情報を保持するテーブルに整理され、あらかじめ定義されたカテゴリが行と列で表されます。このように構造化されたデータは、効率的かつ柔軟にアクセスすることができます。

リレーショナル データベースの例としては、SQL ServerAzure SQLMySQLPostgreSQLMariaDB などがあります。

非リレーショナル データベース

非リレーショナル データベースは、非構造化または半構造化データを格納するデータベースです。リレーショナル データベースのように、列と行を持つテーブルは使用されません。代わりに、格納されているデータの特定の要件に応じて最適化されたストレージ モデルが使用されます。非リレーショナル データベースを使用すると、大規模な分散データにすばやくアクセスし、更新し、分析することができます。

非リレーショナル データベースの例としては、MongoDB、Azure Cosmos DB、DocumentDB、Cassandra、Couchbase、HBase、Redis、Neo4j などがあります。

非リレーショナル データベースの中には、NoSQL データベースと呼ばれるものもあります。NoSQL とは、クエリに SQL をまったく使用しない、または SQL 以外も使用するデータ ストアのことです。その代わり、NoSQL データベースでは、データのクエリに他のプログラミング言語や構造を使用します。多くの NoSQL データベースでは SQL と互換性のあるクエリがサポートされていますが、そのクエリの実行方法は通常、従来のリレーショナル データベースで同じ SQL クエリが実行される方法とは異なります。

非リレーショナル データベースの 1 つであるオブジェクト データベースでは、オブジェクト指向プログラミングが使用されます。オブジェクトは、フィールドや変数に格納される状態 (事実上のデータ) と、メソッドや関数によって表示される動作がコード化されています。オブジェクトは永続的なストレージに保持され、API やツールを使わずに直接読み込んだりマッピングしたりできるため、データへのアクセス速度やパフォーマンスが向上します。ただし、オブジェクト データベースは他のデータベースに比べて普及しておらず、サポートが困難な場合があります。

インメモリ データベースとキャッシュ

インメモリ データベースのデータはすべて、コンピューターのランダム アクセス メモリ (RAM) に格納されます。この種類のデータベースをクエリしたり更新したりするときは、お客様はメイン メモリに直接アクセスします。ディスクは使用しません。メイン メモリ (マザーボード上のプロセッサの近くに配置) へのアクセスは、ディスクへのアクセスよりもはるかに高速であるため、データは高速に読み込まれます。

インメモリ データベースは、価格や在庫データなど、頻繁にアクセスする情報のコピーを保存するためによく使用されます。これはキャッシュと呼ばれます。データをキャッシュすると、そのコピーが一時的な場所に保存されるため、次回の要求時に高速に読み込めるようになります。キャッシュについての詳細情報をご確認ください。

データベースの例

データベースは目に見えない神秘的なもののように思われるかもしれませんが、私たちの多くは毎日のようにデータベースと接しています。ここでは、リレーショナル データベース、NoSQL データベース、インメモリ データベースの一般的な例を紹介します。

金融取引

銀行では、残高照会から口座間の移動まで、データベースを使用して顧客の取引を追跡しています。これらの取引はほぼ瞬時に行われる必要があり、膨大な量の取引から得られるデータは常に最新の状態である必要があります。このような目的のために、銀行は膨大な数の顧客、取引による頻繁なデータ変更、高速な応答時間に対応できる、リレーショナル データベースで構築されたオンライン取引処理システムを使用しています。

電子商取引のカタログ

電子商取引 Web サイトを運用している場合、お客様のカタログにはさまざまな属性を持つ製品が個々に掲載されています。非リレーショナル データベースの一例であるドキュメント指向データベースでは、個別のドキュメントを使用して 1 つの製品のすべての属性を記述します。お客様がそのドキュメントの属性を変更しても、お客様の他の製品に影響を与えることはありません。インメモリ データベースは、在庫や価格など頻繁にアクセスされる電子商取引データをキャッシュするためによく使用され、これによりデータの取得が高速化され、データベースの負荷が軽減します。

ソーシャル ネットワーク

お客様がソーシャル ネットワークに参加すると、そのネットワークを利用しているすべての人の非リレーショナル データベースにお客様の情報が追加されます。お客様がそのネットワークの中で他の人とつながると、お客様はソーシャル グラフの一部になります。このようにして、ご自分の友人や仕事上のつながりをフィルタリングしたリストを見たり、その友人やつながりが知っている新しい人を発見したりすることができます。

パーソナライズされた結果

非リレーショナル データベースにより、オンラインでのパーソナライゼーションが促進されていますが、これはお客様が気づかないほど浸透しています。旅行会社の Web サイトからフライトを予約すると、ホテルやレンタカーを予約するオプションも表示されます。Web サイトのデータベースには、お客様のフライトの詳細情報、旅行の好み、過去のレンタカーやホテルの予約など、構造化されていない情報が多数含まれており、これらの情報をもとに、お客様の時間、お金、手間を削減するためのパーソナライズされたおすすめ情報が提示されます。同様に、インメモリ データベースは、アプリケーションの使用中に検索設定やショッピング カートなどの一時的なユーザー データを効率的に保持するための、セッション ストアとして使用されます。

ビジネス分析:

組織が自社独自のデータから分析情報を引き出したいときに、リレーショナル データベースを使用すると、その分析を管理することができます。たとえば、技術系のヘルプ デスクでは、顧客の問題を問題の種類、問題解決までの時間、顧客満足度など、さまざまな角度から追跡できます。テーブル構造を使用するリレーショナル データベースでは、顧客の問題データは一度に 2 つの次元だけで整理されます。しかし、オンライン分析処理システムを使用すると、ヘルプ デスクは一度に複数のテーブルを参照することができるため、多次元分析を行って大量のデータを高速に処理することができます。

データベース管理システム

データベース管理者は、特にビッグ データを処理する場合に、データベース管理システム (DBMS) を使用してデータを制御します。ビッグ データとは、大量の構造化および非構造化データのことで、多くの場合、システムにリアルタイムまたはほぼリアルタイムで送られてきます。DBMS は、複数のアプリケーション間で使用されるデータや、複数の場所に存在するデータの管理にも役立ちます。

管理システムの種類によって、提供される組織、スケーラビリティ、アプリケーションのレベルが異なります。使用する DBMS は、お客様が整理したいデータの種類やそのアクセス方法に加えて、お客様のデータがどこに存在するか、お客様のデータベースで使用されるアーキテクチャの種類、スケーリングの方法によっても変わります。

お客様のデータはオンプレミス、クラウド、またはその両方にありますか?

オンプレミスのデータベースでは、データはオンサイトのプライベートなハードウェア (多くの場合プライベート クラウドと呼ばれます) 上に存在します。データ容量を追加するには、データベース管理者がオンサイトのサーバーに十分な空き容量を確保するか、新しいハードウェアでインフラストラクチャを拡張して空き容量を確保する必要があります。

クラウドベースのデータベースでは、構造化または非構造化データは、プライベート、パブリック、またはハイブリッド クラウド コンピューティング プラットフォーム (プライベートとパブリック クラウドのストレージを組み合わせたプラットフォーム) 上に存在します。クラウド データベースは仮想化環境向けに設計されているため、高いスケーラビリティと可用性を備えています。また、多くのハードウェアを購入する必要がなく、使用するストレージの分だけお支払いいただくため、コスト削減にもつながります。

お客様のデータベースのアーキテクチャは、集中型、分散型、フェデレーションのどれでしょうか

集中型データベースでは、すべてのデータが 1 つのシステム、1 つの場所に存在します。この 1 つのシステムが、すべてのユーザーのアクセス ポイントとなります。

分散型データベースは、リレーショナルおよび非リレーショナル データベースの両方の種類にまたがります。分散型データベースでは、データは複数の物理的な場所 (複数のオンプレミス コンピューター、または 1 つのネットワークの相互接続された複数コンピューター間に分散) に保存されます。

フェデレーション データベースでは、独立したサーバー上で動作する複数の異なるデータベースが 1 つの大型オブジェクトに統合されます。ブロックチェーンはフェデレーション データベースの一種で、会計台帳やその他の取引記録を安全に管理するために使用されます。

スケール アップやスケール アウトによって、データを増やしますか?

スケール アップ (またはダウン) は垂直スケーリングとも呼ばれ、既存のサーバーにメモリやより高性能な CPU などのリソースを追加するプロセスです。

スケール アウト (またはイン) は水平スケーリングとも呼ばれ、お客様のリソースのプールにマシンが追加されます。

垂直方向にスケーリングするのではなく、水平方向にスケーリングすると、既存のハードウェアのライフサイクルが延長され、ベンダーのロックインなしにアップグレードすることが可能になり、コストを削減でき、長期的な柔軟性を得ることができます。

Azure データベース

スケーラビリティ、可用性、セキュリティを自動化するフル マネージド データベースにより、データ運用を簡素化できます。専用でオープンソースのエンジンにまたがるリレーショナル、NoSQL、インメモリのデータベースの中から選択できます。

Azure SQL ファミリ データベースの概要

互換性を犠牲にすることなく、SQL ポートフォリオを統一できます。エッジからクラウドまで、使い慣れた SQL Server テクノロジーを使用して、アプリケーションの移行、最新化、デプロイを行うことができます。

Azure Database for PostgreSQL で大規模にスケーリング

Azure Database for PostgreSQL を使用すると、高可用性、AI を利用したパフォーマンス最適化、高度なセキュリティにより、お客様のワークロードを迅速かつ確実にスケーリングすることができます。

Azure PostgreSQL に関する詳細情報

Azure Cosmos DB を使用したハイパフォーマンス アプリの構築

Azure Cosmos DB は、オープンな API を備えたフル マネージドの NoSQL データベースで、あらゆる規模でのスピードが保証されています。

Azure Cosmos DB の詳細はこちら

Azure Cache for Redis を使用して高トラフィックを効率的に処理する

Azure Cache for Redis を使用すると、お客様のアプリのアーキテクチャにクイックキャッシュ レイヤーが追加され、何千人もの同時ユーザーをほぼ瞬時に処理できるようになります。

Azure Cache for Redis に関する詳細をご覧ください
どのようなご用件ですか?