Spanner para cargas de trabajo no relacionales

Spanner es un sistema de base de datos altamente confiable y completamente administrado. Si bien Spanner evolucionó para convertirse en un sistema de administración de bases de datos relacionales, tiene sus raíces como un sistema de almacenamiento no relacional de par clave-valor y conserva las características fundamentales de este tipo de sistema. Por lo tanto, puedes usar Spanner como una base de datos no relacional (NoSQL) y migrar desde otras bases de datos no relacionales a Spanner. Este documento te ayuda a comprender si Spanner es la opción adecuada para tus cargas de trabajo no relacionales.

Las bases de datos NoSQL se usaron durante una época en la que las bases de datos relacionales tradicionales carecían de funciones para admitir aplicaciones emergentes que requerían alta escalabilidad, disponibilidad y elasticidad de procesamiento. Para ello, sacrificaron varios atributos que, a menudo, son fundamentales para la administración de datos, como las transacciones, la coherencia y las consultas ad hoc. Spanner se creó para admitir la naturaleza exigente de las aplicaciones con alta disponibilidad y las funcionalidades proporcionadas por las bases de datos relacionales tradicionales, de modo que los clientes puedan aprovechar ambos conjuntos de funciones.

Con Spanner, puedes comenzar con necesidades de almacenamiento no relacionales sencillas y escalar tu aplicación según sea necesario.

Cómo Spanner cumple con los criterios de las bases de datos NoSQL

Spanner cumple con los siguientes criterios clave para tus cargas de trabajo NoSQL.

Escala y rendimiento

Las bases de datos NoSQL ganaron popularidad debido a su capacidad de escalar las operaciones de lectura y escritura de forma horizontal. Con Spanner, no tienes que preocuparte de que el escalamiento o el rendimiento sean una preocupación. Las bases de datos de Spanner con diseño de par clave-valor pueden escalar de forma horizontal para admitir cientos de millones de solicitudes de lectura o escritura por segundo y petabytes de datos. La capacidad de procesamiento de Spanner escala con la carga de trabajo y mantiene un perfil de latencia baja y coherente incluso cuando tu aplicación escala en varios órdenes de magnitud.

API de NoSQL

Por lo general, se accede a las bases de datos relacionales tradicionales con SQL, que viene con una curva de aprendizaje para los desarrolladores que no están familiarizados con este tipo de bases de datos. Por lo general, los clientes de estas bases de datos también dependen de conexiones persistentes y requieren que la infraestructura de agrupación de conexiones se implemente para escalar. En cambio, la API de Spanner se basa en un modelo de solicitud y respuesta gRPC/HTTP2 que maneja las fallas de conexión de forma automática. Spanner proporciona APIs de lectura y escritura NoSQL sencillas, nativas del lenguaje y eficientes que no requieren conocimientos de SQL. Además, los clientes de Spanner no requieren ninguna agrupación de conexiones para escalar.

Completamente administrado

Un gran beneficio de las bases de datos NoSQL es que se perciben como más fáciles de administrar. Spanner es un servicio completamente administrado, por lo que no genera ninguna carga operativa para los clientes. Spanner realiza actualizaciones de software y hardware sin tiempo de inactividad en segundo plano, a la vez que mantiene la retrocompatibilidad. La API y la semántica de Spanner son las mismas que si las operaciones se realizaran en una sola base de datos de máquina y no requieren conocimiento de la arquitectura interna de Spanner. Spanner se ejecuta en implementaciones que van desde la décima parte de un nodo hasta decenas de miles de nodos, y se escalan de forma automática y responsiva con un escalador automático administrado.

Datos semiestructurados

Spanner admite tipos de datos flexibles, como JSON y BYTES, que se usan para almacenar datos semiestructurados o no estructurados. Al igual que otras bases de datos NoSQL, puedes usar estos tipos de datos para evitar especificar todo el esquema de almacenamiento por adelantado.

Control de acceso

Al igual que otras bases de datos NoSQL, Spanner admite el control de acceso basado en IAM. Los administradores pueden configurar y administrar políticas de control de acceso sin almacenar nombres de usuario ni contraseñas en la base de datos.

En qué se diferencia Spanner de las bases de datos NoSQL tradicionales

Spanner ofrece las siguientes ventajas en comparación con las bases de datos NoSQL tradicionales.

Transacciones

A medida que las aplicaciones aumentan en complejidad, a menudo necesitan realizar operaciones transaccionales de varias filas y varias tablas en la base de datos. Con Spanner, no necesitas migrar a un almacén de datos transaccional a medida que crece tu base de datos, ya que Spanner es totalmente compatible con las transacciones de lectura y escritura. Como base de datos que cumple con los criterios ACID, Spanner mantiene la coherencia transaccional de la base de datos en todo momento, sin importar la escala.

Modelado de datos

El diseño de esquemas en bases de datos NoSQL puede ser poco natural debido a la necesidad de ajustar todos los datos en una tabla y de desnormalizarlos de manera forzosa debido a la imposibilidad de realizar uniones. Con Spanner, puedes especificar tu esquema sin tener que reorganizarlo en una sola tabla o sin desnormalizarlo. Para optimizar los patrones de acceso que tocan varias tablas, puedes usar la intercalación de tablas. También puedes realizar uniones entre tablas.

Consultas ad hoc

Incluso si usas la API NoSQL sobre todo, suele ser útil ejecutar consultas ad hoc con fines de depuración o estadísticas. Spanner se adhiere al lenguaje de consulta estándar de SQL. Puedes usar la priorización de solicitudes para aislar el tráfico ad hoc de baja prioridad del tráfico en línea o usar Data Boost de Spanner para ejecutar consultas analíticas en recursos de procesamiento completamente aislados del tráfico de la base de datos en línea.

Índices secundarios con coherencia sólida

Las aplicaciones a menudo requieren índices secundarios para admitir búsquedas de baja latencia. Las bases de datos NoSQL típicas ofrecen índices secundarios con coherencia eventual o limitaciones de lugar sobre el tamaño de un índice. Esto puede complicar la lógica de la aplicación, que necesita sortear estas restricciones. Spanner ofrece índices secundarios con coherencia sólida a gran escala y sin restricciones de tamaño. Esto te permite enfocarte en la lógica de la aplicación y no preocuparte por los problemas de coherencia.

¿Spanner es adecuado para tus necesidades de base de datos NoSQL?

Spanner es un sistema de almacenamiento de datos flexible que admite casos de uso de SQL y NoSQL. Si bien algunas aplicaciones comienzan con necesidades de almacenamiento sencillas, a medida que aumentan en complejidad, necesitan más funciones que las bases de datos NoSQL no suelen ofrecer, como transacciones, índices secundarios coherentes y un lenguaje de consulta flexible. Con Spanner, no estás limitado por estas limitaciones y puedes hacer crecer tu aplicación según sea necesario.

La mayoría de las cargas de trabajo no relacionales son una excelente opción para Spanner. Spanner no solo ofrece una API de lectura y escritura NoSQL sencilla, sino que también cuenta con el respaldo de alta disponibilidad, alta confiabilidad, baja latencia, elasticidad de procesamiento y escalabilidad extrema. Spanner te permite consolidar diversas cargas de trabajo en una sola plataforma flexible.