Jaka jest różnica między BigQuery a BigTable? [Zamknięte]

85

Czy jest jakiś powód, dla którego ktoś miałby używać BigTable zamiast BigQuery? Wydaje się, że oba obsługują operacje odczytu i zapisu, a ta ostatnia oferuje również zaawansowane operacje „zapytań”.

Muszę rozwinąć sieć afiliacyjną (dlatego muszę śledzić kliknięcia i 'sprzedaż'), więc jestem dość zdezorientowany różnicą, ponieważ bigQuery wydaje się być po prostu bigTable z lepszym API.

Użytkownik bez kapelusza
źródło
Powiedziałbym, że BigTable jest bardziej niskopoziomowym i mniej zarządzanym Cloud Datastore dla ludzi, którzy potrzebują lepszej wydajności.
dyeray,
1
Ten poprzedni wątek SO również może pomóc: stackoverflow.com/questions/34437572/…
Elliott Brossard
@dyeray yeah, wiem o tym, ale czy jest jakiś powód, dla którego ktoś powinien przechowywać te same dane zarówno w BigTable, jak i BigQuery, a nie tylko w BigQuery?
Użytkownik bez kapelusza
BigTable jest bardzo dobry w wyszukiwaniu w jednym wierszu lub w małych zakresach. BigQuery jest bardzo dobry w ogólnym ujęciu. Jeśli potrzebujesz analiz z wydajnym drążeniem, korzystaj z BigQuery do analiz na dużą skalę i BigTable do analiz w małych zakresach.
Solomon Duskis
Porównanie właściwości systemu Google BigQuery, Google Cloud Bigtable i Google Cloud Datastore. ! image (Wyłączenie odpowiedzialności! skopiowane z db-engines.com)
Le

Odpowiedzi:

110

Różnica jest zasadniczo taka:

BigQuery to mechanizm zapytań do zbiorów danych, które niewiele się zmieniają lub zmieniają się przez dołączanie. Jest to doskonały wybór, gdy zapytania wymagają „skanowania tabeli” lub konieczności przejrzenia całej bazy danych. Pomyśl o sumach, średnich, zliczeniach, grupach. BigQuery jest tym, czego używasz, gdy zbierzesz duże ilości danych i musisz zadawać pytania na ich temat.

BigTable to baza danych. Został zaprojektowany jako podstawa dla dużej, skalowalnej aplikacji. Użyj BigTable, gdy tworzysz dowolną aplikację, która musi odczytywać i zapisywać dane, a skalowanie jest potencjalnym problemem.

Michael Manoochehri
źródło
2
w drugim akapicie - miałeś na myśli Use BigTable: o)
Mikhail Berlyant
@MikhailBerlyant thanks, zredagowano
Michael Manoochehri
4
Trochę niefortunnej konwencji nazewnictwa Google tutaj. Kiedy zazwyczaj myślę o SQL - myślę o tabelarycznej strukturze danych, podczas gdy gdy myślę o zapytaniach, myślę o typie bazy danych klucz-wartość lub wyszukiwania. W tym przypadku BigTable nie obsługuje języka SQL, a baza danych BigQuery Sql.
Maksood
@Michael Manoochehri cloud.google.com/bigquery/ ... przeczytaj poniższy cytat:
gstackoverflow
Możesz współdzielić dostęp do stałej tabeli zewnętrznej z użytkownikami (w tym kontami usług) lub grupami. Aby wysłać zapytanie do tabeli zewnętrznej, należy przyznać użytkownikom lub grupom (co najmniej): Rola bigquery.dataViewer na poziomie zestawu danych lub wyższym, aby uzyskać dostęp do zestawu danych zawierającego tabelę zewnętrzną. Rola bigquery.user na poziomie projektu lub wyżej, aby uruchamiać zadania zapytań Rola bigtable.reader w Cloud Bigtable, która zapewnia dostęp tylko do odczytu do metadanych i tabel
gstackoverflow
87

Google Cloud - schemat decyzyjny opcji bazy danych GCP

Może to nieco pomóc w wyborze między różnymi magazynami danych, które oferuje Google Cloud (wyłączenie odpowiedzialności! Skopiowano ze strony Google Cloud)

Jeśli Twoim wymaganiem jest działająca baza danych, BigTable jest tym, czego potrzebujesz (jednak nie jest to system OLTP ). Jeśli jest to bardziej cel analityczny, to BigQuery jest tym, czego potrzebujesz!

