Google cloudのデータベースサービスまとめ

# 1. はじめに
本記事は[アイレット株式会社 22新卒 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/iret-22)の記事です。
初めて書くので暖かい目で見ていただけると幸いです！

文系未経験で今年入社してAWSと最近はGC認定の勉強をしていてサービスがとにかく多く、違いや特徴を理解するのが大変でした。
今回は特に多くてわかりにくいと感じたGoogle cloudのデータベースサービスについて調べてまとめたことと、いくつか実際にコンソールを触ってみたのでまとめました。

以下のデータベースサービスについて書いています。
* Cloud SQL
* Cloud Spanner
* Postgre SGL 向け AlloyDB
* Orade 向け BareMetalSolution
* Big Query
* Cloud Bigtable
* Firestore
* Firebase Realtime Database
* Memorystore
* MongoDB Atlas
* Google Cloud Partner Services

# 2. Cloud SQL
## SQLとは
SQL（構造化クエリ言語）はデータ操作のための標準言語です。
データベースにデータを挿入したり、検索したり操作する際に利用されています。
そして、SQLは国際標準化されているため、MySQLやPostgreSQLなどさまざまなデータベースで利用できるため汎用性があります。

## Cloud SQL
* Cloud SQL は従量課金です。
* Cloud SQL は、MySQL、PostgreSQL、SQL Server 用のフルマネージド リレーショナル データベースです。
* 簡単に利用を開始することができ、保守費用の削減やストレージ容量の管理、バックアップを自動化できます。
### 実際にCloud SQLを触ってみた
1. 事前にBigQuery コンソールで実行したクエリの結果２つ（start_station_name）（end_station_name）を[結果を保存] > [CSV（ローカル ファイル）]でダウンロードしてある状態で進めます。
:::note info
本記事の項目６で実際に載せています。
:::
![スクリーンショット 2022-12-08 22.53.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/093f2ca3-b72f-7e2d-464b-5433862cd1df.png)
2. Cloud コンソールに移動後、[Cloud Storage] > [ブラウザ]でストレージ バケットを作成します。
![スクリーンショット 2022-12-08 22.59.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/468993f6-d0b9-d2a0-e845-8a43e40b3bed.png)
3. ダウンロードしたファイルを2つアップロードします。
![スクリーンショット 2022-12-09 1.24.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/b17147f7-8305-b634-fca0-27148f7326f0.png)
4. 項目６の手順でCloud SQL インスタンスを作成します。
5. 作成後Cloud Shell でデータベースを作成します。以下のコマンドを実行して SQL インスタンスに接続します。
```
gcloud sql connect  ka-suzuki-test --user=root
```
6.独自のデータベースを作成して、ロンドン市内のシェア自転車のデータを格納するため「bike」というデータベースを作成します。
```
CREATE DATABASE bike;
```
7.bike データベース内にテーブルを作成します。
```
USE bike;
CREATE TABLE london1 (start_station_name VARCHAR(255), num INT);
```
8.「london2」という別のテーブルを作成します。
```
USE bike;
CREATE TABLE london2 (end_station_name VARCHAR(255), num INT);
```
9.Cloud SQL のインスタンス ページで、[インポート]でテーブルに CSV ファイルをアップロードします。「start_station_data」をデータベース（bike）を選択し、「london1」をテーブルとして入力して[インポート]を押します。

10.「end_station_data.csv」をデータベース（bike）を選択し、「london２」をテーブルとして入力して[インポート]を押します。

11.下記コマンドで内容を確認します。
```
SELECT * FROM london1;
SELECT * FROM london2;
```
基本的な SQL キーワードを使って大規模なデータセットに対してクエリを実行し、データポイントと、具体的な質問への答えを受け取ることができるようになります。

