Zawsze byłem zwolennikiem nieskomplikowanych architektur rozwiązań IT – im mniej komponentów rozwiązania, tym łatwiej zarządzać całym systemem, szybciej można go rozwijać i skuteczniej utrzymywać. W praktyce jednak bardzo ciężko znaleźć kompromis pomiędzy możliwościami konkretnych składowych rozwiązania a wymaganiami stawianymi przez klienta – stąd i zdarzało mi się pracować przy architekturach złożonych z kilkunastu składników. Na szczęście wraz z rozwojem usług chmurowych możemy skuteczniej dobierać takie komponenty, które pozwolą uzyskać oczekiwany efekt przy właśnie jak najmniejszej liczbie usług. Mało tego, dzięki rozwiązaniom chmurowym możemy również bez problemu dobierać usługi od różnych dostawców, aby połączyć je w jeden system. Jako certyfikowany ekspert w obszarze Microsoft BI powinienem w tym momencie rozpisywać się o Azure Synapse – jednak w tym artykule chciałbym opisać usługę Snowflake.

Czym jest Snowflake?

Snowflake przede wszystkim jest usługą udostępniającą silnik bazodanowy dedykowany rozwiązaniom hurtowni danych i przetwarzaniu dużych wolumenów danych. To bardzo ważne, aby już na samym początku zwrócić uwagę właśnie na ten aspekt, ponieważ wykorzystanie Snowflake jako bazy aplikacyjnej, gdzie operujemy na pojedynczych rekordach, zupełnie się nie sprawdzi.

Możliwości Snowflake

Snowflake - dane i narzędzia

Snowflake może przyjąć dane z różnorakich źródeł, poczynając od klasycznych baz danych, aż po strumienie danych IoT. Zgromadzenie samych danych to nie koniec i na wyjściu chodzi przede wszystkim o jak najszybsze przeanalizowanie i wykorzystanie danych tak, aby czerpać z nich wymierne korzyści – czy to w postaci raportów czy wyników przygotowanych przez wyrafinowane algorytmy z obszaru Data Science. Cała magia oczywiście dzieje się pośrodku, czyli właśnie w silniku Snowflake. Możemy tu składować olbrzymie ilości danych, tworząc warstwę Data Lake. Tak samo jak w klasycznym Data Lake, dane nie muszą być sprowadzone do ustrukturyzowanego formatu i możemy tu przechowywać informacje w najróżniejszej formie – łącznie z komunikatami zapisanymi w XML czy JSON.

Co bardzo interesujące, dane będą dostępne z poziomu języka SQL i nie będzie konieczne ich przekształcanie na zewnątrz usługi. Mamy zatem w tym miejscu pierwszą zaletę ważną dla minimalistycznej architektury – po tym, jak dane znajdą się w Snowflake, praktycznie wszystko, począwszy od operacji na danych a na konfiguracji usługi kończąc, dostępne jest za pomocą poleceń SQL. Bardzo łatwo zatem wdrażać tę technologię w oparciu o specjalistów znających ten język programowania – programiści znający najpopularniejsze silniki baz danych odnajdą się tu bez większych problemów.

Hurtownia danych w chmurze

Wykorzystanie danych źródłowych w łatwy sposób jest ważne, ale ciężko mówić w tym momencie o hurtowni danych. Aby dojść do właściwej struktury hurtowni, musimy wykonać szereg przekształceń danych potrzebnych np. do integracji danych z różnych systemów. Tu warto wymienić kolejną zaletę Snowflake, czyli bardzo wydajny silnik bazodanowy, dzięki któremu transformacje możemy realizować wewnątrz samej usługi, nie angażując kolejnych technologii (Databricks, Spark itd.). Takie podejście, oprócz oczywiście wpisywania się w minimalistyczną architekturę, pozwala znacząco oszczędzić czas potrzebny na operacje takiego typu.

Wydajność rozwiązania

To, w jaki sposób uzyskiwana jest taka wysoka wydajność, jest również bardzo ciekawym zagadnieniem wykraczającym jednak poza ramy tego artykułu, ale należy tu wspomnieć o tym, że wszystkie procesy zmierzające do jej zapewnienia dzieją się wewnętrznie bez konieczności sterowania nimi ręcznie. Na podstawowym poziomie wystarczającym do dużej części projektów nie ma potrzeby w ogóle przeprowadzania jakichkolwiek dodatkowych operacji optymalizacyjnych.

