Spanner es un sistema de base de datos completamente administrado y altamente confiable. 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 clave-valor no relacional y conserva las características fundamentales de ese 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. En este documento, encontrarás ayuda para comprender si Spanner es la opción adecuada para tus cargas de trabajo no relacionales.
Las bases de datos NoSQL comenzaron a usarse en 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 varias funciones que suelen ser 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 y las funciones de alta disponibilidad que proporcionan 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 simples y no relacionales, 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 de NoSQL.
Escalamiento y rendimiento
Las bases de datos NoSQL ganaron popularidad debido a su capacidad para escalar las operaciones de lectura y escritura de forma horizontal. Con Spanner, no tienes que preocuparte por el escalamiento ni el rendimiento. Las bases de datos de Spanner con diseño de par clave-valor pueden escalar horizontalmente para admitir cientos de millones de solicitudes de lectura o escritura por segundo y petabytes de datos. La capacidad de procesamiento de Spanner se escala con la carga de trabajo y mantiene un perfil de latencia baja y coherente, incluso cuando tu aplicación se escala en varios órdenes de magnitud.
API de NoSQL
Por lo general, se accede a las bases de datos relacionales tradicionales con SQL, que tiene una curva de aprendizaje para los desarrolladores que no están familiarizados con ellas. Los clientes de estas bases de datos también suelen depender de conexiones persistentes y requieren que se implemente la infraestructura de aprovisionamiento de conexiones para escalar. En cambio, la API de Spanner se compila sobre un modelo de solicitud y respuesta de gRPC/HTTP2 que controla automáticamente las fallas de conexión. Spanner proporciona APIs de NoSQL de lectura y escritura simples, 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.
Completamente administrado
Un gran atractivo de las bases de datos NoSQL es que se percibe que son más fáciles de gestionar. Como servicio completamente administrado, Spanner no genera ninguna carga operativa para los clientes. Spanner realiza actualizaciones de hardware y software sin tiempo de inactividad en segundo plano y, al mismo tiempo, 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 sola base de datos de máquinas y no requieren conocimiento de la arquitectura interna de Spanner. Spanner se ejecuta en implementaciones que van desde 1/10 de un nodo hasta decenas de miles de nodos, y se escala automáticamente y de manera responsiva con un escalador 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 tu esquema de almacenamiento de antemano.
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 las 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 tradicionales
Spanner proporciona las siguientes ventajas sobre las bases de datos NoSQL tradicionales:
Transacciones
A medida que las aplicaciones aumentan de complejidad, a menudo deben realizar operaciones de transacciones 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 una 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 incapacidad de realizar uniones. Con Spanner, puedes especificar tu esquema sin recurrir a una sola tabla o a la desnormalización. 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 principalmente la API de NoSQL, a menudo es útil ejecutar consultas ad hoc para depuración o análisis. Spanner cumple con el 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
A menudo, las aplicaciones requieren índices secundarios para admitir búsquedas de baja latencia. Las bases de datos NoSQL típicas ofrecen índices secundarios coherentes o imponen restricciones sobre el tamaño que puede alcanzar un índice. Esto puede complicar la lógica de la aplicación, que debe solucionar estas restricciones. Spanner ofrece índices secundarios con coherencia sólida a gran escala sin restricciones de tamaño. Esto te permite enfocarte en la lógica de tu 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 simples, a medida que aumentan su complejidad, necesitan más funciones que, por lo general, no ofrecen las bases de datos NoSQL, como transacciones, índices secundarios coherentes y un lenguaje de consulta flexible. Con Spanner, no tienes estas limitaciones y puedes hacer crecer tu aplicación según sea necesario.
La mayoría de las cargas de trabajo no relacionales son ideales para Spanner. No solo Spanner ofrece una API de operaciones de lectura y escritura NoSQL sencilla, sino que también cuenta con 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.