Google Cloud Bigtable gegen Google Cloud Datastore

122

Was ist der Unterschied zwischen Google Cloud Bigtable und Google Cloud Datastore / App Engine-Datenspeicher und was sind die wichtigsten praktischen Vor- und Nachteile? Der AFAIK Cloud Datastore basiert auf Bigtable.

Andrei F.
quelle
8
Bitte nicht schließen. Derzeit gibt es keine offizielle Dokumentation zu diesen und Google wird wahrscheinlich hier einen Kommentar abgeben.
Zig Mandel
Überprüfen Sie dies aus terrenceryan.com/blog/index.php/…
Zig Mandel

Antworten:

96

Basierend auf den Erfahrungen mit Datastore und dem Lesen der Bigtable- Dokumente sind die Hauptunterschiede:

  • Bigtable wurde ursprünglich für HBase-Kompatibilität entwickelt, verfügt jetzt jedoch über Client-Bibliotheken in mehreren Sprachen . Der Datenspeicher war ursprünglich mehr auf Python / Java / Go-Web-App-Entwickler ausgerichtet (ursprünglich App Engine).
  • Bigtable ist "ein bisschen mehr IaaS" als Datastore, da es nicht "nur da" ist, sondern die Konfiguration eines Clusters erfordert .
  • Bigtable unterstützt nur einen Index - den 'Zeilenschlüssel' (den Entitätsschlüssel im Datenspeicher).
    • Dies bedeutet, dass sich Abfragen im Gegensatz zu den indizierten Eigenschaften des Datenspeichers auf dem Schlüssel befinden
  • Bigtable unterstützt Atomizität nur in einer einzelnen Zeile - es gibt keine Transaktionen
  • Mutationen und Löschungen scheinen in Bigtable nicht atomar zu sein, wohingegen der Datenspeicher je nach Lese- / Abfragemethode eine eventuelle und starke Konsistenz bietet
  • Das Abrechnungsmodell ist sehr unterschiedlich:
    • Datenspeichergebühren für Lese- / Schreibvorgänge, Speicher und Bandbreite
    • Bigtable Gebühren für "Knoten" , Speicher und Bandbreite
tx802
quelle
97

Bigtable ist für große Daten- und Analysemengen optimiert

  • Cloud Bigtable repliziert keine Daten über Zonen oder Regionen hinweg (Daten innerhalb eines einzelnen Clusters werden repliziert und dauerhaft). Dies bedeutet, dass Bigtable schneller und effizienter ist und die Kosten viel niedriger sind, obwohl es weniger dauerhaft und in der Standardkonfiguration verfügbar ist
  • Es verwendet die HBase- API - es besteht kein Risiko, dass Sie sich einschließen oder neue Paradigmen lernen
  • Es ist in die Open-Source-Big-Data-Tools integriert, sodass Sie die in Bigtable gespeicherten Daten in den meisten von Kunden verwendeten Analysetools (Hadoop, Spark usw.) analysieren können.
  • Bigtable wird durch einen einzelnen Zeilenschlüssel indiziert
  • Bigtable befindet sich in einer einzigen Zone

Cloud Bigtable wurde für größere Unternehmen und Unternehmen entwickelt, die häufig einen größeren Datenbedarf mit komplexen Backend-Workloads haben.

Der Datenspeicher ist optimiert, um Anwendungen hochwertige Transaktionsdaten bereitzustellen

  • Cloud Datastore bietet eine extrem hohe Verfügbarkeit mit Replikation und Datensynchronisation
  • Der Datenspeicher ist aufgrund seiner Vielseitigkeit und hohen Verfügbarkeit teurer
  • Der Datenspeicher schreibt Daten aufgrund der synchronen Replikation langsamer
  • Der Datenspeicher bietet eine viel bessere Funktionalität für Transaktionen und Abfragen (da Sekundärindizes vorhanden sind).
Les Vogel - Google DevRel
quelle
3
Bigtable wird jetzt zonenübergreifend repliziert, um die Verfügbarkeit bei einem zonalen Ausfall zu gewährleisten
Brandon DuRette
Ich dachte, Transaktion ist kein starkes Verkaufsargument für Datenspeicher. Aus seiner [doc | cloud.google.com/datastore/docs/concepts/transactions] "Eine Transaktion ist eine Reihe von Google Cloud-Datenspeichervorgängen für eine oder mehrere Entitäten in bis zu 25 Entitätsgruppen." Außerdem basiert der Datenspeicher auf Bigtable, richtig?
Zyxue
19

Bigtable und Datastore sind sehr unterschiedlich. Ja, der Datenspeicher baut auf Bigtable auf, aber das macht ihn nicht so. Das ist so, als würde man sagen, dass ein Auto auf Rädern gebaut ist, und ein Auto unterscheidet sich also nicht wesentlich von Rädern.

Bigtable und Datastore bieten sehr unterschiedliche Datenmodelle und eine sehr unterschiedliche Semantik bei der Änderung der Daten.

