Almacenamiento en caché de metadatos de tablas externas

En este documento se describe cómo usar el almacenamiento de metadatos en caché (también conocido como indexación de metadatos de columnas) para mejorar el rendimiento de las consultas en tablas de objetos y en algunos tipos de tablas BigLake.

Las tablas de objetos y algunos tipos de tablas de BigLake pueden almacenar en caché información de metadatos sobre los archivos de almacenes de datos externos, como Cloud Storage. Los siguientes tipos de tablas de BigLake admiten el almacenamiento de metadatos en caché:

  • Tablas de BigLake de Amazon S3
  • Tablas de BigLake de Cloud Storage

Los metadatos incluyen nombres de archivo, información de partición y metadatos de archivos, como el número de filas. Puedes elegir si quieres habilitar el almacenamiento en caché de metadatos en una tabla. Las consultas con un gran número de archivos y con filtros de partición de Hive son las que más se benefician del almacenamiento en caché de metadatos.

Si no habilita el almacenamiento en caché de metadatos, las consultas en la tabla deben leer la fuente de datos externa para obtener los metadatos del objeto. La lectura de estos datos aumenta la latencia de las consultas. Listar millones de archivos de la fuente de datos externa puede llevar varios minutos. Si habilitas el almacenamiento en caché de metadatos, las consultas pueden evitar enumerar archivos de la fuente de datos externa y pueden particionar y eliminar archivos más rápidamente.

Puedes habilitar el almacenamiento de metadatos en caché en una tabla de BigLake o de objetos al crearla. Para obtener más información sobre cómo crear tablas de objetos, consulta Crear tablas de objetos. Para obtener más información sobre cómo crear tablas BigLake, consulta uno de los siguientes temas:

Configuración de almacenamiento en caché de metadatos

Hay dos propiedades que controlan el comportamiento de esta función:

  • Antigüedad máxima especifica cuándo las consultas usan metadatos almacenados en caché.
  • El modo de caché de metadatos especifica cómo se recogen los metadatos.

Si tienes habilitada la caché de metadatos, puedes especificar el intervalo máximo de obsolescencia de los metadatos que se acepta para las operaciones en la tabla. Por ejemplo, si especificas un intervalo de 1 hora, las operaciones en la tabla usarán los metadatos almacenados en caché si se han actualizado en la última hora. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recurre a la recuperación de metadatos del almacén de datos (Amazon S3 o Cloud Storage). Puedes especificar un intervalo de obsolescencia de entre 30 minutos y 7 días.

Puedes actualizar la caché de forma automática o manual:

  • En el caso de las actualizaciones automáticas, la caché se actualiza a intervalos definidos por el sistema, normalmente entre 30 y 60 minutos. Actualizar la caché automáticamente es una buena opción si los archivos del almacén de datos se añaden, eliminan o modifican a intervalos aleatorios. Si necesitas controlar el momento de la actualización (por ejemplo, para activarla al final de un trabajo de extracción, transformación y carga), usa la actualización manual.
  • Para las actualizaciones manuales, ejecuta el procedimiento del sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE para actualizar la caché de metadatos según la programación que determines. En el caso de las tablas BigLake, puedes actualizar los metadatos de forma selectiva proporcionando subdirectorios del directorio de datos de la tabla. De esta forma, se evita el procesamiento innecesario de metadatos. Actualizar la caché manualmente es una buena opción si los archivos del almacén de datos se añaden, eliminan o modifican a intervalos conocidos, por ejemplo, como resultado de una canalización.

Tanto las actualizaciones de caché manuales como las automáticas se ejecutan con la prioridad de consulta INTERACTIVE.

Si decides usar las actualizaciones automáticas, te recomendamos que crees una reserva y, a continuación, una asignación con el tipo de tarea BACKGROUND para el proyecto que ejecute las tareas de actualización de la caché de metadatos. De esta forma, se evita que los trabajos de actualización compitan con las consultas de los usuarios por los recursos y que, posiblemente, fallen si no hay suficientes recursos disponibles para ellos.

Antes de definir los valores del intervalo de obsolescencia y del modo de almacenamiento en caché de metadatos, debes tener en cuenta cómo interactuarán. Ten en cuenta los siguientes ejemplos:

  • Si la caché de metadatos de una tabla está configurada para requerir actualizaciones manuales y el intervalo de obsolescencia es de 2 días, debes ejecutar el procedimiento del sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE cada 2 días o menos si quieres que las operaciones de la tabla usen metadatos almacenados en caché.
  • Si la caché de metadatos de una tabla está configurada para actualizarse automáticamente y el intervalo de obsolescencia es de 30 minutos, es posible que algunas de las operaciones de la tabla lean datos del almacén de datos si la actualización de la caché de metadatos tarda más de lo habitual (entre 30 y 60 minutos).

Para obtener más información sobre cómo definir las opciones de almacenamiento en caché de metadatos de las tablas de BigLake, consulta Crear tablas externas de BigLake de Amazon S3 o Crear tablas externas de BigLake para Cloud Storage.

