Directiva de retención

La directiva de retención controla el mecanismo que quita automáticamente los datos de las tablas o las vistas materializadas. Resulta útil quitar los datos que fluyen continuamente en una tabla y cuya relevancia se basa en la antigüedad. Por ejemplo, la directiva se puede usar para una tabla que contiene eventos de diagnóstico que pueden dejar de ser interesantes después de dos semanas.

La directiva de retención se puede configurar para una tabla específica o una vista materializada, o para una base de datos completa. A continuación, la directiva se aplica a todas las tablas de la base de datos que no la invalidan. Cuando la directiva se configura en el nivel de base de datos y tabla, la directiva de retención de la tabla tiene prioridad sobre la directiva de base de datos.

La configuración de una directiva de retención es importante para los clústeres que ingieren datos continuamente, lo que limitará los costos.

Los datos que están "fuera" de la directiva de retención son aptos para su eliminación. No hay ninguna garantía específica cuando se produce la eliminación. Los datos pueden "permanecer" aunque se desencadene la directiva de retención.

La directiva de retención se establece normalmente para limitar la antigüedad de los datos desde la ingesta. Para obtener más información, vea SoftDeletePeriod.

Nota

  • El tiempo de eliminación es impreciso. El sistema garantiza que los datos no se eliminarán antes de que se supere el límite, pero la eliminación no es inmediata después de ese punto.
  • Un período de eliminación temporal de 0 se puede establecer como parte de una directiva de retención de nivel de tabla, pero no como parte de una directiva de retención de nivel de base de datos.
  • Una vez hecho esto, los datos ingeridos no se confirmarán en la tabla de origen, lo que evita la necesidad de conservar los datos. Como resultado, Recoverability solo se puede establecer en Disabled.
  • Esta configuración es útil principalmente cuando los datos se ingieren en una tabla. Se usa una directiva de actualización transaccional para transformarla y redirigir la salida a otra tabla.

El objeto de directiva

Una directiva de retención incluye las siguientes propiedades:

  • SoftDeletePeriod:
    • Intervalo de tiempo para el que se garantiza que los datos se mantienen disponibles para la consulta. El período se mide a partir del momento en que se ingieren los datos.
    • Tiene como valor predeterminado 100 years.
    • Al modificar el período de eliminación temporal de una tabla o base de datos, el nuevo valor se aplica tanto a los datos existentes como a los nuevos.
  • Capacidad de recuperación:
    • Capacidad de recuperación de datos (habilitada o deshabilitada) después de eliminar los datos.
    • Tiene como valor predeterminado Enabled.
    • Si se establece en Enabled, los datos se podrán recuperar durante 14 días después de que se eliminen temporalmente.
    • No es posible configurar el período de capacidad de recuperación.

Comandos de administración

Valores predeterminados

De forma predeterminada, cuando se crea una base de datos o una tabla, no tiene definida una directiva de retención. Normalmente, la base de datos se crea y, a continuación, tiene su directiva de retención establecida por su creador según los requisitos conocidos. Al ejecutar un .show comando para la directiva de retención de una base de datos o tabla que no tiene su conjunto de directivas, Policy aparece como null.

La directiva de retención predeterminada, con los valores predeterminados mencionados anteriormente, se puede aplicar mediante el siguiente comando.

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

El comando da como resultado el siguiente objeto de directiva aplicado a la base de datos o tabla.

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

La eliminación de la directiva de retención de una base de datos o tabla se puede realizar mediante el siguiente comando.

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

Ejemplos

Para un clúster que tiene una base de datos denominada MyDatabase, con tablas MyTable1, MyTable2y MySpecialTable.

Período de eliminación temporal de siete días y capacidad de recuperación deshabilitada

Establezca todas las tablas de la base de datos para que tengan un período de eliminación temporal de siete días y una capacidad de recuperación deshabilitada.

  • Opción 1 (recomendado): establezca una directiva de retención de nivel de base de datos y compruebe que no hay ninguna directiva de nivel de tabla establecida.

    .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 
    
  • Opción 2: Para cada tabla, establezca una directiva de retención de nivel de tabla, con un período de eliminación temporal de siete días y la capacidad de recuperación deshabilitada.

    .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 eliminación temporal de siete días y capacidad de recuperación habilitado

  • Establezca tablas MyTable1 y MyTable2 para que se deshabilite un período de eliminación temporal de siete días y capacidad de recuperación.

  • Establézcalo MySpecialTable para tener habilitado un período de eliminación temporal de 14 días y capacidad de recuperación.

  • Opción 1 (recomendado): establezca una directiva de retención de nivel de base de datos y establezca una directiva de retención de nivel de tabla.

    .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
    
  • Opción 2: Para cada tabla, establezca una directiva de retención de nivel de tabla, con el período de eliminación temporal y la capacidad de recuperación pertinentes.

    .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 eliminación temporal de siete días y MySpecialTable mantiene sus datos indefinidamente

Establezca tablas MyTable1 y MyTable2 para tener un período de eliminación temporal de siete días y mantenga MySpecialTable sus datos indefinidamente.

  • Opción 1: Establecer una directiva de retención de nivel de base de datos y establecer una directiva de retención de nivel de tabla, con un período de eliminación temporal de 100 años, la directiva de retención predeterminada 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
    
  • Opción 2: Para las tablas MyTable1 y MyTable2, establezca una directiva de retención de nivel de tabla y compruebe que la directiva de nivel de base de datos y de nivel de tabla para MySpecialTable no están establecidas.

    .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
    
  • Opción 3: Para las tablas MyTable1 y MyTable2, establezca una directiva de retención de nivel de tabla. Para la tabla MySpecialTable, establezca una directiva de retención de nivel de tabla con un período de eliminación temporal de 100 años, la directiva de retención predeterminada.

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