Spanner (Datenbank)
Spanner ist eine global-verteilte NewSQL-Datenbank von Google Inc.[1][2] Spanner ist der Nachfolger der Google-Datenbanken Bigtable und MegaStore. Spanner ist gemäß der Einteilung nach dem CAP-Theorem Konsistent (consistent, C) und Partitionstolerant (partition tolerant, P), besitzt allerdings auch eine sehr hohe Uptime von über 99,99958 % und ist damit de-facto auch Verfügbar (available, A).[3] Spanner steht als kostenpflichtige Cloud-Anwendung öffentlich zur Verfügung.[4] Auch das Datenbankmanagementsystem (DBMS) Google F1, welches zuvor auf einer Google-eigenen MySQL-Variante basierte, setzt auf Spanner auf.[1] FunktionsweiseSpanner verwendet ein relationales Datenmodell. Allerdings muss jede Tabelle eine Index-Spalte besitzen. Physisch werden die Daten append-only als „interleaved table“ (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.[5] 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.[1][4][5] Die Zeitstempel bestehen hierbei aus zwei Zeiten, wobei eine Zeit garantiert in der Vergangenheit und eine andere Zeit garantiert in der Zukunft liegt.[5] 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.[5] 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.[3] Weblinks
Einzelnachweise
|
Portal di Ensiklopedia Dunia