Spanner ist eine global-verteilte NewSQL-Datenbank von Google Inc. Spanner ist der Nachfolger der Google-Datenbanken Bigtable und MegaStore.
Spanner ist gemäß der Einteilung nach dem CAP-Theorem Konsistent (, C) und Partitionstolerant (, P), besitzt allerdings auch eine sehr hohe Uptime von über 99,99958 % und ist damit de-facto auch Verfügbar (, A).
Spanner steht als kostenpflichtige Cloud-Anwendung öffentlich zur Verfügung. Auch das Datenbankmanagementsystem (DBMS) Google F1, welches zuvor auf einer Google-eigenen MySQL-Variante basierte, setzt auf Spanner auf.
Funktionsweise
Spanner verwendet ein relationales Datenmodell. Allerdings muss jede Tabelle eine Index-Spalte besitzen. Physisch werden die Daten append-only als „“ (sinngemäß: „verschachtelte Tabelle“) gespeichert. Der konkurrierende Zugriff auf Datensätze wird mittels Multiversion Concurrency Control (MVCC) realisiert. Records unterschiedlicher Tabellen werden abwechselnd in eine einzige Liste gespeichert und auf mehrere Shards verteilt.
Die Zeitsynchronisierung erfolgt mittels Googles TrueTime-Infrastruktur, welche Atomuhren und hochgenaue GPS-Empfänger in jedem Rechenzentrum für die Zeitsynchronisierung verwendet und damit global gültige Zeitstempel garantiert. Die Zeitstempel bestehen hierbei aus zwei Zeiten, wobei eine Zeit garantiert in der Vergangenheit und eine andere Zeit garantiert in der Zukunft liegt.
Bei einem Schreibzugriff wird der zu schreibende Record im Rahmen einer Transaktion mit einem TrueTime-Zeitstempel versehen, um eine einheitliche Reihenfolge der Schreibzugriffe über alle Shards garantieren zu können. Die Schreibzugriffe werden mittels Googles Paxos-Algorithmus über mehrere Shards synchronisiert und anschließend auf einen angegebenen Zeitpunkt gewartet, zu dem der Schreibzugriff erfolgen soll, bevor der Record synchron persistiert und die Transaktion abgeschlossen wird.
Auch bei Abfragen wird ein Zeitstempel mit angegeben, damit die Ergebnisse verteilter MapReduce-Abfragen konsistent sind. Hierdurch sind auch historische Sichten auf die Datenbank möglich.
Weblinks
Einzelnachweise
Kategorie:Datenbankmanagementsystem Kategorie:NoSQL Kategorie:Google