Descripción general del almacenamiento por niveles

En esta página, se describe y explica cómo funciona el almacenamiento por niveles en Spanner. Esta función es compatible con las bases de datos con dialecto de GoogleSQL y PostgreSQL.

El almacenamiento por niveles de Spanner es una función de almacenamiento completamente administrada que te permite elegir si deseas almacenar tus datos en unidades de estado sólido (SSD) o unidades de disco duro (HDD). De forma predeterminada, cuando no usas el almacenamiento por niveles, tus datos se almacenan en el almacenamiento SSD. Según la frecuencia con la que uses o accedas a los datos, puedes considerar usar el almacenamiento por niveles y almacenar datos en el almacenamiento SSD y HDD.

  • El almacenamiento SSD es la opción más rentable y de mejor rendimiento (más consultas por segundo) para la mayoría de los casos de uso. Debes usarlo para almacenar datos activos con alta capacidad de procesamiento de escritura y lectura, y datos que requieren acceso de baja latencia.
  • El almacenamiento HDD a veces es adecuado para conjuntos de datos grandes que no son sensibles a la latencia, a los que se accede con poca frecuencia o si el costo del almacenamiento es una consideración importante.

El uso del almacenamiento por niveles te permite aprovechar el almacenamiento SSD, que admite el alto rendimiento de los datos activos, y el almacenamiento HDD, que admite el acceso a los datos poco frecuentes a un costo más bajo.

Elige entre el almacenamiento SSD y HDD

En la siguiente tabla, se enumeran las diferencias y similitudes entre el almacenamiento SSD y HDD. Las cifras de capacidad de procesamiento de la tabla son por nodo y se escalan de forma lineal con la cantidad de nodos de tu instancia de Spanner. En caso de duda, te recomendamos que elijas el almacenamiento SSD.

Almacenamiento SSD Almacenamiento HDD
Casos de uso objetivo Datos que requieren una alta capacidad de procesamiento de escritura y lectura, y acceso a los datos de baja latencia Conjuntos de datos grandes que no son sensibles a la latencia o a los que se accede con poca frecuencia
Capacidad de procesamiento esperada por nodo
Configuraciones regionales
Hasta 22,500 QPS de lectura
Hasta 3,500 QPS de escritura
Hasta 1,500 QPS de lectura
Hasta 3,500 QPS de escritura
Capacidad de procesamiento esperada por nodo
Configuraciones de dos regiones y multirregión
Hasta 15,000 QPS de lectura por región
Hasta 2,700 QPS de escritura
Hasta 1,000 QPS de lectura por región
Hasta 2,700 QPS de escritura
Operaciones compatibles Leer, escribir, actualizar y borrar Leer, escribir, actualizar y borrar

Usa escrituras optimizadas para la capacidad de procesamiento para aumentar la capacidad de procesamiento de escritura más allá de los números de la tabla. Para obtener más información, consulta Descripción general del rendimiento.

Beneficios

El almacenamiento por niveles ofrece los siguientes beneficios, ya que te permite usar el almacenamiento SSD y HDD:

  • Reducción significativa del costo total de propiedad: El almacenamiento HDD proporciona una opción de menor costo para conjuntos de datos grandes que no son sensibles a la latencia o a los que se accede con poca frecuencia.
  • Facilidad de administración: Proporciona un servicio de niveles completamente administrado sin la complejidad de canalizaciones adicionales y lógica dividida.
  • Experiencia unificada y coherente: Proporciona acceso unificado a los datos y un solo conjunto de métricas en datos activos y en frío (mutables).
  • Rendimiento mejorado: Mejora el rendimiento de las consultas mediante la organización de tus datos en diferentes grupos de localidad, lo que proporciona localidad y aislamiento de datos en todas las columnas. Los datos del mismo grupo de localidad se almacenan físicamente cerca.

Cómo funciona el almacenamiento por niveles

De forma predeterminada, cuando creas una instancia nueva, los datos solo se almacenan en el almacenamiento SSD. Del mismo modo, los datos de las instancias existentes también solo se almacenan en el almacenamiento SSD.

Si eliges usar el almacenamiento por niveles para almacenar algunos datos en el almacenamiento HDD, debes crear un grupo de localidad, que se usa para definir la política de almacenamiento por niveles para los datos de tu esquema. Cuando creas un grupo de localidad, puedes definir el tipo de almacenamiento, ya sea ssd o hdd. De manera opcional, también puedes definir la cantidad de tiempo que los datos se almacenan en el almacenamiento SSD antes de que se muevan al almacenamiento HDD. Este tiempo es relativo a la marca de tiempo de confirmación de los datos. Después de que transcurre el tiempo especificado, Spanner migra los datos al almacenamiento HDD durante su ciclo de compactación normal, que suele ocurrir en el transcurso de siete días a partir del tiempo especificado. Para migrar datos entre SSD y HDD más rápido que el ciclo de compactación normal, puedes activar de forma manual una compactación principal. Esto se conoce como una política de almacenamiento por niveles basada en la antigüedad. Cuando se usa una política de almacenamiento por niveles basada en la antigüedad, la cantidad mínima de tiempo que los datos deben almacenarse en SSD antes de que se muevan al almacenamiento HDD es de una hora.

Con tus grupos de localidad definidos, cuando creas tus tablas, puedes establecer la política de almacenamiento por niveles en la base de datos, la tabla, la columna o el índice secundario. La política de almacenamiento por niveles determina cómo y dónde se almacenan los datos. Para obtener instrucciones, consulta Crea y administra grupos de localidad.

Detalles clave del comportamiento

