webentwicklung-frage-antwort-db.com.de

Welche Datenbank verwendet Google?

Ist es Oracle oder MySQL oder etwas, das sie selbst erstellt haben?

362
solrevdev

Großer Tisch

Ein verteiltes Speichersystem für strukturierte Daten

Bigtable ist ein verteiltes Speichersystem (von Google entwickelt) zur Verwaltung strukturierter Daten, das auf eine sehr große Größe skaliert werden kann: Petabyte an Daten auf Tausenden von Commodity-Servern.

Viele Projekte bei Google speichern Daten in Bigtable, einschließlich Web-Indizierung, Google Earth und Google Finance. Diese Anwendungen stellen sehr unterschiedliche Anforderungen an Bigtable, sowohl in Bezug auf die Datengröße (von URLs über Webseiten bis hin zu Satellitenbildern) als auch in Bezug auf die Latenz (von der Massenverarbeitung im Backend bis zur Datenbereitstellung in Echtzeit).

Trotz dieser unterschiedlichen Anforderungen hat Bigtable erfolgreich eine flexible, leistungsstarke Lösung für alle diese Google-Produkte bereitgestellt.

Einige Funktionen

  • schnelles und extrem umfangreiches DBMS
  • eine spärliche, verteilte, mehrdimensionale, sortierte Karte, die Merkmale sowohl von zeilenorientierten als auch von spaltenorientierten Datenbanken aufweist.
  • entwickelt, um in den Petabyte-Bereich zu skalieren
  • es funktioniert auf Hunderten oder Tausenden von Maschinen
  • es ist einfach, dem System weitere Maschinen hinzuzufügen und diese Ressourcen automatisch zu nutzen, ohne dass eine Neukonfiguration erforderlich ist
  • jede Tabelle hat mehrere Dimensionen (von denen eine ein Feld für die Zeit ist, das die Versionierung ermöglicht)
  • tabellen werden für GFS (Google File System) optimiert, indem sie in mehrere Tablets aufgeteilt werden - Segmente der Tabelle, die entlang einer Reihe aufgeteilt sind, die so gewählt ist, dass das Tablet eine Größe von ~ 200 Megabyte hat.

Architektur

BigTable ist keine relationale Datenbank. Es werden weder Joins noch umfangreiche SQL-ähnliche Abfragen unterstützt. Jede Tabelle ist eine mehrdimensionale Übersichtskarte. Tabellen bestehen aus Zeilen und Spalten, und jede Zelle hat einen Zeitstempel. Es können mehrere Versionen einer Zelle mit unterschiedlichen Zeitstempeln vorhanden sein. Der Zeitstempel ermöglicht Vorgänge wie "Auswählen von n Versionen dieser Webseite" oder "Löschen von Zellen, die älter als ein bestimmtes Datum/eine bestimmte Uhrzeit sind".

Um die großen Tabellen zu verwalten, teilt Bigtable Tabellen an Zeilengrenzen und speichert sie als Tablets. Ein Tablet hat eine Größe von ca. 200 MB und auf jedem Computer können ca. 100 Tablets gespeichert werden. Mit diesem Setup können Tablets aus einer einzelnen Tabelle auf mehrere Server verteilt werden. Es ermöglicht auch einen feinkörnigen Lastausgleich. Wenn an einer Tabelle viele Abfragen eingehen, können andere Tablets abgelegt oder die ausgelastete Tabelle auf einen anderen Computer verschoben werden, der nicht so ausgelastet ist. Auch wenn ein Computer ausfällt, kann ein Tablet auf viele andere Server verteilt werden, sodass die Auswirkungen auf die Leistung eines bestimmten Computers minimal sind.

Tabellen werden als unveränderliche SSTables und ein Protokollende (ein Protokoll pro Computer) gespeichert. Wenn einem Computer der Systemspeicher ausgeht, werden einige Tablets mithilfe der von Google entwickelten Komprimierungstechniken (BMDiff und Zippy) komprimiert. Bei kleineren Komprimierungen sind nur wenige Tablets erforderlich, während bei größeren Komprimierungen das gesamte Tabellensystem betroffen ist und der Festplattenspeicher wiederhergestellt wird.

