Loading…

READY TO DEAL WITH YOUR DATA?

Get some tips on how to do that!
Start exploring

[Cloud] Dlaczego uważam, że Google BigQuery mocną usługą jest

Wchodząca w skład Google Cloud Platform (GCP) usługa Google BigQuery (BQ) ma według mnie ogromny potencjał. Scenariuszy użycia tej usługi widzę naprawdę wiele, od analityki ad-hoc, w której chodzi o jednorazową analizę zbioru danych, przez hurtownie danych i analitykę big data, na analizach czasu rzeczywistego skończywszy.

Dlaczego?

Dlaczego tak uważam? Powodów znalazłem sporo, a przecież dopiero od kilku miesięcy pracuję z BigQuery.

Oto moja subiektywna lista:

  1. Serverless. Słowo, które dzisiaj “robi robotę” w usługach chmurowych. W przypadku BQ absolutnie prawda. Nie masz tu żadnego śladu serwerów czy klastrów. Niczego nie wymiarujesz. Nie skalujesz suwakiem tajemniczych jednostek mocy obliczeniowej. Ani śladu procesorów, pamięci, IO. Nic. Piękny świat, w którym możesz skupić się na meritum – na danych i ich analizie.
  2. Wydajność. Zapytania na miliardach wierszy, gigabajtach (a nawet terabajtach) danych wykonywane w sekundy? Dobrze trafiłeś/trafiłaś – to właśnie domena BQ. Zasotsowane w BQ silniki (Borg, Colossus, Jupiter i Dremel) dają tej usłudze niezłego kopa (jeśli chcesz poczytać o “bebechach”, zajrzyj do artykułu “BigQuery under the hood“). Jeśli nie dajesz wiary, możesz szybko sprawdzić wydajność BQ samodzielnie. Weź zestaw publicznie dostępny w BQ – dane pochodzące z żółtych taksówek z Nowego Jorku (nyc-tlc:yellow.trips):


    image

    Miliard wierszy i 130 GB danych. Jest się czym bawić, prawda? :-)

    Przykłady zapytań na takich danych i czasy ich wykonań:

    Agregacja – ile przejazdów i ilu pasażerów było każdego miesiąca
    Agregacja - ile przejazdów i ilu pasażerów było każdego miesiąca

    Zapytanie selektywne – przejazdy z pierwszej minuty 2010 roku*
    Zapytanie selektywne - przejazdy z pierwszej minuty 2010 roku
    * – gwiazdka jak zwykle jest złą praktyką (tu powoduje, że czytamy wszystkie dane)

    A więc pełnia szczęścia, bo jak trzeba, agregujesz dane, a kiedy indziej drążysz do szczegółów. Wszystko liczone w sekundach.

  3. SQL. Udało Ci się na pewno zauważyć – w BQ pytamy w języku SQL. Do wyboru mamy Standard SQL (zgodny z SQL 2011) oraz Legacy SQL. Google zaleca używanie Standard SQL.No i o co tyle hałasu? Ano o to, że jak już znasz SQL z klasycznych baz danych, to masz otwartą drogę do analizy dużych danych w BQ. A że SQL jest nieustająco popularny (choć stał się może nieco zapomnianą “oczywistością” wśród programistów), niech świadczy fakt, że w zestawieniach uwzględniających języki nie będące konwencjonalnymi językami programowania (bądź co bądź, SQL językiem ogólnego przeznaczenia nie jest) tenże SQL, jeśli przegrywa, to co najwyżej z Javascript-em (przykład – ankieta Stack Overflow: https://insights.stackoverflow.com/survey/2016).
  4. Inteligencja. W BQ od momentu, w którym ładujesz dane, aż po pisanie zapytań nieodmiennie towarzyszy Ci wrażenie, że ktoś prowadzi Cię za rękę.W czasie ładowania danych BQ może za Ciebie określić schemat:
    image 

    A gdy pomylisz się w treści zapytania, zobaczysz podpowiedzi rodem z pewnej popularnej wyszukwarki internetowej:


    image
    Od razu raźniej, prawda? :-)

    Jeśli do tego dodać, że pliki JSON są importowane do tabel BQ z zachowaniem struktur hierarchicznych, to czasem przychodzi mi do głowy słowo “magia”. Poniżej przykład – hierarchiczny schemat danych clickstream-owych z Google Analytics w postaci tabeli zaimportowanej do BQ (z automatycznym wykryciem schematu):image

  5. Możliwości dla analityka. Jeśli przejrzysz listę funkcji dostępnych w języku SQL dla BQ, znajdziesz takie “kwiatki”, jak CORR (funkcja licząca współczynnik korelacji Pearsona dla zmiennych numerycznych) czy APPROX_COUNT_DISTINCT (nazwa mówi wszystko – nie licz dokładnie, ile jest unikalnych wartości, tylko daj mi estymację, ale zrób to szybko).

    Doskonale spisuje się funkcjonalność łączenia tabel o takich samych schematach. Wystarczy użyć “dzikiej karty” w nazwie tabeli i BQ sam wykona UNION (!!!). Czysty odlot! Zobacz przykład – złączenie tabel z danymi dotyczącymi przewozów żółtymi taksówkami w Nowym Jorku w latach 2009-2016:

    image

    Ponadto, w BQ możesz pisać funkcje w języku Javascript (nie, to nie pomyłka!). Czasem daje to ciekawe efekty (UWAGA: to może kosztować utratę wydajności!).

  6. Integracja z usługami Google (nie tylko Google Cloud). Z pozoru BQ wyglądem interfejsu graficznego bardziej przypomina pocztę gmail niż inne usługi chmury Google. Na szczęście to tylko GUI. Sama integracja BQ ze światem usług Google mi bardzo przypadła do gustu.

    Chcesz wyniki zapytań BQ pokazać na mapie Google Maps? Nie ma sprawy (zobacz ten Codelab). Chcesz dane z BQ mieć w notatniku Datalab na potrzeby eksploracji, wizualizacji i eksperymentowania z uczeniem maszynowym? To proste (patrz dokumentacja – Visualizing BigQuery Data Using Google Cloud Datalab). Nie wspominam o “oczywistych oczywistościach”, jak ładowanie danych do BQ z Google Cloud Storage czy dostępie do BQ z poziomu konsoli (przeglądarka lub linia komend w stacji roboczej).

  7. Nie pytasz, płacisz grosze. Taka jest właśnie filozofia BQ. Za przechowywanie przytoczonej tu tabeli o rozmiarze 130 GB na dzień dzisiejszy cena wynosi 2,6 USD/miesiąc. Czyli niewiele. Ale! Gdyby do tego dołożyć 100 zapytań codziennie odpytujących całą tabelę (sic!) każdego dnia, czyli około 380 TB odpytywanych miesięcznie, rachunek powiększy się o jakieś 1900 USD/miesiąc. Dużo? No, trochę więcej. Tyle, że nie będziesz tak pracować z BQ (a jeśli będziesz, szykuj porządny budżet!). Bo przecież nie każde zapytanie będzie przeglądało całą historię paragonów (retail) czy transakcji (banking).

    Zachęcam do pobawienia się liczbami i policzenia, ile może kosztować BQ w przypadku Twoich danych. Kalkulator Google Cloud jest bardzo dobrze zrobiony – w przypadku BQ koszty można rozbić na 3 elementy: dane przechowywane (pierwsze 10 GB danych w miesiącu jest darmowe, potem 0,01 lub 0,02 USD za miesiąc, zależnie od trybu przechowywania), dane wstawiane strumieniowo do BQ (analityka czasu rzeczywistego – 0,05 USD za 1 GB wstawionych danych) oraz koszty zapytań (pierwszy 1TB odpytanych danych w miesiącu jest darmowy, potem 5 USD za 1 TB). Ważne i pokrzepiające – za zapytania, które zwróciły błąd, nie płacimy ani centa :-)

Jak zacząć?

Przygodę z BQ możesz zacząć po pierwsze natychmiast, a po drugie za darmo :-)

Aby zacząć, wchodzisz na http://cloud.google.com i klikasz Try It Free. A potem już nie pozostaje nic innego, jak pobawić się dobrze BQ (i innymi ciekawymi usługami). Do BQ masz sporo przewodników, które przeprowadzą Cię przez początki pracy i podstawowe czynności. A dalej? Zachęcam do zabawy z publicznie dostępnymi zestawami danych: https://cloud.google.com/bigquery/public-data/. Znajdziesz tam sporo ciekawych danych, a w dokumentacji zestawów inżynierowie Google opublikowali mnóstwo interesujących zapytań analitycznych.

A już niebawem podzielę się na blogu przykładową analizą publicznie dostępnych danych zrobioną z użyciem BQ i paru innych usług GCP.

Stay tuned!

Leave a Reply