Te ogromne zalety, które wskazałem powyżej, ostatecznie pozwalają na zbudowanie wydajnego rozwiązania w oparciu tylko o kilka komponentów do wyboru:

 

Snowflake - baza danych w chmurze

Ponieważ większość dostępnych technologii wspiera Snowflake, bazując na takiej architekturze pozostaje nam tylko:

  • Dobrać narzędzie ETL/ELT (Azure Data Factory/SSIS, Talend, Pentaho, Informatica itd.), aby załadować dane – przy czym tu podejście ELT będzie najbardziej wskazane, tak aby część „T”, a więc transformacji danych, realizować już wewnątrz silnika Snowflake.
  • Wykorzystać język SQL do operacji na danych – tu oprócz wydajności silnika ma duże znaczenie również fakt, że język SQL jest cały czas jednym z najbardziej popularnych języków programowania, co pozytywnie wpływa na tempo skompletowania zespołu do projektu czy wręcz możliwość zaangażowania developerów baz danych bez doświadczenia w środowisku chmurowym
  • Dobrać narzędzie do wizualizacji danych – do Snowflake można podłączyć się z poziomu głównej trójki: Power BI, Qlik, Tableau, jak i wielu innych narzędzi Business Intelligence.

Kompletny projekt Business Intelligence ze Snowflake

Ostatecznie, w minimalnej wersji, w oparciu o tylko 3 technologie możemy zrealizować kompletny projekt Business Intelligence posiadający Data Lake, hurtownię danych oraz dostępne dla szerokiego grona odbiorców raporty. Warto tu także podkreślić, że dzięki wykorzystaniu chociażby trybu Direct Query w Microsoft Power BI możemy w łatwy sposób zapewnić raportowanie na dowolnym poziomie agregacji – od danych ogólnych, takich jak zagregowane wyniki, po szczegółowe dane, łącznie z możliwością dojścia do pojedynczych rekordów nawet w sytuacji, gdy operujemy na terabajtach danych.

Zalety Snowflake

Na ostatniej wymianie wiedzy w JCommerce, kiedy prezentowałem możliwości Snowflake, kolega Leszek (pozdrawiam go z tego miejsca) nazwał Snowflake „self-service data warehouse” i muszę przyznać, że w kontekście wysokiej wydajności (która, jak już wspomniałem powyżej, jest uzyskiwana w sposób automatyczny), bardzo spodobało mi się to określenie. Praca z tą technologią jest, najzwyczajniej w świecie, przyjemna i pozwala budować rozwiązania bardzo szybko przy umiarkowanym nakładzie pracy. W obszarze zwiększonej szybkości budowy kompletnego rozwiązania warto wspomnieć jeszcze o kilku kolejnych zaletach Snowflake:

  • Możliwość klonowania danych w ekspresowym tempie – chyba nigdy wcześniej postawienie środowiska developerskiego bazującego na danych produkcyjnych nie było tak proste i szybkie – nie ma potrzeby uruchamiania procesu ETL/ELT, odtwarzania backupów itd. Wystarczy proste polecenie CLONE i dosłownie chwilę potem, niezależnie od rozmiaru danych, dane są gotowe do użycia w nowym miejscu.
  • Możliwość powoływania nowych serwerów obliczeniowych – Snowflake ma odseparowaną warstwę danych od warstwy obliczeniowej, zatem możemy powoływać w dowolnym momencie kolejne serwery obliczeniowe do realizacji konkretnych celów i tak na potrzeby procesu ETL/ELT dobieramy maszynę np. o średniej mocy obliczeniowej, która ma działać przez kilka godzin w ciągu dnia, a na potrzebę nieskomplikowanych raportów dobieramy mniejszą maszynę działającą przez cały dzień. Serwery takie działają oddzielnie od siebie, dzięki czemu uzyskujemy bardzo dużą elastyczność bez ryzyka przeskalowania rozwiązania. Ponadto wydzielając dedykowane konkretnym zadaniom serwery, łatwo będzie śledzić koszty poszczególnych części rozwiązania.
  • Dynamiczne skalowanie – w momencie, gdy brakuje mocy obliczeniowej, przeskalowanie w górę czy wszerz serwera obliczeniowego nie stanowi żadnego problemu… Jeśli tylko akceptujemy, że w tym momencie będziemy więcej płacili za całą usługę. Oczywiście jeśli nie potrzebujemy już większej mocy obliczeniowej, równie sprawnie jak podczas skalowania w górę możemy przeskalować serwery w dół. Stwarza to spore możliwości optymalizacji czasu poszczególnych operacji oraz pozwala rozsądnie zarządzać kosztami.
  • Niemal całkowity brak nakładów administracyjnych – na podstawowym poziomie nie musimy zajmować się, ważnymi przecież w innych silnikach bazodanowych zagadnieniami, takimi jak tworzenie indeksów i innych struktur optymalizacyjnych. Dzięki opcji Time Travel pozwalającej nam, w iście magiczny sposób, przeglądać stan danych sprzed różnorakich operacji (aktualizacja, usunięcie rekordów czy nawet usunięcie tabeli) możliwe jest podejście (aczkolwiek polecam tu rozwagę), w którym nie tworzy się backupów.

