データベースの新しい試験がβリリースされたので、チャレンジ!
https://cloud.google.com/certification/guides/cloud-database-engineer

受験に向けた勉強のメモです。
試験の結果はまだまだ判らないし、試験を受けてみて過不足はあったものの、全く的外れではなかった気がするので、誰かの役に立てればと共有しておきます。
※具体的な試験問題がどうだったかとかは、規約違反になるためここでは触れません。

勉強は以下の流れでやることにしました。
公式の学習プログラムも提供されているので、そっちの方が効率的かもですが、今回はクレジットを節約するため、学習プログラムも自前で検討しました。

  • 求められる知識のセルフチェック → 知識が曖昧なこと(重点学習箇所)をピックアップ。あまりに網羅率が低ければ試験をリスケ。
  • 重点学習箇所を”英語で”調べる → β試験は英語なものの、英語苦手なので慣れるため。
  • 日本語で改めてドキュメントを読み直し答え合わせ → 英語読解のミス洗い出しと関連知識の補填。

知識のセルフチェックは試験の概要に記載の内容から、出題範囲を確認するとともに、自分自身の理解が弱そうなところに当たりをつけました。

Databaseサービスの種類

Relational databases

Cloud SQL, Cloud Spanner, Bare Metal。
ACID特性。

Non-Relational databases

ACID特性でない。ただし、Firestoreは特殊な形でACIDを提供。
Document DB: Firestore
Key-value: Bigtable, Memorystore
In-memory: Memorystore
Wide-column DB: Bigtable, (Cassandra, HBase)
Graph DB: (JanusGraph + )Bigtable
() … 非Google Cloudサービス

移行

Database Migration Service。様々なソースDBからCloudSQLへの移行
Datastream。サーバーレスで使いやすい変更データキャプチャ(CDC)とレプリケーションのサービス。OracleやMySQLなどから様々なDBサービスへの取り込み。

※ DatastreamはDMSを包含するように見えるが、ユースケース例では、GCSに取り込むまでで、DataflowやPub/Subと組み合わせていることが多い。使い分けについてもう少し理解が必要。

選択基準

このページを眺めておく。

Picking the right database for your application is not easy. This post covers the different database options available within Google Cloud across relational (SQL) and non-relational (NoSQL) databases and explains which use cases are best suited fo...

サービス一覧

各サービスのドキュメントから別表にまとめる。

Categories Points Cloud SQL Cloud Spanner Bare Metal Firestore Memorystore Cloud Bigtable Firebase Realtime Database
Availabity Choices – Single Zone
– High HA
Region
– Multi Region
– Single Region
Replica
– Read / Write
– Read
– Witness
N/A – Multi-Region
– Regional
– Basic tire (no Read Replica)
– Standard tire (Read Replica on the other Zone)
Multi-cluster

Instance Replication
– Multi Region
– Multi Zone

