Was ist der Unterschied zwischen BigQuery und BigTable? [geschlossen]

84

Gibt es einen Grund, warum jemand BigTable anstelle von BigQuery verwenden würde? Beide scheinen Lese- und Schreiboperationen zu unterstützen, wobei letztere auch erweiterte Abfrageoperationen bieten.

Ich muss ein Affiliate-Netzwerk aufbauen (daher muss ich Klicks und "Verkäufe" verfolgen), daher bin ich ziemlich verwirrt über den Unterschied, da bigQuery nur bigTable mit einer besseren API zu sein scheint.

Der Benutzer ohne Hut
quelle
Ich würde sagen, BigTable ist eher ein niedriger und weniger verwalteter Cloud-Datenspeicher für Leute, die eine bessere Leistung benötigen.
Tag
1
Dieser vergangene SO-Thread kann auch helfen: stackoverflow.com/questions/34437572/…
Elliott Brossard
@dyeray Ja, das weiß ich, aber gibt es einen Grund für jemanden, die gleichen Daten sowohl in BigTable als auch in BigQuery anstelle von BigQuery zu verwalten?
Der Benutzer ohne Hut
BigTable eignet sich sehr gut für einreihige oder kleine Suchvorgänge. BigQuery ist sehr gut im Gesamtbild. Wenn Sie Analysen mit effizientem Drilldown wünschen, verwenden Sie BigQuery für die Analyse in großem Maßstab und BigTable für die Analyse über kleine Bereiche.
Solomon Duskis
Vergleich der Systemeigenschaften Google BigQuery vs. Google Cloud Bigtable vs. Google Cloud Datastore. ! Bild (Haftungsausschluss! Von db-engines.com kopiert)
Le Khiem

Antworten:

107

Der Unterschied ist im Grunde der folgende:

BigQuery ist eine Abfrage-Engine für Datasets, die sich nicht wesentlich ändern oder durch Anhängen ändern. Es ist eine gute Wahl, wenn Ihre Abfragen einen "Tabellenscan" erfordern oder die gesamte Datenbank durchsuchen müssen. Denken Sie an Summen, Durchschnittswerte, Zählungen, Gruppierungen. BigQuery wird verwendet, wenn Sie eine große Datenmenge gesammelt haben und Fragen dazu stellen müssen.

BigTable ist eine Datenbank. Es soll die Grundlage für eine große, skalierbare Anwendung sein. Verwenden Sie BigTable, wenn Sie eine App erstellen, die Daten lesen und schreiben muss, und die Skalierung ist ein potenzielles Problem.

Michael Manoochehri
quelle
2
im zweiten Absatz - Sie meinten Use BigTable: o)
Mikhail Berlyant
@MikhailBerlyant danke, bearbeitet
Michael Manoochehri
4
Eine unglückliche Namenskonvention von Google hier. Wenn ich normalerweise an SQL denke, denke ich an die tabellarische Datenstruktur, während ich an Abfragen denke, denke ich an Schlüsselwert oder Nachschlagetyp der Datenbank. In diesem Fall ist BigTable No-SQL, während BigQuery Sql-Datenbank.
Maksood
@ Michael Manoochehri cloud.google.com/bigquery/… Bitte lesen Sie das folgende Zitat:
gstackoverflow
Sie können den Zugriff auf eine permanente externe Tabelle für Benutzer (einschließlich Dienstkonten) oder Gruppen freigeben. Um die externe Tabelle abzufragen, muss Ihren Benutzern oder Gruppen (mindestens) Folgendes gewährt werden: Die Rolle bigquery.dataViewer auf Dataset-Ebene oder höher, um auf das Dataset zuzugreifen, das die externe Tabelle enthält. Die Rolle bigquery.user auf Projektebene oder höher, um Abfragejobs auszuführen Die Rolle bigtable.reader in Cloud Bigtable, die schreibgeschützten Zugriff auf Metadaten und Tabellen
bietet
85

Entscheidungsflussdiagramm für Google Cloud - GCP-Datenbankoptionen

Dies kann bei der Entscheidung zwischen verschiedenen Datenspeichern, die die Google Cloud anbietet, hilfreich sein (Haftungsausschluss! Von der Google Cloud-Seite kopiert).

Wenn Ihre Anforderung eine Live-Datenbank ist, ist BigTable genau das, was Sie benötigen (allerdings nicht wirklich ein OLTP- System). Wenn es sich eher um einen analytischen Zweck handelt, ist BigQuery genau das, was Sie brauchen!

