クエリアクセラレーションを活用することで、アプリケーションや分析フレームワークはデータ処理を最適化できます。 彼らは特定の操作を実行するために必要なデータのみを取得します。 このアプローチにより、保存データの洞察を得るために必要な時間と処理能力が削減されます。
概要
クエリ高速化は、フィルタリング 述語 と 列プロジェクション をサポートします。 これらの述語や射影を用いることで、アプリケーションはディスクからデータを読み取る際に行や列をフィルタリングできます。 述語の条件を満たすデータのみがネットワークを通じてアプリケーションに転送されます。 この方法はネットワークの遅延と計算コストを削減します。
SQLを使って、クエリアクセラレーションリクエストの行フィルタ条件と列の射影を指定します。 次の制約に留意してください。
- 要求で処理されるファイルは 1 つだけです。
- クエリアクセラレーションは、結合やグループ化などの高度なリレーショナル機能をサポートしていません。
- クエリ アクセラレーションでは、CSV と JSON 形式のデータが各要求への入力としてサポートされます。
クエリ アクセラレーション機能は、Data Lake Storage (階層型名前空間が有効になっているストレージ アカウント) に限定されません。 クエリ アクセラレーションは、階層型名前空間が有効になっていないストレージ アカウント内 の BLOB と互換性があります。 この互換性により、すでに記憶アカウントにブロブとして保存されているデータを処理しても、ネットワーク遅延の削減や計算コストの削減が可能です。
クライアント アプリケーションでクエリ アクセラレーションを使用する方法の例については、「 Azure Data Lake Storage クエリ アクセラレーションを使用してデータをフィルター処理する」を参照してください。
データ フロー
次の図は、一般的なアプリケーションでクエリ アクセラレーションを使用してデータを処理する方法を示しています。
クライアント アプリケーションは、述語と列プロジェクションを指定してファイル データを要求します。
クエリ アクセラレーションは、指定された SQL クエリを解析し、データを解析およびフィルター処理するための作業を分散します。
プロセッサはディスクからデータを読み取り、適切なフォーマットで解析し、指定された述語や列射影を適用してフィルタリングします。
クエリ高速化では、レスポンスシャードを結合してクライアントアプリケーションにストリーミングで返します。
クライアント アプリケーションは、ストリーミングされた応答を受信して解析します。 アプリケーションは他のデータをフィルター処理する必要はありません。また、必要な計算や変換を直接適用できます。
低コストでパフォーマンスを向上
クエリアクセラレーションは、アプリケーションが転送・処理するデータ量を減らすことでパフォーマンスを最適化します。
集計された値を計算するために、アプリケーションは通常、ファイルから すべての データを取得し、データをローカルで処理してフィルター処理します。 分析ワークロードの入出力(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コストの削減を考慮し、ワークロードの総所有コストを下げるよう設計されています。