Manutenção de tabelas - Amazon Simple Storage Service

Manutenção de tabelas

O serviço Tabelas do S3 oferece operações de manutenção para aprimorar o gerenciamento e o desempenho de tabelas individuais. As opções a seguir estão habilitadas por padrão para todas as tabelas em buckets de tabela. Você pode editar ou desabilitar essas opções especificando arquivos de configuração de manutenção para a tabela do S3.

A edição dessa configuração requer as permissões s3tables:GetTableMaintenanceConfiguration e s3tables:PutTableMaintenanceConfiguration.

Compactação

A compactação é configurada no nível da tabela e combina vários objetos menores em menos objetos maiores a fim de melhorar o desempenho de consulta do Apache Iceberg. Ao combinar objetos, a compactação também aplica os efeitos das exclusões em nível de linha na tabela.

A compactação está habilitada por padrão para todas as tabelas, com um tamanho de arquivo de destino padrão de 512 MB ou um valor personalizado de 64 MB a 512 MB especificado por você. Os arquivos compactados são gravados como o snapshot mais recente da tabela.

Estratégias de compactação

Você pode escolher entre várias estratégias de compactação que podem aumentar ainda mais o desempenho da consulta, dependendo dos padrões de consulta e da ordem de classificação da tabela.

O serviço Tabelas do S3 permite estas estratégias de compactação para tabelas:

  • Auto (padrão)

    • O Amazon S3 seleciona a melhor estratégia de compactação com base na ordem de classificação da tabela. Essa é a estratégia de compactação padrão para todas as tabelas.

    • Para tabelas com uma ordem de classificação definida nos respectivos metadados, auto aplicará automaticamente a compactação sort.

    • Para tabelas sem uma ordem de classificação, auto usará por padrão a compactação binpack.

  • Binpack

    • Combina arquivos pequenos em arquivos maiores, geralmente visando tamanhos acima de 100 MB, enquanto aplica quaisquer exclusões pendentes. Essa é a estratégia de compactação padrão para tabelas não classificadas.

  • Sort

    • Organiza os dados com base em colunas especificadas que são classificadas automaticamente por hierarquia durante a compactação, melhorando o desempenho da consulta para operações filtradas. Essa estratégia é recomendada quando suas consultas filtram colunas específicas com frequência. Quando você usa essa estratégia, o serviço Tabelas do S3 aplica automaticamente a classificação hierárquica nas colunas quando sort_order é definido nas propriedades da tabela.

  • Z-order

    • Otimiza a organização dos dados combinando vários atributos em um único valor escalar que pode ser usado para classificação, permitindo consultas eficientes em várias dimensões. Essa estratégia é recomendada quando você precisa consultar dados em várias dimensões simultaneamente. Ela exige que você defina uma ordem de classificação nas propriedades de tabela do Iceberg usando a propriedade de tabela sort_order.

A compactação incorrerá em custos adicionais. Para ter mais informações, consulte as informações sobre preços na Definição de preço do Amazon S3.

Exemplos de compactação

Os exemplos a seguir mostram configurações para compactação de tabelas.

Como configurar o tamanho do arquivo de destino de compactação usando a AWS CLI

O tamanho mínimo do arquivo de compactação de destino é 64 MB; o máximo é 512 MB.

O exemplo a seguir alterará o tamanho do arquivo de destino para 256 MB usando a 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 \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

Para obter mais informações, consulte put-table-maintenance-configuration na Referência de comandos da AWS CLI.

Como configurar a estratégia de compactação usando a AWS CLI

O exemplo a seguir mudará a estratégia de compactação para sort usando a API PutTableMaintenanceConfiguration. Ao definir a compactação, você pode escolher entre as seguintes estratégias de compactação: auto, binpack, sort ou z-order

nota

Para definir a estratégia de compactação como sort ou z-order, você precisa atender aos seguintes pré-requisitos:

  • Uma ordem de classificação definida nas propriedades de tabela do Iceberg.

  • A permissão 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 \ --namespace mynamespace \ --name testtable \ --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'

Para obter mais informações, consulte put-table-maintenance-configuration na Referência de comandos da AWS CLI.

Como desabilitar a compactação usando a AWS CLI

O exemplo a seguir desabilitará a compactação usando a 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 \ --namespace mynamespace \ --name testtable \ --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'

Para obter mais informações, consulte put-table-maintenance-configuration na Referência de comandos da AWS CLI.

Gerenciamento de snapshots

O gerenciamento de snapshots determina o número de snapshots ativos para uma tabela. Isso se baseia em MinimumSnapshots (1 por padrão) e em MaximumSnapshotAge (120 horas por padrão). O gerenciamento de snapshots expira e remove os snapshots de tabela com base nessas configurações.

Quando um snapshot expira, o Amazon S3 marca quaisquer objetos referenciados apenas por esse snapshot como desatualizados. Esses objetos desatualizados são excluídos após o número de dias especificado pela propriedade NoncurrentDays na política de remoção de arquivos não referenciados.

nota

As exclusões de objetos desatualizados são permanentes, sem nenhuma maneira de recuperá-los.

Para visualizar ou recuperar objetos que foram marcados como desatualizados, você deve entrar em contato com o AWS Support. Para obter informações sobre como entrar em contato com o AWS Support, consulte Entrar em contato com a AWS ou a Documentação do AWS Support.

O gerenciamento de snapshots determina os objetos a serem excluídos de uma tabela com referências apenas a essa tabela. Qualquer referência feita a esses objetos fora da tabela não impedirá que o gerenciamento de snapshots exclua um objeto.

nota

O gerenciamento de snapshots não oferece suporte a valores de retenção que você configura como propriedades de tabela do Iceberg no arquivo metadata.json ou por meio de um comando SQL ALTER TABLE SET TBLPROPERTIES, incluindo retenção baseada em ramificação ou tag. O gerenciamento de snapshots é desabilitado quando você configura uma política de retenção baseada em ramificação ou tag, ou configura uma política de retenção no arquivo metadata.json que seja maior do que os valores configurados por meio da API PutTableMaintenanceConfiguration. Nesses casos, o S3 não expirará nem removerá snapshots e você precisará excluir manualmente os snapshots ou remover as propriedades de tabela do Iceberg para evitar cobranças de armazenamento.

Você só pode configurar o gerenciamento de snapshots ao nível da tabela. Para ter mais informações, consulte as informações sobre preços na Definição de preço do Amazon S3.

Exemplos de gerenciamento de snapshots

Os exemplos a seguir mostram configurações para o gerenciamento de snapshots de tabela.

Como configurar o gerenciamento de snapshots usando a AWS CLI

O exemplo a seguir definirá MinimumSnapshots como 10 e MaximumSnapshotAge como 2.500 horas usando a API PutTableMaintenanceConfiguration.

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
Como desabilitar o gerenciamento de snapshots usando a AWS CLI

O exemplo a seguir desabilitará o gerenciamento de snapshots usando a API PutTableMaintenanceConfiguration.

aws s3tables put-table-maintenance-configuration \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --namespace my_namespace \ --name my_table \ --type icebergSnapshotManagement \ --value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'

Para obter mais informações, consulte put-table-maintenance-configuration na Referência de comandos da AWS CLI.

Considerações e limitações

Para saber mais sobre considerações e limites adicionais para compactação e gerenciamento de snapshots, consulte Considerações e limitações para trabalhos de manutenção.

nota

O serviço Tabelas do S3 aplica o tamanho padrão do grupo de linhas de parquets de 128 MB.