Azure Data Lake Storage のクエリ アクセラレーションAzure Data Lake Storage query acceleration

クエリ アクセラレーションでは、特定の操作の実行に必要なデータのみを取得することで、アプリケーションと分析フレームワークによって、データ処理を劇的に最適化することができます。Query acceleration enables applications and analytics frameworks to dramatically optimize data processing by retrieving only the data that they require to perform a given operation. これにより、格納されているデータに対する重要な分析情報を得るために必要な時間と処理能力が削減されます。This reduces the time and processing power that is required to gain critical insights into stored data.

概要Overview

クエリ アクセラレーションでは、データをディスクから読み取るときに、アプリケーションが行および列をフィルター処理できるようにするフィルターの "述語" および "列のプロジェクション" を受け入れます。Query acceleration accepts filtering predicates and column projections which enable applications to filter rows and columns at the time that data is read from disk. 述語の条件を満たすデータのみが、ネットワーク経由でアプリケーションに転送されます。Only the data that meets the conditions of a predicate are transferred over the network to the application. これにより、ネットワーク待機時間とコンピューティング コストが削減されます。This reduces network latency and compute cost.

SQL を使用して、クエリ アクセラレーション要求で行フィルター述語と列のプロジェクションを指定できます。You can use SQL to specify the row filter predicates and column projections in a query acceleration request. 要求では 1 つのファイルのみが処理されます。A request processes only one file. したがって、join や group by 集計などの SQL の高度なリレーショナル機能はサポートされていません。Therefore, advanced relational features of SQL, such as joins and group by aggregates, aren't supported. クエリ アクセラレーションでは、各要求への入力として CSV および JSON 形式のデータがサポートされます。Query acceleration supports CSV and JSON formatted data as input to each request.

クエリ アクセラレーション機能は、Data Lake Storage (階層型名前空間が有効になっているストレージ アカウント) に限定されません。The query acceleration feature isn't limited to Data Lake Storage (storage accounts that have the hierarchical namespace enabled on them). クエリ アクセラレーションは、階層型名前空間が有効になっていないストレージ アカウントの BLOB と完全に互換性があります。Query acceleration is completely compatible with the blobs in storage accounts that don't have a hierarchical namespace enabled on them. これはつまり、ストレージ アカウントに BLOB として既に格納されているデータを処理する場合でも、ネットワーク待機時間とコンピューティング コストを同様に削減できます。This means that you can achieve the same reduction in network latency and compute costs when you process data that you already have stored as blobs in storage accounts.

クライアント アプリケーションでクエリ アクセラレーションを使用する方法の例については、「Azure Data Lake Storage クエリ アクセラレーションを使用したデータのフィルター処理」を参照してください。For an example of how to use query acceleration in a client application, see Filter data by using Azure Data Lake Storage query acceleration.

データ フローData flow

次の図は、一般的なアプリケーションでクエリ アクセラレーションを使用してデータを処理する方法を示しています。The following diagram illustrates how a typical application uses query acceleration to process data.

クエリ アクセラレーションの概要Query acceleration overview

  1. クライアント アプリケーションは、述語と列のプロジェクションを指定することによってファイル データを要求します。The client application requests file data by specifying predicates and column projections.

  2. クエリ アクセラレーションは、指定された SQL クエリを解析し、データの解析とフィルター処理に作業を分配します。Query acceleration parses the specified SQL query and distributes work to parse and filter data.

  3. プロセッサはディスクからデータを読み取り、適切な形式を使用してデータを解析した後、指定された述語と列のプロジェクションを適用してデータをフィルター処理します。Processors read the data from the disk, parses the data by using the appropriate format, and then filters data by applying the specified predicates and column projections.

  4. クエリ アクセラレーションは、応答シャードを結合し、クライアント アプリケーションにストリーミングで返します。Query acceleration combines the response shards to stream back to client application.

  5. クライアント アプリケーションは、ストリーミングされた応答を受信して解析します。The client application receives and parses the streamed response. アプリケーションは、追加のデータをフィルター処理する必要がなく、必要な計算または変換を直接適用できます。The application doesn't need to filter any additional data and can apply the desired calculation or transformation directly.

低コストで優れたパフォーマンスを実現Better performance at a lower cost

クエリ アクセラレーションは、アプリケーションによって転送および処理されるデータの量を減らすことでパフォーマンスを最適化します。Query acceleration optimizes performance by reducing the amount of data that gets transferred and processed by your application.

