STAY KOBE

[SolutionArchitect Pro] AWS DynamoDB

Jayendra’s Blog

この記事は自己学習用に「AWS DynamoDB – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。


AWS DynamoDB

DynamoDB パフォーマンス

DynamoDB の一貫性

DynamoDB セカンダリインデックス

DynamoDBクロスリージョンレプリケーション

DynamoDB ストリーム

DynamoDB トリガ

DynamoDB コスト

DynamoDB のベストプラクティス


AWS認定試験の練習問題

  1. Amazon DynamoDB の使用例を次に示します。3つの回答を選択
    1. BLOB データを格納する。
    2. web セッションの管理
    3. JSON ドキュメントの保存
    4. Amazon S3 オブジェクトのメタデータの保存
    5. リレーショナル結合と複雑な更新を実行する。
    6. 大量のアクセス頻度の低いデータを格納する。
  2. 自動スケーリングを使用するために会社のアプリケーションを設定しており、ユーザーの状態情報を移動する必要があります。耐久性と待ち時間の短い共有データストアを提供する次の AWS サービスはどれですか?
    1. AWS ElastiCache Memcached (書き込みを許可しません)
    2. Amazon S3 (低レイテンシを提供していません)
    3. Amazon EC2 インスタンスストレージ (永続的ではない)
    4. Amazon DynamoDB
  3. DynamoDB は、インプレースのアトミック更新をサポートしていますか?
    1. 定義されていません
    2. いいえ
    3. はい
    4. これは、インプレース非アトミック更新をサポートしています
  4. 1つの動的 DB テーブルに対してプロビジョニングできる書き込みスループットの最大値を教えてください。
    1. 1000書き込みキャパシティーユニット
    2. 10万書き込みキャパシティーユニット
    3. 動的 DB は制限なくスケーリングするように設計されていますが、1万を超えた場合は、まず AWS に連絡する必要があります
    4. 1万書き込みキャパシティーユニット
  5. DynamoDB テーブルの場合、アプリケーションがプロビジョニングされた容量よりも多くの読み取りまたは書き込みを実行した場合はどうなりますか。
    1. 何もない
    2. プロビジョニングされた容量を超える要求は実行されますが、400エラーコードが表示されます。
    3. プロビジョニングされた容量を超える要求は実行されますが、200エラーコードが表示されます。
    4. プロビジョニングされた容量を超える要求は調整され、400のエラーコードが表示されます。
  6. DynamoDBを使用することでどのような利点が得られますか?(2 つの回答を選択)
    1. 非常に複雑なクエリを処理するには、完全に管理されたデータベースが必要です。
    2. 膨大な量の「ホット」データを処理し、非常に短い待ち時間を必要とします。
    3. ユーザーの行動に関するデータを収集するためには、迅速なクリックストリームの取り込みが必要です。
    4. オンプレミスのデータセンターは Oracle データベースを実行し、AWS クラウドでバックアップをホストする必要があります。
  7. ファイル共有サービスを設計しています。このサービスには何百万ものファイルがあります。サービスの収益は、ユーザーが使用しているストレージの量に基づいて料金から得られます。また、タイトル、説明、オブジェクトがパブリックであるか非公開であるかなど、各ファイルにメタデータを格納します。どのようにあなたは経済的であり、何百万ものユーザーに拡張できる方法で、これらの目標のすべてを達成するのですか?[PROFESSIONAL]
    1. すべてのファイルを Amazon シンプルストレージサービス (S3) に保存します。ユーザーごとにバケットを作成します。各オブジェクトのファイル名にメタデータを格納し、S3 API に対してリストコマンドを使用してアクセスします。(それは一度に1000アイテムだけを返すように高価で遅い)
    2. すべてのファイルを Amazon S3 に保存します。オブジェクトがアップロードされるときに、関連するメタデータの対応するキーと値のペアの Amazon DynamoDB テーブルを作成します。
    3. データを格納するために、4000 IOPS の Elastic 負荷分散ボリュームのストライプセットを作成します。Amazon リレーショナルデータベースサービス (RDS) で実行されているデータベースを使用して、メタデータを格納します。(ボリュームのある経済的ではありません)
    4. データを格納するために、4000 IOPS の Elastic 負荷分散ボリュームのストライプセットを作成します。オブジェクトがアップロードされるときに、関連するメタデータの対応するキーと値のペアのAmazon DynamoDB テーブルを作成します。(ボリュームのある経済的ではありません)
  8. ユーティリティ会社は、1万以上のセンサーからのデータを格納するアプリケーションを構築しています。各センサーは、ユニークな ID を持ち、一日中10分ごとに datapoint (約1万) を送信します。各 datapoint は、タイムスタンプだけでなく、センサーから来る情報が含まれています。この会社は非常に急速に過去1週間の特定のセンサーから来る情報を照会し、4週より古いすべてのデータを削除したいと思います。Amazon DynamoDB を使用してスケーラビリティと迅速さを実現するために、最もコスト効率の高い方法でこれを実装するにはどうすればよいでしょうか。[PROFESSIONAL]
    1. 1つのテーブルで、主キーがセンサー ID で、タイムスタンプであるハッシュキー (シングルテーブルがパフォーマンスに影響します)
    2. センサー ID とタイムスタンプの連結である主キーを持つ1つのテーブル (単一テーブルと連結によるパフォーマンスへの影響)
    3. 各週の1つのテーブルに、センサー ID とタイムスタンプを連結した主キーを使用します (連結によってクエリの速度が遅くなります)
    4. 週ごとに1つのテーブルで、主キーがセンサー ID であり、タイムスタンプであるハッシュキー (センサー ID とタイムスタンプを持つ複合キーを使用すると、クエリの高速化に役立ちます)
  9. あなたは最近、都市部の街路騒音や空気の質を測定するためにセンサーを構築するスタートアップ会社に参加している。同社は3カ月間、約100のセンサーのパイロット展開を実行している。各センサーは、1分ごとのセンサーデータを AWS でホストされているバックエンドにアップロードします。パイロットの間、データベースで 10 IOPS のピークを測定し、1か月あたり平均 3GB のセンサーデータをデータベースに格納しました。現在のデプロイメントは、EC2 インスタンスと、500GB 標準ストレージを持つ PostgreSQL RDS データベースを使用して、負荷分散された自動スケール取り込みレイヤで構成します。パイロットは、成功と考えられているあなたの CEO は、注目やいくつかの潜在的な投資家を得るために管理しています。ビジネスプランでは、バックエンドでサポートする必要がある少なくとも100K のセンサーを展開する必要があります。また、年間の改善を比較することができるように、少なくとも2年間のセンサーデータを格納する必要があります。資金調達を確保するには、プラットフォームがこれらの要件を満たしていることを確認し、さらにスケーリングする余地を残しておく必要があります。要件を満たすセットアップはどれですか。[PROFESSIONAL]
    1. 取り込みレイヤーに SQS キューを追加して、RDS インスタンスへの書き込みをバッファリングする (RDS インスタンスは2年間データをサポートしません)
    2. データを DynamoDB テーブルに取り込み、古いデータを Redshift クラスターに移動する (10K IOPS の取り込みを処理し、分析のためにデータを Redshift に格納する)
    3. 96TB のストレージを使用して、RDS インスタンスを6ノードの Redshift クラスタに置き換えます (取り込みの問題は処理されません)。
    4. 現在のアーキテクチャを維持し、RDS ストレージを3TB および10k プロビジョニングされた IOPS にアップグレードします (RDS インスタンスは2年間データをサポートしません)
  10. Amazon DynamoDB は、増加と減少の両方のアトミック操作をサポートしていますか?
    1. いいえ、増加も減少操作もありません。
    2. 減少は DynamoDB のデータモデルでは本質的に不可能であるため、増加のみを行います。
    3. 増加は DynamoDB のデータモデルでは本質的に不可能であるため、減少のみです。
    4. はい、増加と減少の両方の操作。
  11. DynamoDB のデータモデルについて教えてください。
    1. キーと1つ以上の属性を持つ”アイテム”。 “名前” と “値” の “属性” があります。
    2. “データベース” は “表” の集合であり、”アイテム” の集合であり、”属性” の集合である。
    3. “テーブル”、アイテムのコレクション。キーと1つ以上の属性を持つ “アイテム”。 “名前” と “値” の “属性” があります。
    4. “データベース”、テーブルのコレクション。キーと1つ以上の属性を持つ “テーブル”。 “名前” と “値” の “属性” があります。
  12. DynamoDB に関しては、次のパラメータのいずれかが Amazon では課金されません。
    1. プロビジョニングされた書き込み単位あたりのコスト
    2. プロビジョニングされた読み取り単位あたりのコスト
    3. ストレージコスト
    4. 同じリージョン内の I/O 使用量
  13. DynamoDBに関する正しい記述はどれですか? 2つの答えを選択してください。
    1. DynamoDB は悲観的ロックモデルを使用します。
    2. DynamoDB はオプティミスティック同時実行制御を使用します。
    3. DynamoDB は整合性のために条件付き書き込みを使用します。
    4. DynamoDB は読み取り中にアイテムへのアクセスを制限します。
    5. DynamoDB は書き込み中にアイテムのアクセスを制限します。
  14. プロビジョニングされたスループット効率のための優れた DynamoDB ハッシュキースキーマの例は次のうちどれですか?
    1. アプリケーションに多くの異なるユーザーがいるユーザー ID。
    2. ほとんどのステータスコードが同じである状態を表示します。
    3. デバイス ID は、1つが他のすべてよりもはるかに人気があります。
    4. ゲームの種類は、3つの可能なゲームの種類があります。
  15. DynamoDB テーブルの1秒ごとに1000の新しいアイテムを挿入しています。これらの項目は1時間に一度分析され、必要なくなります。プロビジョニングされたスループット、ストレージ、および API 呼び出しを最小限に抑える必要があります。これらの要件を考慮して、分析後にこれらの項目を管理する最も効率的な方法は何ですか?
    1. 1つのテーブルのアイテムを保持する。
    2. 24時間以内に個別にアイテムを削除する。
    3. テーブルを削除し、時間ごとに新しいテーブルを作成する。
    4. 1時間ごとに新しいテーブルを作成する。
  16. DynamoDB で大規模なスキャン操作を使用する場合、テーブルのプロビジョニングされたスループットに対するスキャンの影響を最小限に抑えるためにどのような手法を使用できますか?
    1. スキャンのページサイズを小さく設定する (リンクを参照)
    2. 並列スキャンを使用する
    3. テーブルのレンジインデックスを定義する
    4. すべてのアイテムを更新してテーブルを暖気する
  17. DynamoDB に関しては、次のステートメントのどれが正しいですか。
    1. 項目には、少なくとも2つの値セット、主キー、および別の属性が必要です。
    2. アイテムは複数の属性を持つことができます。
    3. 主キーは単一値である必要があります。
    4. 属性は、1つまたは複数の他の属性を持つことができます。
  18. 次のいずれかのステートメントは、DynamoDB がソリッドステートドライブ(SSD)上に構築されている利点ではありません。
    1. 高スケールの要求ワークロードを提供
    2. 低要求価格
    3. EC2 インスタンス上での WEB の高い I/O パフォーマンス (DynamoDB とは関係ありません)
    4. 低遅延応答時間
  19. 次のいずれかの操作は、DynamoDB 操作ではありませんか。
    1. Batchwriteitem
    2. DescribeTable
    3. Batchgetitem
    4. BatchDeleteItem (DeleteItem は主キーによってテーブル内の1つの項目を削除しますが、BatchDeleteItem は存在しません)
  20. 1つの API 呼び出しで DynamoDB テーブルから複数のアイテムを取得できるアイテム操作は何ですか。
    1. Getitem
    2. Batchgetitem
    3. GetMultipleItems
    4. GetItemRange
  21. アプリケーションは、数百のオフィスにまたがる多数の従業員のために、DynamoDB で毎晩給与情報を保存します。項目の属性は、個々の名前、オフィスの識別子、および累積的な毎日の時間で構成されます。管理者は、オフィスで働いている名前の範囲のレポートを実行します。1つのクエリです。”A から始まる名前については、このオフィス内のすべての項目を返す”.このクエリのプロビジョニングされたスループットに最も影響を与えるテーブル構成はどれですか。[PROFESSIONAL]
    1. Name 属性にハッシュインデックスを持つようにテーブルを構成し、Office 識別子のレンジインデックス
    2. Name 属性のレンジインデックスを持つようにテーブルを構成し、Office 識別子のハッシュインデックス
    3. Name 属性とレンジインデックスなしでハッシュインデックスを構成する
    4. [Office id] 属性およびレンジインデックスなしでハッシュインデックスを構成する
  22. 1000万レコードを1時間で DynamoDB に移行する必要があります。すべてのレコードのサイズは 1.5 KB です。データは、パーティションキー全体に均等に分散されます。このバッチロード中にプロビジョニングする必要がある書き込みキャパシティーユニットの数を教えてください。
    1. 6667
    2. 4166
    3. 5556 (2 つの書き込み単位 (各 1 kb) * 10000000/3600 秒、参照リンク)
    4. 2778
  23. 気象システムは 600 の温度計を監視し、毎分温度サンプルを取得し、各サンプルを DynamoDB テーブルに保存します。各サンプルには1K のデータが書き込まれ、書き込みは時間の経過と共に均等に分散されます。ターゲット・テーブルに必要な書き込みスループットはどれくらいですか。
    1. 1書き込みキャパシティーユニット
    2. 10書き込みキャパシティーユニット (1k * 600 ゲージ用1書き込みユニット/60 秒)
    3. 60書き込みキャパシティーユニット
    4. 600書き込みキャパシティーユニット
    5. 3600書き込みキャパシティーユニット
  24. DynamoDB でゲームハイスコアテーブルを構築しています。各ゲームの各ユーザーの最高得点を格納します, 多くのゲームと, すべては、比較的類似した使用レベルと選手の数を持っている.あなたはすべてのゲームのための最高のスコアをルックアップすることができる必要があります。最高の DynamoDB キー構造は何ですか?
    1. ハッシュ/唯一のキーとして HighestScore します。
    2. GameID をハッシュキーとして、HighestScore を範囲キーとして指定します。(ハッシュ (パーティション) キーは GameID である必要があり、HighestScore を注文するための範囲キーがある必要があります。リンク参照)
    3. ハッシュ/唯一のキーとして GameID します。
    4. GameID を範囲/唯一のキーとして指定します。
  25. DynamoDB テーブルへの書き込み中にパフォーマンスの問題が発生しています。お使いのシステムは、市場でのビデオゲームの高得点を追跡します。あなたの最も人気のあるゲームは、すべてのパフォーマンスの問題を経験する。最も可能性の高い問題は何ですか?
    1. DynamoDB のベクトルクロックは、最も人気のあるゲームのための要求の急速な成長のために、同期していません。
    2. テーブルのプライマリパーティションキーとして、ゲーム ID または同等の識別子を選択しました。(リンク参照)
    3. 最も人気のあるビデオゲームのユーザーは、それぞれ平均よりも多くの読み取りおよび書き込み要求を実行します。
    4. テーブルに十分な読み取りまたは書き込みスループットを提供しませんでした。
  26. DynamoDB テーブルに書き込み中で、次の例外が発生しました: “ProvisionedThroughputExceededException”。 表の Cloudwatch メトリックによれば、プロビジョニングされたスループットを超えているわけではありません。 これについての説明は何でしょうか?
    1. 十分な DynamoDB ストレージインスタンスをプロビジョニングしていません
    2. 特定の範囲キーの容量を超えている
    3. 特定のハッシュキーで容量を超えている(ハッシュキーはパーティションとそれに伴うパフォーマンスを決定する)
    4. 特定の並べ替えキーの容量を超えている
    5. DynamoDB 自動スケーリングトリガが構成されていません
  27. あなたの会社は、消費者向けデバイスを販売し、すべての販売されたデバイスの最初の活性化を記録する必要があります。デバイスは、情報が永続的なデータベースに書き込まれるまでアクティブ化されません。アクティベーションデータは、あなたの会社にとって非常に重要であり、MapReduce の仕事で毎日分析する必要があります。データ分析プロセスの実行時間は1日3時間未満でなければなりません。デバイスは、通常、年の間に均等に販売されているが、新しいデバイスモデルが出ているときに、アクティベーションの予測可能なピークがある、つまり、数日のためにある10倍またはさらに100倍以上の活性化の平均日よりも。このワークロードのコストとパフォーマンスを最適化するために、次のデータベースと分析フレームワークを実装しますか。[PROFESSIONAL]
    1. Amazon RDS および Amazon の Elastic MapReduce にスポットインスタンスを使用します。
    2. Amazon DynamoDB および Amazon Elastic MapReduce にスポットインスタンスを使用します。
    3. Amazon RDS および Amazon Elastic MapReduce にリザーブドインスタンスがあります。
    4. リザーブドインスタンスを持つ Amazon DynamoDB および Amazon Elastic MapReduce

リファレンス

*DynamoDB 開発者ガイド