Distributed-dbms-query-optimization-distributed-systems

提供:Dev Guides
移動先:案内検索

分散システムでのクエリの最適化

この章では、分散データベースシステムでのクエリの最適化について説明します。

分散クエリ処理アーキテクチャ

分散データベースシステムでは、クエリの処理には、グローバルレベルとローカルレベルの両方での最適化が含まれます。 クエリは、クライアントまたは制御サイトのデータベースシステムに入ります。 ここでは、ユーザーが検証され、クエリがチェックされ、翻訳され、グローバルレベルで最適化されます。

アーキテクチャは次のように表すことができます-

分散クエリ処理アーキテクチャ

グローバルクエリからローカルクエリへのマッピング

グローバルクエリをローカルクエリにマッピングするプロセスは、次のように実現できます-

  • グローバルクエリで必要なテーブルには、複数のサイトに分散したフラグメントがあります。 ローカルデータベースには、ローカルデータに関する情報のみが含まれています。 制御サイトはグローバルデータディクショナリを使用して、分布に関する情報を収集し、フラグメントからグローバルビューを再構築します。
  • レプリケーションがない場合、グローバルオプティマイザーは、フラグメントが保存されているサイトでローカルクエリを実行します。 レプリケーションがある場合、グローバルオプティマイザーは通信コスト、ワークロード、およびサーバー速度に基づいてサイトを選択します。
  • グローバルオプティマイザーは、サイト間で発生するデータ転送量が最小になるように分散実行計画を生成します。 計画では、フラグメントの場所、クエリステップを実行する必要がある順序、および中間結果の転送に関係するプロセスを示します。
  • ローカルクエリは、ローカルデータベースサーバーによって最適化されます。 最後に、ローカルクエリの結果は、水平方向のフラグメントの結合操作と垂直方向のフラグメントの結合操作によって結合されます。

たとえば、次のプロジェクトスキーマは、ニューデリー、コルカタ、ハイデラバードの都市に応じて水平方向に断片化されていると考えてみましょう。

プロジェクト

PId City Department Status

ステータスが「進行中」であるすべてのプロジェクトの詳細を取得するクエリがあるとします。

グローバルクエリは&inus;になります。

\ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(PROJECT)}

ニューデリーのサーバーでのクエリは-

\ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(\ {NewD} _- \ {PROJECT})}

コルカタのサーバーでのクエリは-

\ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(\ {Kol} _- \ {PROJECT})}

ハイデラバードのサーバーでのクエリは-

\ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(\ {Hyd} _- \ {PROJECT})}

全体的な結果を取得するには、次のように3つのクエリの結果を結合する必要があります-

$ \ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(\ {NewD} _- \ {PROJECT})} \ cup \ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(\ {kol} _- \ {PROJECT})} \ cup \ sigma _ \ {status} = \ {\ small "ongoing"} ^ \ {(\ {Hyd} _- \ {PROJECT})} $

分散クエリの最適化

分散クエリの最適化では、クエリの必要な結果をそれぞれ生成する多数のクエリツリーの評価が必要です。 これは主に、複製および断片化されたデータが大量に存在するためです。 したがって、目標は最適なソリューションではなく最適なソリューションを見つけることです。

分散クエリ最適化の主な問題は次のとおりです-

  • 分散システムでのリソースの最適な利用。
  • クエリ取引。
  • クエリのソリューションスペースの削減。

分散システムでのリソースの最適利用

分散システムには、さまざまなサイトに多数のデータベースサーバーがあり、クエリに関する操作を実行します。 以下は、最適なリソース利用のためのアプローチです-

オペレーション出荷-オペレーション出荷では、クライアントサイトではなく、データが保存されているサイトでオペレーションが実行されます。 その後、結果はクライアントサイトに転送されます。 これは、同じサイトでオペランドが使用可能な操作に適しています。 例:選択およびプロジェクト操作。

データ配送-データ配送では、データフラグメントはデータベースサーバーに転送され、そこで操作が実行されます。 これは、オペランドが異なるサイトに分散されている操作で使用されます。 これは、通信コストが低く、ローカルプロセッサがクライアントサーバーよりもはるかに遅いシステムにも適しています。

ハイブリッド配送-これは、データ配送と運用配送の組み合わせです。 ここでは、データフラグメントが高速プロセッサに転送され、そこで処理が実行されます。 その後、結果はクライアントサイトに送信されます。

最適利用分散システム

クエリ取引

分散データベースシステムのクエリ取引アルゴリズムでは、分散クエリの制御/クライアントサイトは購入者と呼ばれ、ローカルクエリが実行されるサイトは販売者と呼ばれます。 買い手は、売り手を選択し、グローバルな結果を再構築するための多くの選択肢を策定します。 バイヤーの目標は、最適なコストを達成することです。

アルゴリズムは、買い手が売り手のサイトにサブクエリを割り当てることから始まります。 最適な計画は、最終結果を再構築するための通信コストと組み合わせて、売り手によって提案されたローカルに最適化されたクエリ計画から作成されます。 グローバル最適計画が定式化されると、クエリが実行されます。

クエリのソリューションスペースの削減

通常、最適なソリューションにはソリューションスペースの削減が含まれるため、クエリとデータ転送のコストが削減されます。 これは、一元化されたシステムのヒューリスティックと同様に、ヒューリスティックルールのセットによって実現できます。

以下はいくつかのルールです-

  • できるだけ早く選択および投影操作を実行します。 これにより、通信ネットワーク上のデータフローが減少します。
  • 特定のサイトに関係のない選択条件を排除することにより、水平フラグメントの操作を簡素化します。
  • 複数のサイトにあるフラグメントで構成される結合および結合操作の場合、断片化されたデータを、ほとんどのデータが存在するサイトに転送し、そこで操作を実行します。
  • 半結合操作を使用して、結合されるタプルを修飾します。 これにより、データ転送量が削減され、通信コストが削減されます。
  • 分散クエリツリーの共通の葉とサブツリーをマージします。