DynamoDB - Meilleures pratiques

Certaines pratiques optimisent le code, préviennent les erreurs et minimisent les coûts de débit lors de l'utilisation de diverses sources et éléments.

Voici quelques-unes des meilleures pratiques les plus importantes et les plus couramment utilisées dans DynamoDB.

les tables

La distribution des tableaux signifie que les meilleures approches répartissent uniformément l'activité de lecture / écriture sur tous les éléments du tableau.

Visez un accès uniforme aux données sur les éléments du tableau. L'utilisation optimale du débit repose sur la sélection de la clé primaire et les modèles de charge de travail des éléments. Répartissez uniformément la charge de travail sur les valeurs de clé de partition. Évitez des choses comme une petite quantité de valeurs de clé de partition très utilisées. Optez pour de meilleurs choix comme de grandes quantités de valeurs de clé de partition distinctes.

Acquérir une compréhension du comportement des partitions. Estimez les partitions automatiquement allouées par DynamoDB.

DynamoDB offre une utilisation de débit en rafale, qui réserve le débit inutilisé pour les «rafales» de puissance. Évitez une utilisation intensive de cette option car les rafales consomment rapidement de grandes quantités de débit; en outre, il ne constitue pas une ressource fiable.

Lors des téléchargements, distribuez les données afin d'obtenir de meilleures performances. Implémentez ceci en téléchargeant simultanément sur tous les serveurs alloués.

Mettez en cache les éléments fréquemment utilisés pour décharger l'activité de lecture vers le cache plutôt que vers la base de données.

Articles

La limitation, les performances, la taille et les coûts d'accès restent les principales préoccupations des articles. Optez pour des tables un-à-plusieurs. Supprimez les attributs et divisez les tables pour correspondre aux modèles d'accès. Vous pouvez améliorer considérablement l'efficacité grâce à cette approche simple.

Compressez les grandes valeurs avant de les stocker. Utilisez des outils de compression standard. Utilisez un stockage alternatif pour les valeurs d'attribut volumineuses telles que S3. Vous pouvez stocker l'objet dans S3 et un identifiant dans l'élément.

Distribuez de grands attributs sur plusieurs éléments via des éléments virtuels. Cela fournit une solution de contournement pour les limitations de taille d'élément.

Requêtes et analyses

Les requêtes et les analyses souffrent principalement de problèmes de consommation de débit. Évitez les rafales, qui résultent généralement de choses comme le passage à une lecture fortement cohérente. Utilisez des analyses parallèles avec peu de ressources (c'est-à-dire, fonction d'arrière-plan sans limitation). En outre, utilisez-les uniquement avec de grandes tables et les situations dans lesquelles vous n'utilisez pas pleinement le débit ou les opérations d'analyse offrent des performances médiocres.

Indices secondaires locaux

Les index présentent des problèmes dans les domaines du débit et des coûts de stockage, ainsi que de l'efficacité des requêtes. Évitez l'indexation, sauf si vous interrogez souvent les attributs. Dans les projections, choisissez judicieusement car ils gonflent les index. Sélectionnez uniquement ceux fortement utilisés.

Utilisez des index épars, c'est-à-dire des index dans lesquels les clés de tri n'apparaissent pas dans tous les éléments de table. Ils bénéficient des requêtes sur des attributs absents de la plupart des éléments de table.

Faites attention à l'expansion de la collection d'éléments (tous les éléments de la table et leurs index). Les opérations d'ajout / de mise à jour entraînent une croissance des tables et des index, et 10 Go reste la limite pour les collections.

Indices secondaires mondiaux

Les index présentent des problèmes dans les domaines du débit et des coûts de stockage, ainsi que de l'efficacité des requêtes. Optez pour la répartition des attributs clés, qui, comme la répartition en lecture / écriture dans les tables, assure l'uniformité de la charge de travail. Choisissez des attributs qui répartissent uniformément les données. Utilisez également des index épars.

Exploitez les index secondaires globaux pour des recherches rapides dans les requêtes demandant une quantité modeste de données.