Pomyśl o OLTP vs OLAP ; Lub jeśli znasz rozwiązania Cassandra vs Hadoop, BigTable z grubsza równa się Cassandrze, BigQuery z grubsza równa się Hadoop (zgadzam się, to nie jest uczciwe porównanie, ale masz pomysł)

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

Uwaga

Należy pamiętać, że Bigtable nie jest relacyjną bazą danych i nie obsługuje zapytań SQL JOINani nie obsługuje transakcji wielowierszowych. Nie jest to również dobre rozwiązanie dla małych ilości danych. Jeśli chcesz RDBMS OLTP, możesz potrzebować spojrzeć na cloudSQL (mysql / postgres) lub klucz.

Perspektywa kosztów

https://stackoverflow.com/a/34845073/6785908 . Cytując tutaj odpowiednie części.

Całkowity koszt sprowadza się do tego, jak często będziesz „sprawdzać” dane. Jeśli jest to kopia zapasowa i nie odtwarzasz wydarzeń zbyt często, będzie to tanie jak barszcz. Jeśli jednak chcesz go powtarzać raz dziennie, bardzo łatwo zaczniesz uruchamiać skanowanie 5 $ / TB. Byliśmy też zaskoczeni, jak tanie były wstawki i przechowywanie, ale dzieje się tak często, ponieważ Google oczekuje, że w pewnym momencie będziesz uruchamiać na nich kosztowne zapytania. Będziesz jednak musiał zaprojektować kilka rzeczy. Np. Wstawki strumieniowe AFAIK nie mają gwarancji, że zostaną zapisane do tabeli i musisz często sondować ogon listy, aby sprawdzić, czy rzeczywiście został napisany. Śledzenie można jednak przeprowadzić efektywnie za pomocą dekoratora tabeli przedziałów czasowych (bez płacenia za skanowanie całego zbioru danych).

Jeśli nie zależy Ci na porządku, możesz nawet bezpłatnie wystawić stolik. Nie ma wtedy potrzeby uruchamiania „zapytania”.

Edytuj 1

Klucz chmurowy jest stosunkowo młody, ale jest potężny i obiecujący (i skandalicznie drogi). Przynajmniej marketing Google twierdzi, że jego funkcje są najlepsze z obu światów (tradycyjny RDBMS i noSQL)

wprowadź opis obrazu tutaj

tak-przypadkowy-koleś
źródło
Możesz współdzielić dostęp do stałej tabeli zewnętrznej z użytkownikami (w tym kontami usług) lub grupami. Aby wysłać zapytanie do tabeli zewnętrznej, należy przyznać użytkownikom lub grupom (co najmniej): Rola bigquery.dataViewer na poziomie zestawu danych lub wyższym, aby uzyskać dostęp do zestawu danych zawierającego tabelę zewnętrzną. Rola bigquery.user na poziomie projektu lub wyżej, aby uruchamiać zadania zapytań Rola bigtable.reader w Cloud Bigtable, która zapewnia dostęp tylko do odczytu do metadanych i tabel
gstackoverflow
Powyższy cytat pochodzi z cloud.google.com/bigquery/… . Dlaczego aby uzyskać dostęp do bigtable , potrzebuję pozwolenia, które zawiera słowo bigquery ?
gstackoverflow
-3

BigQuery i Cloud Bigtable to nie to samo. Bigtable to baza danych NoSQL oparta na Hadoop, a BigQuery to magazyn danych oparty na SQL. Mają określone scenariusze użytkowania.

W bardzo krótkich i prostych słowach;

  • Jeśli nie potrzebujesz obsługi transakcji ACID lub jeśli Twoje dane nie są wysoce ustrukturyzowane, rozważ Cloud Bigtable.
  • Jeśli potrzebujesz interaktywnych zapytań w systemie przetwarzania analitycznego online (OLAP), rozważ rozwiązanie BigQuery.
Chiro
źródło
5
Bigtable nie jest bazą danych NoSQL opartą na Hadoop, w rzeczywistości jest odwrotnie - w oparciu o białą księgę Bigtable zbudowano HBase (NoSQL oparty na Hadoop). Z tego powodu mają jednak podobny (ten sam?) Interfejs API.
Igor Dvorzhak