【クラウドDB比較】無料枠で提供されるサービスレベル

# はじめに

クラウドサービス多すぎる。
なんとなく使いたいものは決まっているのですけど、自己学習も兼ねてふわっとサービスレベルを比較してみる。

VPS/PaaS/FaaSの比較はこちら: [【クラウドVPS/PaaS/FaaS比較】最低料金とサービスレベルの比較](https://qiita.com/nh321/items/cc66bf0be8b1a305d229)

**前提**

- 無料枠で何ができるんだろう？の比較
    - 個人開発レベルで何を選ぶかの選定に使う程度の比較
    - エンタープライズとして何を使うかレベルの詳細な機能比較ではない
- 初回登録時の「〜ドル分のクレジットをプレゼント！」みたいなのは、無視してます。
- AWSとGCPとFirebaseとHerokuとMongoDB@Atlasの比較
    - 最初に世の中全てのクラウドを比較しようとしてモチベーションが死にそうになった
    - 選定基準は、「[【比較してみた】みんなが使っている個人開発（Webサービス）向けPaaS・ホスティングサービス](https://qiita.com/nh321/items/0373a740e56fad6a49d8)」でよく使われていたもの
- DBのカテゴライズはテキトーです
    - あくまで自分が理解しやすい分類の仕方

**注意事項**
当たり前のことを書きます。

- 個人開発のサービスが育ったときにどれが一番安いかは、ケースバイケース
- 最新情報は公式サイトをご確認ください
- ざっくり把握することを前提にした記事なので、厳密には表現が違う部分があるやもです

# 比較対象
一行説明は、基本的に公式サイトから取得してます。

**RDBMS**
意外と少ない。

- [AmazonRDS@AWS](https://aws.amazon.com/jp/rds/)：6 つの人気データベースエンジンから選択できるマネージドリレーショナルデータベースサービス。
- [CloudSQL@GCP](https://cloud.google.com/sql/)：MySQL と PostgreSQL のフルマネージド データベース サービス
- [CloudSpanner@GCP](https://cloud.google.com/spanner/)：水平スケーリング可能で高い整合性を備えた、初のリレーショナル データベース サービス
- [HerokuPostgres@Heroku](https://elements.heroku.com/addons/heroku-postgresql)：信頼性が高く、強力なデータベース（Postgres）。

※[CloudSpanner@GCP](https://cloud.google.com/spanner/)をRDBMSカテゴリにまとめて良いのか悩ましい。。。

**DWH**
[DWHとは](https://www.techcrowd.jp/datawarehouse/differencefromrdb/)

- [AmazonRedshift@AWS](https://aws.amazon.com/jp/redshift/)：高速、シンプル、費用対効果の高いデータウェアハウス。
- [GoogleBigQuery@GCP](https://cloud.google.com/bigquery/?hl=ja)：機械学習が組み込まれ、高速かつ高スケーラビリティでコスト効率に優れた、分析用フルマネージド クラウド データ ウェアハウス

**NoSQL(KVS：サーバ接続)**
サーバからアクセスする系

- [MongoDB@Atlas](https://www.mongodb.com/cloud/atlas)：DBなんかに時間をかけずアプリ開発に時間をかけたい人向けの高速なMongoDBクラウドサービス。
- [AmazonDynamoDB@AWS](https://aws.amazon.com/jp/dynamodb/)：どのような規模においてもパフォーマンスを必要とするアプリケーション用の非リレーショナルデータベース。
- [CloudBigtable@GCP](https://cloud.google.com/bigtable/)：大量データの分析や操作に適したペタバイト規模のフルマネージド NoSQL データベース サービス。
- [CloudDataStore@GCP](https://cloud.google.com/datastore/?hl=ja)：ウェブ、モバイル アプリケーションのためのスケーラビリティの高い NoSQL データベース（Bigtableの機能を絞って、使いやすくしたサービス？）

[^firestore]: [Firebase RTDB + GCP datastore = Firestoreについて第一印象](https://qiita.com/Yatima/items/54ea22d0cea1acc6cbcb)

**NoSQL(KVS：クライアント接続)**
クライアントからもアクセスできちゃう系

- [CloudFirestore@GCP](https://cloud.google.com/firestore/)：グローバルにスケールできるクラウドネイティブアプリのためのデータストア。（[RealtimeDatabase@Firebase](https://firebase.google.com/products/database/?hl=ja)と[CloudDataStore@GCP](https://cloud.google.com/datastore/?hl=ja)のいいとこ取りって話を聞いた[^firestore]）
- [Firestore@Firebase](https://firebase.google.com/docs/firestore/?hl=ja)：（GCPのFirestoreと同一のモノ？入口が違うだけ？）
- [RealtimeDatabase@Firebase](https://firebase.google.com/products/database/?hl=ja)：ユーザー間でリアルタイムにデータを保存および同期できる、クラウドホスト型 NoSQL データベース。


**NoSQL(グラフDB)**
調べた範囲では、選択肢が一つしかないので、比較しない。

- [AmazonNeptune@AWS](https://aws.amazon.com/jp/neptune/)：クラウド向けに構築された高速で信頼性の高いグラフデータベース。

そもそもグラフDBとは何かって人は、以下リンクをご参照ください。
[[15分で] グラフデータベースNeo4jに超入門してみた](https://moneyforward.com/engineers_blog/2016/01/13/neo4j/)


**NoSQL(インメモリDB)**
DB界のストレイト・クーガー[^radicalgoodspeed]ってイメージ。

- [AmazonElastiCache@AWS](https://aws.amazon.com/jp/elasticache/)
- [CloudMemoryStore@GCP](https://cloud.google.com/memorystore/)
- [HerokuRedis@Heroku](https://elements.heroku.com/addons/heroku-redis)

[^radicalgoodspeed]: 「お前に足りないモノ！それはァァー！情熱思想理念頭脳気品優雅さ勤勉さァ！ そして何よりもぉおーッ！　速　さ　が　足　り　な　い　！　」

# 比較結果
##RDBMS

金額の安心感を基軸にRDBMSを選択するなら、[HerokuPostgres@Heroku](https://elements.heroku.com/addons/heroku-postgresql) で良さそう。
サービスが育ってきたら、早めにプランを切り替えるか、別のサービスに切り替える感じかな。。。

機能面で見ると、説明見る限り、[CloudSpanner@GCP](https://cloud.google.com/spanner/)がNoSQLとRDBMSの良いとこ取りのように見えるけど、果たしてどんな制約があるのだろうか・・・

| サービス名 | 永久無料枠 | 期間限定無料枠 | 容量上限 | 性能上限 | 時間上限 |
| --- | --- | --- | --- | --- | --- |
| [AmazonRDS@AWS](https://aws.amazon.com/jp/rds/) | ❌：なし | ⭕️：あり | 20 GB | 1,000 万IO/月 | 稼働：750 時間/月 |
| [CloudSQL@GCP](https://cloud.google.com/sql/) | ❌：なし | ❌：なし | - | - | - |
| [CloudSpanner@GCP](https://cloud.google.com/spanner/) | ❌：なし | ❌：なし | - | - | - |
| [HerokuPostgres@Heroku](https://elements.heroku.com/addons/heroku-postgresql) | ⭕️：あり | ❌：なし | 行数：1 万 | 同時接続数：20/月 | ダウンタイム：最大 4 時間/月 |

##DWH

無料枠だけ見れば、[GoogleBigQuery@GCP](https://cloud.google.com/bigquery/?hl=ja)かな？
とは言え、「[BigQueryで150万円溶かした人の顔](https://qiita.com/itkr/items/745d54c781badc148bb9)」を見かけたことがあるので、使いすぎには注意したい。(BigQueryに限った話では無いけど)

| サービス名 | 永久無料枠 | 期間限定無料枠 | 容量上限 | 書込上限 | 読込上限 |
| --- | --- | --- | --- | --- | --- |
| [AmazonRedshift@AWS](https://aws.amazon.com/jp/redshift/) | ❌：なし | ❌：なし | - | - | - |
| [GoogleBigQuery@GCP](https://cloud.google.com/bigquery/?hl=ja) | 🔺：部分的にあり | ❌：なし | 10 GB | 有償 | 1TB |

##NoSQL(KVS：サーバ接続)

ケースバイケース。
データ量が少ないなら、[MongoDB@Atlas](https://www.mongodb.com/cloud/atlas)。
データ量が多い場合は、[AmazonDynamoDB@AWS](https://aws.amazon.com/jp/dynamodb/)かな？

機能面でいうと、[CloudDataStore@GCP](https://cloud.google.com/datastore/?hl=ja)は賛否両論感を感じた。[^datastore]
[AmazonDynamoDB@AWS](https://aws.amazon.com/jp/dynamodb/)は割と枯れてきてる気がするので、困っても情報がどっかに落ちてそう。

[^datastore]: 「[AmazonDynamoDB@AWS](https://aws.amazon.com/jp/dynamodb/)よりも凄い！」って情報もあれば、「単純に使いにくい・・・」って情報もあった。

| サービス名 | 永久無料枠 | 期間限定無料枠 | 容量上限 | 書込上限 | 読込上限 |
| --- | --- | --- | --- | --- | --- |
| [MongoDB@Atlas](https://www.mongodb.com/cloud/atlas) | ⭕️：あり | ❌：なし | 512MB | たぶん無い | たぶん無い |
| [AmazonDynamoDB@AWS](https://aws.amazon.com/jp/dynamodb/) | ⭕️：あり | ❌：なし | 25GB | 25回/ 秒 | 25回/秒 |
| [CloudBigtable@GCP](https://cloud.google.com/bigtable/) | ❌：なし | ❌：なし | - | - | - |
| [CloudDataStore@GCP](https://cloud.google.com/datastore/?hl=ja) | ⭕️：あり | ❌：なし | 1GB | 20,000回/日 | 50,000回/日 |

##NoSQL(KVS：クライアント接続)

同時アクセスが少ないなら、[RealtimeDatabase@Firebase](https://firebase.google.com/products/database/?hl=ja)が金額面では安心っぽい？
でも、機能面では[Firestore@Firebase](https://firebase.google.com/docs/firestore/?hl=ja)の方が上っぽいので、悩ましいところ。

| サービス名 | 永久無料枠 | 期間限定無料枠 | 容量上限 | 書込上限 | 読込上限 |
| --- | --- | --- | --- | --- | --- |
| [CloudFirestore@GCP](https://cloud.google.com/firestore/) | ⭕️：あり | ❌：なし | 1GB | 2 万/日 | 5 万/日 |
| [Firestore@Firebase](https://firebase.google.com/docs/firestore/?hl=ja) | ⭕️：あり | ❌：なし | 1GB | 2 万/日 | 5 万/日 |
| [RealtimeDatabase@Firebase](https://firebase.google.com/products/database/?hl=ja) | ⭕️：あり | ❌：なし | 1GB | 同時接続100 | 同時接続100 |

##NoSQL(インメモリDB)

[HerokuRedis@Heroku](https://elements.heroku.com/addons/heroku-redis)が金額面では安心だけど、そもそもHerokuにインスタンスが無いと、インメモリDBの恩恵を受けにくい気がする。

| サービス名 | 永久無料枠 | 期間限定無料枠 | 容量上限 | 同時アクセス上限 | 時間上限 | Memcached | Redis |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [AmazonElastiCache@AWS](https://aws.amazon.com/jp/elasticache/) | ❌：なし | ⭕️：あり | - | - | 750時間 | ⭕️ | ⭕️ |
| [CloudMemoryStore@GCP](https://cloud.google.com/memorystore/) | ❌：なし | ❌：なし | - | - | - | ❌ | ⭕️ |
| [HerokuRedis@Heroku](https://elements.heroku.com/addons/heroku-redis) | ⭕️：あり | ❌：なし | 25MB | 20 | 1000時間？ | ❌ | ⭕️ |

#さいごに

機能面で多種多様になってきたデータベースに全然ついていけてない・・・
個人開発において、金銭面での不安はあるのですが、GCPやHerokuに関しては、無償枠で登録している限りは、絶対に課金されないという安心感が嬉しい。

#参考

- 公式情報
    - [AWS無料枠](https://aws.amazon.com/jp/free/)
    - [GCP料金](https://cloud.google.com/products/)
    - [Firebase料金](https://firebase.google.com/pricing/?hl=ja)
    - [Heroku無料枠](https://jp.heroku.com/free)
- その他参考にさせていただいた情報
    - AWS
        - [「AWS is 何」を3行でまとめてみるよ](https://qiita.com/kohashi/items/1bb952313fb695f12577)
    - GCP
        - [【GCP公式ブログ】『 1 行でわかる Google Cloud Platform』公開](https://cloudplatform-jp.googleblog.com/2018/05/Google-Cloud-Platform-PaperPrint.html)
        - [GCP 全サービスを 3行で解説](http://x68000.q-e-d.net/~68user/cloud/allservice-gcp.html)
    - Firebase
        - [わかる！Firebase ～全てのサービスをおつまみ紹介～](https://qiita.com/dogwood008/items/fa95b62ad151f823af70)
        - [Firebase RTDB + GCP datastore = Firestoreについて第一印象](https://qiita.com/Yatima/items/54ea22d0cea1acc6cbcb)