分散データベースとは、データが複数の物理的な場所に保存されるデータベースのことです。 [ 1 ]同じ物理的な場所(データセンターなど)にある複数のコンピュータに保存される場合もあれば、相互接続されたコンピュータのネットワークに分散される場合もあります。プロセッサが密接に結合して単一のデータベースシステムを構成する並列システムとは異なり、分散データベースシステムは、物理的なコンポーネントを共有しない疎結合のサイトで構成されます。
システム管理者は、データコレクション(データベースなど)を複数の物理的な場所に分散させることができます。分散データベースは、組織化されたネットワークサーバー、インターネット上の分散型独立コンピュータ、企業イントラネットまたはエクストラネット、あるいは他の組織ネットワーク上に配置できます。分散データベースは複数のコンピュータにデータを保存するため、トランザクションを1台のマシンに限定するのではなく、多くのマシンで処理できるようにすることで、エンドユーザーの作業現場でのパフォーマンスを向上させることができます。[ 2 ]
分散データベースが常に最新の状態に保たれるようにする2つのプロセスがあります。それは、レプリケーション[ 3 ]と複製です。
レプリケーションと複製はどちらも、すべての分散場所でデータを最新の状態に保つことができます。[ 2 ]
分散データベースのレプリケーションやフラグメンテーション以外にも、分散データベースの設計技術は数多く存在します。例えば、ローカル自律性、同期型、非同期型の分散データベース技術などです。これらの技術の実装は、企業のニーズ、データベースに格納されるデータの機密性、そして企業がデータセキュリティ、一貫性、完全性を確保するためにどれだけの費用をかける意思があるかによって決まります。
分散データベースへのアクセスについて議論する際、マイクロソフトは分散クエリという用語を好んで使用しており、プロトコル固有の方法で「1 つ以上の外部 OLE DB データ ソースのテーブルと行セットを参照する SELECT、INSERT、UPDATE、または DELETE ステートメント」と定義しています。[ 4 ]オラクルは、分散クエリと分散トランザクションが分散 SQLの一部を構成するという、より言語中心の見解を提供しています。[ 5 ]
分散データベースには、主に3つのアーキテクチャタイプがあります。
共有メモリおよび共有ディスクアーキテクチャでは、データはパーティション化されませんが、共有なしアーキテクチャである必要があります。
共有ディスクアーキテクチャは、オンプレミスよりもクラウドデータベースでより一般的です。 [ 6 ]
歴史的に見ると、共有ディスクを可能にする共有クラウドストレージの登場以前に、クラウド上で最初に実装されたアーキテクチャは共有なしアーキテクチャでした。
実際には、データベースの異なるレイヤーは異なるアーキテクチャを持つことができます。現在では、共有なしアーキテクチャのコンピューティングレイヤーと、共有ディスクアーキテクチャのストレージレイヤーを持つことが一般的です。これは、たとえばSnowflake [ 7 ]やAWS Aurora [ 8 ]の場合です。
分散クエリ[:] 1 つ以上の外部 OLE DB データ ソースのテーブルと行セットを参照する SELECT、INSERT、UPDATE、または DELETE ステートメント。
分散 SQL は、複数のデータベースに分散されたデータに同期的にアクセスして更新します。[...] 分散 SQL には、分散クエリと分散トランザクションが含まれます。