Política de retenção

A política de retenção controla o mecanismo que remove automaticamente dados de tabelas ou vistas materializadas. É útil remover dados que fluem continuamente para uma tabela e cuja relevância é baseada na idade. Por exemplo, a política pode ser utilizada para uma tabela que contém eventos de diagnóstico que podem tornar-se desinteressadores após duas semanas.

A política de retenção pode ser configurada para uma tabela ou vista materializada específica ou para uma base de dados inteira. Em seguida, a política aplica-se a todas as tabelas na base de dados que não a substituem. Quando a política é configurada ao nível da base de dados e da tabela, a política de retenção na tabela tem precedência sobre a política de base de dados.

A configuração de uma política de retenção é importante para clusters que estão a ingerir dados continuamente, o que irá limitar os custos.

Os dados que estão "fora" da política de retenção são elegíveis para remoção. Não há nenhuma garantia específica quando ocorre a remoção. Os dados podem "permanecer" mesmo que a política de retenção seja acionada.

A política de retenção é normalmente definida para limitar a idade dos dados desde a ingestão. Para obter mais informações, veja SoftDeletePeriod.

Nota

  • O tempo de eliminação é impreciso. O sistema garante que os dados não serão eliminados antes de o limite ser excedido, mas a eliminação não é imediata a seguir a esse ponto.
  • Um período de eliminação recuperável de 0 pode ser definido como parte de uma política de retenção ao nível da tabela, mas não como parte de uma política de retenção ao nível da base de dados.
  • Quando isto for feito, os dados ingeridos não serão consolidados na tabela de origem, evitando a necessidade de manter os dados. Como resultado, Recoverability só pode ser definido como Disabled.
  • Esta configuração é útil principalmente quando os dados são ingeridos numa tabela. Uma política de atualização transacional é utilizada para transformá-la e redirecionar a saída para outra tabela.

O objeto de política

Uma política de retenção inclui as seguintes propriedades:

  • SoftDeletePeriod:
    • Período de tempo para o qual é garantido que os dados são mantidos disponíveis para consulta. O período é medido a partir do momento em que os dados foram ingeridos.
    • A predefinição é 100 years.
    • Ao alterar o período de eliminação recuperável de uma tabela ou base de dados, o novo valor aplica-se aos dados existentes e novos.
  • Capacidade de recuperação:
    • Capacidade de recuperação de dados (Ativada/Desativada) após a eliminação dos dados.
    • A predefinição é Enabled.
    • Se estiver definido como Enabled, os dados serão recuperáveis durante 14 dias após serem eliminados de forma recuperável.
    • Não é possível configurar o período de recuperação.

Comandos de gestão

Predefinições

Por predefinição, quando uma base de dados ou uma tabela é criada, não tem uma política de retenção definida. Normalmente, a base de dados é criada e, em seguida, tem imediatamente a política de retenção definida pelo criador de acordo com os requisitos conhecidos. Quando executa um .show comando para a política de retenção de uma base de dados ou tabela que não tenha a política definida, Policy é apresentado como null.

A política de retenção predefinida, com os valores predefinidos mencionados acima, pode ser aplicada com o seguinte comando.

.alter database DatabaseName policy retention "{}"
.alter table TableName policy retention "{}"
.alter materialized-view ViewName policy retention "{}"

O comando resulta no seguinte objeto de política aplicado à base de dados ou tabela.

{
  "SoftDeletePeriod": "36500.00:00:00", "Recoverability":"Enabled"
}

Limpar a política de retenção de uma base de dados ou tabela pode ser feita com o seguinte comando.

.delete database DatabaseName policy retention
.delete table TableName policy retention

Exemplos

Para um cluster com uma base de dados denominada MyDatabase, com as tabelas MyTable1, MyTable2e MySpecialTable.

Período de eliminação recuperável de sete dias e capacidade de recuperação desativada

