私にとって、「ハッシュ」という言葉は、DynamoDB 内の複数のフィールドで構成されるハッシュが可能であることを示しています。ただし、私が見つけたすべての記事は、単一の値のみで構成される「ハッシュ」を示しています...これは私には意味がありません。
私のテーブルは次のフィールドで構成されています。
- uid (PK)
- プロバイダー
- 識別子
- から
- に
- date_received
- date_processed
目標は、アプリがデータを取得する方法に基づいて複数のインデックスを作成することです (もちろん、PK 以外で)。組み合わせは次のとおりです。
プロバイダーのメッセージ識別子による:必要な
ハッシュ: プロバイダー + 識別子会話メッセージ識別子による:
望ましいハッシュ: from + to受け取った日付までに処理された場合
希望のハッシュ: _ac受け取った日付までに処理された場合
希望のハッシュ: アカウント
これは、私が試して成功しなかったものの例の1つです...
MessagesTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: messages
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: uid
AttributeType: S
- AttributeName: account
AttributeType: S
- AttributeName: provider
AttributeType: S
- AttributeName: identifier
AttributeType: S
- AttributeName: from
AttributeType: N
- AttributeName: to
AttributeType: N
- AttributeName: _ac
AttributeType: N
- AttributeName: _ap
AttributeType: N
KeySchema:
- AttributeName: uid
KeyType: HASH
GlobalSecondaryIndexes:
- IndexName: idxConversation
KeySchema:
- AttributeName: from:to
KeyType: HASH
- AttributeName: _ac
KeyType: RANGE
Projection:
ProjectionType: KEYS_ONLY
- IndexName: idxProviderMessage
KeySchema:
- AttributeName: provider:identifier
KeyType: HASH
- AttributeName: _ac
KeyType: RANGE
Projection:
ProjectionType: KEYS_ONLY