見出し画像

AWS SAA 取得までの道 - 1日目 (RDS, Redshift)

今日はデータベース周り( RDS, Redshift )を学習しました。
簡単に整理してまとめようと思います。


RDS

Relational Database Service とある通り マネージド型RDB です。
EC2に MySQL や PostgreSQL をインストールしてDBサーバーを構築することもできますが、マネージドサービスであるRDSを利用することで、バージョンアップやバックアップ/リストアなどの運用コストを削減できます。

使用できるRDBエンジン

・MySQL
・MariaDB
・PostgreSQL
・Oracle 12c, 11g
・Microsoft SQL Server
・Amazon Aurora

データ保存ストレージについて

RDSで使用できるデータ保存ストレージは、以下の3種類があります。
・汎用SSD
・プロビジョンド IOPS SSD
・マグネティック
マグネティックは過去と互換性を保つもので非推奨なため、SSD系を選択した方がいいようです。
プロビジョンドIOPS は データ量よりもI/Oを重視する場合に選択するといいようです。

M-AZ ( マルチAZ ) 

・書き込みが遅くなる
フェイルオーバーには 60 - 120 秒程度 かかる
リードレプリカは 非同期レプリケーション方式
    ・非同期なので マスターインスタンスとの同期にラグがあり、データが古い可能性がある
    ・非同期なので マスターインスタンス のパフォーマンスに影響は出ない

バックアップ

スナップショットを取る際、I/Oの中断が発生する
・スナップショットからのリストアする場合は、新規でRDSインスタンスを構築する

セキュリティ

・VPC内にインスタンスを作成できるので、ネットワーク層でセキュリティを担保できる
・クライアントとのSSL通信にも対応
・データの暗号化にも対応しているが、途中からの暗号化は不可能
   途中から暗号化した場合は、暗号化スナップショットを取得してから新規でRDSインスタンスを作成する

Amazon Aurora

Amazon が開発した MySQL, PostgreSQL 互換のデータベース

標準でクラスタ構成で、プライマリインスタンスレプリカインスタンス で構成されます。

ストレージは 1Region内の3つのAZに2つずつ作成されて同期され、最大64TBまで自動的にサイズが拡張されます。

エンドポイントは4種類あります。
・クラスタエンドポイント ( Read, Write, Update, Delete, DDL )
・読み取りエンドポイント ( Readのみ。レプリカインスタンスのいずれかに接続される )
・インスタンスエンドポイント ( インスタンスに直接接続できる )
・カスタムエンドポイント ( インスタンスエンドポイントをグループ化して1つのエンドポイントにする )

Redshift

列指向データベースのデータウェアハウス ( DWH ) で、PostgreSQLと互換性があります。

列指向データベース

列方向のスキャンに最適化されているため、ビックデータに対する集計や分析処理に強いです。
RDBのような行指向データベースは、集計処理で特定の列データしか使用しない場合でも、内部的にはすべての列にアクセスできるようになっているので列方向に対する処理の効率が悪いようです。

こちらの記事がわかりやすかったです。
https://www.publickey1.jp/blog/13/4_1.html

Redshift の 高パフォーマンスの工夫

MPP ( Massively Parallel Processing )
1回の集計処理を複数のコンピュートノードに分散して実行する仕組みです。。
この仕組みにより、コンピュートノードを追加するだけでスケールアウトできます。

シェアードナッシング
各コンピュートノードのディスクをあえて共有しないことで、ディスクI/Oの劣化を防ぎ、高パフォーマンスに繋げているようです。

WLM ( Workload Management )

JSONライクなパラメータを調整することで、クエリキューのルールを定義してキューの分割を制御できる仕組みです。

Redshift Spectrum

S3を外部ストレージとして利用できるオプション
以前はストレージだけを拡張したい場合でも コンピュートノードを追加する必要があり、CPUやメモリが無駄になっていましたが、
このオプションの登場により、ストレージだけを拡張することができるようになるので、コスト削減に繋がります。

まとめ

RDSは実務でも使用しているので理解しやすかったのですが、
Redshift のようなビックデータ系は知識が無いので、中々難しそうです。
実務でもデータ分析系のことをやりたい流れは出てきているので、
実際に触りながら学習できれば最高ですね。


この記事が気に入ったらサポートをしてみませんか?