Los siguientes comportamientos se aplican cuando se usa el almacenamiento por niveles:

  • Los niveles de almacenamiento se aplican a nivel de la celda: Las políticas de almacenamiento por niveles basadas en la antigüedad se aplican a celdas individuales dentro de una fila, según la marca de tiempo de confirmación de la celda. Los datos se mueven al almacenamiento HDD si su marca de tiempo de confirmación es anterior a la duración especificada. Por lo tanto, una sola fila puede tener algunos datos en SSD y otros en HDD, según cuándo se actualizó cada celda por última vez.
  • Las tablas intercaladas son independientes: La configuración del grupo de localidad y las políticas de almacenamiento por niveles no se heredan de las tablas secundarias intercaladas. Debes aplicar esta configuración a cada tabla de forma individual.
  • Las operaciones de lectura no afectan el envejecimiento de los datos: La lectura de datos de una tabla no restablece su antigüedad ni impide que se mueva a HDD. Solo una operación de escritura que actualiza los datos restablece su marca de tiempo de confirmación y los mantiene en el almacenamiento SSD.
  • Cómo mover datos de HDD a SSD: Cuando actualizas los datos almacenados en HDD, Spanner escribe la versión nueva de los datos directamente en el almacenamiento SSD. La versión anterior de los datos en HDD se marca como obsoleta y se limpia más tarde mediante un proceso de compactación en segundo plano. Puedes activar de forma manual una compactación principal para limpiarla más rápido. Esto garantiza que las actualizaciones de los datos inactivos se beneficien de inmediato del rendimiento de SSD para las lecturas posteriores de los datos nuevos.

Copia de seguridad y restablecimiento

Puedes crear copias de seguridad y restablecer tus datos con las copias de seguridad de Spanner. La copia de seguridad contiene toda la información del esquema de almacenamiento, incluido INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS, que especifica el tipo de almacenamiento de cada grupo de localidad. Para restablecer una copia de seguridad que contiene grupos de localidad en una instancia nueva, la instancia de destino debe estar en la edición Enterprise o Enterprise Plus de Spanner.

Data Boost

Puedes usar Spanner Data Boost para acceder a los datos en el almacenamiento SSD o HDD. La consulta de datos en HDD usa la capacidad de carga del disco HDD de la instancia , que forma parte de tu capacidad de procesamiento.

Índices de búsquedas

La búsqueda de texto completo y los índices vectoriales heredan el grupo de localidad que se establece en el objeto de la base de datos.

Observabilidad

Las siguientes funciones de observabilidad están disponibles para el almacenamiento por niveles.

Métricas de Cloud Monitoring

Spanner proporciona las siguientes métricas para ayudarte a supervisar el uso y los datos del almacenamiento por niveles con Cloud Monitoring:

  • spanner.googleapis.com/instance/storage/used_bytes (Almacenamiento total): Muestra los bytes totales de datos almacenados en el almacenamiento SSD y HDD.
  • spanner.googleapis.com/instance/storage/combined/limit_bytes: Muestra el límite combinado de almacenamiento SSD y HDD.
  • spanner.googleapis.com/instance/storage/combined/limit_bytes_per_processing_unit: Muestra el límite combinado de almacenamiento SSD y HDD para cada unidad de procesamiento.
  • spanner.googleapis.com/instance/storage/combined/utilization: Muestra el uso combinado de almacenamiento SSD y HDD, en comparación con el límite de almacenamiento combinado.
  • spanner.googleapis.com/instance/disk_load: Muestra el uso de HDD en porcentaje. Si tu instancia alcanza el 100% de carga del disco HDD, experimentarás un aumento significativo de la latencia.

Si tienes consultas existentes que filtran métricas existentes por storage_class:ssd, debes quitar el filtro para ver el uso de HDD.

Para obtener más información sobre la supervisión de tus recursos de Spanner, consulta Supervisa instancias con estadísticas del sistema y Supervisa instancias con Cloud Monitoring.

Esquema de información

INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS contiene la lista de grupos de localidad y opciones en tu base de datos de Spanner. Incluye información para el grupo de localidad default. Para obtener más información, consulta locality_group_options para bases de datos con dialecto de GoogleSQL y locality_group_options para bases de datos con dialecto de PostgreSQL.

Tablas de estadísticas integradas

Las siguientes tablas de estadísticas integradas están disponibles para las bases de datos que usan almacenamiento por niveles:

  • SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: Muestra el uso de almacenamiento HDD y SSD para cada tabla de tu base de datos.
  • SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: Muestra el uso de almacenamiento HDD y SSD para cada grupo de localidad de tu base de datos.

Para obtener más información, consulta Estadísticas de tamaños de tablas.

Las tablas de estadísticas de consultas y estadísticas de lectura tienen la siguiente columna relacionada con el almacenamiento por niveles:

  • AVG_DISK_IO_COST: Es el costo promedio de esta consulta en términos de carga del disco HDD de Spanner. Usa este valor para realizar comparaciones relativas de costos de E/S de HDD entre las lecturas que ejecutas en la base de datos. Un valor más alto indica que usas más carga del disco HDD y que tu consulta podría ser más lenta que si se ejecutara en SSD. Además, si la carga del disco HDD está al máximo, el rendimiento de tus consultas podría verse afectado aún más.

Para obtener más información, consulta Estadísticas de consultas y Estadísticas de lectura.

Precios

No hay cargos adicionales por usar el almacenamiento por niveles. Se te cobra el precio estándar de Spanner por la cantidad de capacidad de procesamiento que usa tu instancia y la cantidad de almacenamiento que usa tu base de datos. Los datos almacenados en SSD y HDD se facturan según sus tarifas de almacenamiento respectivas. No se te cobra por mover datos entre el almacenamiento SSD y HDD. La consulta de datos en HDD usa la capacidad de carga del disco HDD de la instancia, que forma parte de los precios de tu capacidad de procesamiento. Para obtener más información, consulta Precios de Spanner.

¿Qué sigue?