なになれスマートフォン用の表示で見るなになれIT系のことを記録していきます。DynamoDBDynamoDBのスキーマ設計について公式ドキュメントのベストプラクティスなどを見ながら学んだ記録です。スキーマ設計の考え方DynamoDBのスキーマ設計はRDBとは異なり、以下の考え方を採用します。title,content,author特定のユーザが書いた記事を取得するにはindexKeyにuser-idを指定するインデックスを使わないパターンインデックスを使わずにSortKeyだけでも同様のことが実現可能です。SortKeyはbegins_with関数で特定の文字列から始まるクエリを記述することが可能です。これを利用して、以下のように複合キーにします。title,content,authoruser-idをクエリの条件にすることで特定のユーザが書いた記事を取得可能です。このテーブル設計の場合、個別の記事を取得するのに事前にユーザが分かっていなければならないという問題点があります。一方で、インデックスの作成数には制限があります。インデックスを使うのか、テーブル設計で対応するのか、使い分けが必要になります。個人的には特定の値に依存しない汎用的なインデックスを作ってしまうのが良いと思います。今回はブログを想定した記事とコメントのデータ構造を題材とします。以下のような構造です。ローカルのDynamoDBをインストールする以下を参考にして、ローカルにDynamoDBをインストールします。DynamoDBテーブルを作成する今回はNode.js上でawssdkを使い、DynamoDBを操作します。);}createTable();partitionKeyとsortKeyを文字列型の属性で作成します。);}createIndex();グローバルセカンダリインデックスをindex1という名前で作成します。このインデックスではindexKeyというpartitionKeyを持つことが定義されています。これにより、indexKeyの値と等価の条件で項目を検索することが可能になります。}]data.jsonの値を読み込んでDynamoDBに登録します。});}exec();スキーマ設計時に想定していた検索ができることを確認します。まとめDynamoDBを利用する場合には事前にスキーマ設計を考えなければいけないです。どのような検索条件が必要かといったことを踏まえて設計を考える必要があり、RDBのようにリレーショナルな形で設計するよりも難しいように思います。»プロフィールid:hi1280日々で得たIT技術を記録していきます。注目記事はてなブログをはじめよう!hi1280さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。