Google Cloud Bigtable vs Google Cloud Datastore

124

Jaka jest różnica między Google Cloud Bigtable a magazynem danych Google Cloud Datastore / App Engine i jakie są główne praktyczne zalety / wady? AFAIK Cloud Datastore jest oparty na Bigtable.

Andrei F.
źródło
8
Proszę, nie zamykaj. obecnie nie ma oficjalnej dokumentacji na ten temat, a Google prawdopodobnie skomentuje tutaj.
Zig Mandel
Sprawdź to terrenceryan.com/blog/index.php/ ...
Zig Mandel

Odpowiedzi:

97

Bazując na doświadczeniu z Datastore i czytaniu dokumentów Bigtable , główne różnice to:

  • Bigtable został pierwotnie zaprojektowany pod kątem zgodności z HBase, ale teraz ma biblioteki klienckie w wielu językach . Datastore był pierwotnie bardziej nastawiony na programistów aplikacji internetowych Python / Java / Go (pierwotnie App Engine)
  • Bigtable jest „nieco bardziej IaaS” niż Datastore, ponieważ nie jest „tylko tam”, ale wymaga skonfigurowania klastra .
  • Bigtable obsługuje tylko jeden indeks - „klucz wiersza” (klucz jednostki w Datastore)
    • Oznacza to, że zapytania znajdują się w kluczu, w przeciwieństwie do indeksowanych właściwości Datastore
  • Bigtable obsługuje niepodzielność tylko w jednym wierszu - nie ma transakcji
  • Wydaje się, że mutacje i usunięcia nie są atomowe w Bigtable, podczas gdy Datastore zapewnia ostateczną i silną spójność, w zależności od metody odczytu / zapytania
  • Model rozliczeniowy jest bardzo różny:
    • Opłaty za Datastore za operacje odczytu / zapisu, pamięć masową i przepustowość
    • Opłaty Bigtable za „węzły” , pamięć masową i przepustowość
TX802
źródło
98

Bigtable jest zoptymalizowany pod kątem dużych ilości danych i analiz

  • Cloud Bigtable nie replikuje danych między strefami ani regionami (dane w jednym klastrze są replikowane i trwałe), co oznacza, że ​​Bigtable jest szybszy i bardziej wydajny, a koszty są znacznie niższe, chociaż jest mniej trwały i dostępny w domyślnej konfiguracji
  • Korzysta z interfejsu API HBase - nie ma ryzyka zablokowania lub nowych paradygmatów do nauczenia
  • Jest zintegrowany z narzędziami Big Data typu open source, co oznacza, że ​​możesz analizować dane przechowywane w Bigtable w większości narzędzi analitycznych używanych przez klientów (Hadoop, Spark itp.)
  • Bigtable jest indeksowany przez pojedynczy klucz wiersza
  • Bigtable znajduje się w jednej strefie

Cloud Bigtable jest przeznaczony dla większych firm i przedsiębiorstw, które często mają większe zapotrzebowanie na dane przy złożonych obciążeniach zaplecza.

Datastore jest zoptymalizowany pod kątem udostępniania aplikacjom danych transakcyjnych o wysokiej wartości

  • Cloud Datastore ma wyjątkowo wysoką dostępność dzięki replikacji i synchronizacji danych
  • Datastore ze względu na swoją wszechstronność i wysoką dostępność jest droższe
  • Datastore wolniej zapisuje dane z powodu replikacji synchronicznej
  • Datastore ma znacznie lepszą funkcjonalność w zakresie transakcji i zapytań (ponieważ istnieją indeksy pomocnicze)
Les Vogel - Google DevRel
źródło
3
Bigtable replikuje się teraz w różnych strefach, aby zapewnić dostępność w obliczu awarii strefowej: cloudplatform.googleblog.com/2018/07/ ...
Brandon DuRette
Myślałem, że transakcja nie jest mocnym punktem sprzedaży dla magazynu danych. Z jego [doc | cloud.google.com/datastore/docs/concepts/transactions] „Transakcja to zestaw operacji Google Cloud Datastore na co najmniej jednym obiekcie w maksymalnie 25 grupach podmiotów”. Ponadto datastore jest oparty na Bigtable, prawda?
zyxue
19

Bigtable i Datastore są skrajnie różne. Tak, datastore jest oparty na Bigtable, ale to nie czyni go podobnym. To tak jakby powiedzieć, że samochód jest zbudowany na kołach, więc samochód niewiele różni się od kół.

