並列データベースシステムは、データのロード、インデックスの構築、クエリの評価など、さまざまな操作を並列化することでパフォーマンスの向上を目指します。 [ 1 ]データは分散して格納される場合もありますが、その分散はパフォーマンス上の考慮事項のみによって決定されます。並列データベースは、複数のCPUとディスクを並列に使用することで、処理速度と入出力速度を向上させます。集中型およびクライアント/サーバ型のデータベースシステムは、このようなアプリケーションを処理するには十分な能力を備えていません。並列処理では、計算ステップが順次実行されるシリアル処理とは異なり、多くの操作が同時に実行されます。並列データベースは、大きく2つのグループに分けられます。最初のアーキテクチャグループはマルチプロセッサアーキテクチャであり、その代替案は次のとおりです。
- 共有メモリアーキテクチャ
- 複数のプロセッサがメインメモリ(RAM)を共有するが、各プロセッサはそれぞれ専用のディスク(HDD)を持つ。多数のプロセスが同時に実行されると、コンピュータが多数の並列タスクを実行したときに処理速度が低下するのと同様に、速度が低下する。
- 共有ディスクアーキテクチャ
- 各ノードはそれぞれ独自のメインメモリを持つが、すべてのノードが大容量ストレージ(通常はストレージエリアネットワーク)を共有する。実際には、各ノードは通常、複数のプロセッサも搭載している。
- 共有なしアーキテクチャ
- 各ノードは、メインメモリに加えて独自のマスストレージを備えている。
もう1つのアーキテクチャグループはハイブリッドアーキテクチャと呼ばれ、以下が含まれます。
- 非均一メモリアーキテクチャ(NUMA)は、非均一メモリアクセスを伴います。
- クラスター(共有なし+共有ディスク:SAN/NAS)とは、接続されたコンピュータのグループによって構成されるものです。
この方式では、スイッチやハブを使用して異なるコンピュータを接続します。これは最も安価で簡単な方法であり、異なるコンピュータを接続するために単純なトポロジーのみが使用されます。スイッチを実装すれば、はるかにスマートになります。
並列構造の種類
- クエリ内並列処理
- 複数のプロセッサまたはディスクを使用して並列に実行される単一のクエリ。[ 2 ]
- 独立した並列処理
- 各操作を異なるプロセッサで個別に実行するのは、それらが互いに独立して実行できる場合に限ります。例えば、4つのテーブルを結合する必要がある場合、2つのテーブルを1つのプロセッサで結合し、残りの2つのテーブルを別のプロセッサで結合することができます。最終的な結合は後で行うことができます。
- パイプライン並列処理
- パイプライン方式で様々な操作を実行します。例えば、3つのテーブルを結合する必要がある場合、1つのプロセッサが2つのテーブルを結合し、結果セットのレコードが生成され次第、別のプロセッサに送信します。別のプロセッサでは、3つ目のテーブルを受信したレコードと結合し、最終結果を生成します。
- 手術中の並行性
- 単一の複雑な処理や大規模な処理を複数のプロセッサで並列実行すること。例えば、数百万件のレコードに対して実行しようとするクエリのORDER BY句を、複数のプロセッサで並列化することができる。
参考文献
- ↑ Dewitt, David ; Gray, Jim (1992). "並列データベースシステム: 高性能データベースシステムの未来" (PDF) . Communications of the ACM . 35 (6): 85. CiteSeerX 10.1.1.119.8427 . doi : 10.1145/129888.129894 .
- ↑ Kandasamy, Saravanakumar. "並列データベース - クエリ内並列処理 - 高度なデータベース管理システム" . Blogger . 2017年9月10日取得.