ラボの概要
AnyCompany は新しい映画データベースのアプリケーションを開発しています。このアプリケーションでは、タイトル、リリースされた年、映画に出演している俳優、評価などに基づき、ユーザーは映画を検索できます。AnyCompany はアプリケーションが参照するすべての映画に関する情報を保存するデータベースサービスとして、Amazon DynamoDB を選択しました。
Amazon DynamoDB はサーバーレス NoSQL です。キー値およびドキュメントデータモデルをサポートする非リレーショナルデータベースとしても知られています。DynamoDB を使用すると、ペタバイトのデータ、毎秒数千万件の読み取り/書き込みリクエストをサポートできるため、小規模に始めて、アプリケーションやユーザーベースの拡大に合わせて迅速かつグローバルに拡張できます。AWS が DynamoDB サービスを管理するため、更新または保守が必要なサーバーはありません。詳細については、その他のリソースセクションの Amazon DynamoDB の特徴と Amazon DynamoDB のコアコンポーネントを参照してください。
新しく採用されたジュニアレベルのデータベースエンジニアであるあなたは、アプリケーションの検索機能を改善するための、適切なローカルセカンダリインデックス (LSI) やグローバルセカンダリインデックス (GSI) の作成を担当します。 このラボでは、movies という名前のサンプルデータベースを使用します。 DynamoDB テーブルは非常に柔軟で、リレーショナルデータベースのような従来の「スキーマ」を持たないことに注意してください。 この movies テーブルには、「年」(数値) のパーティション (ハッシュ) キー、「タイトル」(文字列) のソート (レンジ) キーがあります。 このラボのデータベースに設定されている属性の全リストは、次の特徴に一致します。
- year – 数値 (パーティションキーまたはハッシュキー)
- title – 文字列 (ソートキーまたはレンジキー)
- actors – 文字列
- directors – 文字列
- genre – 文字列
- image_url – 文字列
- plot – 文字列
- rank – 数値
- rating – 数値
- release date – 文字列
- running_time_secs – 数値
actors と directors 属性のデータは、実際には Python の dict 型として読み込めるようにフォーマットされているため、複数の実際のパフォーマーを表します。 例えば、特定の項目の actors 属性は [{“S”: “John Doe”}, {“S”: “Jane Doe”}] のようになります。
目標
このラボを修了すると、以下のことができるようになります。
- SDK を使用してローカルセカンダリインデックス (LSI) とグローバルセカンダリインデックス (GSI) を作成する。
- SDK を使用してデータをスキャンし、フィルタリングされた結果を返す。
- SDK を使用して、データを取得するための高度なクエリを実行し、メソッド間のパフォーマンスを比較する。
技術知識の前提条件
このラボを完了するには、AWS マネジメントコンソールの基本的な操作方法、NoSQL データベースの概念、プログラミング言語 Python に関する知識が必要です。また、テキストエディタを使用したスクリプトの編集ができる必要があります。
アイコンキー
このラボでは、ガイドの特定の部分への注意を促すため、さまざまなアイコンが使用されています。以下のリストは、各アイコンの目的を説明したものです。
- 注意: 特記事項または重要な情報を表す (この情報を読み忘れても、機器やデータに問題が発生するというわけではありませんが、特定のステップを繰り返す必要が生じる可能性があります)。
- コマンド: 実行する必要があるコマンドを表す。
- 想定される出力: 出力のサンプルであり、コマンドまたは編集済みファイルの出力を確認するときに使用する。
- 注: ヒントや重要なガイダンス。
- 詳細: 詳細情報が記載されている場所を示す。
- ナレッジチェック: 知識を確認し、理解度をテストする。
- タスク完了: ラボのまとめや要点を示す。
- 警告: コマンドやプロセスの失敗に影響を与える可能性のある、元に戻せないアクション (一度設定したら変更できない設定の警告も含む)。