web-dev-qa-db-fra.com

DynamoDB - Touches à plages multiples

Est-il possible d'avoir plusieurs champs comme clé de plage?

Disons que j'ai un tableau où chaque ligne est identifiée de manière unique par <A,B,C>

 -------------------------------
 A   |   B   |  C  |  D   |  E  |
 -------------------------------

A est la clé primaire hash

et je veux que B et C soient les clés primaires range.

Comment puis-je avoir plus de 2 champs comme clé primaire dans DynamoDB?

8
user7

Vous ne pouvez pas avoir plus de 2 champs comme clé primaire dans DynamoDB.

Pour contourner ce problème, vous pouvez créer local secondary index pour chaque champ que vous souhaitez utiliser comme clé de plage. Mais vous ne pourrez pas créer de requête avec plusieurs clés de plage simultanément car DynamoDB ne peut utiliser qu'un seul index à la fois.

Envisagez d'utiliser des expressions de filtre, vous finirez probablement par utiliser plus de débit de lecture (le filtrage est effectué après la réception des données de db) que vous n'en avez besoin, mais obtenez les résultats souhaités.

6
Vasily Sochinsky

Mettez une copie de B et C dans le champ de plage (en tant que colonne supplémentaire) et assurez-vous que votre clé de plage comme "B_C" et vous pouvez toujours avoir des colonnes distinctes pour B et C si vous en avez besoin.

8
Jeff M