Descripción general del nivel en la memoria
El nivel en la memoria es una configuración a nivel del clúster que usa nodos especializados. Antes de leer esta página, debes comprender las instancias, los clústeres y los nodos. También te recomendamos que te familiarices con las limitaciones.
El nivel en la memoria de Bigtable es un nivel de memoria integrado como parte del nodo de Bigtable que permite la estratificación de datos sin problemas 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 directo a la memoria remota (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 la memoria
Te recomendamos que habilites el nivel en la memoria para los siguientes casos de uso:
- Requisitos de latencia inferior a un milisegundo: Cargas de trabajo que requieren latencias de lectura de menos de 1 ms, que suelen abordarse mediante la presentación de una base de datos con una solución de caché autoadministrada.
- Lecturas de puntos de alta capacidad de procesamiento: Aplicaciones con requisitos de alta capacidad de procesamiento de tráfico de lectura en subconjuntos específicos de datos.
- Mitigación de hotspots: Cargas de trabajo de alta capacidad de procesamiento que pueden incluir picos de tráfico o hotspots en claves de fila particulares.
- Optimización de costos: situaciones en las que deseas reducir la cantidad de nodos de Bigtable mediante la descarga de volúmenes de lectura altos a un nivel en la memoria más rentable.
Cómo funciona el nivel en la memoria
El nivel en la 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 verticalmente. Bigtable puede tardar hasta 30 minutos en aprovisionar los nodos especializados del nivel en la memoria. Durante este período, Bigtable continúa publicando 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 la memoria ofrece un comportamiento de almacenamiento en caché de lectura directa. Una fila pasa al nivel de memoria con operaciones de lectura a través de un perfil de aplicación que configuras para el nivel en la memoria. Una operación de escritura desde cualquier perfil de aplicación 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 la memoria usa la expulsión de elementos usados menos recientemente (LRU) a nivel de la fila y aplica una política de invalidación de tiempo de actividad (TTL) para maximizar la proporción de aciertos del nivel en la memoria.
- Almacenamiento en caché negativo: El nivel en la memoria recuerda si falta un recurso durante un período para evitar la sobrecarga del backend.
- Seguridad: El nivel en la 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 diferentes clústeres no están sincronizados. Debido a que cada nivel de memoria determina de forma independiente qué datos cargar en la memoria en función del 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 finalmente la actualiza en todos los niveles de memoria en los que está presente, siguiendo el modelo de replicación estándar de Bigtable de coherencia eventual.
- Ajuste de escala automático vertical: El nivel en la 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 la 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 los datos, también conocidas como celdas históricas, omiten automáticamente el nivel de memoria y se publican desde el almacenamiento persistente.
Coherencia de los datos
Bigtable garantiza que los datos del nivel en la memoria sean coherentes con los datos persistentes en el nivel de almacenamiento de 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 reside 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 procesamiento del nivel en la memoria. Cada nodo incluye 8 GB de RAM para el nivel en la memoria y comienza con una capacidad base de 40,000 lecturas por segundo. Para administrar los aumentos repentinos en el tráfico de lectura de puntos, los nodos pueden escalarse automáticamente 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 con el ajuste de escala automático de Bigtable. Si se alcanza la capacidad máxima del nivel en la memoria en todos los nodos del clúster y el ajuste de escala automático está activo, Bigtable aprovisiona automáticamente nodos adicionales para aumentar aún más la capacidad de procesamiento del nivel en la memoria.
El escalamiento vertical en un nodo solo se aplica a las lecturas por segundo del nivel en la memoria y funciona independientemente de si está habilitado el ajuste de escala automático a nivel del clúster. 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 la memoria:
- El nivel en la memoria requiere almacenamiento SSD.
- El nivel en la memoria solo admite operaciones de lectura de puntos de una sola fila.
- El nivel en la memoria no publica análisis de datos ni admite consultas de SQL.
- Los perfiles de aplicación de nivel en la memoria solo admiten el enrutamiento de un solo clúster.
- El nivel en la memoria limita el tamaño de la fila a 1 MiB por clave de fila. Bigtable lee las filas que exceden este límite del almacenamiento persistente.
El nivel en la memoria requiere las siguientes versiones de las bibliotecas cliente de Bigtable:
- Java versión 2.77.0 o posterior
- BOM versión 26.80.0 o posterior
- Go versión 1.52.0 o 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 la memoria.
El nivel en la memoria está limitado a un máximo de 10 nodos por clúster.
¿Qué sigue?
- Aprende a habilitar el nivel en la memoria.