Ist es Oracle oder MySQL oder etwas, das sie selbst erstellt haben?
Ist es Oracle oder MySQL oder etwas, das sie selbst erstellt haben?
Antworten:
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 Daten auf Tausenden von Commodity-Servern.
Viele Projekte bei Google speichern Daten in Bigtable, einschließlich Webindizierung, Google Earth und Google Finance. Diese Anwendungen stellen sehr unterschiedliche Anforderungen an Bigtable, sowohl hinsichtlich der Datengröße (von URLs über Webseiten bis hin zu Satellitenbildern) als auch hinsichtlich der Latenzanforderungen (von der Backend-Massenverarbeitung bis zur Echtzeit-Datenbereitstellung).
Trotz dieser unterschiedlichen Anforderungen hat Bigtable erfolgreich eine flexible, leistungsstarke Lösung für alle diese Google-Produkte bereitgestellt.
Einige Eigenschaften
Die Architektur
BigTable ist keine relationale Datenbank. Es werden weder Joins noch umfangreiche SQL-ähnliche Abfragen unterstützt. Jede Tabelle ist eine mehrdimensionale Karte mit geringer Dichte. Tabellen bestehen aus Zeilen und Spalten, und jede Zelle hat einen Zeitstempel. Es kann mehrere Versionen einer Zelle mit unterschiedlichen Zeitstempeln geben. Der Zeitstempel ermöglicht Vorgänge wie "Wählen Sie 'n' Versionen dieser Webseite aus" oder "Zellen löschen, die älter als ein bestimmtes Datum / eine bestimmte Uhrzeit sind".
Um die riesigen Tabellen zu verwalten, teilt Bigtable Tabellen an Zeilengrenzen auf und speichert sie als Tablets. Ein Tablet ist ungefähr 200 MB groß, und jeder Computer spart ungefähr 100 Tablets. Mit diesem Setup können Tablets aus einer einzelnen Tabelle auf viele Server verteilt werden. Es ermöglicht auch einen feinkörnigen Lastausgleich. Wenn eine Tabelle viele Abfragen empfängt, kann sie andere Tablets ablegen oder die ausgelastete Tabelle auf einen anderen Computer verschieben, der nicht so ausgelastet ist. Wenn ein Computer ausfällt, kann ein Tablet auf viele andere Server verteilt sein, sodass die Auswirkungen auf die Leistung eines bestimmten Computers minimal sind.
Tabellen werden als unveränderliche SSTables und ein Ende von Protokollen gespeichert (ein Protokoll pro Maschine). Wenn einem Computer der Systemspeicher ausgeht, werden einige Tablets mithilfe von Google-eigenen Komprimierungstechniken (BMDiff und Zippy) komprimiert. Kleinere Komprimierungen betreffen nur wenige Tablets, während größere Komprimierungen das gesamte Tabellensystem betreffen und Festplattenspeicher wiederherstellen.
Die Positionen der Bigtable-Tabletten werden in Zellen gespeichert. Die Suche nach einem bestimmten Tablet wird von einem dreistufigen System durchgeführt. Die Clients erhalten einen Punkt auf eine META0-Tabelle, von der es nur eine gibt. In der META0-Tabelle werden viele META1-Tabletten erfasst, die die Positionen der nachgeschlagenen Tabletten enthalten. Sowohl META0 als auch META1 nutzen das Vorabrufen und Zwischenspeichern stark, um Engpässe im System zu minimieren.
Implementierung
BigTable basiert auf dem Google File System (GFS), das als Sicherungsspeicher 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 stark nutzt, ist Chubby , ein hochverfügbarer, zuverlässiger verteilter Sperrdienst. Mit Chubby können Clients eine Sperre aufheben und sie möglicherweise mit einigen Metadaten verknüpfen, die sie erneuern können, indem sie Keep-Alive-Nachrichten an Chubby zurücksenden. Die Sperren werden in einer dateisystemähnlichen hierarchischen Namensstruktur gespeichert.
Es gibt drei primäre Servertypen, die für das Bigtable-System von Interesse sind:
Beispiel aus Googles Forschungsbericht:
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. Die Startseite von CNN wird sowohl von der Sports Illustrated- als auch von der MY-Look-Startseite referenziert, sodass die Zeile Spalten mit den Namen
anchor:cnnsi.com
und enthältanchor:my.look.ca
. Jede Ankerzelle hat eine Version ; der Inhalt Spalte hat drei Versionen , bei Zeitstempelt3
,t5
undt6
.
API
Typische Vorgänge für 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 bietet diese Funktionen Anwendungsentwicklern in einer API. Transaktionen werden auf Zeilenebene unterstützt, jedoch nicht über mehrere Zeilenschlüssel hinweg.
Hier ist der Link zum PDF des Forschungspapiers .
Und hier finden Sie ein Video, das Jeff Dean von Google in einem Vortrag an der University of Washington zeigt , in dem das im Backend von Google verwendete Bigtable-Content-Storage-System erläutert wird.
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:
Spanner ist Googles global verteiltes relationales Datenbankverwaltungssystem (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, global verteilte und synchron replizierte Datenbank mit mehreren Versionen. Es ist das erste System, das Daten auf globaler Ebene verteilt und extern konsistente verteilte Transaktionen unterstützt. In diesem Dokument werden die Struktur von Spanner, sein Funktionsumfang, die verschiedenen Entwurfsentscheidungen zugrunde liegenden Gründe und eine neuartige Zeit-API beschrieben, die die Unsicherheit der Uhr aufdeckt. 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 schreibgeschützte Transaktionen und Änderungen des atomaren Schemas in ganz Spanner.
Eine weitere von Google erfundene Datenbank ist Megastore . Hier ist die Zusammenfassung:
Megastore ist ein Speichersystem, das entwickelt wurde, um die Anforderungen der heutigen interaktiven Onlinedienste 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 eine vollständig serialisierbare ACID-Semantik in feinkörnigen Partitionen von Daten. Diese Partitionierung ermöglicht es uns, jeden Schreibvorgang synchron über ein Weitverkehrsnetzwerk mit angemessener Latenz zu replizieren und ein nahtloses Failover zwischen Rechenzentren zu unterstützen. In diesem Dokument wird die Semantik und der Replikationsalgorithmus von Megastore beschrieben. Es beschreibt auch unsere Erfahrung mit der Unterstützung einer Vielzahl von Google-Produktionsdiensten, die mit Megastore erstellt wurden.
Wie andere bereits erwähnt haben, verwendet Google eine selbst entwickelte Lösung namens BigTable und hat einige Artikel veröffentlicht, in denen dies in der realen Welt beschrieben wird.
Die Apache-Leute haben eine Umsetzung der in diesen Papieren vorgestellten Ideen namens HBase . HBase ist Teil des größeren Hadoop-Projekts, das laut seiner Website "eine Softwareplattform ist, mit der man einfach Anwendungen schreiben und ausführen kann, die große Datenmengen verarbeiten". Einige der Benchmarks sind ziemlich beeindruckend. Ihre Website ist unter http://hadoop.apache.org .
Obwohl Google BigTable für alle Hauptanwendungen verwendet, verwendet es MySQL auch für andere (möglicherweise kleinere) Apps.
Und es ist vielleicht auch praktisch zu wissen, dass BigTable keine relationale Datenbank (wie MySQL) ist, sondern eine riesige (verteilte) Hash-Tabelle mit sehr unterschiedlichen Eigenschaften. Sie können mit BigTable (einer eingeschränkten Version) selbst auf der Google AppEngine- Plattform herumspielen .
Neben dem oben erwähnten Hadoop gibt es viele andere Implementierungen, die versuchen, die gleichen Probleme wie BigTable zu lösen (Skalierbarkeit, Verfügbarkeit). Ich habe gestern einen schönen Blog-Beitrag gesehen, in dem die meisten hier aufgelistet sind .
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.
Für weitere Informationen laden Sie das Dokument hier herunter .
Google verwendet für einige seiner Anwendungen auch Oracle- und MySQL-Datenbanken.
Alle weiteren Informationen, die Sie hinzufügen können, werden sehr geschätzt.
Google also use Oracle
- Referenz erforderlich.
Google-Dienste verfügen über eine polyglotte Persistenzarchitektur. BigTable wird von den meisten seiner Dienste wie YouTube, Google Search, Google Analytics usw. genutzt. Der Suchdienst verwendete MapReduce zunächst für seine Indexierungsinfrastruktur, wechselte jedoch später während der Caffeine-Version zu BigTable.
Im Google Cloud-Datenspeicher sind über 100 Anwendungen bei Google in Produktion, sowohl für interne als auch für externe Nutzer. Anwendungen wie Google Mail, Picasa, Google Kalender, Android Market und AppEngine verwenden Cloud Datastore und Megastore.
Google Trends verwendet MillWheel für die Stream-Verarbeitung. Google Ads verwendete ursprünglich MySQL und wurde später auf F1 DB migriert - eine benutzerdefinierte geschriebene verteilte relationale Datenbank. Youtube verwendet MySQL mit Vitess. Google speichert mithilfe des Google-Dateisystems Exabytes an Daten auf den Commodity-Servern.
Quelle: Google-Datenbanken: Wie speichern Google Services Petabyte-Exabyte-Skalendaten?
YouTube-Datenbank - Wie werden so viele Videos gespeichert, ohne dass der Speicherplatz knapp wird?