Czy Snowflake ma jakieś wady?

Owszem ma i z mojej perspektywy są to przede wszystkim:

  • Brak możliwości tworzenia procedur składowanych w czystym języku SQL – owszem można tworzyć procedury, ale trzeba posiłkować się elementami języka JavaScript, co w pewnym sensie stoi w konflikcie z jak najmniejszą liczbą elementów które muszą być użyte w rozwiązaniu,
  • Trochę jeszcze niedopracowana warstwa widoków systemowych – wydaje się, że można by zrealizować ją lepiej – ot, chociażby po to, aby lepiej śledzić czas zadziałania mechanizmów autoskalowania, łączenie z określeniem, kiedy nastąpiło skalowanie w dół
  • Pewne trudności w kontrolowaniu kosztów usługi „Cloud Service” – w tym miejscu chodzi mi przede wszystkim o konieczność monitorowania kosztów związanych z działaniem Snowflake, aby w odpowiednim momencie zareagować w wypadku zwiększania się kosztów Cloud Service.

Trzeba jednocześnie w tym miejscu zaznaczyć, że Snowflake jest bardzo dynamicznie rozwijany i usprawniany, więc najprawdopodobniej to, co dziś może być jeszcze jakimś problemem, niedługo będzie już rozwiązane.

Snowflake – podsumowanie

Reasumując, uważam, że Snowflake powinno rozważać się jako podstawową technologię do realizacji hurtowni danych w nowym projekcie Business Intelligence. Jest tu oczywiście parę niuansów, na które trzeba zwrócić uwagę, i trzeba mieć pomysł na to, jak optymalnie użyć tej technologii. Jednak odpowiednie użycie Snowflake do budowy hurtowni danych w chmurze sprawia, że praca staje łatwiejsza, projektem można skuteczniej zarządzać, a efekty pracy widać dużo szybciej niż przy wykorzystaniu klasycznych silników bazodanowych.

Autorem wpisu jest:
Technical Solution Manager & BI Expert

Technical Solution Manager, Technical Leader i konsultant w JCommerce. Posiada ponad 10-letnie doświadczenie w obszarze Business Intelligence. Specjalizuje się w technologiach BI firmy Microsoft od MS SQL Server 2000 w górę, włączając w to chmurę Azure. W projektach skoncentrowany na dostarczeniu rozwiązania w pełni zgodnego z prawdziwymi potrzebami klienta.

Dodaj komentarz

Skontaktuj się z nami

Chcesz dowiedzieć się więcej o naszych usługach? Napisz do nas – odpowiemy na każdą wiadomość.

    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
    W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
    2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
    • w celach handlowych,
    • w celach marketingowych,
    • w celach rekrutacyjnych;
    • w celach przyszłych rekrutacji.
    3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
    4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
    5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
    6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
    7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
    8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
    9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
    10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
    W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
    2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
    • w celach handlowych,
    • w celach marketingowych,
    • w celach rekrutacyjnych;
    • w celach przyszłych rekrutacji.
    3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
    4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
    5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
    6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
    7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
    8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
    9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
    10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.