Analiza los patrones de acceso

Puedes analizar cómo tus aplicaciones leen y escriben datos en Bigtable de forma visual con la página Patrones de acceso en la Google Cloud console, o puedes llamar de manera programática a la API de Cloud Monitoring para consultar las métricas de patrones de acceso subyacentes.

Antes de leer este documento, revisa Lecturas, Escrituras y Supervisión.

Descripción general

Bigtable clasifica automáticamente las solicitudes de datos entrantes en tipos de consultas en Cloud Monitoring. El patrón de acceso de tu carga de trabajo es la combinación de diferentes tipos de consultas. Por ejemplo, tu patrón de acceso a la carga de trabajo puede consistir en tipos de consultas de lectura puntual, análisis breve y escritura puntual. Bigtable define 10 tipos de consultas distintos.

Mientras que la página Estadísticas del sistema muestra el uso general de recursos y Key Visualizer muestra cómo Bigtable distribuye el tráfico entre los rangos de claves de fila, la página Patrones de acceso proporciona un desglose centrado en las consultas de tu carga de trabajo en los niveles de clúster, tabla y perfil de app. Puedes usar la página Patrones de acceso para las siguientes tareas:

  • Comprende tu carga de trabajo: Consulta la proporción y la tasa de los tipos de consultas de lectura, escritura y lectura y escritura para cada clúster, y agrupa las métricas por tabla o perfil de app.
  • Detecta patrones de consultas ineficientes y soluciona problemas de latencia:
    • Identifica las lecturas dispersas en las que Bigtable analiza muchas más filas o celdas de las que devuelve debido a filtros selectivos o celdas no recopiladas que esperan la recolección de elementos no utilizados
    • Supervisa las búsquedas inversas, que son menos eficientes que las búsquedas hacia adelante.
    • Compara los percentiles de latencia del servidor con las filas analizadas, las filas devueltas y las celdas vistas para identificar qué patrones de acceso contribuyen a los aumentos repentinos de latencia
  • Identifica las cargas de trabajo para la adopción de funciones:
    • Identifica tablas o perfiles de apps con grandes volúmenes de lecturas puntuales que puedan beneficiarse del nivel en memoria en la edición Enterprise Plus.
    • Identifica las cargas de trabajo de análisis o lectura por lotes grandes que puedes aislar del tráfico de entrega con la computación sin servidores de Data Boost.

Limitaciones

Bigtable no clasifica las consultas de GoogleSQL para Bigtable como patrones de acceso y no incluye esas consultas en las métricas de patrones de acceso de filas, celdas o bytes. En los gráficos Distribución de QPS, QPS y Latencia, las consultas en SQL y otras solicitudes sin clasificar aparecen como QUERY_TYPE_UNKNOWN.

Roles obligatorios

Para obtener los permisos que necesitas para ver la página Patrones de acceso en la consola de Google Cloud , pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para ver la página Patrones de acceso en la consola de Google Cloud . Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

Se requieren los siguientes permisos para ver la página Patrones de acceso en la consola de Google Cloud :

  • Consulta los detalles de la instancia: bigtable.instances.get
  • Enumera clústeres, perfiles de apps y tablas: bigtable.clusters.list, bigtable.appProfiles.list, bigtable.tables.list
  • Métricas de supervisión de consultas: monitoring.timeSeries.list

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Patrones de acceso

Cuando tu aplicación usa una biblioteca cliente de Bigtable, esta traduce tus llamadas de método en solicitudes a la API de Bigtable Data:

Bigtable clasifica cada solicitud a la API de datos entrante en el servidor después de que se completa, según los siguientes factores, en lugar de solo el nombre del método de la biblioteca cliente:

  • Parámetros de solicitud: si la solicitud se orienta a una sola clave de fila, varias claves de fila o un rango de filas, si la solicitud establece reversed y qué filtros aplica
  • Estadísticas de ejecución: la cantidad de filas y celdas analizadas y mostradas, y la carga útil de bytes

