[Google Cloud] Professional Cloud Database Engineerの更新&最新のDB関連情報

## はじめに
Professional Cloud Database Engineerの更新をしてきたので2年前との違いを記事にしようと思いましたが、2年前と特に変わらずといった感じだったので資格については軽く触れるだけにしつつここ2年くらいの更新を含めたGoogle CloudのDB関連についてまとめました(試験前に一通り確認しておいた試験に出ないデータベースについてせっかくなのでまとめました)

### 2年前の記事

https://qiita.com/lvep/items/434bdd3f3b9c1cf00217

* 2024年8月現在、上記内容から大きな変更はないように感じたため、これから受験される方は参考にしいていただければと思います。
* 試験の範囲は今後変更があると思いますので受験の際はhttps://cloud.google.com/learn/certification/guides/cloud-database-engineer?hl=ja を事前に確認しましょう

#### 唯一？の変更点
* 日本語(機械翻訳)で問題を見ることができるようになっていました
    * 2024年8月上旬にMachine Learning Engineerを受けた際にはなかったので、最近追加されたものだと思います
* 英語だと思っていたので最初に日本語で問題が出てきたので少し驚きました。私は5問くらい解いたタイミングで機械翻訳の日本語を読むのがつらくなったので英語にして問題を解きました(画面右下のボタンで4ヵ国語くらい選べるようになっていました)
:::note warn
英語⇔日本語を行うと問題文と選択肢がずれる(問題1の画面に問題2の問題文が出るような感じ)ことがありました。
問題文と選択肢があっていなくて焦りましたが全問一覧が見られる画面から問題文を選び直すと正常になります(前後の問題に移動ではだめでした)。
:::

---
これ以上は前回の記事から特に試験対策として追加するものはなかったので以後は**試験に出ない**(2024/08次時点)Google CloudのDatabase（比較的最近のもの）を紹介します。。
細かいところはすでに解説されている記事が多数あるのでざっくり概要を記載します(すべて2024年8月現在の情報です)

---

## Alloy DB
https://cloud.google.com/alloydb/docs/overview
https://cloud.google.com/blog/ja/products/databases/alloydb-for-postgresql-intelligent-scalable-storage

