Azure Data Lake Storage クエリ高速化

クエリアクセラレーションを活用することで、アプリケーションや分析フレームワークはデータ処理を最適化できます。 彼らは特定の操作を実行するために必要なデータのみを取得します。 このアプローチにより、保存データの洞察を得るために必要な時間と処理能力が削減されます。

概要

クエリ高速化は、フィルタリング 述語列プロジェクション をサポートします。 これらの述語や射影を用いることで、アプリケーションはディスクからデータを読み取る際に行や列をフィルタリングできます。 述語の条件を満たすデータのみがネットワークを通じてアプリケーションに転送されます。 この方法はネットワークの遅延と計算コストを削減します。

SQLを使って、クエリアクセラレーションリクエストの行フィルタ条件と列の射影を指定します。 次の制約に留意してください。

  • 要求で処理されるファイルは 1 つだけです。
  • クエリアクセラレーションは、結合やグループ化などの高度なリレーショナル機能をサポートしていません。
  • クエリ アクセラレーションでは、CSV と JSON 形式のデータが各要求への入力としてサポートされます。

クエリ アクセラレーション機能は、Data Lake Storage (階層型名前空間が有効になっているストレージ アカウント) に限定されません。 クエリ アクセラレーションは、階層型名前空間が有効になっていないストレージ アカウント内 BLOB と互換性があります。 この互換性により、すでに記憶アカウントにブロブとして保存されているデータを処理しても、ネットワーク遅延の削減や計算コストの削減が可能です。

クライアント アプリケーションでクエリ アクセラレーションを使用する方法の例については、「 Azure Data Lake Storage クエリ アクセラレーションを使用してデータをフィルター処理する」を参照してください。

データ フロー

次の図は、一般的なアプリケーションでクエリ アクセラレーションを使用してデータを処理する方法を示しています。

アプリケーションがクエリアクセラレーションを使ってデータをフィルタリングし処理する方法を示す図。

  1. クライアント アプリケーションは、述語と列プロジェクションを指定してファイル データを要求します。

  2. クエリ アクセラレーションは、指定された SQL クエリを解析し、データを解析およびフィルター処理するための作業を分散します。

  3. プロセッサはディスクからデータを読み取り、適切なフォーマットで解析し、指定された述語や列射影を適用してフィルタリングします。

  4. クエリ高速化では、レスポンスシャードを結合してクライアントアプリケーションにストリーミングで返します。

  5. クライアント アプリケーションは、ストリーミングされた応答を受信して解析します。 アプリケーションは他のデータをフィルター処理する必要はありません。また、必要な計算や変換を直接適用できます。

低コストでパフォーマンスを向上

クエリアクセラレーションは、アプリケーションが転送・処理するデータ量を減らすことでパフォーマンスを最適化します。

集計された値を計算するために、アプリケーションは通常、ファイルから すべての データを取得し、データをローカルで処理してフィルター処理します。 分析ワークロードの入出力(I/O)パターンの分析によると、アプリケーションは通常、計算を行うために読み取りたデータの20% のみで十分であることがわかります。 この統計は、 パーティションの排除などの手法を適用した後でも当てはまります。 この結果、アプリケーションは不必要に80% のデータ転送、解析、フィルタリングを行うことになります。 不要なデータを削除するように設計されたこのパターンでは、かなりのコンピューティング コストが発生します。

Azureはスループットやレイテンシの両面で高性能なネットワークを備えていますが、そのネットワーク上で不必要にデータを転送することは、アプリケーションのパフォーマンスにコストがかかります。 ストレージ要求中に不要なデータを除外することで、クエリ高速化によってこのコストが削減されます。

さらに、不要なデータを解析・フィルタリングするために必要なCPU負荷が高いため、アプリケーションはより多くの大型VMをプロビジョニングする必要があります。 このコンピューティング負荷をクエリアクセラレーションに転送することで、アプリケーションは大幅なコスト削減を実現できます。

クエリ 高速化のメリットを得られるアプリケーション

クエリアクセラレーションは分散分析フレームワークおよびデータ処理アプリケーション向けに設計されています:

  • Apache SparkやApache Hiveのような分散分析フレームワークは、フレームワーク内にストレージ抽象化レイヤーを含んでいます。 これらのエンジンには、ユーザー クエリの最適なクエリ プランを決定するときに、基になる I/O サービスの機能に関する知識を組み込むことができるクエリ オプティマイザーも含まれます。 これらのフレームワークはクエリアクセラレーションを統合しています。 その結果、これらのフレームワークのユーザーは、クエリに変更を加えることなく、クエリの待機時間が短縮され、総保有コストが削減されます。

  • データ処理アプリケーション は通常、大規模なデータ変換を行いますが、直接的に分析の洞察につながらない場合があるため、確立された分散分析フレームワークを必ずしも使用しているわけではありません。 これらのアプリケーションは基盤となるストレージサービスとより直接的な関係を持つことが多いため、クエリアクセラレーションなどの機能の恩恵を直接受けることができます。

アプリケーションでクエリ アクセラレーションを統合する方法の例については、「 Azure Data Lake Storage クエリ アクセラレーションを使用してデータをフィルター処理する」を参照してください。

価格設定

Azure Data Lake Storageサービス内の計算負荷増加により、クエリアクセラレーションの価格モデルは通常のAzure Data Lake Storageトランザクションモデルとは異なります。 クエリ 高速化では、スキャンされたデータの量に対するコストと、呼び出し元に返されるデータの量のコストが課金されます。 詳細については、 Azure Data Lake Storage の価格に関するページを参照してください。

請求モデルの変更にもかかわらず、クエリアクセラレーションの価格モデルは、はるかに高価なVMコストの削減を考慮し、ワークロードの総所有コストを下げるよう設計されています。

次のステップ