GCP、AWS ストレージサービス、DBサービス比較

はじめに

時々こんがらがるので比較。

AWSGCP備考
非構造化データSimple Storage Service
(Amazon S3)
Cloud Storage
リレーショナルDBAmazon RDSCloud SQL
リレーショナルDB
(独自エンジン)
SpannerAurora
NoSQL(KVS)ElastiCacheMemorystore
(マイナー?)
OSSでいうところの以下
・Redis
・memcached
NoSQL(列指向ワイドカラム)DynamoDBBigtable
NoSQL(ドキュメント指向)Amazon DocumentDB
(マイナー?)
Datastore
分析基盤用Athena
Redshift
BigqueryAthena、RedshiftはS3上のデータに
SQLでクエリを発行できる。

非構造化データ

Amazon S3

概要

バケットはリージョンリソースである。
EC2インスタンスからアクセスする際に、インターネット経由ならリージョン制約はない。
VPCエンドポイント経由でアクセスする場合には同一リージョンからのみ可能。

マネジメントコンソールとしては全リージョンで共通。
(バケット毎にマネジメントコンソールのリージョンを変える必要は特にない)

機能的な特徴として、静的ウェブサイトとして稼働させることとかができる。

バケットの命名規則は以下の通り。
そのため、バケット名はグローバルで一意の名前を指定する必要がある。

EC2 インスタンスからのアクセス方法

### バケットの表示
$ aws s3 ls

### ファイルの表示
$ aws s3 ls s3://DOC-EXAMPLE-BUCKET

### バケットの作成
$ aws s3 mb s3://bucket-name

### ファイルの削除
$ aws s3 rm s3://bucket-name/example/filename.txt --recursive

### オブジェクトの移動
$ aws s3 mv s3://bucket-name/example s3://my-bucket/

アクセス方法

わかりやすかったサイト

[AWS] VPC Endpoint で S3 にアクセスするときはリージョン指定に注意が必要な件 | DevelopersIO
VPC Endpointで利用できるのはVPCと同じリージョンのエンドポイントのみです。一方で、S3はリージョンを明示しなくてもアクセスできてしまうので、気をつけなければいけないという話。

Cloud Storage

ストレージクラスの比較

AWSGCP
ストレージクラス・S3標準
・S3 Intelligent-tiering
・S3標準-IA(Infrequent Access)
・S31Zone-IA
・S3 Glacier
場所
・マルチリージョン
・デュアルリージョン
・単一リージョン

クラス
・スタンダード
・ニアライン
・コールドライン
・アーカイブ

AWSでいうと、IA、Glacierは取り出し料金がかかる。
また、Glacierは取り出す際に手続きが必要になる。

GCPだと、ニアライン、コールドライン、アーカイブは取り出し料金がかかる。

NoSQL(列指向ワイドカラム)

DynamoDB

DynamoDBはマネージメントコンソールからぽちぽち登録することができる。
CLIから操作することも可能だが、試しては無い。

Bigtable

Bigtableは基本的にcbtコマンドを使って操作する。
利用するにはBigtableクラスタをデプロイする必要もあり、結構高額。

### テーブルの作成
$ cbt createtable my-table

### テーブルの一覧表示
$ cbt ls
my-table

### 列ファミリーの追加
$ cbt createfamily my-table cf1

### 列ファミリー一覧表示
$ cbt ls my-table
Family Name     GC Policy
-----------     ---------
cf1             <never>

### 列ファミリー cf1 と列修飾子 c1 を使用して、行 r1 に test-value という値を入れます。
$ cbt set my-table r1 cf1:c1=test-value

### データの読み取り
$ cbt read my-table
----------------------------------------
r1
  cf1:c1                                   @ 2021/01/28-01:30:01.870000
    "test-value"

$ rm ~/.cbtrc

$ cbt read my-table
2021/01/28 01:30:33 -project flag unset, will use gcloud active project
2021/01/28 01:30:34 gcloud active project is "xxx-project-302301"
2021/01/28 01:30:34 Missing -instance

列ファミリーと列修飾子の概念は知っておくこと。
以下は例。

リレーショナルDB

はじめに

Spannerは独自のDBエンジンであり、利用するにはクセがある。
Spanner独自のデータ操作/定義言語(Data Manipulation Language,DML)(DDL)がある。
操作するにはクライアントライブラリを使う必要がある。

項目内容
DDL(Data Definition Language)CREATE/DROP/ALTER
DML(Data Manipulation Language)SELECT/INSERT/UPDATE/DELETE
データ操作言語の構文  |  Cloud Spanner  |  Google Cloud

いっぽう、AuroraはAWSのRDSのデータベースエンジンの一つでMySQL、PostgreSQLと互換性がある。

Aurora

RDSのデータベースエンジンの一つでMySQL、PostgreSQLと互換性がある。
通常のMySQL、PostgreSQLエンジンとは実装方式が異なる。

参考URL

https://dev.classmethod.jp/articles/developers-io-2019-in-osaka-aurora-or-rds/

Spanner

コメント

タイトルとURLをコピーしました