#### DBエンジン・バージョン
* AlloyDB for PostgreSQL(PostgreSQL互換)のみ
* メジャーバージョンは14/15がサポートされており、デフォルトは15
* メジャーバージョンアップデートを行うためにはDBを移行する必要がある ([参考](https://cloud.google.com/alloydb/docs/db-version-policies))
    * CloudSQLではインプレースか移行かが選べますがAlloyDBは移行のみなので少し残念(そのうちできるようになって欲しい)
* マイナーバージョンアップデートは自動で行われる
    * メンテナンスウィンドウの設定などはほぼCloudSQLと同じだが終了時間を指定することができない点に注意
    * メンテナンス時のダウンタイムはHA構成であれば1秒未満
    * https://cloud.google.com/alloydb/docs/maintenance

#### 料金
* 課金単位はCPU/メモリ/ストレージ/バックアップ(+ネットワーク)
    * ストレージはCloudSQLとは違い、自動でスケールするため使った分だけの課金となる
* ざっくり、CloudSQL Enterpriseの2倍・CloudSQLとSpannerの中間くらいの料金
* https://cloud.google.com/alloydb/pricing?hl=ja

#### SLA
* 99.99% (メンテナンス込み)
    * リージョナル構成のSpannerやCloud SQL Enterprise Plus(HA)と同じ
* https://cloud.google.com/alloydb/sla

#### Database Flag
* postgres.confで設定するような内容はdatabase flagを用いて設定を行うことができる(一部Postgresでは使えるものが使えないので注意)
* https://cloud.google.com/alloydb/docs/reference/database-flags

#### 運用関連

| 項目 | 内容 |
|:-:|:-:|
| VACUUM/FREEZE  | 自動実行される(https://cloud.google.com/alloydb/docs/adaptive-autovacuum)  |
| 統計情報  | 自動取得される  |
| 実行計画　| 自動取得するにはenable_auto_explainを設定する<br>Query Insightsで確認することもできる(explainのcost値を元にしていいる)|
| バックアップ | 自動バックアップや継続的バックアップに対応している<br>継続的バックアップをりようすることでRPOを0にできる(https://cloud.google.com/alloydb/docs/backup/overview#continuous)|

### Columnar Engine
* Alloy DBの特徴の1つであり特に分析クエリの高速化に役立つ
* 列志向のテーブルをメモリに持つことでクエリを高速化している
* SLAでみるとCloudSQL Enterprise Plusと差がないが分析用途で利用する場合などはクエリの高速化が期待できるためAlloyDBが有力な選択肢となる
    * 分析クエリは最大100倍の速さのようです。
* https://cloud.google.com/blog/ja/products/databases/alloydb-for-postgresql-columnar-engine
* https://cloud.google.com/alloydb/docs/columnar-engine/about

#### Alloy DB omni
* オンプレミスや他クラウドのVM/KubernetesなどにAlloyDBをインストールできるもの
* 可用性などはインストール先に依存するがAlloyDBの機能を他の環境で利用したい場合は有用
* https://cloud.google.com/alloydb/docs/omni

#### Alloy DB AI
* DBのデータをもとにしたAIアプリケーションを作成する際に利用できる
* SQLを利用してAIによる予測を行うことができる
* https://cloud.google.com/alloydb/docs/ai

## Cloud SQL Enterprise / Enterprise Plus
* 2023年にCloudSQLにエディションが追加
    * もともとのCloudSQLはEnterpriseエディションとなり、より高い可用性や性能要件を求められる場合に利用できるEnterprise Plusが追加された
    * https://cloud.google.com/blog/ja/products/databases/announcing-the-cloud-sql-enterprise-plus-edition-for-mysql-and-postgresql
    * もともとMySQLとPostgreSQL向けであったがSQL Serverも対応
        * https://cloud.google.com/blog/ja/products/databases/announcing-the-cloud-sql-enterprise-plus-edition-for-mysql-and-postgresql

#### 主な違い
* 可用性
    * Enterpriseは99.95%に対し、EnterprisePlusは99.99%
    * 可用性の低さによってSpannerやAlloyDBを選択していたケースではEnterprisePlusも選択肢に入った
* メンテナンスのダウンタイム
    * Enterpriseは30秒未満(Postgres)・60秒未満(MySQL)に対し、EnterprisePlusは1秒未満(Near Zero Downtime)
    * ミッションクリティカルなシステムで長いダウンタイムネックとなっていた場合EnterprisePlusによって解消できるケースも出てくる
* パフォーマンス
    * Enterpriseと比較しEnterprisePlusでは書き込み速度が2倍・読み込み速度は3倍となる
* PITRログ保管
    * Enterpriseでは最長7日であったが、EnterprisePlusでは最長35日保管可能

#### 比較
* AlloyDBなどを含めて比較すると以下の通りとなる
| サービス | CloudSQL Enterprise | Cloud SQL Enterprise Plus | Alloy DB | Spanner | Firestore|Bigtable|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| タイプ  | リレーショナル  |リレーショナル  |リレーショナル  |リレーショナル  |ドキュメント  |キーバリュー  |
|  SLA | 99.95%  | 99.99%<br>(メンテナンス込み)|99.99%<br>(メンテナンス込み)|99.99%(リージョナル)<br>99.999%(マルチリージョン)|99.99%(リージョナル)<br>99.999%(マルチリージョン)|最大99.999%(マルチクラスタ・3リージョン以上)|
|メンテナンスダウンタイム|30秒未満(Postgres)<br>60秒未満(MySQL)|1秒未満|1秒未満|-(メンテナンスなし)|-(メンテナンスなし)|-(メンテナンスなし)|
|スケールアウト・スケールイン|(記載なし)|1秒未満(スケールアウトのみ)|1秒未満|-|-|-|

## Oracle Database@Google Cloud
* Oracle RACやExadata・Autonomous DatabaseがGoogle Cloud上でマネージドサービスとして利用できるもの
* 2024年後半から利用開始予定
* https://cloud.google.com/solutions/oracle?hl=ja
* https://cloud.google.com/blog/products/databases/accelerating-cloud-transformation-with-google-cloud-and-oracle?hl=en
* https://www.oracle.com/jp/news/announcement/oracle-and-google-cloud-announce-groundbreaking-multicloud-partnership-2024-06-11/

## Gemini in Database
* Geminiを用いてデータベース関連の開発や管理を簡易にする一連のサービス
    * https://cloud.google.com/products/gemini/databases?hl=ja
    * https://cloud.google.com/gemini/docs/databases/overview?hl=ja
* できることの一例
    * 自然言語からのSQL生成
    * クエリの最適化
    * DBスキーマに合わせたコード生成
    * Query Insights内でのチューニングなどのレコメンド
    * Database Migration Serviceを利用したOracleからPostgresへの移行(SQL変換/スキーマ変換など)
    * LangChainの利用(ほぼすべてのデータベースサービスで使える)


## さいごに
* 資格試験ではまだ範囲外ですがGoogle Cloudのデータベースサービスは日々進化し、新しいものが出てきているのでこれからも定期的に追っていきつつまとめて理解を深めていこうと思いました(ちょうど試験の更新がいい機会になりました)