Der Hauptunterschied besteht darin, dass der Datenspeicher SQL-datenbankähnliche ACID-Transaktionen für Teilmengen der Daten bereitstellt, die als Entitätsgruppen bezeichnet werden (obwohl die Abfragesprache GQL viel restriktiver ist als SQL). Bigtable ist ausschließlich NoSQL und bietet viel schwächere Garantien.

user2771609
quelle
3
Du hast es bis zum letzten Absatz gut gemacht. Der Datenspeicher stellt Transaktionen bereit, aber sie sind nichts wie SQL und definitiv keine ACID.
Daniel Roseman
4
@ DanielRoseman Eigentlich tut es sehr viel. Hier ist ein Zitat aus dem Artikel über Megastore (auf dem Datastore basiert): "Jede Megastore-Entitätsgruppe fungiert als Minidatenbank, die eine serialisierbare ACID-Semantik bietet." "Wir partitionieren den Datenspeicher und replizieren jede Partition separat, um eine vollständige ACID-Semantik innerhalb der Partitionen bereitzustellen." (research.google.com/pubs/pub36971.html)
user2771609
Ich denke, es ist irreführend, es Sql zu nennen. Höchstens eine Teilmenge. Hat keine effiziente Anzahl / Gruppe, alle Abfragen müssen Indizes usw. verwenden
Zig Mandel
4
Abfragesprache und Transaktionsisolation sind verschiedene Dinge , Sie scheinen sie zu verwechseln. Ich mache einen Anspruch auf Letzteres (ACID- Transaktionen ). In Ihrem Kommentar gehen Sie davon aus, dass ich über Ersteres spreche. Vielleicht werden einige Bindestriche klarstellen? Ich werde das Problem mit der Abfragesprache ausdrücklich erwähnen, um Zweifel zu beseitigen.
user2771609
8

Wenn Sie Artikel lesen, ist BigTable dies und Datastore ist MegaStore . Der Datenspeicher ist BigTable plus Replikation, Transaktion und Index. (und ist viel teurer).

Justin Zhang
quelle
Ist es wirklich teurer? Das Minimum für BigTable beträgt 3 Knoten, bei 10 GB Festplatte sind es 1400 US-Dollar pro Monat. Scheint ziemlich hoch, nein?
Benjamin
@ben, in meiner Vergangenheit war es. Der Datenspeicher wird pro Vorgang statt pro Stunde berechnet. (Wenn Sie es nicht so oft verwenden, zahlen Sie den Datenspeicher ja nicht viel. Aber wenn Sie viel Verkehr haben und dann denke ich, dass Bigtable viel billiger ist.) Ich denke, Bigtable beansprucht 10.000 Ops pro Sekunde? In Wirklichkeit fand ich es niedriger, wie etwa 1-2k, aber immer noch 3 Knoten sind> 5k / s. Wenn Sie diesen Durchsatz einen Monat lang beibehalten und ihn dem Datastore-Preis zuordnen, ist er wahrscheinlich viel höher als 1,4 KB.
Justin Zhang
MegaStore-Link ist defekt
gstackoverflow
7

Ich werde versuchen, alle oben genannten Antworten sowie die in Coursea Google Cloud Platform enthaltenen Grundlagen zu Big Data und maschinellem Lernen zusammenzufassen

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Überprüfen Sie auch dieses Bild: Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Adelin
quelle
2

Ein relativ kleiner Punkt, der berücksichtigt werden muss: Ab November 2016 befindet sich die bigtable Python-Client- Bibliothek noch in Alpha, was bedeutet, dass die zukünftige Änderung möglicherweise nicht abwärtskompatibel ist. Außerdem ist die bigtable Python-Bibliothek nicht mit der Standardumgebung von App Engine kompatibel. Sie müssen die flexible verwenden.

YSC
quelle
Ab November 2016 gilt das Gleiche für Java
Aram Paronikyan
2

Dies kann ein weiterer wesentlicher Unterschied zwischen Google Cloud Bigtable und Google Cloud Datastore sowie anderen Diensten sein. Der in der Abbildung unten gezeigte Inhalt kann Ihnen auch bei der Auswahl des richtigen Dienstes helfen.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Kedar Kodgire
quelle
1

Geben Sie hier die Bildbeschreibung ein

Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.

Geben Sie hier die Bildbeschreibung ein

 Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.
Tiago Medici
quelle
0

Der Datenspeicher ist anwendungsfähiger und für eine Vielzahl von Diensten geeignet, insbesondere für Microservices.

Die zugrunde liegende Technologie von Datastore ist Big Table. Sie können sich also vorstellen, dass Big Table leistungsfähiger ist.

Der Datenspeicher wird mit 20.000 freiem Betrieb pro Tag geliefert. Sie können davon ausgehen, dass Sie einen Server mit zuverlässiger Datenbank mit NULL Kosten hosten.

Sie können sich auch diese ORM-Bibliothek für Datenspeicher ansehen. Sie enthält viele großartige Funktionen: https://www.npmjs.com/package/ts-datastore-orm

Tsang Kin Ho
quelle