Por ejemplo, cuando llamas a un método de lectura de una sola fila, como readRow, o llamas a readRows con una sola clave de fila, Bigtable suele clasificar la solicitud como una lectura de punto, que es apta para el nivel en memoria. Sin embargo, si esa lectura de una sola fila usa un filtro complejo o analiza una gran cantidad de celdas, Bigtable podría clasificarla como una lectura dispersa, una lectura masiva o una lectura de otro tipo. Por el contrario, si llamas a readRows para leer varias claves de fila o analizar un rango de filas, Bigtable clasifica la solicitud como una lectura o un análisis masivos, que no son aptos para el nivel en memoria.

Orden de evaluación de lectura

Debido a que una sola solicitud a la API de datos de ReadRows puede coincidir con las características de más de una categoría, Bigtable evalúa las solicitudes de lectura en el siguiente orden y asigna el primer patrón de acceso coincidente:

  1. Lectura puntual
  2. Análisis corto (para análisis hacia adelante) o análisis corto inverso (cuando reversed se establece en true)
  3. Análisis inverso (para cualquier solicitud de lectura restante en la que reversed se establezca en true)
  4. Lectura dispersa (se evalúa antes de la lectura masiva para que Bigtable marque las lecturas de varias claves o los análisis hacia adelante más grandes con eliminación de filtros pesados como dispersos)
  5. Lectura masiva
  6. Otra lectura (para cualquier solicitud ReadRows restante)

Definiciones de tipos de consultas

En la siguiente tabla, se describe cada categoría de patrón de acceso, su etiqueta query_type correspondiente en Monitoring, las operaciones típicas de la biblioteca cliente y el método subyacente de la API de datos (etiqueta de métrica method) al que se aplica, y cómo Bigtable clasifica las solicitudes en esa categoría. Debido a que los nombres de los métodos varían según el lenguaje de programación, en la tabla se enumeran los nombres de los métodos de la biblioteca cliente representativos. Para ver muestras de código específicas de cada lenguaje, consulta Ejemplos de lectura y Ejemplos de escritura. Para obtener información sobre los filtros simples y complejos, consulta la sección Filtros simples frente a filtros complejos de este documento.

Tipo de consulta Etiqueta de métrica de query_type Operación del cliente y método de la API de datos Criterios de clasificación
Lectura puntual QUERY_TYPE_POINT_READ

Lectura de una sola fila, como readRow o readRows de una sola clave

API de datos: ReadRows

Una lectura hacia adelante de una sola clave de fila que no usa ningún filtro o un filtro simple, en la que la cantidad de celdas analizadas y mostradas, y el tamaño total de la respuesta permanecen dentro de los límites pequeños de una sola fila.

Análisis breve QUERY_TYPE_SHORT_SCAN

Análisis de rango o prefijo de fila, como readRows con un solo rango o prefijo

API de datos: ReadRows

Un análisis hacia adelante de un solo rango de filas contiguas que no usa ningún filtro o un filtro simple, en el que la cantidad de filas y celdas analizadas y mostradas, y el tamaño total de la respuesta permanecen dentro de límites pequeños.

Escaneo corto inverso QUERY_TYPE_REVERSE_SHORT_SCAN

Análisis inverso, como readRows con un solo rango o prefijo en orden inverso

API de datos: ReadRows

Es un análisis inverso de un solo rango de filas contiguas que no usa ningún filtro o un filtro simple y se mantiene dentro de los mismos límites de fila, celda y bytes que un análisis corto.

Búsqueda inversa QUERY_TYPE_REVERSE_SCAN

Análisis inverso, como readRows en orden inverso

API de datos: ReadRows

Cualquier lectura inversa que no califique como un análisis corto inverso, por ejemplo, un análisis inverso que exceda los límites de filas, celdas o bytes de un análisis corto, especifica claves de fila individuales, analiza varios rangos de filas o usa un filtro complejo.

Lectura dispersa QUERY_TYPE_SPARSE_READ

