Spanner para cargas de trabajo no relacionales

Spanner es un sistema de base de datos totalmente gestionado y de alta fiabilidad. Aunque Spanner ha evolucionado hasta convertirse en un sistema de gestión de bases de datos relacionales, sus orígenes se encuentran en un sistema de almacenamiento de pares clave-valor no relacional, y conserva las características fundamentales de dicho sistema. Por lo tanto, puedes usar Spanner como base de datos no relacional (NoSQL) y migrar de otras bases de datos no relacionales a Spanner. Este documento te ayuda a determinar si Spanner es la opción adecuada para tus cargas de trabajo no relacionales.

Las bases de datos NoSQL empezaron a usarse en una época en la que las bases de datos relacionales convencionales no tenían funciones para admitir aplicaciones emergentes que requerían una alta escalabilidad, disponibilidad y elasticidad de computación. Para ello, sacrificaron varias funciones que suelen ser esenciales para la gestión de datos, como las transacciones, la coherencia y las consultas ad hoc. Spanner se ha diseñado para admitir tanto la naturaleza exigente de las aplicaciones de alta disponibilidad como las funciones que ofrecen las bases de datos relacionales convencionales, de modo que los clientes puedan aprovechar ambos conjuntos de funciones.

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

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

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

Escalabilidad y rendimiento

Las bases de datos NoSQL ganaron popularidad por su capacidad de escalar las lecturas y escrituras horizontalmente. Con Spanner, no tienes que preocuparte por la escala ni por el rendimiento. Las bases de datos de Spanner con estilo de clave-valor se pueden escalar horizontalmente para admitir cientos de millones de solicitudes de lectura o escritura por segundo y petabytes de datos. La capacidad de computación de Spanner se adapta a la carga de trabajo y mantiene un perfil de latencia bajo y constante, incluso cuando tu aplicación se amplía en varios órdenes de magnitud.

API NoSQL

Normalmente, se accede a las bases de datos relacionales convencionales mediante SQL, que tiene una curva de aprendizaje para los desarrolladores que no están familiarizados con las bases de datos relacionales. Los clientes de estas bases de datos también suelen depender de conexiones persistentes y requieren que se implemente una infraestructura de agrupación de conexiones para poder escalar. Por el contrario, la API de Spanner se basa en un modelo de solicitud y respuesta de gRPC/HTTP2 que gestiona automáticamente los fallos de conexión. Spanner proporciona APIs de lectura y escritura de NoSQL sencillas, nativas del lenguaje y eficientes que no requieren conocimientos de SQL. Además, los clientes de Spanner no requieren ningún grupo de conexiones para escalar.

Totalmente gestionado

Uno de los grandes atractivos de las bases de datos NoSQL es que se consideran más fáciles de gestionar. Como servicio totalmente gestionado, Spanner no supone ninguna carga operativa para los clientes. Spanner realiza actualizaciones de software y hardware sin tiempo de inactividad en segundo plano, al tiempo que mantiene la compatibilidad con versiones anteriores. La API y la semántica de Spanner son las mismas que si las operaciones se realizaran en una base de datos de una sola máquina y no requieren conocimientos sobre la arquitectura interna de Spanner. Spanner se ejecuta en implementaciones que van desde una décima parte de un nodo hasta decenas de miles de nodos, y se escala de forma automática y adaptable con un escalador automático gestionado.

y semiestructurados

Spanner admite tipos de datos flexibles, como JSON y BYTES, que se usan para almacenar datos semiestructurados o sin estructurar. Al igual que otras bases de datos NoSQL, puedes usar estos tipos de datos para no tener que 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 gestión de identidades y accesos. Los administradores pueden configurar y gestionar políticas de control de acceso sin almacenar nombres de usuario ni contraseñas en la base de datos.

Diferencias entre Spanner y las bases de datos NoSQL convencionales

Spanner ofrece las siguientes ventajas con respecto a las bases de datos NoSQL convencionales.

Transacciones

A medida que las aplicaciones se vuelven más complejas, a menudo necesitan realizar operaciones transaccionales de varias filas y varias tablas en la base de datos. Con Spanner, no es necesario migrar a un almacén de datos transaccional a medida que crece tu base de datos, ya que Spanner ofrece compatibilidad total con las transacciones de lectura y escritura. Como base de datos compatible con ACID, Spanner mantiene la coherencia transaccional de tu base de datos en todo momento, independientemente de 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 desnormalizar los datos de forma forzosa debido a la imposibilidad de realizar combinaciones. Con Spanner, puedes especificar tu esquema sin tener que recurrir a una sola tabla o a la desnormalización. Para optimizar los patrones de acceso que afectan a varias tablas, puedes usar el entrelazado de tablas. También puedes combinar tablas.

Consultas ad hoc

Aunque uses principalmente la API NoSQL, a menudo sigue siendo útil ejecutar consultas ad hoc con fines de depuración o analíticos. Spanner se ajusta al lenguaje de consulta estándar SQL. Puedes usar la priorización de solicitudes para aislar el tráfico de baja prioridad ad hoc del tráfico online o usar Data Boost de Spanner para ejecutar consultas analíticas en recursos de computación completamente aislados del tráfico de la base de datos online.

Índices secundarios con coherencia fuerte

Las aplicaciones suelen requerir índices secundarios para admitir búsquedas de baja latencia. Las bases de datos NoSQL típicas ofrecen índices secundarios con coherencia final o imponen restricciones sobre el tamaño que puede alcanzar un índice. Esto puede complicar la lógica de las aplicaciones, que debe adaptarse a estas restricciones. Spanner ofrece índices secundarios con una coherencia inmediata a gran escala sin restricciones de tamaño. De esta forma, puedes centrarte en la lógica de tu aplicación y no preocuparte por los problemas de coherencia.

¿Es Spanner la opción adecuada para tus necesidades de bases de datos NoSQL?

Spanner es un sistema de almacenamiento de datos flexible que admite casos prácticos de SQL y NoSQL. Aunque algunas aplicaciones empiezan con necesidades de almacenamiento sencillas, a medida que se vuelven más complejas, 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 tienes estas limitaciones y puedes ampliar tu aplicación según sea necesario.

La mayoría de las cargas de trabajo no relacionales se adaptan perfectamente a Spanner. Spanner no solo ofrece una API de lectura y escritura NoSQL sencilla, sino que también se basa en una alta disponibilidad, una gran fiabilidad, una latencia baja, una elasticidad de computación y una escalabilidad extrema. Spanner te permite consolidar diversas cargas de trabajo en una única plataforma flexible.