2017-09-11 4 views
0

Iはソートキーとしてorganization_idとしてパーティションキーstaff_idの主キー作曲とstaffテーブルを持っていると仮定する。一方、私はdepartmentdepartment_idソートキーとローカルセカンダリインデックスを持っています。読み取り異なるローカルセカンダリインデックスキー

{ 
    ... 
    KeySchema: [ 
    { AttributeName: "organization_id", KeyType: "HASH"}, 
    { AttributeName: "staff_id", KeyType: "RANGE" } 
    ], 
    LocalSecondaryIndexes: [ 
    { 
     IndexName: "department", 
     KeySchema: [ 
      { AttributeName: "organization_id", KeyType: "HASH"}, 
      { AttributeName: "department_id", KeyType: "RANGE" } 
     ], 
     Projection: { 
      ProjectionType: "KEYS_ONLY" 
     } 
    } 
    ], 
    AttributeDefinitions: [ 
    { AttributeName: "organization_id", AttributeType: "S" }, 
    { AttributeName: "staff_id", AttributeType: "S" }, 
    { AttributeName: "department_id", AttributeType: "S" } 
    ] 
    ... 
} 

1を簡単に見つけ出すこととして、同じdepartmentインデックスキーを共有する異なるstaff_idとの多くの項目があります。私は与えられたorganization_idで組織の部署のリストを照会する必要があります。 staffテーブルからこのリストを取得する方法はありますか?私は別のdepartmentsテーブルを維持することを好むわけではありません。私はDynamoDBを初めて使用しています。そのため、全体的なテーブル設計に関するコメントやアドバイスがあれば、大歓迎です。

答えて

2

今のところ、DynamoDBにはdistinctという直接的な特徴はありませんが、以下の方法でこれを実現できます。

  1. クエリあなたLSIとorganizationIdのすべてのレコードを取得し、アプリケーションレベルで使用すると、個別の値を見つける。

  2. あなたが言及は、別のテーブルを作成していたよう(これは、NoSQLのDBの中には非常に一般的です)、選択した値だけを直接取得できるように別のテーブルを作成することをお勧めします。

  3. CloudSearch:テーブルの代わりにCloudsearchで直接検索することができますが、複数の検索クエリとmレコードの表情。

おかげ

+0

私は 'departments'テーブルを維持することになりました。 – kokeksibir

関連する問題