Lectura filtrada o análisis en celdas no recopiladas, con readRow o readRows

API de datos: ReadRows

Cualquier solicitud de lectura hacia adelante (evaluada después de la lectura puntual, el análisis corto y el análisis inverso) en la que Bigtable analiza significativamente más filas o celdas de las que devuelve debido a la eliminación de filtros o a las celdas no recopiladas que esperan la recolección de elementos no utilizados.

Lectura masiva QUERY_TYPE_BULK_READ

Lectura de varias filas, como readRows o bulkReadRows de varias claves, o una lectura de una sola fila grande con readRow

API de datos: ReadRows

Es una lectura hacia adelante que especifica una o más claves de fila sin filtro o con un filtro simple, supera los límites de lectura de puntos (por ejemplo, solicita varias claves de fila o lee una sola fila grande) y no califica como una lectura dispersa.

Otras lecturas QUERY_TYPE_OTHER_READ

Análisis de rango grande, análisis de varios rangos o lectura filtrada con readRow o readRows

API de datos: ReadRows

Cualquier solicitud ReadRows que no coincida con las categorías de lectura anteriores, por ejemplo, análisis de rango de avance grande, análisis de varios rangos, solicitudes que combinan claves de fila y rangos de fila, o lecturas con filtros complejos que no califican como dispersos.

Escritura puntual QUERY_TYPE_POINT_WRITE

Escritura simple, actualización incremental o escritura por lotes pequeña, como mutateRow o bulkMutateRows

API de datos: MutateRow, MutateRows

Una solicitud MutateRow de una sola fila o una solicitud por lotes MutateRows pequeña que modifica una pequeña cantidad de filas y celdas con una carga útil de bytes total pequeña.

Otra escritura QUERY_TYPE_OTHER_WRITE

Escritura por lotes o escritura simple de gran tamaño, como bulkMutateRows o mutateRow

API de datos: MutateRow, MutateRows

Cualquier solicitud MutateRow o MutateRows que supere los límites de escritura puntual, como escrituras por lotes más grandes o escrituras con una gran cantidad de mutaciones o carga útil de bytes.

Lectura y escritura QUERY_TYPE_READ_WRITE

Escritura condicional o agregado, como checkAndMutateRow o readModifyWriteRow

API de datos: CheckAndMutateRow, ReadModifyWriteRow

Cualquier solicitud de escritura condicional (CheckAndMutateRow) o de incremento o adición atómicos (ReadModifyWriteRow), independientemente del tamaño de la carga útil.

En las métricas de recuento de solicitudes y latencia, Bigtable etiqueta las solicitudes no clasificadas, como las consultas de GoogleSQL para Bigtable, como QUERY_TYPE_UNKNOWN.

Filtros simples frente a filtros complejos

Para calificar como lectura de punto, análisis corto, análisis corto inverso o lectura masiva, una solicitud de ReadRows no debe usar ningún filtro o un filtro simple.

Bigtable clasifica un filtro como simple si solo usa los siguientes tipos de filtros, ya sea solos o combinados en un filtro chain limitado. Para obtener más información, consulta Cadena.

  • Sin filtro (FILTER_NOT_SET)
  • pass_all_filter o block_all_filter
  • column_range_filter, column_qualifier_regex_filter o family_name_regex_filter
  • cells_per_column_limit_filter, cells_per_row_limit_filter o cells_per_row_offset_filter
  • timestamp_range_filter

Bigtable trata cualquier solicitud ReadRows como si usara un filtro complejo si la solicitud usa un tipo de filtro que no está en la lista anterior, como los siguientes, o si encadena una gran cantidad de filtros:

  • value_regex_filter
  • value_range_filter
  • row_key_regex_filter
  • row_sample_filter
  • interleave
  • condition
  • sink
  • strip_value_transformer
  • apply_label_transformer

Bigtable clasifica estas solicitudes como un análisis inverso si reversed es true y, de lo contrario, como una lectura dispersa (si analiza significativamente más filas o celdas de las que devuelve) o como otra lectura.

