
- Azure SQL DatabaseとAzure Synapse Analyticsの用途の違いは?
- それぞれのメリット・デメリットは?
上記を疑問について解決できる記事を用意しました。
この記事で解説する「Azure SQL DatabaseとAzure Synapse Analyticsの用途の違い、メリット・デメリットについて」を読めば、要件に合わせた適切な製品選定の基準を知ることが出来ます。
Azure SQL DatabaseとAzure Synapse Analyticsの用途の違い

結論から言うと、それぞれの要との違いは下記の通りです。
- Azure SQL Database
→一つのテーブルに格納されるデータが多くない場合や、OLTPのように一つのデータを素早く取得するようなシナリオ
- Azure Synapse Analytics
→6000万行以上を含む大きなサイズのテーブルが複数存在し、一度に大量のデータを読み取って分析するようなシナリオ
詳細

Azure Synapse Analytics が適しているのは、以下のようなシナリオです。主に、データの分析に適しているといえます。
・一つのテーブルに含まれるデータの行数が多い(6000万行以上)
・一度に大量のデータを読み取る
Azure Synapse Analytics は、既定でクラスター化列ストアインデックスが採用され、最適化されています。
クラスター化列ストアインデックスは、約100万行を1グループとした行グループに圧縮することで、大量データの高速な読み取りを実現するもので、さらにこの行グループを60個のディストリビューションに分散して並列処理を行います。
そのため、一つのテーブルに格納されているデータの行数が6000万行(100万行x60ディストリビューション)以上の場合、最適なパフォーマンスを発揮することができますが、
データの行数が6000万行を下回るようなテーブルの場合は、圧縮効率が悪くなり、パフォーマンスを最大限引き出せない場合があります。
通常、テーブルあたりの行数が 100 万を超えるまで、列ストア テーブルでは圧縮された列ストア セグメントにデータをプッシュしません。 各専用SQL プール テーブルは60 個のテーブルにパーティション分割されます。 そのため、テーブルの行数が6,000 万を超えない限り、列ストア テーブルはクエリにとってメリットがありません。
ヒント
6,000 万行未満のテーブルについては、列ストア インデックスを使用しても最適なソリューションを得られない可能性があります。
引用:専用SQL プールのベスト プラクティス- Azure Synapse Analytics | Microsoft Docs
逆に、一つのテーブルに格納されるデータが多くない場合や、OLTPのように一つのデータを素早く取得するようなシナリオの場合、Azure SQL Database のほうが適しているといえます。
メリット・デメリット

メリット
大規模なデータセットに最適化されていて、そのデータを使用した読み込みや分析のバッチ指向ワークロードを、Azure SQL Databaseのような対称型マルチプロセッシング(SMP) ベースのシステムよりも高速に行うことができます。
デメリット
その特性からフロントのコントロールノードにてクエリを解析、各ノードで実行するクエリ作成、またノード間のデータ送受信などのオーバーヘッドが発生します。
これにより元の実行時間が短い小規模なクエリを実行する場合は、並列処理の時間短縮以上にオーバーヘッドが発生し、Azure SQL Databaseよりも処理が遅くなる可能性があります。
まとめ

上記で紹介した「Azure SQL DatabaseとAzure Synapse Analyticsの用途の違い、メリット・デメリットについて」を理解し、要件に合わせた適切な製品選定の参考になれば幸いです。
最後にもう一度でに内容を確認しましょう。
- Azure SQL Database
→一つのテーブルに格納されるデータが多くない場合や、OLTPのように一つのデータを素早く取得するようなシナリオ
- Azure Synapse Analytics
→6000万行以上を含む大きなサイズのテーブルが複数存在し、一度に大量のデータを読み取って分析するようなシナリオ
- メリット
大規模なデータセットに最適化されていて、そのデータを使用した読み込みや分析のバッチ指向ワークロードを、Azure SQL Databaseのような対称型マルチプロセッシング(SMP) ベースのシステムよりも高速に行うことができる
- デメリット
その特性からフロントのコントロールノードにてクエリを解析、各ノードで実行するクエリ作成、またノード間のデータ送受信などのオーバーヘッドが発生します。
これにより元の実行時間が短い小規模なクエリを実行する場合は、並列処理の時間短縮以上にオーバーヘッドが発生し、Azure SQL Databaseよりも処理が遅くなる可能性があります。
さらに詳細について具体的に学びたい方は下記にも公式ドキュメントにも目を通しましょう。
参考
- 専用SQL プールのベスト プラクティス- Azure Synapse Analytics | Microsoft Docs
- サーバーレスSQL プールのベスト プラクティス- Azure Synapse Analytics | Microsoft Docs
- Azure SQL Database サービスとは- Azure SQL Database | Microsoft Docs