Synapse Analytics の SQL on-demand(Serverless SQL Pool) と、Azure Storage の Query Acceleration では、Azure Storage 上のファイルに対して、SQL を実行することが可能です。
どちらもファイル対して、SQL を実行する機能ではありますが、これらの機能ではどのような違いがあるのか気になったので簡単にではありますが比較してみました。
ツールによりデータを取得するか、SDK からクエリを実行してデータを取得するかという、そもそものユースケースに違いがありますので、あまり比較しても意味はないかもしれませんが、ざっとした比較では次のようになるかと。
SQL on-demand | Query Acceleration | |
検索対象として利用可能な Azure ストレージ | Azure BLOB ストレージ Azure Data Lake Storage Gen2 |
Azure BLOB ストレージ Azure Data Lake Storage Gen2 (Synapse Link で Cosmos DB に接続可) |
クエリの実行方法 | TDS データは TDS で取得 |
SDK データは Stream オブジェクトで取得 |
サポートする SQL | 一般的な検索の SQL をサポート データソース間の JOIN が可能 |
限定的 な SQL をサポート 単一データソースによる検索 |
データのエクスポート | TDS を利用可能なツール CETAS |
Stream オブジェクトをコードで操作 |
検索対象のファイル | CSV JSON Parquet |
CSV JSON |
一つのクエリで検索可能なファイル | ディレクトリ ワイルドカード |
単一ファイル |
メタデータによる検索するファイルのフィルター | filename() 関数 filepath() 関数 |
メタデータ BLOB インデックスタグ |
Ignite 2020 の What’s New in Azure Storage では、Query Acceleration に関しては、次のような解説が行われていました。
「Deeply integrated into Azure Synapse Analytics for improved performance and cost」と説明がされています。
具体的にどのように Synaspe Anaytics と統合されているのかまでは解説されていないのですが、Synapse Analytics で使用されている Polaris という分散 SQL エンジンが内部的には使用されているのかもしれませんね。