

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Ottimizzazione dello storage
<a name="best-practices-storage"></a>

L'aggiornamento o l'eliminazione dei dati in una tabella Iceberg aumenta il numero di copie dei dati, come illustrato nel diagramma seguente. Lo stesso vale per l'esecuzione della compattazione: aumenta il numero di copie dei dati in Amazon S3. Questo perché Iceberg tratta i file alla base di tutte le tabelle come immutabili.

![\[Risultati dell'aggiornamento o dell'eliminazione dei dati in una tabella Iceberg\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/apache-iceberg-on-aws/images/optimizing-storage.png)


Segui le best practice riportate in questa sezione per gestire i costi di archiviazione.

## Abilita S3 Intelligent-Tiering
<a name="storage-s3-intelligent-tiering"></a>

Usa la classe di storage [Amazon S3 Intelligent-Tiering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-overview.html) per spostare automaticamente i dati al livello di accesso più conveniente quando i modelli di accesso cambiano. Questa opzione non ha alcun sovraccarico operativo o impatto sulle prestazioni.  

Nota: non utilizzare i livelli opzionali (come Archive Access e Deep Archive Access) nelle tabelle S3 Intelligent-Tiering with Iceberg. Per archiviare i dati, consulta le linee guida nella sezione successiva.

[Puoi anche utilizzare le regole del [ciclo di vita di Amazon S3 per impostare regole personalizzate](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) per lo spostamento di oggetti in un'altra classe di storage Amazon S3, come S3 Standard-IA o S3 One Zone-IA (consulta Transizioni supportate e vincoli correlati nella documentazione di Amazon S3).](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#lifecycle-general-considerations-transition-sc)

## Archivia o elimina istantanee storiche
<a name="storage-snapshots"></a>

Per ogni transazione confermata (inserimento, aggiornamento, unione, compattazione) su una tabella Iceberg, viene creata una nuova versione o istantanea della tabella. Nel tempo, il numero di versioni e il numero di file di metadati in Amazon S3 si accumulano.

La conservazione delle istantanee di una tabella è necessaria per funzionalità come l'isolamento delle istantanee, il rollback delle tabelle e le query sui viaggi nel tempo. Tuttavia, i costi di storage aumentano con il numero di versioni conservate.

La tabella seguente descrive i modelli di progettazione che è possibile implementare per gestire i costi in base ai requisiti di conservazione dei dati.


| **Modello di progettazione** | **Soluzione** | **Casi d'uso** | 
| --- |--- |--- |
| **Eliminare vecchie istantanee** |   Utilizzate l'[istruzione VACUUM](https://docs.aws.amazon.com/athena/latest/ug/vacuum-statement.html) in Athena per rimuovere le vecchie istantanee. Questa operazione non comporta alcun costo di calcolo.    [In alternativa, puoi usare Spark su Amazon EMR AWS Glue o rimuovere le istantanee. Per ulteriori informazioni, consulta expire\$1snapshots nella documentazione di Iceberg.](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots)   | Questo approccio elimina le istantanee che non sono più necessarie per ridurre i costi di storage. È possibile configurare quante istantanee conservare o per quanto tempo, in base ai requisiti di conservazione dei dati.Questa opzione esegue un'eliminazione definitiva delle istantanee. Non è possibile tornare indietro o viaggiare nel tempo verso istantanee scadute. | 
| **Imposta le politiche di conservazione per istantanee specifiche** |   Usa i tag per contrassegnare istantanee specifiche e definire una politica di conservazione in Iceberg. Per ulteriori informazioni, consulta [Tag storici nella documentazione](https://iceberg.apache.org/docs/latest/branching/#historical-tags) di Iceberg. Ad esempio, puoi conservare uno snapshot al mese per un anno utilizzando la seguente istruzione SQL in Spark su Amazon EMR: <pre>ALTER TABLE glue_catalog.db.table <br />CREATE TAG 'EOM-01' AS OF VERSION 30 RETAIN 365 DAYS</pre>   Usa Spark su Amazon EMR AWS Glue o per rimuovere gli snapshot intermedi rimanenti senza tag.   | Questo modello è utile per la conformità ai requisiti aziendali o legali che richiedono di mostrare lo stato di una tabella in un determinato momento del passato. Inserendo politiche di conservazione su istantanee con tag specifici, è possibile rimuovere altre istantanee (senza tag) che sono state create. In questo modo, è possibile soddisfare i requisiti di conservazione dei dati senza conservare ogni singola istantanea creata. | 
| **Archivia vecchie istantanee** |   Usa i tag Amazon S3 per contrassegnare gli oggetti con Spark. (I tag Amazon S3 sono diversi dai tag Iceberg; per ulteriori informazioni, consulta la documentazione di [Iceberg](https://iceberg.apache.org/docs/latest/aws/#s3-tags).) Esempio: <pre>spark.sql.catalog.my_catalog.s3.delete-enabled=false and \<br />spark.sql.catalog.my_catalog.s3.delete.tags.my_key=to_archive</pre>   Usa Spark su Amazon EMR AWS Glue o [per rimuovere](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) istantanee. Quando si utilizzano le impostazioni dell'esempio, questa procedura etichetta gli oggetti e li scollega dai metadati della tabella Iceberg anziché eliminarli da Amazon S3.   [Utilizza le regole del ciclo di vita di S3 per trasferire gli oggetti etichettati come `to_archive` verso una delle classi di storage S3 Glacier.](https://docs.aws.amazon.com/amazonglacier/latest/dev/introduction.html)   Per interrogare i dati archiviati:   [Ripristina gli oggetti archiviati](https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects.html) (questo passaggio non è necessario se gli oggetti sono stati trasferiti alla classe di storage Amazon Glacier Instant Retrieval).   Usa la [procedura register\$1table](https://iceberg.apache.org/docs/latest/spark-procedures/#register_table) in Iceberg per registrare lo snapshot come tabella nel catalogo.    Per istruzioni dettagliate, consulta il post AWS sul blog [Migliorare l'efficienza operativa delle tabelle Apache Iceberg create sui data lake Amazon S3](https://aws.amazon.com/blogs/big-data/improve-operational-efficiencies-of-apache-iceberg-tables-built-on-amazon-s3-data-lakes/).  | Questo modello consente di conservare tutte le versioni e le istantanee delle tabelle a un costo inferiore.Non è possibile viaggiare nel tempo o tornare alle istantanee archiviate senza prima ripristinare tali versioni come nuove tabelle. Questo è in genere accettabile per scopi di controllo.È possibile combinare questo approccio con il modello di progettazione precedente, impostando politiche di conservazione per istantanee specifiche. | 

## Eliminare i file orfani
<a name="storage-orphan-files"></a>

In alcune situazioni, le applicazioni Iceberg possono fallire prima che tu effettui le transazioni. Questo lascia i file di dati in Amazon S3. Poiché non è stato eseguito alcun commit, questi file non verranno associati a nessuna tabella, quindi potrebbe essere necessario pulirli in modo asincrono.

Per gestire queste eliminazioni, puoi utilizzare l'[istruzione VACUUM](https://docs.aws.amazon.com/athena/latest/ug/vacuum-statement.html) in Amazon Athena. Questa istruzione rimuove le istantanee ed elimina anche i file orfani. Questo è molto conveniente, perché Athena non addebita il costo di calcolo di questa operazione. Inoltre, non è necessario pianificare alcuna operazione aggiuntiva quando si utilizza l'istruzione. `VACUUM`

In alternativa, puoi usare Spark su Amazon EMR AWS Glue o eseguire `remove_orphan_files` la procedura. Questa operazione ha un costo di calcolo e deve essere pianificata in modo indipendente. Per ulteriori informazioni, consulta la documentazione di [Iceberg](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files).