0

3列のコンポジットキーを持つdynamodbテーブルを定義しようとしています。これは可能ですか?DynamoDB用のserverless.ymlでどのように複合キーを定義できますか?

私はこのようなコードを持っている例やチュートリアルを見てきました:

resources: 
    Resources: 
    TodosDynamoDbTable: 
     Type: 'AWS::DynamoDB::Table' 
     DeletionPolicy: Retain 
     Properties: 
     AttributeDefinitions: 
      - 
      AttributeName: id 
      AttributeType: S 
     KeySchema: 
      - 
      AttributeName: id 
      KeyType: HASH 
     ProvisionedThroughput: 
      ReadCapacityUnits: 1 
      WriteCapacityUnits: 1 
     TableName: ${self:provider.environment.DYNAMODB_TABLE} 

をしかし、それは単一列のみと単一のキーを持っています。私はidserverroom上のキーが欲しい

Properties: 
    AttributeDefinitions: 
     - AttributeName: id 
     AttributeType: N 
     - AttributeName: server 
     AttributeType: S 
     - AttributeName: room 
     AttributeType: S 
     - AttributeName: friendlyName 
     AttributeType: S 

:私のテーブルはこのようになります。ユーザーは、同じサーバー上の複数の会議室と、複数のサーバー上の複数の会議室に参加することができます。しかし、3つのキーには、常にユニークなものがあります。

KeySchema部分の定義方法がわかりません。どんな助け?

答えて

3

まず、DynamoDBで(リレーショナルデータベースのように)複合キーを作成することはできません。

テーブルのキーは、ハッシュと範囲(ソートとオプションとも呼ばれます)キーです。これによりクエリ機能が制限されるため、DynamoDBはグローバルセカンダリインデックス(GSI)およびローカルセカンダリインデックス(LSI)というインデックスの作成をサポートし、クエリ機能を拡張します。

id、serverおよびroomの組み合わせが一意であるため、スキーマに基づいて、id_server_roomのようなハッシュキーの連結を使用して、テーブル内の項目が一意に強制されるようにすることができます。

次に、id、server、およびroomを属性として作成できます。これらの属性から効率的にクエリを有効にするには、必要に応じてGSIを作成します。

関連する問題