Die Standorte der Bigtable-Tabletten sind in Zellen gespeichert. Die Suche nach einem bestimmten Tablet erfolgt über ein dreistufiges System. Die Clients erhalten einen Punkt für eine META0-Tabelle, von der es nur eine gibt. In der META0-Tabelle werden viele META1-Tabletten erfasst, die die Positionen der Tabletten enthalten, nach denen gesucht wird. Sowohl META0 als auch META1 nutzen das Vorabrufen und Zwischenspeichern in hohem Maße, um Engpässe im System zu minimieren.

Implementierung

BigTable basiert auf Google File System (GFS), das als Hintergrundspeicher für Protokoll- und Datendateien verwendet wird. GFS bietet zuverlässigen Speicher für SSTables, ein von Google entwickeltes Dateiformat zum Speichern von Tabellendaten.

Ein weiterer Dienst, den BigTable intensiv nutzt, ist Chubby, ein hochverfügbarer, zuverlässiger verteilter Sperrdienst. Chubby ermöglicht es Clients, eine Sperre zu übernehmen und sie möglicherweise mit einigen Metadaten zu verknüpfen. Diese können erneuert werden, indem Keep-Alive-Nachrichten an Chubby gesendet werden. Die Sperren werden in einer dateisystemähnlichen hierarchischen Namensstruktur gespeichert.

Es gibt drei primäre Servertypen, die im Bigtable-System von Interesse sind:

  1. Master-Server: Weisen Sie Tablets Tablet-Servern zu, verfolgen Sie, wo sich Tablets befinden, und verteilen Sie Aufgaben nach Bedarf.
  2. Tablet-Server: Behandeln Sie Lese-/Schreibanforderungen für Tablets und Split-Tablets, wenn diese die Größenbeschränkungen überschreiten (normalerweise 100 MB - 200 MB). Wenn ein Tablet-Server ausfällt, nehmen 100 Tablet-Server jeweils ein neues Tablet auf und das System stellt es wieder her.
  3. Sperrserver: Instanzen des Chubby Distributed Lock-Dienstes. Viele Aktionen in BigTable erfordern die Erfassung von Sperren, einschließlich des Öffnens von Tablets zum Schreiben, der Sicherstellung, dass nicht mehr als ein aktiver Master gleichzeitig vorhanden ist, und der Zugriffskontrolle.

Beispiel aus dem Forschungsbericht von Google:

alt text

Ein Ausschnitt aus einer Beispieltabelle, in der Webseiten gespeichert sind. Der Zeilenname ist eine umgekehrte URL. Die Inhaltsspaltenfamilie enthält den Seiteninhalt, und die Ankerspaltenfamilie enthält den Text aller Anker, die auf die Seite verweisen. Auf die CNN-Homepage wird sowohl von der Sports Illustrated-Homepage als auch von der MY-Look-Homepage verwiesen, sodass die Zeile Spalten mit den Namen anchor:cnnsi.com Und anchor:my.look.ca Enthält. Jede Ankerzelle hat eine Version; Die Inhaltsspalte enthält drei Versionen zu den Zeitstempeln t3, t5 und t6.

