Optimisation du stockage - AWS Conseils prescriptifs

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.

Optimisation du stockage

La mise à jour ou la suppression de données dans une table Iceberg augmente le nombre de copies de vos données, comme illustré dans le schéma suivant. Il en va de même pour l'exécution du compactage : il augmente le nombre de copies de données dans Amazon S3. C'est parce qu'Iceberg considère les fichiers sous-jacents à toutes les tables comme immuables.

Résultats de la mise à jour ou de la suppression de données dans une table Iceberg

Suivez les meilleures pratiques décrites dans cette section pour gérer les coûts de stockage.

Activer la hiérarchisation intelligente S3

Utilisez la classe de stockage Amazon S3 Intelligent-Tiering pour déplacer automatiquement les données vers le niveau d'accès le plus rentable lorsque les modèles d'accès changent. Cette option n'entraîne aucune surcharge opérationnelle ni aucun impact sur les performances.  

Remarque : n'utilisez pas les niveaux facultatifs (tels que Archive Access et Deep Archive Access) dans S3 Intelligent-Tiering with Iceberg tables. Pour archiver des données, consultez les instructions de la section suivante.

Vous pouvez également utiliser les règles du cycle de vie d'Amazon S3 pour définir vos propres règles de déplacement d'objets vers une autre classe de stockage Amazon S3, telle que S3 Standard-IA ou S3 One Zone-IA (voir Transitions prises en charge et contraintes associées dans la documentation Amazon S3).

Archiver ou supprimer des instantanés historiques

Pour chaque transaction validée (insertion, mise à jour, fusion dans, compactage) dans une table Iceberg, une nouvelle version ou un instantané de la table est créé. Au fil du temps, le nombre de versions et le nombre de fichiers de métadonnées s'accumulent dans Amazon S3.

La conservation des instantanés d'une table est nécessaire pour des fonctionnalités telles que l'isolation des instantanés, la restauration des tables et les requêtes de voyage dans le temps. Toutefois, les coûts de stockage augmentent en fonction du nombre de versions que vous conservez.

Le tableau suivant décrit les modèles de conception que vous pouvez mettre en œuvre pour gérer les coûts en fonction de vos exigences en matière de conservation des données.

Motif de design

Solution

Cas d’utilisation

Supprimer les anciens instantanés

  • Utilisez l'instruction VACUUM dans Athena pour supprimer les anciens instantanés. Cette opération n'entraîne aucun coût de calcul.

Cette approche supprime les instantanés qui ne sont plus nécessaires pour réduire les coûts de stockage. Vous pouvez configurer le nombre d'instantanés à conserver ou pendant combien de temps, en fonction de vos exigences en matière de conservation des données.

Cette option effectue une suppression définitive des instantanés. Vous ne pouvez pas revenir en arrière ou voyager dans le temps pour retrouver des instantanés expirés.

Définissez des règles de conservation pour des instantanés spécifiques

  1. Utilisez des balises pour marquer des instantanés spécifiques et définir une politique de rétention dans Iceberg. Pour plus d'informations, consultez la section Balises historiques dans la documentation d'Iceberg.

    Par exemple, vous pouvez conserver un instantané par mois pendant un an en utilisant l'instruction SQL suivante dans Spark on Amazon EMR :

    ALTER TABLE glue_catalog.db.table CREATE TAG 'EOM-01' AS OF VERSION 30 RETAIN 365 DAYS
  2. Utilisez Spark sur Amazon EMR ou AWS Glue pour supprimer les instantanés intermédiaires non balisés restants.

Ce modèle est utile pour vous conformer aux exigences commerciales ou légales qui vous obligent à montrer l'état d'un tableau à un moment donné dans le passé. En appliquant des règles de conservation à des instantanés balisés spécifiques, vous pouvez supprimer d'autres instantanés (non balisés) créés. Ainsi, vous pouvez répondre aux exigences de conservation des données sans conserver chaque instantané créé.

Archiver les anciens instantanés

  1. Utilisez les balises Amazon S3 pour marquer des objets avec Spark. (Les balises Amazon S3 sont différentes des balises Iceberg ; pour plus d'informations, consultez la documentation d'Iceberg.) Par exemple :

    spark.sql.catalog.my_catalog.s3.delete-enabled=false and \ spark.sql.catalog.my_catalog.s3.delete.tags.my_key=to_archive
  2. Utilisez Spark sur Amazon EMR ou AWS Glue pour supprimer des instantanés. Lorsque vous utilisez les paramètres de l'exemple, cette procédure balise les objets et les détache des métadonnées de la table Iceberg au lieu de les supprimer d'Amazon S3.

  3. Utilisez les règles du cycle de vie de S3 pour transférer les objets marqués comme to_archive vers l'une des classes de stockage S3 Glacier.

  4. Pour interroger les données archivées :

Pour obtenir des instructions détaillées, consultez le billet de AWS blog Améliorez l'efficacité opérationnelle des tables Apache Iceberg basées sur les lacs de données Amazon S3.

 

Ce modèle vous permet de conserver toutes les versions des tables et les instantanés à moindre coût.

Vous ne pouvez pas voyager dans le temps ou revenir à des instantanés archivés sans avoir d'abord restauré ces versions sous forme de nouvelles tables. Cela est généralement acceptable à des fins d'audit.

Vous pouvez combiner cette approche avec le modèle de conception précédent, en définissant des politiques de conservation pour des instantanés spécifiques.

Supprimer les fichiers orphelins

Dans certaines situations, les applications Iceberg peuvent échouer avant que vous n'ayez validé vos transactions. Cela laisse les fichiers de données dans Amazon S3. Comme il n'y a pas eu de validation, ces fichiers ne seront associés à aucune table. Vous devrez peut-être les nettoyer de manière asynchrone.

Pour gérer ces suppressions, vous pouvez utiliser l'instruction VACUUM dans Amazon Athena. Cette instruction supprime les instantanés et supprime également les fichiers orphelins. C'est très rentable, car Athena ne facture pas le coût de calcul de cette opération. De plus, il n'est pas nécessaire de planifier d'opérations supplémentaires lorsque vous utilisez l'VACUUMinstruction.

Vous pouvez également utiliser Spark sur Amazon EMR ou AWS Glue exécuter la remove_orphan_files procédure. Cette opération a un coût de calcul et doit être planifiée indépendamment. Pour plus d'informations, consultez la documentation d'Iceberg.