# 3. Cloud Spanner
* インスタンスのコンピューティング容量、データベースのテーブルや二次インデックスが使用するストレージ量、バックアップ ストレージ、リージョン間のインターネット下りに対してのみ課金されます。
* フルマネージド リレーショナル データベースであり、99.999%の可用性を備えています。
* 柔軟に要求される処理に応じてスケーリングができ、リソースの最適化を図ることができます。ゲームや支払い、在庫管理など、強整合性と高可用性を維持したまま無制限のスケーリングを必要とする用途に最適です。
* ダウンタイムなしでトラフィックを処理しながら列の追加、インデックスの追加などの変更やメンテナンスが可能です。
* BigQuery と組み合わせた活用で生産性を大きく向上させることが可能です。

# 4. PostgreSQL 向け AlloyDB
* CPU＆メモリ料金は時間とメモリ容量によって決まり、ストレージ料金はプロビジョニングした容量でなく格納したデータ容量によって決まります。
* フルマネージドの PostgreSQL 互換データベース サービスです。
* ほとんどのデータベース障害を、自動的に検出して復旧します。ダウンタイムなしにサイズ変更とデータベースのメンテナンスが可能です。
* Google の人工知能プラットフォームである Vertex AI が組み込まれているため、機械学習モデルをクエリまたはトランザクション内で直接呼び出すことができ、低レイテンシで高スループットの拡張分析情報が得られます。
* PostgreSQL と比較して、トランザクションで 4 倍、分析クエリで最大 100 倍の性能があります。

# 5. Oracle 向け Bare Metal Solution
* 料金モデルはサブスクリプション ベースです。
* Oracle データベースをオンプレミスと同様に実行できます。
* 業界トップクラスのデータ保護が可能です。
* 既存の自動化フレームワークと統合することでデータベース管理者の日常業務を自動化することができます。
* 従来のアプリケーションを作り替える際に適してます。

# 6. Big Query
* 従量課金制であり、クエリの処理にかかる分析料金と、Google BigQueryに読み込むデータを保存するストレージ料金の2つがあります。
* BigQueryはテラバイトやペタバイトというビッグデータを超高速で解析することができます。また、様々なログデータなどデータの蓄積場所としても利用可能です。
* データの保存と大規模なデータセットに対するクエリやフィルタの実行、結果の集計、複雑な操作を簡単にリアルタイムで行うことができます。

### 実際にコンソールで SQL クエリを実行してみました。
1. Google Cloud コンソールでナビゲーション メニュー > [BigQuery] を選択します。
![スクリーンショット 2022-12-04 23.50.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/67c2b0dd-7019-7f6b-8d58-2b9aecef342d.png)
2. [+ データを追加]→[プロジェクトに名前を付ける]→プロジェクト名に「bigquery-public-data」を入力
BigQuery コンソールを開いた後、分析をするために今回使用しているラボのプロジェクトをpullした状態です。
![スクリーンショット 2022-12-08 22.55.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/5031163c-7594-756f-f76e-54186f793853.png)
![スクリーンショット 2022-12-08 22.56.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/cfa294d3-d5ce-17a1-59cb-c992e40de18b.png)
3. [+ データを追加]→[公開データセット]で「London Bicycles Hires」を検索後、[データセットを表示]をクリックするとデータにアクセスできるようになります。
![スクリーンショット 2022-12-08 22.56.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/567f5a22-650a-f62c-d777-b4a3e6fc1588.png)
london bicycles データセットを選択後、関連付けられているテーブルを表示できます。
4. 下記のSQLコマンドを実行するとクエリで指定したものが返されることが確認できます。
```
SELECT end_station_name FROM `bigquery-public-data.london_bicycles.cycle_hire`;
```
![スクリーンショット 2022-12-08 22.49.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953479/2d0d4ad9-6927-1e57-d415-acc7e6091848.png)
# 7. Cloud Bigtable
* 料金体系は使った分だけ料金が発生する従量課金型です。
* 最大 99.999% の可用性で大規模な分析ワークロードにも運用ワークロードにも対応できる、フルマネージドでスケーラブルな NoSQL データベース サービスです。
* 0ミリ秒未満という低いレイテンシで高スループットの読み取りと書き込みができるため膨大なデータをスピーディーに処理できます。数十億行、数千列の規模にスケーリング可能で、超大容量データを保存することができます。