Denken Sie an OLTP vs OLAP ; Oder wenn Sie mit Cassandra vs Hadoop vertraut sind, entspricht BigTable ungefähr Cassandra, BigQuery entspricht ungefähr Hadoop (Einverstanden, es ist kein fairer Vergleich, aber Sie haben die Idee)

https://cloud.google.com/images/storage-options/flowchart.svg

Hinweis

Beachten Sie bitte, dass Bigtable keine relationale Datenbank ist und weder SQL-Abfragen oder JOINs noch mehrzeilige Transaktionen unterstützt. Es ist auch keine gute Lösung für kleine Datenmengen. Wenn Sie ein RDBMS-OLTP möchten, müssen Sie sich möglicherweise CloudSQL (MySQL / Postgres) oder Spanner ansehen.

Kostenperspektive

https://stackoverflow.com/a/34845073/6785908 . Zitieren Sie hier die relevanten Teile.

Die Gesamtkosten beschränken sich darauf, wie oft Sie die Daten "abfragen". Wenn es sich um ein Backup handelt und Sie Ereignisse nicht zu oft wiederholen, ist es spottbillig. Wenn Sie es jedoch einmal täglich wiedergeben müssen, können Sie die gescannten 5 $ / TB sehr einfach auslösen. Wir waren auch überrascht, wie billig Beilagen und Speicher waren, aber dies ist ofc, weil Google erwartet, dass Sie zu einem bestimmten Zeitpunkt teure Abfragen auf ihnen ausführen. Sie müssen jedoch ein paar Dinge entwerfen. Zum Beispiel haben AFAIK-Streaming-Inserts keine Garantie dafür, dass sie in die Tabelle geschrieben werden, und Sie müssen häufig am Ende der Liste nachfragen, ob sie wirklich geschrieben wurden. Das Tailing kann jedoch mit dem Zeitbereichstabellendekorateur effizient durchgeführt werden (ohne das Scannen des gesamten Datensatzes zu bezahlen).

Wenn Sie sich nicht für die Bestellung interessieren, können Sie sogar kostenlos einen Tisch auflisten. Dann müssen Sie keine 'Abfrage' ausführen.

Bearbeiten 1

Cloud Spanner ist relativ jung, aber leistungsstark und vielversprechend (und auch unverschämt teuer). Zumindest behauptet Google Marketing, dass seine Funktionen das Beste aus beiden Welten sind (traditionelles RDBMS und noSQL).

Geben Sie hier die Bildbeschreibung ein

so zufälliger Typ
quelle
Sie können den Zugriff auf eine permanente externe Tabelle für Benutzer (einschließlich Dienstkonten) oder Gruppen freigeben. Um die externe Tabelle abzufragen, muss Ihren Benutzern oder Gruppen (mindestens) Folgendes gewährt werden: Die Rolle bigquery.dataViewer auf Dataset-Ebene oder höher, um auf das Dataset zuzugreifen, das die externe Tabelle enthält. Die Rolle bigquery.user auf Projektebene oder höher, um Abfragejobs auszuführen Die Rolle bigtable.reader in Cloud Bigtable, die schreibgeschützten Zugriff auf Metadaten und Tabellen
bietet
Ich habe das obige Zitat von cloud.google.com/bigquery/… übernommen . Warum für den Zugriff auf bigtable benötige ich eine Berechtigung, die das Wort bigquery enthält ?
gstackoverflow
-3

BigQuery und Cloud Bigtable sind nicht dasselbe. Bigtable ist eine Hadoop-basierte NoSQL-Datenbank, während BigQuery ein SQL-basiertes Datawarehouse ist. Sie haben spezifische Nutzungsszenarien.

In sehr kurzen und einfachen Worten;

  • Wenn Sie keine Unterstützung für ACID-Transaktionen benötigen oder wenn Ihre Daten nicht stark strukturiert sind, ziehen Sie Cloud Bigtable in Betracht.
  • Wenn Sie eine interaktive Abfrage in einem OLAP-System (Online Analytical Processing) benötigen, ziehen Sie BigQuery in Betracht.
Chiro
quelle
5
Bigtable ist keine Hadoop-basierte NoSQL-Datenbank, sondern das Gegenteil - basierend auf dem Bigtable-Whitepaper wurde HBase (Hadoop-basiertes NoSQL) erstellt. Aus diesem Grund teilen sie sich jedoch eine ähnliche (gleiche?) API.
Igor Dvorzhak