Visualiza patrones de acceso

Puedes ver la página Patrones de acceso en la consola de Google Cloud a nivel de instancia o de clúster.

Visualiza los patrones de acceso de una instancia

  1. En la consola de Google Cloud , abre la lista de instancias de Bigtable.

    Abrir la lista de instancias

  2. Haz clic en la instancia cuyas métricas quieres ver.

  3. En el panel de navegación, en Observabilidad, haz clic en Patrones de acceso.

  4. En la lista Clúster, selecciona el clúster cuyos patrones de acceso deseas inspeccionar. De forma predeterminada, la consola de Google Cloud selecciona el primer clúster de la instancia.

  5. En la lista Agrupar por, elige cómo desglosar los gráficos:

    • Ninguno: Es la opción predeterminada que desglosa todos los gráficos por patrón de acceso, como QUERY_TYPE_POINT_READ.
    • Perfil de la app: Desglosa todos los gráficos por ID de perfil de la aplicación y patrón de acceso.
    • Tabla: Desglosa todos los gráficos por ID de tabla y patrón de acceso.
  6. Opcional: Para cambiar el intervalo de tiempo o activar o desactivar la actualización automática, usa el selector de período.

Visualiza los patrones de acceso de un clúster

  1. En la consola de Google Cloud , abre la lista de instancias de Bigtable.

    Abrir la lista de instancias

  2. Haz clic en la instancia cuyas métricas quieres ver.

    Se abrirá la página de descripción general de la instancia.

  3. En la tabla de clústeres, haz clic en el ID del clúster.

  4. En el panel de navegación, haz clic en Patrones de acceso. En la página, se muestran las métricas del clúster seleccionado.

  5. En la lista Agrupar por, elige cómo desglosar los gráficos:

    • Ninguno: Es la opción predeterminada que desglosa todos los gráficos por patrón de acceso, como QUERY_TYPE_POINT_READ.
    • Perfil de la app: Desglosa todos los gráficos por ID de perfil de la aplicación y patrón de acceso.
    • Tabla: Desglosa todos los gráficos por ID de tabla y patrón de acceso.
  6. Opcional: Para cambiar el intervalo de tiempo o activar o desactivar la actualización automática, usa el selector de período.

Gráficos y métricas en la página de patrones de acceso

En la página Patrones de acceso, se proporcionan gráficos para las siguientes métricas:

Métrica Disponible para Descripción
Distribución de QPS Clústeres
Tablas
Perfiles de aplicación

La proporción y la tasa promedio de solicitudes por segundo (QPS) agregadas en todo el período seleccionado para el clúster, desglosadas por query_type y la opción Agrupar por seleccionada.

Latencia Clústeres
Tablas
Perfiles de aplicación

Es la latencia de la solicitud del servidor a lo largo del tiempo, desglosada por query_type y la opción Agrupar por seleccionada. Usa el menú de percentiles en el gráfico para alternar entre el percentil 99 (predeterminado), el percentil 95 y el percentil 50.

QPS Clústeres
Tablas
Perfiles de aplicación

Es la tasa de solicitudes por segundo a lo largo del tiempo, desglosada por query_type y la opción Agrupar por seleccionada.

Filas mostradas Clústeres
Tablas
Perfiles de aplicación

Es la cantidad de filas que Bigtable devuelve al cliente por segundo para las solicitudes de lectura y de lectura y escritura después de aplicar los filtros.

Filas analizadas Clústeres
Tablas
Perfiles de aplicación

Es la cantidad de filas que Bigtable lee por segundo mientras procesa solicitudes de lectura y de lectura y escritura, antes de aplicar filtros. Comparar las filas analizadas con las filas devueltas te ayuda a identificar filtros de lectura ineficientes.

Filas modificadas Clústeres
Tablas
Perfiles de aplicación

Es la cantidad de filas que se modifican por segundo con solicitudes de escritura y de lectura y escritura.

Celdas vistas Clústeres
Tablas
Perfiles de aplicación

