2017-08-04 4 views
0

私はDynamoDBをかなり使い慣れています。私は携帯電話でコードを共有するためのテーブルを設計する必要があるという要件があります。コードの詳細は属性として格納されます。例えば:DynamoDB:ハッシュキーまたは範囲キーのいずれかを検索

  • '' '' '1234567891'
  • 'B' にコードを共有 '1234567890'
  • にコードを共有 'は1234567890'
  • 「Bにコードを共有しました'1234567891'にコードを共有

'A'と 'B'はユーザー '1234567890'と '1234567891'が受信者です。 UserIdハッシュキーとRecipientNumberを範囲キーとして作成すると、ユーザーがコードを共有した受信者を見つけることができます。 1.受信者と共有コードを持つ受信者リスト(クエリでuserIdを渡す) 2.受信者と共有するコードの一覧(受信者とコードを共有しているすべてのユーザー)

テーブルを設計する正しい方法は何でしょうか?

答えて

0

あなたはこのようあなたのテーブルを定義する必要があります

受信者 - 文字列 - GSIパーティションキー

ユーザー - 文字列 - GSIは、あなたが受信者によって、すべてのユーザーを見つけることができるようになりますしながら、GSI範囲キー

通常のパーティションキーは、ユーザーのためにすべての受信者を見つけることができるようになります。

P.S. DynamoDBのデザインパターンについて詳しくは、video、詳細には双方向クエリhereについて学ぶことができます。

0

DynamoDBにはGlobal Secondary Indexesがあります。これにより、受信者をハッシュキーにすることができる、データの追加投影を作成することができます。文字列 - - 文字列 - -

受信者キーパーティション

ユーザーキー範囲

と、次のグローバルセカンダリインデックスを追加します:

関連する問題