Bigtable i Datastore zapewniają bardzo różne modele danych i bardzo różną semantykę w sposobie zmiany danych.

Główna różnica polega na tym, że Datastore zapewnia transakcje ACID podobne do SQL-Database na podzbiorach danych zwanych grupami jednostek (chociaż język zapytań GQL jest znacznie bardziej restrykcyjny niż SQL). Bigtable jest całkowicie NoSQL i ma znacznie słabsze gwarancje.

user2771609
źródło
4
Dobrze sobie radziłeś do ostatniego akapitu. Magazyn danych zapewnia transakcje, ale nie są one podobne do SQL i zdecydowanie nie ACID.
Daniel Roseman
4
@DanielRoseman Właściwie to bardzo dobrze. Oto cytat z artykułu w Megastore (na którym jest zbudowany Datastore): „Każda grupa encji Megastore funkcjonuje jako mini-baza danych, która zapewnia serializowalną semantykę ACID”. „partycjonujemy magazyn danych i replikujemy każdą partycję oddzielnie, zapewniając pełną semantykę ACID w ramach partycji”. (research.google.com/pubs/pub36971.html)
user2771609
Myślę, że mylące jest nazywanie tego Sql. Najwyżej podzbiór. Nie ma wydajnej liczby / grupy, wszystkie zapytania muszą używać indeksów itp.
Zig Mandel
4
Język zapytań i izolacja transakcji to dwie różne rzeczy , wydaje się, że je mylisz. Zgłaszam roszczenie dotyczące tego ostatniego ( transakcje ACID ). W swoim komentarzu zakładasz, że mówię o tym pierwszym. Może jakieś łączniki wyjaśnią? Wyraźnie wspomnę o problemie z językiem zapytań, aby usunąć wszelkie wątpliwości.
user2771609
8

Jeśli czytasz artykuły, BigTable to to, a Datastore to MegaStore . Datastore to BigTable oraz replikacja, transakcja i indeks. (i jest znacznie droższy).

Justin Zhang
źródło
Czy to naprawdę droższe? minimum dla BigTable to 3 węzły, przy 10 GB HDD to 1400 $ miesięcznie. Wydaje się dość wysoki, nie?
benji
@ben, z mojego wcześniejszego doświadczenia tak było. Datastore jest naliczana za operację, a nie za godzinę. (Jeśli nie używasz go tak często, to tak, nie płacisz Datastore dużo. Ale jeśli masz duży ruch i myślę, że bigtable jest znacznie tańszy.) Myślę, że Bigtable twierdzi, że 10 000 operacji na sekundę? W rzeczywistości okazało się, że jest niższy, około 1-2k, ale nadal 3 węzły to> 5k / s. Jeśli utrzymasz tę przepustowość przez miesiąc i odwzorujesz ją na ceny Datastore, prawdopodobnie będzie ona znacznie wyższa niż 1,4 tys.
Justin Zhang,
Link do
MegaStore
7

Spróbuję podsumować wszystkie powyższe odpowiedzi oraz to, co podano w Kursie 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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Sprawdź też ten obraz: wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Adelin
źródło
2

Stosunkowo niewielki punkt do rozważenia, a od listopada 2016 r Bigtable klient python library jest nadal w alfa, co oznacza, że zmiana przyszłość nie może być wstecznie kompatybilne. Ponadto biblioteka Bigtable Python nie jest zgodna ze standardowym środowiskiem App Engine. Musisz użyć elastycznego.

YSC
źródło
Od listopada 2016 r. To samo dotyczy Javy
Aram Paronikyan
2

To może być kolejny zestaw kluczowych różnic między Google Cloud Bigtable i Google Cloud Datastore oraz innymi usługami. Treść pokazana na poniższym obrazku może również pomóc w wyborze odpowiedniej usługi.

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Kedar Kodgire
źródło
1

wprowadź opis obrazu tutaj

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.

wprowadź opis obrazu tutaj

 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
źródło
0

Datastore jest bardziej gotowy na aplikacje i nadaje się do szerokiego zakresu usług, zwłaszcza mikrousług.

Podstawową technologią Datastore jest Big Table, więc możesz sobie wyobrazić, że Big Table jest potężniejszy.

Datastore oferuje 20 000 darmowych operacji dziennie, możesz spodziewać się hostowania serwera z niezawodną bazą danych przy zerowych kosztach.

Możesz również sprawdzić tę bibliotekę ORM Datastore, zawiera wiele świetnych funkcji https://www.npmjs.com/package/ts-datastore-orm

Tsang Kin Ho
źródło