# 8. Firestore
* 読み取り、書き込み、削除するドキュメントの数、データベースにより使用されるストレージの容量、ネットワーク帯域幅の使用量に応じて日単位で課金が発生します。
* メンテナンスの時間枠やダウンタイムなしで必要に応じて簡単にスケールアップ、スケールダウンできるフルマネージドでサーバーレスなデータベースで、アプリケーション開発に集中できます。
* リアルタイム アプリケーションとモバイルアプリに理想的です。
* 他のGoogle Cloud サービスと統合できます。

# 9. Firebase Realtime Database
* 無料プランでは、1つのデータベースしか使用できませんが、有料プランでは複数のデータベースが作成可能で、1つのデータベースあたり20万台の同時接続が可能になり従量課金になっています。
* 接続しているクライアントとの同期は自動で行われ、対応機種も多く、アプリデータを保管しておくのに最適です。
* ビックデータを取り扱うのに適しています。
* サーバーレスで保守・運用もGoogleが行ってくれ、PCだけでなくスマートフォンにも対応しているため、アプリ開発や実際の運用にも向いています。

# 10. Memorystore
* 料金は、容量、レプリカ数、プロビジョニングするリージョンなどの設定によって異なり、秒単位の課金やインスタンスも用意されています。
* Redis と Memcached の両方をサポートしているため費用や可用性の要件に合った適切なエンジンを選択できます。
* データ保護を念頭に置いた設計になっており、24時間365日のモニタリングによって、アプリケーションとデータを確実に保護します。
* フルマネージドで最小限のダウンタイムでスケーリングが可能なためアプリケーションの需要に基づいてインスタンスのサイズを適切に調整できます。
* ソーシャル、チャット、ニュース フィードの用途に適しています。

# 11. MongoDB Atlas
* 使用したリソースに対して課金が発生します。
* Googleインフラストラクチャ上で、フルマネージドサービスを提供します。UIを数回クリックするかAPI呼び出しを実行するだけでデータベースを簡単に管理できます。
* インフラストラクチャのプロビジョニング、 データベースのセットアップ、可用性の確保、グローバルな配信、バックアップなど管理を自動化します。
* 詳細な監視、クエリの最適化、およびカスタマイズ可能なアラート、100 を超えるパフォーマンス メトリックを視覚化して対応し、データベースのパフォーマンスをリアルタイムで追跡し、実行速度の遅いクエリを改善するための自動提案を受け取ることができます。
*  データベース内部でも通信経路でも暗号化されており安全である。

# 12. Google Cloud Partner Services
* オープンソース パートナー ネットワークからのマネージド サービスです。
* クラウドへの移行やクラウドでの構築と操作を支援するパートナーを多数の中から選ぶことができます。
* パートナー制度の認定には、豊富な経験や高度なスキルが求められ、Google からパートナーとして認められることで提供が可能になります。
* 顧客の Google Cloud 導入までの流れをすべてサポートし、導入後のアフターフォローもパートナーが責任を持って担当します。

# さいごに
時間はかかりますが実際にコンソールを触ってみると理解がしやすいと思うので実際に触りながら理解してみてはいかがでしょう。
似たようなサービスが多いので違いを意識して覚えると資格の試験の際にも役立つと思います。

# 参考文献
図解即戦力 Google Cloudのしくみと技術がこれ1冊でしっかりわかる教科書
https://www.cloudskillsboost.google/focuses/2802?catalog_rank=%7B%22rank%22%3A1%2C%22num_filters%22%3A0%2C%22has_search%22%3Atrue%7D&parent=catalog&search_id=20590616
https://cloud.google.com/products/databases?hl=ja
https://console.cloud.google.com/marketplace/product/mongodb/mdb-atlas-self-service?hl=ja
https://www.techfirm.co.jp/blog/sql