Google Cloud Bigtable vs Google Cloud Datastore


124

Qual è la differenza tra Google Cloud Bigtable e il datastore di Google Cloud Datastore / App Engine e quali sono i principali vantaggi / svantaggi pratici? AFAIK Cloud Datastore è basato su Bigtable.


8
Per favore non chiudere. non c'è attualmente alcuna documentazione ufficiale su questi e probabilmente Google commenterà qui.
Zig Mandel

Risposte:


97

In base all'esperienza con Datastore e alla lettura dei documenti di Bigtable , le principali differenze sono:

  • Bigtable è stato originariamente progettato per la compatibilità con HBase, ma ora dispone di librerie client in più lingue . Datastore era originariamente più orientato verso gli sviluppatori di app web Python / Java / Go (originariamente App Engine)
  • Bigtable è "un po 'più IaaS" di Datastore in quanto non è "solo lì" ma richiede la configurazione di un cluster .
  • Bigtable supporta un solo indice: la "chiave di riga" (la chiave di entità in Datastore)
    • Ciò significa che le query si trovano sulla chiave, a differenza delle proprietà indicizzate di Datastore
  • Bigtable supporta l'atomicità solo su una singola riga: non ci sono transazioni
  • Le mutazioni e le eliminazioni non sembrano essere atomiche in Bigtable, mentre Datastore fornisce un'eventuale e forte coerenza, a seconda del metodo di lettura / query
  • Il modello di fatturazione è molto diverso:
    • Datastore addebita per operazioni di lettura / scrittura, archiviazione e larghezza di banda
    • Bigtable oneri per 'nodi' , lo stoccaggio e la larghezza di banda

98