TBA
Availabity Fail Over Not available for a minutes Automaticaly with no disable time. But you can change leader region. N/A Automaticaly. You can’t change default region. Automaticaly. Not available for any secounds and disconnected existing connection. – Multi-cluster
automatic failover.
– Single-cluster
manual failover.
TBA
Encryption At rest – client-side
Row-level. Use ‘Tink’ library.
– CMEK
Instance-level.
– CMEK SVM – server-side
AES-256
– client-side
Both O.K.
– client-side
Use ‘Tink’ library with KMS.
CMEK TBA
Encryption In transit Use SSL/TLS certification API default encripted. Interconnect, VPN TLS TLS (limit by Instance Type) TLS TBA
Cost Factor CPU, Memory, Storage, Type(MySQL, Postgres, or SQL Server) Compute, Storage, NW Egress Subscribe. Contct sales. Storage, Bandwidth, Operation(Write, Read, Delete) Tire, Storage, Region, Num of Nodes Type(SSD, HDD), Num of Instances, Storage, Egress NW(Free same region) TBA
Cost Commited Usage Yes (1Year, 3Years) Yes (1Year, 3Years) ? No No No TBA
Authentication IAM Role cloudsql.xxx
(admin, editor, viewer, client, instanceUser)
client … from Auth Proxy and GAE
use tags.
spanner.xxx
(admin, backupAdmin, backupWriter, databaseAdmin, databaseReader, databaseUser, restoreAdmin, viewer)
baremetalsolution.XXX
(admin, editor, viewer, instanceXXX, storageadmin, networksadmin, nfsshareXXX)
datastore.xxx
(owner, user, viewer, importExportAdmin, indexAdmin)
redis.xxx
memcache.xxx
(admin, editor, viewer, instances.xxx, locations.xxx, operations.xxx)
bigtable.xxx
(admin, user, reader, viewer, locations.xxx, instances.xxx, appProfiles.xxx, backups.xxx, clusters.xxx, tables.xxx, keyvisualizer.xxx)
TBA
Authentication Connect as DB Usser – Cloud SQL user (=root@)
– MySQL(or else) user
– IAM database authenication
– API
– psql (with PGAdapter)
N/A Security Rules Redis AUTH N/A TBA
Backup Managed – On-demand / Automated
Retain up to 365 days.
– Point-in-time Recovery
1 day.
– On-demand / Automated
Retain up to 365 days.
– Point-in-time Recovery
1 day.
N/A N/A
(For automate, export using Cloud Scheduler)
N/A
(For automate, export using Cloud Scheduler)
Table backup. TBA
Backup Import / Export CSV / Dump files Arvo / CSV N/A LebelDB RDB Backup Arvo, Parquet, Sequence TBA
Monitoring Primary Cloud Monitoring metrixis CPU, Storage, e.t.c. CPU, Latency, e.t.c. N/A Document xxx, Active Connection, e.t.c. memory usage CPU, Disk usage TBA
Monitoring Not Cloud Monitoring – Instance Logs(Cloud Logging)
– Recommender
– Insight
– Key Visualizer
– OpenCensus (Client-side)
– gcloud (bms XXX describe) – Key Visualizer
– Usage DashBoard
– Security Rule Usage
– Daily Quota
N/A log4j TBA

データベースサービスごとのメモ

Cloud SQL

フルマネージドなSQLデータベースサービス。
MySQL, PostgreSQL, SQL Serverに対応。
ストレージの自動拡張可能あり。

データベースフラグ

データベースエンジンのパラメータ。
変更することで再起動されることもある。レプリカも同様。

データベース認証

パスワード認証とIAM認証(MySQL, PostgreSQL)がある。

IAM認証

期限は1時間。SSL必須。
リードレプリカを作る場合は、作成時に明示的に有効にする必要がある。
バックアップから復元する場合は、同一プロジェクトでは同じ設定が引き継がれるが、別プロジェクトでは新たに設定する必要がある。

プリンシパル

ユーザーアカウントとサービスアカウントのみ。Groupなどはサポートしない。

Role

cloudsql.instances.login

リソース

デフォルトはプロジェクトレベル。

IAM

roles/cloudsql.client

Cloud SQL Client
Connectivity access to Cloud SQL instances from App Engine and the Cloud SQL Auth proxy. Not required for accessing an instance using IP addresses.
cloudsql.instances.connect
cloudsql.instances.get

roles/cloudsql.instanceUser

Cloud SQL Instance User Role allowing access to a Cloud SQL instance.

cloudsql.instances.get
cloudsql.instances.login

Best Practice

SSL / TLS

サーバー証明書

インスタンス作成時に自動的に生成。server-ca.pem。
10年の期限。期限までに管理は不要(差し替え可能だが、しなくてもいい)。

クライアント証明書

インスタンスごとに10個まで作成可能。
Cloud SQL Admin IAM ロールが必要。
クライアント側の証明は必須ではないが、相互証明を推奨。

Cloud SQL Auth proxy

安全にCloud SQLに接続する仕組み。GAEからは不要。
IAM認証が可能になる。
また、private IPアドレスでアクセスできる。
Cloud SQLと同じVPCにデプロイする必要がある。

暗号化

クライアントサイド暗号化

暗号化してから書き込む。列レベルの暗号化では必須。
KMSとTink(ライブラリ)で実現。

CMEK

既存のインスタンスには不可。
レプリカ・クローンに引き継がれる。
インポート/エクスポートするために、GCSバケットにCMEKを設定しておく。

Backup

Point-in-time Recovery
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

Spanner

Replica