集約値を計算するために、アプリケーションは通常、ファイルからすべてのデータを取得し、そのデータをローカルで処理およびフィルター処理します。To calculate an aggregated value, applications commonly retrieve all of the data from a file, and then process and filter the data locally. 分析ワークロードの入出力パターンを分析したところ、アプリケーションは通常、特定の計算を実行するために、読み取ったデータの 20% しか必要としないことが明らかになりました。An analysis of the input/output patterns for analytics workloads reveal that applications typically require only 20% of the data that they read to perform any given calculation. この統計は、パーティション排除などの手法を適用した後でも当てはまります。This statistic is true even after applying techniques such as partition pruning. つまり、データの 80% がネットワーク経由で不必要に転送され、解析され、アプリケーションによってフィルター処理されていることを意味します。This means that 80% of that data is needlessly transferred across the network, parsed, and filtered by applications. このパターンでは、基本的に不要なデータを削除するように設計されているため、かなりのコンピューティング コストが発生します。This pattern, essentially designed to remove unneeded data, incurs a significant compute cost.

スループットと待機時間の両方の観点で、Azure は業界をリードするネットワークを備えていますが、そのネットワークでデータを不必要に転送する場合は、やはりアプリケーションのパフォーマンスに対してコストがかかります。Even though Azure features an industry-leading network, in terms of both throughput and latency, needlessly transferring data across that network is still costly for application performance. ストレージ要求中に不要なデータをフィルターで除外することにより、クエリ アクセラレーションはこのコストを排除します。By filtering out the unwanted data during the storage request, query acceleration eliminates this cost.

さらに、不要なデータを解析してフィルター処理するために必要な CPU 負荷に対し、アプリケーションではより多くの大規模な VM をプロビジョニングして作業を行う必要があります。Additionally, the CPU load that is required to parse and filter unneeded data requires your application to provision a greater number and larger VMs in order to do its work. この計算負荷をクエリ アクセラレーションに移すことで、アプリケーションは大幅なコスト削減を実現できます。By transferring this compute load to query acceleration, applications can realize significant cost savings.

クエリ アクセラレーションのメリットを活用できるアプリケーションApplications that can benefit from query acceleration

クエリ アクセラレーションは、分散型分析フレームワークおよびデータ処理アプリケーション向けに設計されています。Query acceleration is designed for distributed analytics frameworks and data processing applications.

Apache Spark や Apache Hive などの分散型分析フレームワークには、フレームワーク内にストレージ抽象化レイヤーが含まれています。Distributed analytics frameworks such as Apache Spark and Apache Hive, include a storage abstraction layer within the framework. これらのエンジンには、ユーザー クエリの最適なクエリ プランを決定するときに、基になる I/O サービスの機能に関する知識を組み込むことができるクエリ オプティマイザーも含まれています。These engines also include query optimizers that can incorporate knowledge of the underlying I/O service's capabilities when determining an optimal query plan for user queries. これらのフレームワークでは、クエリ アクセラレーションの統合が始まっています。These frameworks are beginning to integrate query acceleration. その結果、これらのフレームワークのユーザーは、クエリに変更を加えることなく、クエリの待機時間が改善され、総保有コストが削減されます。As a result, users of these frameworks will see improved query latency and a lower total cost of ownership without having to make any changes to the queries.

クエリ アクセラレーションは、データ処理アプリケーション用にも設計されています。Query acceleration is also designed for data processing applications. これらの種類のアプリケーションでは通常、大規模なデータ変換が実行されますが、これが分析情報の取得に向けた直接的なきっかけとはならないため、確立された分散型分析フレームワークが常に使用されることはありません。These types of applications typically perform large-scale data transformations that might not directly lead to analytics insights so they don't always use established distributed analytics frameworks. これらのアプリケーションは多くの場合、基になるストレージ サービスとの直接的な関係が強いため、クエリ アクセラレーションなどの機能から直接メリットを得ることができます。These applications often have a more direct relationship with the underlying storage service so they can benefit directly from features such as query acceleration.

アプリケーションがどのようにクエリ アクセラレーションを統合できるかの例については、「Azure Data Lake Storage クエリ アクセラレーションを使用したデータのフィルター処理」を参照してください。For an example of how an application can integrate query acceleration, see Filter data by using Azure Data Lake Storage query acceleration.

価格Pricing

Azure Data Lake Storage サービス内でのコンピューティング負荷の増加により、クエリ アクセラレーションを使用するための価格モデルは、通常の Azure Data Lake Storage のトランザクション モデルとは異なります。Due to the increased compute load within the Azure Data Lake Storage service, the pricing model for using query acceleration differs from the normal Azure Data Lake Storage transaction model. クエリ アクセラレーションでは、スキャンされるデータ量のコストと、呼び出し元に返されるデータ量のコストが課金されます。Query acceleration charges a cost for the amount of data scanned as well as a cost for the amount of data returned to the caller. 詳細については、「Azure Data Lake Storage Gen2 の価格」を参照してください。For more information, see Azure Data Lake Storage Gen2 pricing.

課金モデルの変更にもかかわらず、クエリ アクセラレーションの価格モデルは、はるかに高価な VM コストの削減を前提に、ワークロードの総所有コストが削減されるように設計されています。Despite the change to the billing model, Query acceleration's pricing model is designed to lower the total cost of ownership for a workload, given the reduction in the much more expensive VM costs.

次の手順Next steps