Bigtable è ottimizzato per volumi elevati di dati e analisi

  • Cloud Bigtable non replica i dati in zone o regioni (i dati all'interno di un singolo cluster sono replicati e durevoli), il che significa che Bigtable è più veloce ed efficiente e i costi sono molto inferiori, sebbene sia meno durevole e disponibile nella configurazione predefinita
  • Utilizza l' API HBase : non c'è rischio di lock-in o nuovi paradigmi da apprendere
  • È integrato con gli strumenti Big Data open source, il che significa che puoi analizzare i dati archiviati in Bigtable nella maggior parte degli strumenti di analisi utilizzati dai clienti (Hadoop, Spark, ecc.)
  • Bigtable è indicizzato da una singola chiave di riga
  • Bigtable è in una singola zona

Cloud Bigtable è progettato per le aziende e le imprese più grandi che spesso hanno esigenze di dati più ampie con carichi di lavoro back-end complessi.

Datastore è ottimizzato per fornire dati transazionali di alto valore alle applicazioni

  • Cloud Datastore ha una disponibilità estremamente elevata con replica e sincronizzazione dei dati
  • Datastore, a causa della sua versatilità e alta disponibilità, è più costoso
  • Datastore è più lento nella scrittura dei dati a causa della replica sincrona
  • Datastore ha funzionalità molto migliori per transazioni e query (poiché esistono indici secondari)

3
Bigtable ora si replica in tutte le zone per fornire disponibilità a fronte di un'interruzione di zona: cloudplatform.googleblog.com/2018/07/…
Brandon DuRette

Pensavo che la transazione non fosse un punto di forza per il datastore. Dal suo [doc | cloud.google.com/datastore/docs/concepts/transactions] "Una transazione è un insieme di operazioni di Google Cloud Datastore su una o più entità in un massimo di 25 gruppi di entità." Inoltre, datastore si basa su Bigtable, giusto?
zyxue

19

Bigtable e Datastore sono estremamente diversi. Sì, il datastore è costruito su Bigtable, ma questo non lo rende affatto simile. È un po 'come dire che un'auto è costruita sopra le ruote, quindi un'auto non è molto diversa dalle ruote.

Bigtable e Datastore forniscono modelli di dati molto diversi e semantica molto diversa nel modo in cui i dati vengono modificati.

La differenza principale è che il Datastore fornisce transazioni ACID simili a database SQL su sottoinsiemi di dati noti come gruppi di entità (sebbene il linguaggio di query GQL sia molto più restrittivo di SQL). Bigtable è rigorosamente NoSQL e viene fornito con garanzie molto più deboli.


4
Stavi andando bene fino all'ultimo paragrafo. Il datastore fornisce transazioni, ma non hanno nulla a che fare con SQL e decisamente non ACID.
Daniel Roseman

4
@DanielRoseman In realtà, lo fa moltissimo. Ecco una citazione dal documento su Megastore (su cui è costruito Datastore): "Ogni gruppo di entità Megastore funziona come un mini-database che fornisce semantica ACID serializzabile". "partizioniamo il datastore e replichiamo ogni partizione separatamente, fornendo una semantica ACID completa all'interno delle partizioni". (research.google.com/pubs/pub36971.html)
user2771609

Penso che sia fuorviante chiamarlo Sql. Un sottoinsieme al massimo. Non ha un conteggio / gruppo efficiente, tutte le query devono utilizzare indici ecc.
Zig Mandel

4
Il linguaggio delle query e l'isolamento delle transazioni sono cose diverse , sembra che tu le stia confondendo. Sto facendo un reclamo su quest'ultimo ( transazioni ACID ). Nel tuo commento presumi che io parli del primo. Forse alcuni trattini chiariranno? Menzionerò esplicitamente il problema del linguaggio di query per rimuovere ogni dubbio.
user2771609

8

Se leggi documenti, BigTable è questo e Datastore è MegaStore . Datastore è BigTable più replica, transazione e indice. (ed è molto più costoso).


È davvero più costoso? il minimo per BigTable è di 3 nodi, a 10 GB di HDD è $ 1400 / mese. Sembra piuttosto alto no?
Benji

@ben, nella mia esperienza passata lo era. Datastore viene addebitato per operazione anziché per ora. (Se non lo usi così tanto, sì, non paghi molto Datastore. Ma se hai un traffico elevato e quindi penso che bigtable sia molto più economico.) Penso che Bigtable rivendichi 10k operazioni al secondo? In realtà l'ho trovato più basso, come circa 1-2k, ma ancora 3 nodi è> 5k / s. Se mantieni quel throughput per un mese e lo associ ai prezzi di Datastore, è probabilmente molto più alto di 1.4k.
Justin Zhang

Il collegamento MegaStore è interrotto
gstackoverflow

7

Proverò a riepilogare tutte le risposte sopra più quanto viene fornito in Coursea Google Cloud Platform Big Data and Machine Learning Fundamentals

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Controlla anche questa immagine: inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


2

Un punto relativamente minore da considerare, a partire da novembre 2016, la libreria client bigtable python è ancora in Alpha, il che significa che la futura modifica potrebbe non essere compatibile con le versioni precedenti. Inoltre, la libreria bigtable python non è compatibile con l'ambiente standard di App Engine. Devi usare quello flessibile.


A novembre 2016, lo stesso vale per Java
Aram Paronikyan

2

Questo potrebbe essere un altro insieme di differenze chiave tra Google Cloud Bigtable e Google Cloud Datastore insieme ad altri servizi. I contenuti mostrati nell'immagine qui sotto possono anche aiutarti nella scelta del servizio giusto.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


1

inserisci qui la descrizione dell'immagine

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.

inserisci qui la descrizione dell'immagine

 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.

0

Datastore è più pronto per le applicazioni e adatto a un'ampia gamma di servizi, in particolare per i microservizi.

La tecnologia alla base di Datastore è Big Table, quindi puoi immaginare che Big Table sia più potente.

Datastore viene fornito con 20.000 operazioni gratuite al giorno, puoi aspettarti di ospitare un server con DB affidabile a costo ZERO.

Puoi anche controllare questa libreria ORM Datastore, viene fornita con molte ottime funzionalità https://www.npmjs.com/package/ts-datastore-orm

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.