Para obtener más información sobre cómo configurar las opciones de almacenamiento en caché de metadatos de las tablas de objetos, consulta Crear tablas de objetos.

Obtener información sobre las tareas de actualización de la caché de metadatos

Para obtener información sobre las tareas de actualización de la caché de metadatos, consulta la vista INFORMATION_SCHEMA.JOBS, como se muestra en el siguiente ejemplo:

SELECT *
FROM `region-us.INFORMATION_SCHEMA.JOBS`
WHERE job_id LIKE '%metadata_cache_refresh%'
AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR)
ORDER BY start_time DESC
LIMIT 10;

Usar claves de encriptado gestionadas por el cliente con metadatos almacenados en caché

Los metadatos almacenados en caché están protegidos por la clave de cifrado gestionada por el cliente (CMEK) que se usa en la tabla a la que están asociados. Puede ser una CMEK aplicada directamente a la tabla o una CMEK que la tabla herede del conjunto de datos o del proyecto.

Si se define una CMEK predeterminada para el proyecto o el conjunto de datos, o si se cambia la CMEK del proyecto o del conjunto de datos, esto no afectará a las tablas ni a sus metadatos almacenados en caché. Debes cambiar la clave de la tabla para aplicar la nueva clave tanto a la tabla como a sus metadatos almacenados en caché.

Las CMEKs creadas en BigQuery no se aplican a los archivos de Cloud Storage que usan BigLake y las tablas de objetos. Para obtener el cifrado CMEK de extremo a extremo, configure las CMEKs en Cloud Storage para esos archivos.

Obtener información sobre el uso de la caché de metadatos por parte de los trabajos de consulta

Para obtener información sobre el uso de la caché de metadatos de un trabajo de consulta, llama al método jobs.get de ese trabajo y consulta el campo MetadataCacheStatistics de la sección JobStatistics2 del recurso Job. Este campo proporciona información sobre las tablas con la caché de metadatos habilitada que ha usado la consulta, si la consulta ha usado la caché de metadatos y, si no es así, el motivo.

Estadísticas de la tabla

En el caso de las tablas de BigLake basadas en archivos Parquet, las estadísticas de las tablas se recogen cuando se actualiza la caché de metadatos. La recogida de estadísticas de tablas se produce durante las actualizaciones automáticas y manuales, y las estadísticas se conservan durante el mismo periodo que la caché de metadatos.

Las estadísticas de la tabla recogidas incluyen información de los archivos, como el número de filas, el tamaño físico y sin comprimir de los archivos, y la cardinalidad de las columnas. Cuando ejecutas una consulta en una tabla BigLake basada en Parquet, estas estadísticas se proporcionan al optimizador de consultas para que pueda planificar mejor las consultas y, posiblemente, mejorar el rendimiento de las consultas de algunos tipos. Por ejemplo, una optimización de consultas habitual es la propagación dinámica de restricciones, en la que el optimizador de consultas infiere dinámicamente predicados en las tablas de hechos más grandes de una combinación a partir de las tablas de dimensiones más pequeñas. Aunque esta optimización puede acelerar las consultas mediante el uso de esquemas de tabla normalizados, requiere estadísticas de tabla precisas. Las estadísticas de las tablas recogidas por el almacenamiento en caché de metadatos permiten optimizar los planes de consulta en BigQuery y Apache Spark.

Limitaciones

Se aplican las siguientes limitaciones a la caché de metadatos:

  • Si emite varias actualizaciones manuales simultáneas, solo se completará una.
  • La caché de metadatos caduca al cabo de 7 días si no se actualiza.
  • Si actualiza el URI de origen de una tabla, la caché de metadatos no se actualizará automáticamente y las consultas posteriores devolverán datos de la caché obsoleta. Para evitarlo, actualiza la caché de metadatos manualmente. Si la caché de metadatos de la tabla está configurada para actualizarse automáticamente, debes cambiar el modo de actualización de la tabla a manual, realizar la actualización manual y, a continuación, volver a configurar el modo de actualización de la tabla como automático.
  • Si actualizas manualmente la caché de metadatos y tu conjunto de datos de destino y tu segmento de Cloud Storage se encuentran en una ubicación regional, debes especificar explícitamente esta ubicación al ejecutar la llamada al procedimiento BQ.REFRESH_EXTERNAL_METADATA_CACHE. Puedes hacerlo de las siguientes formas:

    Consola

    1. Ve a la página BigQuery.

      Ir a BigQuery

    2. Selecciona una pestaña en el editor.

    3. Haz clic en Más y, a continuación, en Configuración de la consulta.

    4. En la sección Opciones avanzadas, desmarca la casilla Selección automática de la ubicación y, a continuación, especifica la región objetivo.

    5. Haz clic en Guardar.

    6. Ejecuta la consulta que contiene la llamada al procedimiento BQ.REFRESH_EXTERNAL_METADATA_CACHE en esa pestaña del editor.

    bq

    Si ejecutas la consulta que contiene la BQ.REFRESH_EXTERNAL_METADATA_CACHE llamada al procedimiento mediante bq query, asegúrate de especificar la marca --location.

Siguientes pasos