DynamoDB Changement De Gamme De La Colonne De Clé
Est-il possible de modifier le Rangekey colonne après la création de la table. Telles que l'ajout de nouveaux attributs et de l'affectation comme RangeKey pour la table. Essayé de chercher, mais ne peux pas en mesure de trouver des articles sur la modification de la Plage ou de la clé de Hachage
OriginalL'auteur arvindwill | 2014-06-23
Vous devez vous connecter pour publier un commentaire.
Non, malheureusement il n'est pas possible de changer la clé de hachage, la gamme de clés ou indices après une table est créée dans DynamoDB. Le DynamoDB
UpdateItem
Documentation de l'API est claire sur le fait que les index ne peuvent pas être modifiés. Je ne peux pas trouver une référence à n'importe où dans les docs qui stipule explicitement que la table de clés ne peuvent pas être modifiés, mais à présent, ils ne peuvent pas être modifiés.Noter que DynamoDB est schéma d'autre que le hachage et la gamme de clés, et vous pouvez ajouter d'autres attributs de nouveaux éléments avec pas de problèmes. Malheureusement, si vous avez besoin de modifier votre clé de hachage ou de la gamme de clés, vous devez faire une nouvelle table et la migration de données.
Édition (janvier 2014): DynamoDB a maintenant un support pour sur le fly global index secondaires
c'est ça - si vous avez besoin de modifier que vous auriez besoin de créer une nouvelle table et la migration de vos données.
Alors je pense que le moyen le plus sûr est de ne pas utiliser une clé de hachage par défaut, et d'ajouter des index supplémentaires en cas de besoin. C'est pas toujours évident de savoir quelle devrait être la valeur de hachage lors de la création de la table elle-même, et de forcer tous les de demande de fournir une valeur de hachage pour récupérer un élément peut être tout à fait un problème si c'était un mauvais choix.
OriginalL'auteur rpmartz
De modifier ou de créer une autre clé de tri, vous aurez besoin de créer une nouvelle table et la migration, à elle, que les deux actions ne peut pas être fait sur les tables existantes.
DynamoDB streams nous permettre de migrer les tables sans aucun temps d'arrêt. J'ai fait cela à la grande efficace, et les étapes que j'ai suivies sont:
Analyse du GSI, créé à l'étape précédente (ou de l'ensemble de la table) et utiliser le Filtre suivant:
FilterExpression = "attribute_not_exists(Émigré)"
Mise à jour de chaque élément dans la table avec un migrer drapeau (c'est à dire: “Migré”: { “S”: “0” }, qui l'envoie à la DynamoDB Streams (à l'aide de UpdateItem API, pour s'assurer qu'aucune perte de données se produit).
NOTE: Vous souhaiterez peut-être augmenter unités de capacité d'écriture sur la table pendant les mises à jour.
Suivant ces étapes pour vous assurer d'avoir aucune perte de données et aucun temps d'arrêt.
J'ai documenté sur mon blog, avec un code pour aider:
https://www.abhayachauhan.com/2017/10/dynamodb-changing-table-schema
OriginalL'auteur Abhaya Chauhan