# Spanner

Spanner és un servei d'emmagatzematge i gestió de bases de dades SQL distribuïdes desenvolupat per Google. Proporciona funcions com ara transaccions globals, lectures molt consistents, replicació automàtica de diversos llocs i migració per error. Spanner s'utilitza a Google F1, la base de dades del seu negoci publicitari Google Ads.

## Característiques

Spanner emmagatzema grans quantitats de dades estructurades mutables. Spanner permet als usuaris realitzar consultes arbitràries mitjançant SQL amb dades relacionals, mantenint una gran consistència i una alta disponibilitat per a aquestes dades amb rèplica síncrona.
Característiques principals de Spanner:
* Les transaccions poden ser aplicades a través de files, columnes, taules i bases de dades, sense sortir de l'univers Spanner.
* Els clients poden controlar la replicació i la col·locació de les dades arreu de diferents llocs automàticament, gràcies a la rèplica i la recuperació després d'una fallada.
* La replicació és sincrònica i fortament consistent.
* Les lectures són molt consistents i les dades són versionades per permetre lectures desactualitzades: els clients poden llegir versions anteriors de dades, depenent de finestres d'escombrat de memòria.
* Suporta una interfície SQL nativa per llegir i escriure dades.

## Història

Spanner fou descrita per primera vegada el 2012 per als centres de dades interns de Google.
El suport a SQL fou afegit el 2017 i documentat al SIGMOD 2017. Esdevingué part de Google Cloud Platform el 2017, sota el nom de "Cloud Spanner".

## Arquitectura

Spanner utilitza l'algorisme de Paxos com a part de la seva operació per dividir (particionar) dades en fins a centenars de servidors. Fa un gran ús de la sincronització del rellotge assistida per maquinari utilitzant rellotges GPS i rellotges atòmics per garantir la consistència global. TrueTime és la marca de la infraestructura de núvol distribuïda de Google, que proporciona a Spanner la capacitat de generar claus de temps úniques i incrementals als centres de dades de tot el món.
El sistema de gestió de bases de dades (DBMS) F1 SQL de Google està construït sobre Spanner, substituint la variant MySQL personalitzada de Google.

## Referències

* 1 2 3 Corbett et al., 2012.
* 1 2 Shute et al., 2012.
* ↑ Clark, Jack. «Google reveals Spanner, the database tech that can span the planet». ZDNet, 18-09-2012. [Consulta: 10 maig 2023].
* ↑ «Spanner: Becoming a SQL System».
* ↑ Srivastava, Deepti. «Introducing Cloud Spanner: a global database service for mission-critical applications». Google Cloud Blog. [Consulta: 10 maig 2023].
* ↑ «Cloud Spanner: TrueTime and external consistency» (en anglès). Google Cloud. [Consulta: 10 maig 2023].
* ↑ Shute et al., 2012, p. 19.

## Bibliografia

* Corbett, James C; Dean, Jeffrey & Epstein, Michael et al., Spanner: Google's Globally-Distributed Database, <http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.cat/en//archive/spanner-osdi2012.pdf>. Consulta: 18 setembre 2012
* Date, Christopher ‘Chris’ J (2004), "6. Relations, Part II. The Relational Model", An Introduction to Database Systems (8th ed.), Addison Wesley, ISBN 978-0-32119784-9, <https://archive.org/details/introductiontoda0000date>
* Shute, Jeffrey ‘Jeff’; Oancea, Mircea & Ellner, Stephan et al. (2012), "F1 — the Fault-Tolerant Distributed RDBMS Supporting Google's Ad Business", Research, SIGMOD, <http://research.google.cat/pubs/pub38125.html>
* Shute, Jeffrey ‘Jeff’; Oancea, Mircea & Ellner, Stephan et al. (2013), "F1: A Distributed SQL Database That Scales", Research, International Conference on Very Large Data Bases, <https://research.google/pubs/pub41344/>.