Defina todas as tabelas na base de dados para terem um período de eliminação recuperável de sete dias e capacidade de recuperação desativada.

  • Opção 1 (Recomendado): defina uma política de retenção ao nível da base de dados e verifique se não existem políticas ao nível da tabela definidas.

    .delete table MyTable1 policy retention        // optional, only if the table previously had its policy set
    .delete table MyTable2 policy retention        // optional, only if the table previously had its policy set
    .delete table MySpecialTable policy retention  // optional, only if the table previously had its policy set
    .alter-merge database MyDatabase policy retention softdelete = 7d recoverability = disabled
    .alter-merge materialized-view ViewName policy retention softdelete = 7d 
    
  • Opção 2: para cada tabela, defina uma política de retenção ao nível da tabela, com um período de eliminação recuperável de sete dias e capacidade de recuperação desativada.

    .alter-merge table MyTable1 policy retention softdelete = 7d recoverability = disabled
    .alter-merge table MyTable2 policy retention softdelete = 7d recoverability = disabled
    .alter-merge table MySpecialTable policy retention softdelete = 7d recoverability = disabled
    

Período de eliminação recuperável de sete dias e capacidade de recuperação ativada

  • Defina tabelas e MyTable2 tenha um período de eliminação recuperável de sete dias e capacidade de recuperação desativadaMyTable1.

  • Defina MySpecialTable para ter um período de eliminação recuperável de 14 dias e capacidade de recuperação ativada.

  • Opção 1 (Recomendado): defina uma política de retenção ao nível da base de dados e defina uma política de retenção ao nível da tabela.

    .delete table MyTable1 policy retention   // optional, only if the table previously had its policy set
    .delete table MyTable2 policy retention   // optional, only if the table previously had its policy set
    .alter-merge database MyDatabase policy retention softdelete = 7d recoverability = disabled
    .alter-merge table MySpecialTable policy retention softdelete = 14d recoverability = enabled
    
  • Opção 2: para cada tabela, defina uma política de retenção ao nível da tabela, com o período de eliminação recuperável e a capacidade de recuperação relevantes.

    .alter-merge table MyTable1 policy retention softdelete = 7d recoverability = disabled
    .alter-merge table MyTable2 policy retention softdelete = 7d recoverability = disabled
    .alter-merge table MySpecialTable policy retention softdelete = 14d recoverability = enabled
    

Período de eliminação recuperável de sete dias e MySpecialTable mantém os dados indefinidamente

Defina tabelas MyTable1 e MyTable2 tenha um período de eliminação recuperável de sete dias e mantenha MySpecialTable os dados indefinidamente.

  • Opção 1: defina uma política de retenção ao nível da base de dados e defina uma política de retenção ao nível da tabela, com um período de eliminação recuperável de 100 anos, a política de retenção predefinida, para MySpecialTable.

    .delete table MyTable1 policy retention   // optional, only if the table previously had its policy set
    .delete table MyTable2 policy retention   // optional, only if the table previously had its policy set
    .alter-merge database MyDatabase policy retention softdelete = 7d
    .alter table MySpecialTable policy retention "{}" // this sets the default retention policy
    
  • Opção 2: para tabelas MyTable1 e MyTable2, defina uma política de retenção ao nível da tabela e verifique se a política ao nível da base de dados e ao nível da tabela para MySpecialTable não está definida.

    .delete database MyDatabase policy retention   // optional, only if the database previously had its policy set
    .delete table MySpecialTable policy retention   // optional, only if the table previously had its policy set
    .alter-merge table MyTable1 policy retention softdelete = 7d
    .alter-merge table MyTable2 policy retention softdelete = 7d
    
  • Opção 3: para tabelas MyTable1 e MyTable2, defina uma política de retenção ao nível da tabela. Para a tabela MySpecialTable, defina uma política de retenção ao nível da tabela com um período de eliminação recuperável de 100 anos, a política de retenção predefinida.

    .alter-merge table MyTable1 policy retention softdelete = 7d
    .alter-merge table MyTable2 policy retention softdelete = 7d
    .alter table MySpecialTable policy retention "{}"