クラウド型DWHにおけるデータストア（データベース）の拡張方法に関する整理

## 概要
下記のサービスにて、データストア（データベース）の拡張方法を整理します。

- Azure SQL Database  for PostgreSQL
- Databricks
- Snowflake
- Azure Synapse Analytics SQL Pool
- Amazon Redshift
- BigQuery

背景としては、Snowflakeは拡張性にすぐれているのですが、他サービスと比較したときにどのような相違点があるのかを説明するために実施しました。他クラウド型DWHと比較すると「3. クラスターのスケールアウト」と「4. コンピューティングリソースのマルチ化」観点で異なります。Databricksのように「4. コンピューティングリソースのマルチ化」が可能となることから、データレイクとしての利用が可能となります。即答性が高いことからも、バッチレイヤーとサービスレイヤーの共存させるようなレイクハウスとしての利用が可能となります。


## 各サービスにおけるデータストアの拡張方法の比較



| サービス                           | テクノロジー                     | 1. スケールアップ | 2. ノードのスケールアウト | 3. クラスターのスケールアウト | 4. コンピューティングリソースのマルチ化 |
| ---------------------------------- | -------------------------------- | ----------------- | ------------------------- | ----------------------------- | --------------------------------------- |
| Azure SQL  Database for PostgreSQL | 対称型マルチプロセッシング (SMP) | 〇                | △     <Br>読み取りのみ        | -                             | -                                       |
| Databricks                         | 超並列処理 (MPP)                 | 〇                | 〇                        | ×                             | 〇                                      |
| Snowflake                          | 超並列処理 (MPP)                 | ×                 | 〇                        | 〇                            | 〇                                      |
| Azure Synapse  Analytics SQL Pool  | 超並列処理 (MPP)                 | ×                 | 〇                        | ×                             | ×                                       |
| Amazon  Redshift                   | 超並列処理 (MPP)                 | ×                 | 〇                        | △     <Br>読み取りのみ            | △     <Br>読み取りのみ                                       |
| BigQuery                          | 超並列処理 (MPP)                 | ×                 | 〇     <Br>定額料金のみ       | ×                             | △                                       |


## 前提知識
### 2つのコンピューティング処理テクノロジー～SMPとMPP～

| テクノロジー                      | 説明                                                         | サービス例            |
| --------------------------------- | ------------------------------------------------------------ | --------------------- |
| 対称型マルチプロセッシング  (SMP) | CPU、メモリ、ストレージなどのリソースを共有したシステム。    | RDB                   |
| 超並列処理 (MPP)                  | CPU、メモリ、ストレージなどのリソースを保持させたノードを、ネットワークリンクにより処理を行うシステム。 | Hadoop、Spark、Presto |


### データストアの拡張方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/0d734db2-e463-4b28-8c71-d96749ced6c3.png)

| 番号 | 拡張方法                                                  | 説明                                                         | メリット                                                     |
| ---- | --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1    | スケールアップ     （垂直方向のスケーリング）             | CPU、メモリなどのリソースの容量を増減する方法。              |**SMP・MPPにおいて** <br> 処理可能なデータ量を増やすことができる。                     |
| 2    | ノードのスケールアウト     （水平方向のスケーリング）     | 同一のエンドポイントを利用可能な状態で、CPU、メモリなどのリソースを保持したノードの数を増減する方法。 | **SMPにおいては** <br>    同時実行性（同時接続数）を高めることができる     <br>**MPPにおいて** <br>    処理可能なデータ量を増やすことができる。 |
| 3    | クラスターのスケールアウト     （水平方向のスケーリング） | 同一のエンドポイントを利用可能な状態で、クラスターの数を増減する方法。 | **MPPにおいて** <br>     同時実行性（同時接続数）を高めることができる。 |
| 4    | コンピューティングリソースのマルチ化                      | 同一のストレージに接続可能な状態で、クラスターの数を増減する方法。 | **MPPにおいて** <br>     コンピューティングリソース間の依存関係が低いため、データの書き込みやデータの読み込みなどの複数のワークロードを同時に実行可能となる。 |

### 更新履歴
1. Amazon Redshiftにて、「4. コンピューティングリソースのマルチ化」の読み取りのみが可能へ
2020年10月15日に、クロスデータベースクエリという機能が発表されたため、Amazon Redshiftにて、「4. コンピューティングリソースのマルチ化」の読み取りのみが可能となりました。

2. BigQueryにて、「4. コンピューティングリソースのマルチ化」の実施方法として、別のプロジェクトへクエリ発行する方法を発覚したため△に変更。

[Amazon Redshift でのクロスデータベースクエリを発表 (プレビュー)](https://aws.amazon.com/jp/about-aws/whats-new/2020/10/announcing-cross-database-queries-for-amazon-redshift-preview/)