Google Cloud:Professional Cloud Architect(PCA)試験対策メモ~データ/ストレージ編~

PCAの試験メモです。
ざっとサービスの概観を把握するのにご活用ください。


# データベース
**Datastore/Firestore**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695433762180_image.png)

- AWSで言うと**DynamoDB**
- NoSQLのサーバレスデータベース。ドキュメント指向のデータモデルを採用している。
- Firestoreのほうが新しい。
    - ローカルのインデックス設定に基づき、新しいデータストアのインデックスを作成するには、**gcloud datastore create-indexes**というコマンドを打つ。


**CloudSQL**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695433773825_image.png)

- AWSで言うと**RDS**
- MySQL、PostgreSQL、SQL Server 用のフルマネージドリレーショナルデータベースサービス。
- Cloud SQLインスタンスの**自動バックアップとバイナリログ**を有効にして、データ損失を最小限に抑える。
    - これにより、バックアップからデータベースを復元し、新しいCloud SQLインスタンスにリカバーする**ポイントインタイムリカバリー**を実行できる。
- CPU容量の大きい**マシンタイプに変更するためには再起動**が必要。
- **シャーディング**によって、レプリケーション時間の短縮が可能。



# データ管理
**Dataprep**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695397988251_image.png)

- AWSで言うと**Glue DataBrew**
- データを準備するツール。
- **GUI**で可視化しながら、簡単にデータを処理することが出来る。
- Dataprep という名前は、"**data preparation**"に由来する。
- 内部的に**Dataflow**または**BigQuery**を使用している。



Dataproc
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695429102713_image.png)

- AWSで言うと**EMR**
- Apache SparkとApache Hadoopのエコシステムを実行できる、高速で使いやすく、低コストで完全なマネージドサービス。
    - Apache SparkとApache Hadoopを使いたければこれを使う。
- Google Cloud StorageやStackdriver Loggingなど、Google Cloud Platformの他のサービスと統合されているため、TCO(Total Cost of Ownership: ITシステムを導入する際に必要となる、ソフト・ハードの購入や維持管理にかかわるすべての費用の総額)を削減することができる。
- Dataprocは"**Data process**"の略。






**Datalab**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695398033160_image.png)

- AWSで言うと"**SageMaker**"(のJupyter Notebook環境)
- データの探索、分析、可視化、機械学習モデルの作成などを行うことができる。
- DatalabはJupyter Notebookをベースとしている。
- PythonやSQL、JavaScriptなどのプログラミング言語を使用してデータ分析を行える。
- **Microsoft Excel**, JMP, Tableau が近いツール。
- Jupyter Notebook と同様に、データ解析に用いられる numpy 、 pandas や、可視化に用いられる seaborn 、 matplotlib といった人気のあるライブラリはデフォルトで利用可能。
- GCP上のサービスである**BigQuery,　GCS, CloudML Engineなどとも統合**されている。
- Datalab自体はdockerイメージとして**CGE上で動く**ことが多い。



**BigQuery**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695398468650_image.png)

- AWSで言うと**RedShift**
- フルマネージドの列指向データーベース。
- データ分析やPythonとAPIの連携などが出来る。
- 実行処理速度が高速で、リアルタイムでデータ解析も可能。
- データの蓄積場所としても利用可能。
- BigQueryの料金体系は大きく、「データを保存するための料金」と「SQLを実行し結果を取得するための料金」の2つ。
- BigQueryはWebブラウザ上で起動することが可能。コマンドラインからの操作も可能。
- ビュー (通常)
    - 実データを持たない、読み取り専用の仮想的なテーブル。
    - ベースとなるテーブルへの SELECT 文を書くことで定義する。
    - 副問合せを含む複雑なクエリを単純化して可読性をよくしたり、再利用性を高めるために利用する。
- マテリアライズド・ビュー
    - **クエリの結果が物理的にディスク上に保存される仮想テーブル**のこと。
    - **再度同じクエリを実行する場合**に高速に結果を取得することができる。特に、複雑な計算や集約を伴うクエリの結果を高速に取得する必要がある場合に有効。
    - ビューとそのビューのベーステーブルは同じロケーションに存在している必要がある、使える JOIN 句に制限がある、のようないくつかの制限が存在する。
- BigQueryのACLやビューを利用することで、アクセスを制限することができる。
    - **テーブルACLでは、テーブルレベルのアクセス権**を設定することができる。
- ホットスポットを解消するためには、Googleが推奨する行キーの設定方法にする。
    - **RowKey戦略**を見直し、キーがアルファベットに均等になるようにする。
    - ちゃんとパーティションしようねってこと？
    - これは列指向やからシャーディングって言わない？
        - 有識者教えてください。
-  外部テーブル定義を行うことで、**直接Cloud Storage オブジェクトに対してクエリ**をかけることが可能。
    



# ストレージ
**cloud storage(GCS)**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695431727995_image.png)

- AWSで言うと**S3**
- ストレージクラスはStandard / Nearline / Coldline / Archive 。右に行くほど長期保存で取り出し頻度が少ないデータに適している。
- **最低保管期間 (Minimum storage duration)** が各ストレージクラスごとに定められており、保管したオブジェクトがこの日数以内に削除・置換・移動された場合、この日数分の保管料金が発生する。
- **どのストレージクラスでも迅速にデータを取り出す**ことができる。
    - S3ではGlacierなどは取り出しに時間がかかる。
- バケット作成時に ロケーション を選択する。ロケーションは「 単一リージョン 」「 デュアルリージョン 」「 マルチリージョン 」のタイプがあり、それぞれのタイプでリージョンを選択可能。
    - **単一リージョンを選んだ場合でも、リージョン内の複数のゾーンにデータは冗長化**される。
    - リージョン間の**レプリケーション**は書き込み完了から**非同期**で行われる。
    - RTO を短くする目的でターボレプリケーション(turbo replication)を有効化すると遅延を15分以内に抑えられるが追加料金が発生する。ターボレプリケーションはデュアルリージョンのバケットでのみ利用可能。
    - 一つのMulti-Regional Cloud Storageではある大陸の複数のリージョンのみ、例えばEU、米国、アジアをカバーするだけ。
- 書き込みや削除の後の読み取りオペレーションは**強整合性**で実現している。
    - **アクセス制御設定の変更だけは結果整合性**。
- デフォルトでは、Cloud Storageは、Google管理の暗号鍵とAES256暗号化アルゴリズムを使用して、すべてのオブジェクトデータを暗号化する。
    - 顧客指定の暗号鍵（CSEK）または Google Cloud KMS で管理する顧客管理の暗号鍵（CMEK：Customer-Supplied Encryption Keys）のいずれかの暗号鍵タイプを使用することもできる。


**persistent disc**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695431786323_image.png)

- AWSで言うと**EBS**
- パフォーマンスは**永続ディスクの総容量とインスタンスが持つvCPU**の数に基づく。
    - 永続ディスクの容量を増やすと、スループットとIOPSが増加。
- Linuxインスタンスでは、インスタンスに接続し、追加したディスク領域を使用するために、パーティションとファイルシステムのサイズを手動で変更する必要がある。
    - ディスク上のパーティションを拡張した場合**sudo resize2fs**コマンドを用いてそのパーティションを指定する。