Read/Write Replica
  • 全データ持ち
  • 書き込み可能
  • Leader昇格可能
Read-only Replica
  • 全データ持ち
  • 書き込み不可
  • Leader昇格不可
Witness Replica
  • データなし
  • 書き込み可能
  • Leader昇格不可

Failover

※この投稿は米国時間 2021 年 9 月 1 日に、Google Cloud blog に投稿されたものの抄訳です。Cloud Spanner は、無制限のスケーリング、強整合性、最大 99.999% の可用性を備えた Google のフルマネージド リレーショナル データベースです。Spanner でデー

Quantity

100 ~ 1,000。

パフォーマンス

  • ホットスポットの削減
  • UUIDv4の使用
  • ハッシュ結合の検討
  • ある程度まとめてコミット
  • パーティションをノード数の10倍

Backup

Backup
  • パフォーマススに影響なし
  • 期間最大1年
Inport / Export
  • パフォーマススに影響あり
  • 期間無制限

暗号化(CMEK)

  • 作成時に指定(既存のDBには適用できない)
  • Backupにも使われる

エミュレータ

コストの節約のため、ローカルでのAPI検証が可能なエミュレータが提供されている。

Firestore

Mode

  • Datastore
  • Native

ベストプラクティス

  • 1秒に1回以上、一つのドキュメントを更新しない
  • ホットスポットを避ける

Refernce vs Snapshot

前者は参照(更新などの操作可能)。後者はデータのコピーのため操作不能。

Memorystore

Type

  • for Redis
  • for Memcached

Upgrade

Basic tireでは一時的に利用不可。RDB Snapshotを使わない場合は、一度全てデータが消える。
Standard tireでは可用性は維持。

Bigtable

構成

インスタンス、クラスタ、ノードで構成(左ほど上位)。クラスタはゾーンに依存。

暗号化(CMEK)

  • 作成時に指定(既存のDBには適用できない)
  • Backupにも使われる
  • Cluster単位(テーブルなどには指定できない)

TLS

SSD vs HDD

通常はSSD。10TB以上でレイテンシが遅くてもいい場合のみHDD(安い)を検討。

Convert

直接的にはできない。Backupデータ経由。

FailOver

  • 数秒間の遮断
  • エンドポイントは引き継がれるのでアプリ側の変更は不要

接続

  • Direct peering … VPC Peering
  • Private services access … Shared VPC, Inter connect, VPN

IAM

reader vs viewer

viewerはデータにアクセスできない

Garbage Collection

期限切れデータの削除

移行

Database Migration Service

オンプレDBからCloud SQLや、GCSへ移行するサーバーレスサービス。

Datastream

OracleからCloud SQL for MySQLへ移行などのようなサーバーレスサービス。

Data Fusionとの比較

※この投稿は米国時間 2021 年 12 月 3 日に、Google Cloud blog に投稿されたものの抄訳です。このブログ記事は、オンプレミスのデータソースを Google Cloud VMware Engine に移行したお客様で、Google Cloud が提供するデータおよび分析サービスを利用し

移行先ごとのパターン

to Cloud Spanner

DynamoDB to Spanner

バッチ処理

  1. S3にロード
  2. S3からCloud Storageに移行(DMS)
  3. Cloud StorageからDataflowへ
  4. DataflowでSpannerへ

ストリーム処理

  1. LambdaでPub/Subへ
  2. Pub/SubからDataflowへ
  3. DataflowでSpannerへ

HBase to Bigtable

  1. snapshot と hash を Cloud Storageに格納
  2. Bigtableで空のテーブルを作る
  3. snapshotをインポート
  4. hashで検証

参照

https://cloud.google.com/architecture/running-janusgraph-with-bigtable
https://cloud.google.com/blog/topics/developers-practitioners/your-google-cloud-database-options-explained

Which database is right for your application? SQL or NoSQL? Are you confused between relational and non relational databases? Want to know how they SQL and N...

元記事はこちら

https://qiita.com/pict3/items/093fb179cc201642d7e0
著者:@pict3


アイレットなら、Google Cloud で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業すべてを一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。Google Cloud プレミアサービスパートナーであるアイレットに、ぜひお任せください。

Google Cloud サーバー監視・運用サービスページ:
https://cloudpack.jp/service/gcp/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/