# Spanner

Google Cloud Spanner es un servicio de gestión y almacenamiento de bases de datos SQL (Google Standard SQL y PostgreSQL) desarrollado por Google.
Spanner Cloud proporciona características tales como transacciones globales, lecturas altamente consistentes y replicación y conmutación por error automáticas en múltiples sitios. Spanner se utiliza en Google F1, la base de datos para su negocio publicitario Google Ads.
Spanner es el sucesor de las bases de datos de Google Bigtable y MegaStore.

## Características

Spanner almacena grandes cantidades de datos estructurados. Spanner permite a los usuarios realizar consultas arbitrarias utilizando SQL con datos relacionales mientras mantiene una fuerte coherencia y alta disponibilidad para esos datos a través de la replicación sincrónica.
Características clave de Spanner Cloud:
* Las transacciones se pueden aplicar en filas, columnas, tablas y bases de datos dentro de un universo de Spanner.
* Los clientes pueden controlar la replicación y la ubicación de los datos mediante la replicación automática multisitio y la conmutación por error.
* La replicación es síncrona y fuertemente consistente.
* Cloud Spanner también se caracteriza por proporcionar una disponibilidad del 99,999% en instancias multirregionales con relojes atómicos TrueTime, acompañado del proceso de replicación sincrónica y transparente.
* Las lecturas son muy consistentes y los datos se versionan para permitir lecturas obsoletas: los clientes pueden leer versiones anteriores de datos, sujeto a ventanas de recolección de elementos no utilizados.
* Admite una interfaz SQL nativa para leer y escribir datos.
* Esta plataforma permite el establecimiento de claves de encriptado que gestiona el cliente, así como la seguridad de capa de datos y registros de auditoría de gran extensión. Esto permite la integración de gestión de identidades y accesos a controles de seguridad.

### Desventajas

* Las claves primarias de una tabla no pueden cambiar. No puede añadir una columna nueva a la clave primaria de una tabla existente ni eliminarla. Esto significa que si desea cambiar la clave primaria, debe eliminar y volver a crear esta tabla.

## Historia

Spanner se describió por primera vez en 2012 para los centros de datos internos de Google.
La capacidad SQL de Spanner se agregó en 2017 y documentado en el SIGMOD 2017. Se convirtió en parte de Google Cloud Platform en 2017, bajo el nombre de "Cloud Spanner"

## Arquitectura

Spanner utiliza el algoritmo Paxos como parte de su operación para fragmentar (particionar) datos en hasta cientos de servidores. [1] Hace un uso intensivo de la sincronización de relojes asistida por hardware utilizando relojes GPS y relojes atómicos para garantizar la coherencia global.
TrueTime es el nombre comercial de la infraestructura de nube distribuida de Google, que proporciona a Spanner la capacidad de generar marcas de tiempo cada vez mayores en centros de datos de todo el mundo.
El sistema de administración de base de datos SQL F1 (DBMS) de Google se basa en Spanner, reemplazando la variante MySQL personalizada de Google.

### Comparación con bases de datos relacionales y no relacionales

Como una base de datos en la nube relacional administrada, Google Cloud Spanner es una alternativa a otras bases de datos.
| | Google Cloud Spanner | Bases de datos relacionales | Bases de datos no relacionales |
| Esquema | + | + | - |
| SQL | + | + | - |
| Consistencia | fuerte | fuerte | final |
| Accesibilidad | alto | Tolerancia a fallos | alto |
| Escalabilidad | horizontal | vertical | horizontal |
| Replicación | automático | configurado | configurado |

## Otros términos

Spanner también es un término inglés que se utiliza para describir a personas navegantes de Internet.
Qué es Spanner. Qué es ser un Spanner