2019年11月
S M T W T F S
« Oct   Dec »
 12
3456789
10111213141516
17181920212223
24252627282930

このブログ内を検索

アーカイブ

ATOM RSS2.0
<<>>

2019.11.17

13 自己啓発・勉強

AWS認定資格を取ってみる~対策編-データベースのエトセトラ~

巷ではもうインフルエンザが流行り始めてますが、皆さん体調管理は万全ですか?
ということで、今回はデータベースの様々な特徴について解説したいと思います。
概念的なお話となりますが、サービス運用に関わる重要なポイントなので、しっかり理解してくださいね!
まずは皆さん、「可用性」という言葉は聞いたことありますか?
Wikipediaによると、システムが継続して稼働できる能力。
例えば皆さん、お買い物はネットで決済、なんて当たり前ですよね。
夜中だろうが休日だろうが、いつでもお買い物ができる。そして、デパートのように台風が来たら店が開かない、なんてこともありません。
そう、いつ何時でもサービスが使えることを「可用性」と言います。
そしてAWSのサービスでは、この可用性を担保する様々なオプションが用意されています。

まず前回構築したRDS。RDSは以下のように二つのアベイラビリティゾーンにDBが用意されます。

それぞれプライマリ、スタンバイDBが作成され、通常は更新も参照もプライマリDBがアクセスされます。
そして更新は即座にスタンバイにも反映されるようになっています。
そのため、プライマリDBに障害があっても、スタンバイDBに切り替わり、何事もなかったようにサービスが継続されるのです。
ではもう一つの要素、パフォーマンスについてはどうでしょうか。
デパートではお客さんが沢山来ると、レジで待ち時間が発生します。
レジで並んでいると、目の前の客が商品について文句を言い始めます。それはサービスカウンターでやってよ、って思いますよね・・・
RDSも、基本的にはデータの更新より、参照されるほうが圧倒的に多いです。

そのため、読み取り専用のDB(リードレプリカ)を用意することで、沢山の読み取りでも素早く応答を返すことができます。
データの更新は、プライマリからリードレプリカに伝播します。しかし伝播は非同期に行われ、タイムラグがあるため、参照したデータが必ずしも最新ではない可能性があることに注意が必要です。

さて今回初登場のNoSQLであるDynamoDBはどうでしょうか。

DynamoDBは三つのアベイラビリティゾーンで構成され、更新は同時に二つのDBに行われ、三つ目は非同期に伝播されます。
そのため、RDS同様、タイミングによって読み込んだデータが最新ではない可能性があります。

これを「結果整合性」と呼びます。
DynamoDBでは、常に更新されたデータを読み取れるよう、更新が全てのDBに行われているかを確認してから結果を返すオプションがあります。これを「強力な整合性」と呼びます。但し当然ながらパフォーマンス低下が発生します。
ここで重要なのは、業務要件が何を最も重視しているか、ということです。
パフォーマンスがいいに越したことはないですが、「いつでも最新のデータを返す必要がある」要件であれば、強力な整合性を選ぶ必要がある、ということです。

ちなみにこの整合性は、ストレージサービスのS3にもあてはまります。

S3もバケットは複数のアベイラビリティゾーンに複製され、結果整合性モデルとなっています。

そして最後に紹介するのは「Redshift」。
Redshiftは、大量のデータを分析するためのデータウェアハウスです。
データを単純に溜めるだけのデータベースとは毛色が異なりますが、こちらも必ず回答の選択肢で見かけるサービスです。
大容量のデータを複雑なSQLで分析する必要があるときは、迷わずRedshiftを選びましょう。
逆に、継続的な書き込みや更新には向かないので、そのような要件ならRDSとなります。

このように、何を実現したいか、何を重視するかでどんなデータベースサービスを選ぶかを問われる問題が多いので、各サービスとオプションの特徴をしっかりおさえて下さいね。

さてこのAWS認定資格を取ってみる企画も、残すところ二回となりました。
次回はこれまた重要なオプションのAuto Scalingと、出題数は少ないものの頻出であるサービスについて解説したいと思います。
そして最終回は模擬試験など、受験に向けての対策をご紹介しますので、お楽しみに!

このページの先頭へ