Es la cantidad de celdas que Bigtable inspecciona por segundo durante las solicitudes de lectura y de lectura y escritura antes de aplicar filtros, incluidas las celdas que filtra o que esperan la recolección de elementos no utilizados.

Celdas enviadas Clústeres
Tablas
Perfiles de aplicación

Es la cantidad de celdas que Bigtable devuelve al cliente por segundo después de aplicar los filtros. Comparar las Celdas vistas con las Celdas enviadas te ayuda a identificar las solicitudes de lectura que inspeccionan muchas celdas por cada celda que se devuelve.

Bytes enviados Clústeres
Tablas
Perfiles de aplicación

Es la cantidad de bytes de datos de filas codificados que se devuelven por segundo.

También puedes consultar estas métricas de manera programática con la API de Cloud Monitoring, verlas en el Explorador de métricas o agregarlas a paneles personalizados. Cada métrica de bigtable.googleapis.com/query_type/* en el recurso supervisado bigtable_table incluye las siguientes etiquetas:

  • Etiquetas de recursos: project_id, instance, cluster y table
  • Etiquetas de métricas: query_type, app_profile y method

Para obtener más información sobre cómo consultar las métricas de Bigtable en Monitoring, consulta Supervisa con Monitoring y Métricas.

Optimiza las cargas de trabajo según los patrones de acceso

Puedes usar las métricas de la página Patrones de acceso para tomar las siguientes decisiones:

  • Habilita el nivel en memoria para lecturas de puntos de baja latencia: Si los gráficos Distribución de QPS, QPS y Latencia muestran un gran volumen de solicitudes QUERY_TYPE_POINT_READ en tablas o perfiles de apps con objetivos estrictos de latencia de lectura, considera habilitar el nivel en memoria que está disponible en la edición Enterprise Plus. Agrupa los gráficos por Tabla o Perfil de app para identificar qué tablas y cargas de trabajo se beneficiarán más.
  • Aísla los análisis grandes y las lecturas por lotes con Data Boost: Si observas volúmenes altos o aumentos repentinos periódicos de solicitudes QUERY_TYPE_BULK_READ o QUERY_TYPE_OTHER_READ que comparten un clúster con tráfico de entrega sensible a la latencia, agrupa por perfil de app para identificar la fuente de los análisis. Enruta las lecturas de lotes, informes o análisis a través de un perfil de app dedicado configurado para usar la computación sin servidores de Data Boost, de modo que los análisis grandes no compitan con los nodos de entrega por los recursos de CPU.
  • Reduce la sobrecarga de filtros y ajusta la recolección de elementos no utilizados: Si ves una tasa alta de solicitudes QUERY_TYPE_SPARSE_READ, si las filas analizadas son mucho más altas que las filas mostradas o si las celdas vistas son mucho más altas que las celdas enviadas, tus solicitudes de lectura analizan datos que Bigtable no devuelve al cliente. Para mejorar la eficiencia de lectura, haz lo siguiente:
    • Limita los rangos o prefijos de clave de fila en la solicitud de lectura en lugar de depender de filtros de valores o expresiones regulares para descartar filas.
    • Incluye un filtro de límite de celdas, como cells_per_column_limit_filter, cuando tu aplicación solo necesite las versiones de celdas más recientes. Para obtener más información, consulta Límite de celdas por columna.
    • Revisa tus políticas de recolección de elementos no utilizados para que las versiones de celdas vencidas o antiguas no se acumulen y ralenticen los análisis. Para obtener más información, consulta Descripción general de la recolección de elementos no utilizados.
  • Reemplaza las búsquedas inversas por búsquedas directas: si observas solicitudes QUERY_TYPE_REVERSE_SCAN o QUERY_TYPE_REVERSE_SHORT_SCAN frecuentes con latencia elevada, considera diseñar tus claves de fila para que tu aplicación pueda emitir búsquedas directas. Para obtener más información, consulta Prácticas recomendadas para el diseño de esquemas.

¿Qué sigue?