2017-08-02 13 views
0

私はDynamoDBに人のテーブルを設定しています。その人にタグを付けると思います。デモの目的のためにDynamoDBで特定の値を持つアイテムを取得する方法は?

が...、「背の高い」「ショート」これらのタグは単なる文字列であると言うことができます、「野球が好き」のように...私ができるので、私はすぐにデータを設定するにはどうすればよい

すべての "背の高い"人々のように、特定のタグを持つすべての人に質問しますか?

テーブルのスキャンを避けることはできますか?複数のテーブルを作成しないでください。これは実際にリレーショナルデータ構造のより良いユースケースですか?新しいタグをオンザフライで作り上げるとどうなりますか?その場合、リレーショナルは機能しません。

更新:一般的に

People Tags Mappings ====== ==== ======== John firefighter John > firefighter Sally young John > young Joe owner Sally > owner Anne staff Anne > owner Chris zebra-lover Chris > zebra-lover Ben 42 Ben > zebra-lover

答えて

1

あなたが主キーではない属性を照会したい場合、あなたはglobal secondary keysを使用することができますスキャンを避けるために。おそらくうまくいかない場合は、一度に複数のタグを持つ人にタグを付けることができます。

したがって、私は代わりに人々にタグのマッピングを含む別のテーブルに行きます。そのテーブルでは、1つのタグは1人のタグにマッピングする必要があります。人が複数のタグを持っている場合は、そこに複数の項目を追加するだけです。

あなたが検索しているすべての人の主キーを取得するために、指定されたタグのタグテーブルを照会すると、後でその人の詳細を取得するために人物テーブルに対して別のクエリを実行します。

これは、新しいタグでも機能します。これは、タグテーブル内の追加項目を意味するためです。

+0

私はほとんどそれを持っています。私が理解したもので私の質問を更新してみましょう... – Costa

+0

ゼブラ愛好家のすべてが欲しければ、私はゼブラ愛好家のマッピングテーブルを照会して、人々のID(または私たちの名前例)...次に、それぞれの名前に対していくつかの項目取得要求を行います。シマウマ愛好家が数十万人いる場合はどうなりますか?それでも大丈夫ですか? – Costa

+0

更新された質問には3つのテーブルがありますが、2つだけ必要です。あなたが持っている「タグ」表は必要ありません。代わりに、 "マッピング"タグのタグをプライマリキーとして使用します。次に、そのテーブルにタグを問い合わせて、これらのタグに属する人々を取得することができます。 – Dunedan

関連する問題