[~ # ~] api [~ # ~]

Typische Vorgänge in BigTable sind das Erstellen und Löschen von Tabellen und Spaltenfamilien, das Schreiben von Daten und das Löschen von Spalten aus einer Zeile. BigTable stellt diese Funktionen Anwendungsentwicklern in einer API zur Verfügung. Transaktionen werden auf Zeilenebene unterstützt, jedoch nicht über mehrere Zeilenschlüssel hinweg.


Hier ist das Link zum PDF der Forschungsarbeit .

Und hier finden Sie ein Video mit Jeff Dean von Google in einem Vortrag an der University of Washington , in dem das im Backend von Google verwendete Bigtable-Content-Storage-System erläutert wird.

569
splattne

Es ist etwas, das sie selbst gebaut haben - es heißt Bigtable.

http://en.wikipedia.org/wiki/BigTable

In der Datenbank befindet sich ein Artikel von Google:

http://research.google.com/archive/bigtable.html

50
Mark Ingram

Spanner ist Googles global verteiltes relationales Datenbankmanagementsystem (RDBMS), der Nachfolger von BigTable . Google behauptet, es sei kein reines relationales System, da jede Tabelle einen Primärschlüssel haben muss.

Hier ist der Link des Papiers.

Spanner ist Googles skalierbare, mehrfach versionierte, global verteilte und synchron replizierte Datenbank. Es ist das erste System, das Daten auf globaler Ebene verteilt und extern konsistente verteilte Transaktionen unterstützt. In diesem Artikel wird beschrieben, wie Spanner strukturiert ist, welche Funktionen zur Verfügung stehen, welche Gründe verschiedenen Entwurfsentscheidungen zugrunde liegen und welche neue Zeit-API die Ungewissheit der Uhr aufzeigt. Diese API und ihre Implementierung sind für die Unterstützung der externen Konsistenz und einer Vielzahl leistungsstarker Funktionen von entscheidender Bedeutung: Nicht blockierende Lesevorgänge in der Vergangenheit, sperrfreie Nur-Lese-Transaktionen und atomare Schemaänderungen in ganz Spanner.

Eine andere von Google erfundene Datenbank ist Megastore . Hier ist die Zusammenfassung:

Megastore ist ein Speichersystem, das entwickelt wurde, um die Anforderungen der heutigen interaktiven Online-Dienste zu erfüllen. Megastore kombiniert auf neuartige Weise die Skalierbarkeit eines NoSQL-Datenspeichers mit dem Komfort eines herkömmlichen RDBMS und bietet sowohl starke Konsistenzgarantien als auch hohe Verfügbarkeit. Wir bieten vollständig serialisierbare ACID-Semantik in fein abgestimmten Partitionen von Daten. Diese Partitionierung ermöglicht es uns, jeden Schreibvorgang synchron über ein Wide Area Network mit angemessener Latenz zu replizieren und nahtloses Failover zwischen Rechenzentren zu unterstützen. In diesem Artikel werden die Semantik und der Replikationsalgorithmus von Megastore beschrieben. Es beschreibt auch unsere Erfahrung mit der Unterstützung einer Vielzahl von Google-Produktionsservices, die mit Megastore erstellt wurden.

29
user

Wie andere bereits erwähnt haben, verwendet Google eine selbst entwickelte Lösung namens BigTable und hat ein paar Artikel veröffentlicht, die diese Lösung in der realen Welt beschreiben.

Die Apache-Leute haben eine Implementierung der Ideen, die in diesen Papieren dargestellt werden, die HBase genannt werden. HBase ist Teil des größeren Hadoop-Projekts, das laut seiner Website "eine Softwareplattform ist, mit der man leicht Anwendungen schreiben und ausführen kann, die große Datenmengen verarbeiten." Einige der Benchmarks sind sehr beeindruckend. Ihre Website ist unter http://hadoop.Apache.org .

19
EvilRyry

Obwohl Google BigTable für alle seine Hauptanwendungen verwendet, verwenden Sie auch MySQL für andere (möglicherweise kleinere) Apps.

13

Und vielleicht ist es auch praktisch zu wissen, dass BigTable keine relationale Datenbank (wie MySQL) ist, sondern eine riesige (verteilte) Hash-Tabelle , die sehr unterschiedliche Eigenschaften aufweist. Sie können auf der Plattform Google AppEngine selbst mit (einer eingeschränkten Version) von BigTable herumspielen.

Neben Hadoop gibt es viele andere Implementierungen, die versuchen, die gleichen Probleme wie BigTable (Skalierbarkeit, Verfügbarkeit) zu lösen. Ich habe gestern einen netten Blogpost gesehen, in dem die meisten von ihnen aufgelistet sind hier .

9
Koen Bok

Google verwendet hauptsächlich Bigtable.

Bigtable ist ein verteiltes Speichersystem zur Verwaltung strukturierter Daten, das auf eine sehr große Größe skaliert werden kann.

Weitere Informationen erhalten Sie, wenn Sie das Dokument von hier herunterladen.

Google verwendet für einige seiner Anwendungen auch Oracle- und MySQL-Datenbanken.

Weitere Informationen, die Sie hinzufügen können, werden sehr geschätzt.

6