2023年4月にDBS-C01:AWS Certified Database – Specialty(以降DBS)を受験し無事に合格しました。
この月はSAA-C03も合格しているのでひと月で二つの資格試験に合格しており、個人的には非常に頑張った一か月になりました。
特にこちらのDBSの学習期間としては1週間弱と比較的短い期間で挑むこととなりました。
正直、試験中からすでに「落ちたな」と思っておりましたが何とか無事に合格となっておりました。
奇跡のようで奇跡ではないような不思議な感じで、運が良かったのもあるかもしれません。
勉強していたのは紛れもない事実なので、奇跡ではないでしょうが難しかったです。
個人的に感じたのはネット上にある既存のDBS合格者の書いている内容とは結構異なる出題傾向であったり内容だったような気がします。
DBSはSpecialityでは比較的簡単な部類と書かれていたりしますが、本当なのか疑うくらい難しかったです。
私個人の試験経験の中では一番難しかったと感じています。
すでに取得しているOracle Master GoldやAZ-104よりも難しかったです。(Oracle DBはSilverや旧Bronze SQLの方が難しく感じますが・・・)
試験対策が非常に難しいDBS試験ですが、今回の合格体験をもとに対策や出題傾向を紹介していきたいと思います。
DBS-C01:AWS Certified Database – Specialtyの勉強方法
DBSの試験範囲は主にRDS、DynamoDB、Aurora、DocumentDB、Neptune、QLDCです。
しかしながら、それらの中でもさらにMySQL、Postgres、Oracle、SQL Serverについて問われるので、データベースサービスだけではなくそれぞれの機能などについても理解する必要があります。
DynamoDBに関してもNoSQLの特性を問われます。
それぞれのDBの特徴やユースケース、あとはDynamoDBはDAX、Auroraはクローンやグローバルデータベース、それぞれの可用性やDRについて細かく問われます。
私個人としては、Oralceは3年近く業務経験があり、SQL Serverも導入と運用を3年近く行っておりこのたたりの経験と事前の知識が試験が活きることになりました。
出題傾向は後半でもう少し詳細に記載しますが、まずは勉強方法を紹介していきます。
【書籍】要点整理から攻略する『AWS認定 データベース-専門知識』
SAAと違いDBSの学習教材は非常に限られており、日本語の教材はかなり少ないです。
そんな中でまず絶対に購入すべきは【書籍】要点整理から攻略する『AWS認定 データベース-専門知識』です。
DB未経験や経験の浅い人は絶対に必要で、ある程度経験のある人もこちらの書籍で基礎固めをしておく必要があると思います。
こちらの参考書ではAWSで利用できるDBサービスを細かく記載しており各サービスの機能や違いを把握するためにも2周ほどは読み込んだ方が良いと感じます。
RDSとAuroraの違い、AuroraとDocumentDB、Neptuneの共通点、異なる点は確実に把握しておいた方がいいでしょう。
特に可用性やDRは絶対的に覚えておいた方がいいです。
ただし、注意点があるとするとこちらの書籍だけで合格するのも至難の業であるくらい私は本試験が難しいと感じました。
こちらで基礎や機能を抑えておければ少なくともある程度の点数は押さえられますが、合格点の750以上を目指すにはプラスアルファが必要と感じています。
逆に言えば、DB未経験や初心者の人はこの本を頭に入れて初めて試験に挑める基礎が出来ると思っていいでしょう。
DB移行については細かく確認する
参考書ベースに基礎を固めたらデータベースの移行方法について公式ドキュメントやリサーチしておくことをお勧めします。
出題傾向と被るのですがデータベースの移行方法について多く問われました。
単純に異なるデータベース間も重要ですが、異なるOS間などインフラ面の知識も少数ですが必要です。
STSとDMSを利用した移行やSnowball、DataSyncやS3を使った移行など状況によってベストプラクティスが異なります。
ソースデータベースが何で、ターゲットデータベースが何である、という設問が多かったです。
RDSはAuroraクローンが作れたり、オンプレはDumpを取る方法もあれば容量によってはSnowballを使う必要もあります。
データベースのマイグレーションは状況によって選択肢が多くかなり複雑なので整理しておくとよいと思います。
Oracle DBとSQL Serverは個別に確認しておく
Oracle DBとSQL ServerはRDSとして利用する場合であっても特殊となるケースが多いです。
参考書ベースではSQL Serverの可用性グループやDBMについて記述はありますが、それ以上のことはあまり記載がなかったと思います。
Oracleについても同様です。
Oracle DBとSQL Serverは利用や移行において制限があるのでそれぞれのアーキテクチャは簡単にでも理解しておくことをお勧めします。
冒頭で紹介した通り、私は両DBはオンプレの時代から扱っているのでその点はハンデがあったと思っています。
ハンデがない人は、おそらくOracle DBやSQL Server固有の内容を問われると全く分からないと思います。
AWSでOracle DB、SQL Serverを扱うときのことをまとめているサイトもあると思うので、そういったサイトを参考にしたり公式ドキュメントやOracle、Microsoft のドキュメントを読んでみることをお勧めします。
DBS-C01の出題傾向
試験内容をそのまま記載は出来ないので出題傾向を紹介していきたいと思います。
私自身、本当に受かっている自信が無かった試験だったので反省、振り返りもかねて書いていきたいと思います。
二度目になりますがDBS試験は本当に難しかったです。
実際に答えられなかった、間違えていた、今でも正確な回答が分からない問題もありましたがここから紹介していきたいと思いmす。
STSとDMSの利用方法
先ほども記載しましたがデータベースの移行方法と手順についはかなり問われた記憶です。
オンプレから異なるデータベースへ移行する場合の王道パターンはSTSでスキーマ変換し、DMSでフルロードからのCDCの適用ですが、RDSからのAuroraの場合はクローンの場合もあればDMSの場合もあります。
これも二度目ですが、オンプレやEC2から移行する場合はOS側の設定なども問われます。
オンプレやRDS、Aurora間やMongoDBからのDynamoDBなど移行に関しては幅広く問われます。
移行手順を問われる場合は複数回答の質問もあったので、ここを落とさないようにするには移行の手順や方法は事前にバリエーションを出来るだけ多く理解しておく必要があります。
例えば移行に1か月かけても良い、という設問であればDMSでいいですがS3を使って移行したい、となるとS3へdumpファイルを出力して復元するパターンもあります。
移行=DMSではないと考えておくことがまず第一です。
DBのIAM認証、暗号化(通信、ストレージ)
数問ですがDBのIAM認証について問われました。
基本的にはIAM認証が使えるデータベースがマルチDBクラスターを利用していないMySQLとPostgreSQLであることを覚えておきましょう。
あとはIAM認証使うための環境、手順です。
また、データベースへの通信の暗号化やデータの暗号化についても問われます。
データベースの暗号化は基礎的な話なので確実に点数を取っておきましょう。
暗号化していないデータベースの暗号化方法、SSL/TLS通信の有効化なども問われるはずです。
ここら辺は決まった手順、内容なので落とさないようにしたいところです。
DynamoDBのユースケース
DynamoDBの利用シーンや最適化について問われる質問も多くあったと思います。
DAXについては絶対に理解しておきましょう。
回答の選択肢にあっても「読み書き性能の対策」と記載があればインメモリキャッシュであるDAXを使っても解決策になりません。
逆にElastic Cacheを使っても解決できないレスポンスの問題はDynamoDB+DAXで解決できる問題です。
DynamoDBの利用方法としてKinesissとの連携やパーティションキーとソートキーの最適化やDAXの利用シーンについて問われます。
単純に「Key-Value型のDBはどれか」のような簡単な問題は出てきません。
JSON形式のデータ保存に関しても、内容によってはDynamoDBではなくDocumentDBが正解のケースもあるので注意しましょう。
GSIとLSIの使い方や設計概念も問われる場合があるので、まずNoSQLを理解できていない人はまずはそこからスタートだと思った方がいいでしょう。
MongoDBやApacche Cassandraを扱ったことがある人は理解しやすいかもしれません。
他にもWCUとRCU、オンデマンドモードとプロビジョニングキャパシティモードについても問われるのでDynamoDBは細かく把握しておくといいでしょう。
DBの可用性・DR・バックアップリカバリ
可用性とDRに関する設問も非常に多かったと思います。
適切なデータベースサービスを選択する問題であっても「可用性と災害対策を施すこと」と条件が付けられてるケースが大半です。
逆にシングルAZの利用ではどういった問題があるのかを理解しておく必要があるでしょう。
AuroraのAuto Scalingやバックトラックとグローバルデータベース、DynamoDBのPITRやグローバルテーブルについては絶対的に抑えておく必要があります。
バックトラックとPITRの違いとしては、バックトラックはデータベースそのものに適用できますがリストアやPITRは別のクラスタなどに復元する必要があるので、復元後の対応が異なります。
また、Active / Activeの構成を求めるシステムの場合はDynamoDBのグローバルテーブル一択です。
そして、クロスリージョンレプリカについてもRDSのSQL Serverは利用できません。
Oracle DBとSQL Server
これも先ほど紹介しましたが、この二つは個別に設問が数問だけですがありました。
データベースの移行と、それぞれの固有の仕組みは理解しておいた方がいいでしょう。
SQL Serverは冗長構成を行う際にAlwaysOnを利用し、そのためには可用性グループ(Workgroupで可)が必要です。
OracleはRAC構成(Real Application Cluster)をEC2上で構成できます。
どれもAWSの機能ではなくデータベース固有の機能なのでMySQLやPosgreSQLには一切存在しない機能なので注意して考えましょう。
簡単なデータベースごとのマトリクス
Amazon RDSの機能
ポート | DB | マルチAZ | AWSフェールオーバー | 自動拡張 | カスタムエンドポイント | リードレプリカ(最大) | マルチDBクラスター | クロスリージョンリードレプリカ | マルチAZリードレプリカ |
3306 | MySQL | 2 | AWS独自 | 5GB or 12% | – | 5 | 〇 | 〇 | 〇 |
5432 | PostgreSQL | 2 | AWS独自 | 5GB or 12% | – | 5 | 〇 | 〇 | 〇 |
3306 | MariaDB | 2 | AWS独自 | 5GB or 12% | – | 5 | – | 〇 | 〇 |
1521 | Oracle | 2 | EEのみ ActiveDataGuard、マウントモードは スタンバイのみ | 5GB or 12% | – | 5 | – | 〇 | 〇 |
1433 | SQL Server | 2 | EEのみ AlwaysOn可用性グループが必要 | 5GB or 12% | – | 5 | – | – | – |
Amazo Auroraの機能
ポート | DB | マルチAZ | レプリカ(最大) | 自動拡張 | カスタムエンドポイント | クラスターキャッシュ | クロスリージョン | グローバルDB | マルチマスタークラスター | 最大容量 | Auto Scaling |
3306 | MySQL | 3 | 15 | 10GB | 〇 | – | シングルマスター | 〇 | 〇 | 2020年128TB、それ以前64TB | 〇 |
5432 | PostgreSQL | 3 | 15 | 10GB | 〇 | 〇 | シングルマスター | 〇 | – | 2020年128TB、それ以前64TB | 〇 |
表が見にくいかもしれませんが参考になればと思います。
同じ要領でDynamoDB、DcumentDB、Elastic Cache、Neptune、QLDBにまとめることをお勧めします。
最後にですがほかのDBS合格者の記事にRedshiftのことも書いてありましたが私が受けた試験ではRedshiftは一切問われませんでした。
9割がRDS、Aurora、DynamoDB関連の出題で、残りの1割がDocumentDB、Neptune、QLDBでそれぞれ1問か2問程度だったと思います。
1割の問題は簡単な問題だったので確実に点にするためにも概要レベルは覚えておいた方がいいと思います。
最後に
DBS-C01試験の勉強方法について紹介してきました。
個人的には本当に難しい試験で、合格しましたが786点とぎりぎりの合格となりました。
日本語で対策できる教材が少なく、OracleとSQL Server固有の機能も問われるので実際のところ難易度は高いと思います。
DBのIAM認証やDynamoDBのユースケース、Auroraへの移行問題などは比較的わかるものが多いと思うので、書籍ベースでの学習でも確実に点数が取れるところを落とさないのが大事だと思います。
逆に簡単な問題を少し落とすだけで落ちてしまいそうでした。
これからDBSを受験する人は、広く浅く覚えるのではなく「網羅的に」AWSのデータベースサービスをしっかり理解することを意識した方が良いと思います。
広く浅くだと細かい手順を問われるとわからない印象だったのである程度は掘り下げて、分からないことを分からないまま何となくで受験する前に腹落ちしてから挑んだ方が良いと思っております。