Descripción general del nivel en la memoria

El nivel en memoria es un parámetro de configuración a nivel del clúster que usa nodos especializados. Antes de leer esta página, comprende las instancias, los clústeres y los nodos. También te recomendamos que te familiarices con las limitaciones.

El nivel en memoria de Bigtable es un nivel de memoria integrado como parte del nodo de Bigtable que permite una clasificación de datos fluida y optimizada para los costos en función de los patrones de acceso y las necesidades de rendimiento, todo a través de una sola API. Con el acceso remoto directo a memoria (RDMA), el nivel en la memoria de Bigtable reduce significativamente los tiempos de respuesta, mitiga los hotspots y garantiza una alta capacidad de procesamiento para los datos sensibles a la latencia. Para obtener más información, consulta Información sobre el rendimiento.

Cuándo usar el nivel en memoria

Te recomendamos que habilites el nivel en memoria para los siguientes casos de uso:

  • Requisitos de latencia de menos de un milisegundo: cargas de trabajo que requieren latencias de lectura de menos de 1 ms, que, por lo general, se abordan con una solución de caché autoadministrada frente a una base de datos.
  • Lecturas de puntos de alta capacidad de procesamiento: aplicaciones con requisitos de capacidad de procesamiento de tráfico de lectura altos en subconjuntos de datos específicos.
  • Mitigación de hotspots: Cargas de trabajo de alta capacidad de procesamiento que pueden incluir aumentos repentinos de tráfico o hotspots en claves de fila específicas.
  • Optimización de costos: situaciones en las que deseas reducir la cantidad de nodos de Bigtable descargando volúmenes de lectura altos en un nivel en memoria más rentable.

Cómo funciona el nivel en la memoria

La compatibilidad con el nivel en memoria se proporciona a través de nodos de almacenamiento híbrido. Estos nodos especializados extienden la desagregación de procesamiento y almacenamiento de Bigtable para incluir un nivel de memoria con capacidad de procesamiento escalable de forma vertical. Bigtable puede tardar hasta 30 minutos en aprovisionar los nodos de nivel en memoria especializados. Durante este período, Bigtable sigue enrutando el tráfico desde el almacenamiento persistente.

Puedes habilitar el nivel en la memoria a nivel del clúster.

El nivel en la memoria funciona de la siguiente manera:

  • Obtención de datos en el nivel de memoria: El nivel en memoria ofrece un comportamiento de almacenamiento en caché de lectura directa. Una fila entra en el nivel de memoria con operaciones de lectura a través de un perfil de app que configuras para el nivel en la memoria. Una operación de escritura desde cualquier perfil de app actualiza el nivel de memoria si los datos de la fila ya están en el nivel en la memoria.
  • Políticas de expulsión e invalidación: El nivel en memoria usa la expulsión menos usada recientemente (LRU) a nivel de fila y aplica una política de invalidación de tiempo de actividad (TTL) para maximizar la tasa de aciertos del nivel en memoria.
  • Almacenamiento en caché negativo: El nivel en memoria recuerda si falta un recurso durante un período para evitar la sobrecarga del backend.
  • Seguridad: El nivel en memoria admite la encriptación en reposo y en tránsito (TLS).
  • Replicación: En una instancia de varios clústeres, los niveles de memoria de los diferentes clústeres no están sincronizados. Debido a que cada nivel de memoria determina de forma independiente qué datos cargar en la memoria según el tráfico de lectura que recibe, los diferentes clústeres pueden contener diferentes claves de fila en sus niveles de memoria. Bigtable carga datos en la memoria desde el nivel de SSD del clúster local. Una escritura en una fila, con el tiempo, la actualiza en todos los niveles de memoria en los que está presente, según el modelo de replicación estándar de Bigtable de coherencia eventual.
  • Ajuste de escala automático vertical: El nivel en memoria admite el ajuste de escala automático vertical a nivel del nodo que funciona junto con el ajuste de escala automático de Bigtable.

El nivel en memoria está optimizado para el acceso de alto rendimiento a los datos actuales. Para mantener este rendimiento, solo las versiones con marca de tiempo más recientes de una fila residen en el nivel de memoria. Las solicitudes de versiones anteriores de datos, también conocidas como celdas históricas, omiten automáticamente el nivel de memoria y se entregan desde el almacenamiento persistente.

Coherencia de los datos

Bigtable garantiza que los datos del nivel en memoria sean coherentes con los datos persistentes en el nivel de almacenamiento SSD o de acceso poco frecuente. Esta arquitectura híbrida permite que Bigtable proporcione un modelo de almacenamiento coherente en todos los niveles de almacenamiento, lo que te permite acceder a tus datos a través de la misma interfaz semántica, independientemente de si residen físicamente en la RAM o en el almacenamiento persistente. Con el nivel en la memoria de Bigtable habilitado, conservas la coherencia de lectura de tus escrituras a nivel del clúster.

Escalamiento vertical

Habilitar el nivel en la memoria permite que cada nodo use el escalamiento vertical para modificar su capacidad de capacidad de procesamiento del nivel en la memoria. Con el nivel en memoria habilitado, cada nodo comienza con una capacidad base de 40,000 lecturas por segundo. Para administrar los aumentos repentinos en el tráfico de lectura puntual, los nodos pueden escalar de forma automática en incrementos de 40,000 lecturas por segundo, hasta un máximo de 120,000 lecturas por segundo por nodo.

Esta función de escalamiento vertical se integra en el ajuste de escala automático de Bigtable. Si se alcanza la capacidad máxima del nivel en memoria en todos los nodos del clúster y el ajuste de escala automático está activo, Bigtable aprovisiona nodos adicionales de forma automática para aumentar aún más la capacidad de procesamiento del nivel en memoria.

El escalamiento vertical en un nodo solo se aplica a las lecturas por segundo del nivel en memoria y funciona independientemente de si el ajuste de escala automático a nivel de clúster está habilitado. El escalamiento vertical más allá de las 40,000 lecturas por segundo base se factura aplicando un multiplicador al costo por hora del nodo. Para obtener más información, consulta precios y límites.

Limitaciones

Se aplican las siguientes limitaciones al nivel en memoria:

  • El nivel en la memoria requiere almacenamiento SSD.
  • El nivel en memoria solo admite operaciones de lectura de puntos a nivel de fila única.
  • El nivel en memoria no entrega análisis de datos ni admite consultas en SQL.
  • Los perfiles de apps de nivel en memoria solo admiten el enrutamiento de un solo clúster.
  • El nivel en memoria limita el tamaño de la fila a 1 MiB por clave de fila. Bigtable lee las filas que superan este límite desde el almacenamiento persistente.
  • El nivel en memoria requiere las siguientes versiones de las bibliotecas cliente de Bigtable:

    • Java, versión 2.77.0 o posterior
    • Versión 26.80.0 o posterior de la BOM
    • Go 1.52.0 o una versión posterior

    No se admiten otras bibliotecas cliente.

  • Los clústeres que tienen habilitadas las claves de encriptación administradas por el cliente (CMEK) no admiten el nivel en memoria.

  • El nivel en la memoria está limitado a un máximo de 10 nodos por clúster.

¿Qué sigue?