Conservación de datos con viajes en el tiempo y a prueba de fallos
En este documento se describen los periodos de conservación de datos de viaje en el tiempo y protección contra fallos de los conjuntos de datos. Durante los periodos de viaje en el tiempo y de seguridad, los datos que hayas cambiado o eliminado de cualquier tabla del conjunto de datos se seguirán almacenando por si necesitas recuperarlos.
Viaje en el tiempo y conservación de datos
Puedes acceder a los datos modificados o eliminados desde cualquier punto de la ventana de viaje en el tiempo, que abarca los últimos siete días de forma predeterminada. La función de viaje en el tiempo te permite consultar datos que se hayan actualizado o eliminado, restaurar una tabla o un conjunto de datos que se haya eliminado, o restaurar una tabla que haya caducado.
Puedes definir la duración de la ventana de viaje en el tiempo, que puede ser de entre dos y siete días. Una ventana de viaje en el tiempo más larga es útil en los casos en los que es importante poder recuperar datos actualizados o eliminados. Si reduces el periodo de tiempo, puedes ahorrar en costes de almacenamiento cuando utilices el modelo de facturación de almacenamiento físico. Estos ahorros no se aplican cuando se usa el modelo de facturación de almacenamiento lógico. Para obtener más información sobre cómo afecta el modelo de facturación del almacenamiento al coste, consulta la sección Facturación.
Configurar la ventana de viaje en el tiempo
El periodo de retroceso en el tiempo se define a nivel de conjunto de datos o de proyecto. Estos ajustes se aplican a todas las tablas asociadas al conjunto de datos o al proyecto.
Definir el periodo de viaje en el tiempo a nivel de proyecto
Para especificar el periodo predeterminado de viaje en el tiempo a nivel de proyecto, puedes usar instrucciones del lenguaje de definición de datos (DDL). Para saber cómo definir la ventana de viaje en el tiempo a nivel de proyecto, consulta Gestionar ajustes de configuración.
Definir el periodo de viaje en el tiempo a nivel del conjunto de datos
Para especificar o modificar el periodo de viaje en el tiempo de un conjunto de datos, puedes usar la consolaGoogle Cloud , la herramienta de línea de comandos bq o la API de BigQuery.
- Para especificar el periodo predeterminado de viaje en el tiempo de los conjuntos de datos nuevos, consulta Crear conjuntos de datos.
- Para modificar o actualizar el periodo de viaje en el tiempo de un conjunto de datos, consulta Actualizar periodos de viaje en el tiempo.
Cuando se modifica un intervalo de viaje en el tiempo, si la marca de tiempo especifica una hora fuera del intervalo o anterior a la creación de la tabla, la consulta falla y devuelve un error como el siguiente:
TableID
was created at time which is before its allowed time travel intervaltimestamp
. Creation time:timestamp
Cómo funciona la función de viajes en el tiempo
BigQuery usa un formato de almacenamiento en columnas. Esto significa que los datos se organizan y almacenan por columnas en lugar de por filas. Cuando tienes una tabla con varias columnas, los valores de cada columna de todas las filas se almacenan juntos en bloques de almacenamiento.
Cuando modificas una celda de una tabla de BigQuery, cambias un valor específico de una fila y una columna concretas. Como BigQuery almacena las columnas juntas, para modificar incluso una sola celda de una columna, normalmente es necesario leer todo el bloque de almacenamiento que contiene los datos de esa columna en las filas afectadas, aplicar el cambio y, a continuación, escribir una nueva versión de ese bloque de almacenamiento.
La función de viaje en el tiempo funciona monitorizando las versiones de los bloques de almacenamiento que componen tu tabla. Cuando actualizas datos, BigQuery no se limita a modificar el bloque de almacenamiento en el mismo lugar. En su lugar, crea una nueva versión de los bloques de almacenamiento afectados con los datos actualizados. La versión anterior se conserva para poder volver a ella.
BigQuery usa tamaños de archivo y bloques de almacenamiento adaptativos. El tamaño de los bloques de almacenamiento no es fijo, sino que puede variar en función de factores como el tamaño de la tabla y la distribución de sus datos. Si se cambia aunque solo sea una celda de un bloque de almacenamiento, se modifican los datos de esa columna, lo que puede afectar a muchas filas. Por lo tanto, la unidad de datos que se versiona y se envía a la función de viaje en el tiempo suele ser todo el bloque de almacenamiento que contiene los datos modificados de esa columna, no solo una celda.
Por este motivo, si se cambia una celda, se pueden enviar más datos a la función de viajes en el tiempo que el tamaño del cambio.
Cómo afecta el periodo de viaje en el tiempo a la recuperación de tablas y conjuntos de datos
Una tabla o un conjunto de datos eliminados usan la duración del periodo de recuperación que estaba vigente en el momento de la eliminación.
Por ejemplo, si tienes una ventana de viaje en el tiempo de dos días y luego aumentas la duración a siete días, las tablas eliminadas antes de ese cambio solo se podrán recuperar durante dos días. Del mismo modo, si tienes una ventana de viaje en el tiempo de cinco días y la reduces a tres, las tablas que se hayan eliminado antes del cambio se podrán recuperar durante cinco días.
Como las ventanas de retroceso en el tiempo se definen a nivel del conjunto de datos, no puedes cambiar la ventana de retroceso en el tiempo de un conjunto de datos eliminado hasta que se restaure.
Si reduces la duración de la ventana de viaje en el tiempo, eliminas una tabla y te das cuenta de que necesitas un periodo de recuperación más largo para esos datos, puedes crear una instantánea de la tabla desde un momento anterior a la eliminación de la tabla. Debes hacerlo mientras la tabla eliminada aún se pueda recuperar. Para obtener más información, consulta el artículo Crear una captura de una tabla con la función de viaje en el tiempo.
Viaje en el tiempo y acceso a nivel de fila
Si una tabla tiene o ha tenido políticas de acceso a nivel de fila, solo un administrador de la tabla puede acceder al historial de datos de la tabla.
Se requiere el siguiente permiso de Gestión de Identidades y Accesos (IAM):
Permiso | Recurso |
---|---|
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions
|
La tabla cuyo historial de datos se está consultando |
El siguiente rol de BigQuery proporciona el permiso necesario:
Role | Recurso |
---|---|
roles/bigquery.admin
|
La tabla cuyo historial de datos se está consultando |
El permiso bigquery.rowAccessPolicies.overrideTimeTravelRestrictions
no se puede añadir a un rol personalizado.
Ejecuta el siguiente comando para obtener la hora de época de Unix equivalente pasando la marca de tiempo UTC:
date -d '2023-08-04 16:00:34.456789Z' +%s000
Sustituye la hora de la época de UNIX
1691164834000
recibida del comando anterior en la herramienta de línea de comandos bq. Ejecuta el siguiente comando para restaurar una copia de la tabladeletedTableID
eliminada en otra tablarestoredTable
, dentro del mismo conjunto de datosmyDatasetID
:bq cp myProjectID:myDatasetID.deletedTableID@1691164834000 myProjectID:myDatasetID.restoredTable
A prueba de fallos
BigQuery ofrece un periodo de seguridad. Durante el periodo de seguridad, los datos eliminados se conservan automáticamente durante siete días más después del periodo de recuperación, de modo que estén disponibles para la recuperación de emergencia. Los datos se pueden recuperar a nivel de tabla. Los datos de una tabla se recuperan desde el momento representado por la marca de tiempo en la que se eliminó esa tabla. El periodo de seguridad no se puede configurar.
Cuando realizas las siguientes operaciones, los datos que se sustituyen o eliminan se pueden recuperar a través de la ventana de viaje en el tiempo. Una vez que finaliza el periodo de la ventana de viaje en el tiempo, estos datos entran en el periodo de seguridad para el tiempo de recuperación ampliado:
-
Eliminación o sustitución de tablas: cuando se elimina una tabla o cuando se sustituyen por completo sus datos (por ejemplo, mediante la disposición de escritura
WRITE_TRUNCATE
en un trabajo de carga o mediante la instrucciónCREATE OR REPLACE TABLE
), se conservan los contenidos anteriores de la tabla. - Eliminación de particiones: si se elimina una partición específica de una tabla con particiones, se conservan los datos que pertenecen a esa partición. Las demás particiones de la tabla no se verán afectadas.
No puedes consultar ni recuperar datos directamente en el almacenamiento a prueba de fallos. Para recuperar datos del almacenamiento a prueba de fallos, ponte en contacto con Cloud Customer Care.
Facturación
Si configuras el modelo de facturación del almacenamiento para que use bytes físicos, se te cobrarán por separado los bytes usados para el viaje en el tiempo y el almacenamiento a prueba de fallos. El almacenamiento de viajes en el tiempo y a prueba de fallos se cobra según la tarifa de almacenamiento físico activo. Puedes configurar el periodo de la función de viaje en el tiempo para equilibrar los costes de almacenamiento con tus necesidades de conservación de datos.
Si configuras tu modelo de facturación de almacenamiento para que use bytes lógicos, los costes totales de almacenamiento de la función de viaje en el tiempo y del almacenamiento a prueba de fallos se incluirán en la tarifa base que se te cobre.
En la siguiente tabla se comparan los costes de almacenamiento físico y lógico:
Modelo de facturación | ¿Qué es lo que pagas? |
---|---|
Almacenamiento físico (comprimido) |
|
Almacenamiento lógico (sin comprimir) (configuración predeterminada) |
|
Si utilizas almacenamiento físico, puedes ver los bytes utilizados por la función de viaje en el tiempo y la función de seguridad a prueba de fallos consultando las columnas TIME_TRAVEL_PHYSICAL_BYTES
y FAIL_SAFE_PHYSICAL_BYTES
de las vistas TABLE_STORAGE
y TABLE_STORAGE_BY_ORGANIZATION
. Para ver un ejemplo de cómo usar una de estas vistas para estimar tus costes, consulta Previsión de la facturación del almacenamiento.
Los costes de almacenamiento se aplican a los datos de viajes en el tiempo y a los de recuperación ante fallos, pero solo se te facturan si no se aplican tarifas de almacenamiento de datos en otras partes de BigQuery. Se aplican los siguientes detalles:
- Cuando se crea una tabla, no hay costes de almacenamiento de viajes en el tiempo ni de almacenamiento a prueba de fallos.
- Si los datos se modifican o se eliminan, se te cobrará por el almacenamiento de los datos modificados o eliminados guardados por la función de viaje en el tiempo durante el periodo de viaje en el tiempo y el periodo de seguridad. Es similar a los precios de almacenamiento de las copias y los clones de tablas.
Ejemplo de conservación de datos
En la siguiente tabla se muestra cómo se mueven los datos eliminados o modificados entre los periodos de retención del almacenamiento. En este ejemplo se muestra una situación en la que el almacenamiento activo total es de 200 GiB y se eliminan 50 GiB con un periodo de recuperación de siete días:
Día 0 | Día 1 | Día 2 | Día 3 | Día 4 | Día 5 | Día 6 | Día 7 | Día 8 | Día 9 | Día 10 | Día 11 | Día 12 | Día 13 | Día 14 | Día 15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Almacenamiento activo | 200 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 | 150 |
Almacenamiento de viajes en el tiempo | 50 | 50 | 50 | 50 | 50 | 50 | 50 | |||||||||
Almacenamiento a prueba de fallos | 50 | 50 | 50 | 50 | 50 | 50 | 50 |
La eliminación de datos del almacenamiento físico a largo plazo funciona de la misma forma.
Limitaciones
La recuperación de datos con la función de viaje en el tiempo está sujeta a las siguientes limitaciones:
- Los viajes en el tiempo solo proporcionan acceso al historial de datos durante el periodo de tiempo del viaje. Para conservar los datos de las tablas con fines no de emergencia durante más tiempo que el periodo de la función de viaje en el tiempo, usa instantáneas de tablas.
- Si una tabla tiene o ha tenido políticas de acceso a nivel de fila, solo los administradores de la tabla pueden usar la función de viaje en el tiempo. Para obtener más información, consulta Desplazamiento en el tiempo y acceso a nivel de fila.
- La función de viaje en el tiempo no restaura los metadatos de las tablas.
- La función de viaje en el tiempo no se admite en los siguientes tipos de tablas:
- Tablas externas
- Tablas de resultados de consultas almacenados en caché temporales
- Tablas de sesiones temporales
- Tablas temporales de varias instrucciones
- Tablas incluidas en conjuntos de datos externos.
Siguientes pasos
- Consulta cómo consultar y recuperar datos de viajes en el tiempo.
- Más información sobre las capturas de tablas