Manutenzione delle tabelle
Tabelle S3 consente di usufruire di operazioni di manutenzione in grado di migliorare la gestione e le prestazioni delle singole tabelle. Le seguenti opzioni sono abilitate per impostazione predefinita per tutte le tabelle nei bucket di tabelle. È possibile modificarle o disattivarle specificando i file di configurazione della manutenzione per la tabella S3.
Per modificare questa configurazione sono necessarie le autorizzazioni s3tables:GetTableMaintenanceConfiguration e s3tables:PutTableMaintenanceConfiguration.
Nota
È possibile monitorare le operazioni di manutenzione automatizzate di Tabelle S3 effettuate sulle tabelle tramite i log di CloudTrail. Per ulteriori informazioni, consulta Eventi di gestione di CloudTrail per la manutenzione di Tabelle S3 .
Compattazione
La compattazione è configurata a livello di tabella e combina più oggetti più piccoli in un numero inferiore di oggetti più grandi per migliorare le prestazioni delle query Apache Iceberg. Per combinare gli oggetti, la compattazione applica anche gli effetti delle eliminazioni a livello di riga alla tabella.
La compattazione è abilitata per impostazione predefinita per tutte le tabelle, con una dimensione del file di destinazione predefinita di 512 MB oppure un valore personalizzato specificato compreso tra 64 MB e 512 MB. I file compattati vengono scritti come la snapshot più recente della tabella.
Nota
La compattazione è supportata sui file di tipo Apache Parquet, Avro e ORC.
Strategie di compattazione
È possibile scegliere tra diverse strategie di compattazione che possono aumentare ulteriormente le prestazioni delle query a seconda dei modelli di query e dell’ordinamento delle tabelle.
Tabelle S3 supporta le seguenti strategie di compattazione per le tabelle:
-
Auto (impostazione predefinita)
-
Amazon S3 seleziona la migliore strategia di compattazione in base all’ordinamento delle tabelle. Questa è la strategia di compattazione predefinita per tutte le tabelle.
-
Per le tabelle con un ordinamento definito nei metadati,
autoapplicherà automaticamente la compattazionesort. -
Per le tabelle senza un ordinamento,
autoper impostazione predefinita utilizzerà la compattazionebinpack.
-
-
Binpack
-
Combina file di piccole dimensioni in file più grandi, in genere con dimensioni superiori a 100 MB, applicando eventuali eliminazioni in sospeso. Questa è la strategia di compattazione predefinita per le tabelle non ordinate.
-
-
Ordina
-
Organizza i dati in base a colonne specifiche che automaticamente vengono ordinate gerarchicamente durante la compattazione, migliorando le prestazioni delle query per le operazioni di filtro. Questa strategia è consigliata quando le query vengono spesso filtrate in base a colonne specifiche. Quando si utilizza questa strategia, Tabelle S3 applica automaticamente l’ordinamento gerarchico alle colonne quando
sort_orderè definito nelle proprietà della tabella.
-
-
Z-order
-
Ottimizza l’organizzazione dei dati fondendo più attributi in un unico valore scalare che può essere utilizzato per l’ordinamento, consentendo query efficienti su più dimensioni. Questa strategia è consigliata quando è necessario eseguire query sui dati su più dimensioni contemporaneamente. Questa strategia richiede la definizione di un ordinamento nelle proprietà della tabella Iceberg utilizzando la proprietà della tabella
sort_order.
-
La compattazione comporta costi aggiuntivi. Le strategie di compattazione z-order e sort possono comportare un costo maggiore rispetto a binpack. Per ulteriori informazioni, consulta i prezzi in Prezzi di Amazon S3
Esempi di compattazione
I seguenti esempi mostrano come configurare la compattazione delle tabelle.
- Per configurare la dimensione del file di destinazione della compattazione utilizzando AWS CLI
-
La dimensione minima del file di compattazione di destinazione è 64 MB, la massima è 512 MB.
Il seguente esempio cambierà la dimensione del file di destinazione in 256 MB utilizzando l'API
PutTableMaintenanceConfiguration.aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1\ --type icebergCompaction \ --namespacemynamespace\ --nametesttable\ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'Per ulteriori informazioni, consulta put-table-maintenance-configuration
nella documentazione di riferimento dei comandi della AWS CLI. - Come configurare la strategia di compattazione utilizzando AWS CLI
-
L’esempio seguente cambia la strategia di compattazione in
sortutilizzando l’APIPutTableMaintenanceConfiguration. Quando si imposta la compattazione, è possibile scegliere tra le seguenti strategie di compattazione:auto,binpack,sortoz-orderNota
Per impostare la strategia di compattazione su
sortoz-ordersono necessari i seguenti prerequisiti:Un ordinamento definito nelle proprietà delle tabelle Iceberg.
L’autorizzazione a
s3tables:GetTableData.
aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespacemynamespace\ --nametesttable\ --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'Per ulteriori informazioni, consulta put-table-maintenance-configuration
nella documentazione di riferimento dei comandi della AWS CLI. - Per disattivare la compattazione utilizzando AWS CLI
-
Il seguente esempio disattiverà la compattazione utilizzando l'API
PutTableMaintenanceConfiguration.aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --type icebergCompaction \ --namespacemynamespace\ --nametesttable\ --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'Per ulteriori informazioni, consulta put-table-maintenance-configuration
nella documentazione di riferimento dei comandi della AWS CLI.
Gestione degli snapshot
La gestione degli snapshot determina il numero di snapshot attivi per la tabella. Si basa su MinimumSnapshots (1 per impostazione predefinita) e MaximumSnapshotAge (120 ore per impostazione predefinita). La gestione degli snapshot scade e rimuove gli snapshot delle tabelle in base a queste configurazioni.
Quando uno snapshot scade, Amazon S3 contrassegna come non correnti tutti gli oggetti a cui fa riferimento tale snapshot. Tali oggetti non correnti vengono eliminati dopo il numero di giorni specificato dalla proprietà NoncurrentDays nella policy di rimozione dei file senza riferimenti.
Nota
L'eliminazione di oggetti non correnti è permanente, pertanto gli oggetti non possono essere recuperati.
Per visualizzare o recuperare oggetti contrassegnati come non correnti, è necessario contattare Supporto AWS. Per informazioni su come contattare Supporto AWS, consulta Contatta AWS
La gestione degli snapshot determina gli oggetti da eliminare dalla tabella che fanno riferimento solo a tale tabella. I riferimenti a questi oggetti esterni alla tabella non impediscono alla gestione degli snapshot di eliminare un oggetto.
Nota
La gestione degli snapshot non supporta i valori di conservazione configurati come proprietà della tabella Iceberg nel file metadata.json o tramite un comando SQL ALTER TABLE SET TBLPROPERTIES, inclusa la conservazione basata su ramo o tag. La gestione degli snapshot viene disattivata quando si configura una policy di conservazione basata su ramo o tag oppure quando si configura una policy di conservazione sul file metadata.json più lunga dei valori configurati tramite l'API PutTableMaintenanceConfiguration. In questi casi S3 non scadrà né rimuoverà gli snapshot e sarà necessario eliminare manualmente gli snapshot o rimuovere le proprietà dalla tabella Iceberg per evitare costi di archiviazione.
È possibile configurare la gestione degli snapshot solo a livello di tabella. Per ulteriori informazioni, consulta i prezzi in Prezzi di Amazon S3
Esempi di gestione degli snapshot
I seguenti esempi mostrano come configurare la gestione degli snapshot delle tabelle.
- Per configurare la gestione degli snapshot utilizzando AWS CLI
-
Il seguente esempio imposterà
MinimumSnapshotssu 10 eMaximumSnapshotAgesu 2.500 ore utilizzando l'APIPutTableMaintenanceConfiguration.aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespacemy_namespace\ --namemy_table\ --type icebergSnapshotManagement \ --value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}' - Come disabilitare la gestione degli snapshot utilizzando AWS CLI
-
Il seguente esempio disabilita la gestione degli snapshot utilizzando l’API
PutTableMaintenanceConfiguration.aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespacemy_namespace\ --namemy_table\ --type icebergSnapshotManagement \ --value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'
Per ulteriori informazioni, consulta put-table-maintenance-configuration
Considerazioni e limitazioni
Per ulteriori informazioni su considerazioni e limitazioni aggiuntive relative alla compattazione e alla gestione degli snapshot, consulta Considerazioni e limitazioni per i processi di manutenzione.
Nota
Tabelle Amazon S3 applica la dimensione predefinita del gruppo di righe in formato Parquet di 128 MB.