Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Bonnes pratiques relatives à l'utilisation de DynamoDB sans intégration et de service ETL OpenSearch
DynamoDB est totalement intégré à DynamoDB avec Amazon Service. ETL OpenSearch Pour plus d'informations, consultez le plug-in DynamoDB OpenSearch pour l'ingestion et les meilleures pratiques spécifiques pour Amazon Service. OpenSearch
Configuration
-
Indexez uniquement les données sur lesquelles vous devez effectuer des recherches. Utilisez toujours un modèle de mappage (
template_type: index_template
ettemplate_content
)include_keys
pour l'implémenter. -
Surveillez vos journaux pour détecter les erreurs liées à des conflits de types. OpenSearch Le service s'attend à ce que toutes les valeurs d'une clé donnée soient du même type. Il génère des exceptions en cas de non-concordance. Si vous rencontrez l'une de ces erreurs, vous pouvez ajouter un processeur pour détecter qu'une clé donnée a toujours la même valeur.
-
Utilisez généralement la valeur
primary_key
des métadonnées pour ladocument_id
valeur. Dans OpenSearch Service, l'ID du document est l'équivalent de la clé primaire dans DynamoDB. L'utilisation de la clé primaire facilitera la recherche de votre document et garantira que les mises à jour y sont systématiquement répliquées sans conflits.Vous pouvez utiliser la fonction d'assistance
getMetadata
pour obtenir votre clé primaire (par exemple,document_id: "${getMetadata('primary_key')}"
). Si vous utilisez une clé primaire composite, la fonction d'assistance les concaténera pour vous. -
En général, utilisez la valeur de
opensearch_action
métadonnées pour leaction
paramètre. Cela garantit que les mises à jour sont répliquées de telle sorte que les données du OpenSearch Service correspondent à l'état le plus récent dans DynamoDB.Vous pouvez utiliser la fonction d'assistance
getMetadata
pour obtenir votre clé primaire (par exemple,action: "${getMetadata('opensearch_action')}"
). Vous pouvez également obtenir le type d'événement de diffusiondynamodb_event_name
pour des cas d'utilisation tels que le filtrage. Cependant, vous ne devez généralement pas l'utiliser pour leaction
réglage.
Observabilité
-
Utilisez toujours une file d'attente en lettres mortes (DLQ) sur vos récepteurs pour OpenSearch gérer les événements abandonnés. DynamoDB est généralement OpenSearch moins structuré que Service, et il est toujours possible qu'un imprévu se produise. Avec une file d'attente de lettres mortes, vous pouvez récupérer des événements individuels et même automatiser le processus de restauration. Cela vous évitera d'avoir à reconstruire l'intégralité de votre index.
-
Définissez toujours des alertes indiquant que le délai de réplication ne dépasse pas le montant prévu. Il est généralement prudent de prévoir une minute sans que l'alerte soit trop bruyante. Cela peut varier en fonction de l'importance de votre trafic d'écriture et des paramètres de votre unité de OpenSearch calcul (OCU) sur le pipeline.
Si le délai de réplication dépasse 24 heures, votre flux commencera à supprimer des événements et vous rencontrerez des problèmes de précision, à moins que vous ne reconstruisiez complètement votre index à partir de zéro.
Mise à l'échelle
-
Utilisez le dimensionnement automatique pour les pipelines afin de les augmenter ou de les OCUs réduire en fonction de la charge de travail.
-
Pour les tables de débit provisionnées sans mise à l'échelle automatique, nous vous recommandons de les définir en OCUs fonction de vos unités de capacité d'écriture (WCUs) divisées par 1 000. Définissez le minimum à 1 en OCU dessous de ce montant (mais au moins 1) et définissez le maximum à au moins 1 OCU au-dessus de ce montant.
-
Formule :
OCU_minimum = GREATEST((table_WCU / 1000) - 1, 1) OCU_maximum = (table_WCU / 1000) + 1
-
Exemple : 25 000 unités ont été WCUs provisionnées sur votre table. Votre pipeline OCUs doit être défini sur un minimum de 24 (25000/1000 - 1) et un maximum d'au moins 26 (25000/1000 + 1).
-
-
Pour les tables de débit provisionnées avec mise à l'échelle automatique, nous vous recommandons de les définir en OCUs fonction de vos valeurs minimale et maximaleWCUs, divisées par 1 000. Définissez le minimum à 1 en OCU dessous du minimum de DynamoDB, et définissez le maximum à au moins OCU 1 au-dessus du maximum de DynamoDB.
-
Formule :
OCU_minimum = GREATEST((table_minimum_WCU / 1000) - 1, 1) OCU_maximum = (table_maximum_WCU / 1000) + 1
-
Exemple : votre table dispose d'une politique de dimensionnement automatique avec un minimum de 8 000 et un maximum de 14 000. Votre pipeline OCUs doit être réglé sur un minimum de 7 (8000/1000 - 1) et un maximum de 15 (14000/1000 + 1).
-
-
Pour les tables de débit à la demande, nous vous recommandons de les régler en OCUs fonction de votre pic et de votre vallée habituels pour les unités de demande d'écriture par seconde. Il se peut que vous deviez établir une moyenne sur une période plus longue, en fonction de l'agrégation dont vous disposez. Définissez le minimum à 1 en OCU dessous du minimum de DynamoDB, et définissez le maximum à au moins OCU 1 au-dessus du maximum de DynamoDB.
-
Formule :
# Assuming we have writes aggregated at the minute level OCU_minimum = GREATEST((min(table_writes_1min) / (60 * 1000)) - 1, 1) OCU_maximum = (max(table_writes_1min) / (60 * 1000)) + 1
-
Exemple : votre table présente une vallée moyenne de 300 unités de demande d'écriture par seconde et un pic moyen de 4 300. Votre pipeline OCUs doit être défini avec un minimum de 1 (300/1000 - 1, mais au moins 1) et un maximum de 5 (4300/1000 + 1).
-
-
Suivez les meilleures pratiques en matière de mise à l'échelle de vos index OpenSearch de service de destination. Si vos index sont sous-dimensionnés, cela ralentira l'ingestion à partir de DynamoDB et peut entraîner des retards.
Note
GREATEST
est une SQL fonction qui, à partir d'un ensemble d'arguments, renvoie l'argument ayant la plus grande valeur.