{"id":30438,"date":"2021-09-15T10:49:26","date_gmt":"2021-09-15T08:49:26","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/snowflake-czyli-lawina-mozliwosci\/"},"modified":"2025-01-22T13:31:47","modified_gmt":"2025-01-22T12:31:47","slug":"snowflake-czyli-lawina-mozliwosci","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/snowflake-czyli-lawina-mozliwosci\/","title":{"rendered":"Snowflake, czyli lawina mo\u017cliwo\u015bci"},"content":{"rendered":"\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><span class=\"lead\">Zawsze by\u0142em zwolennikiem nieskomplikowanych architektur rozwi\u0105za\u0144 IT \u2013 im mniej komponent\u00f3w rozwi\u0105zania, tym \u0142atwiej zarz\u0105dza\u0107 ca\u0142ym systemem, szybciej mo\u017cna go rozwija\u0107 i skuteczniej utrzymywa\u0107. W praktyce jednak bardzo ci\u0119\u017cko znale\u017a\u0107 kompromis pomi\u0119dzy mo\u017cliwo\u015bciami konkretnych sk\u0142adowych rozwi\u0105zania a wymaganiami stawianymi przez klienta \u2013 st\u0105d i zdarza\u0142o mi si\u0119 pracowa\u0107 przy architekturach z\u0142o\u017conych z kilkunastu sk\u0142adnik\u00f3w. Na szcz\u0119\u015bcie wraz z rozwojem us\u0142ug chmurowych mo\u017cemy skuteczniej dobiera\u0107 takie komponenty, kt\u00f3re pozwol\u0105 uzyska\u0107 oczekiwany efekt przy w\u0142a\u015bnie jak najmniejszej liczbie us\u0142ug. Ma\u0142o tego, dzi\u0119ki rozwi\u0105zaniom chmurowym mo\u017cemy r\u00f3wnie\u017c bez problemu dobiera\u0107 us\u0142ugi od r\u00f3\u017cnych dostawc\u00f3w, aby po\u0142\u0105czy\u0107 je w jeden system. Jako certyfikowany ekspert w obszarze Microsoft BI powinienem w tym momencie rozpisywa\u0107 si\u0119 o Azure Synapse \u2013 jednak w tym artykule chcia\u0142bym opisa\u0107 us\u0142ug\u0119 Snowflake.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Czym jest Snowflake?<\/h2>\n\n\n\n<p>Snowflake przede wszystkim jest us\u0142ug\u0105 udost\u0119pniaj\u0105c\u0105 silnik bazodanowy dedykowany rozwi\u0105zaniom <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/ewolucja-technik-modelowania-hurtowni-danych\">hurtowni danych<\/a> i przetwarzaniu du\u017cych wolumen\u00f3w danych. To bardzo wa\u017cne, aby ju\u017c na samym pocz\u0105tku zwr\u00f3ci\u0107 uwag\u0119 w\u0142a\u015bnie na ten aspekt, poniewa\u017c wykorzystanie Snowflake jako bazy aplikacyjnej, gdzie operujemy na pojedynczych rekordach, zupe\u0142nie si\u0119 nie sprawdzi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mo\u017cliwo\u015bci Snowflake<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.09.01_graphic1.png\" alt=\"Snowflake - dane i narz\u0119dzia\" class=\"wp-image-35697\" title=\"\"><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Snowflake mo\u017ce przyj\u0105\u0107 dane z r\u00f3\u017cnorakich \u017ar\u00f3de\u0142, poczynaj\u0105c od klasycznych baz danych, a\u017c po strumienie danych IoT. Zgromadzenie samych danych to nie koniec i na wyj\u015bciu chodzi przede wszystkim o jak najszybsze przeanalizowanie i wykorzystanie danych tak, aby czerpa\u0107 z nich wymierne korzy\u015bci \u2013 czy to w postaci raport\u00f3w czy wynik\u00f3w przygotowanych przez wyrafinowane algorytmy z obszaru Data Science. Ca\u0142a magia oczywi\u015bcie dzieje si\u0119 po\u015brodku, czyli w\u0142a\u015bnie w silniku Snowflake. Mo\u017cemy tu sk\u0142adowa\u0107 olbrzymie ilo\u015bci danych, tworz\u0105c warstw\u0119 Data Lake. Tak samo jak w klasycznym Data Lake, dane nie musz\u0105 by\u0107 sprowadzone do ustrukturyzowanego formatu i mo\u017cemy tu przechowywa\u0107 informacje w najr\u00f3\u017cniejszej formie \u2013<strong> \u0142\u0105cznie z komunikatami zapisanymi w XML czy JSON. <\/strong><\/p>\n\n\n\n<p>Co bardzo interesuj\u0105ce, dane b\u0119d\u0105 dost\u0119pne z poziomu j\u0119zyka SQL i nie b\u0119dzie konieczne ich przekszta\u0142canie na zewn\u0105trz us\u0142ugi. Mamy zatem w tym miejscu pierwsz\u0105 zalet\u0119 wa\u017cn\u0105 dla minimalistycznej architektury \u2013 po tym, jak dane znajd\u0105 si\u0119 w Snowflake, praktycznie wszystko, pocz\u0105wszy od operacji na danych a na konfiguracji us\u0142ugi ko\u0144cz\u0105c, <strong>dost\u0119pne jest za pomoc\u0105 polece\u0144 SQL.<\/strong> Bardzo \u0142atwo zatem wdra\u017ca\u0107 t\u0119 technologi\u0119 w oparciu o specjalist\u00f3w znaj\u0105cych ten j\u0119zyk programowania \u2013 programi\u015bci znaj\u0105cy najpopularniejsze silniki baz danych odnajd\u0105 si\u0119 tu bez wi\u0119kszych problem\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hurtownia danych w chmurze<\/h2>\n\n\n\n<p>Wykorzystanie danych \u017ar\u00f3d\u0142owych w \u0142atwy spos\u00f3b jest wa\u017cne, ale ci\u0119\u017cko m\u00f3wi\u0107 w tym momencie o hurtowni danych. Aby doj\u015b\u0107 do w\u0142a\u015bciwej struktury hurtowni, musimy wykona\u0107 szereg przekszta\u0142ce\u0144 danych potrzebnych np. do integracji danych z r\u00f3\u017cnych system\u00f3w. Tu warto wymieni\u0107 kolejn\u0105 zalet\u0119 Snowflake, czyli bardzo wydajny silnik bazodanowy, dzi\u0119ki kt\u00f3remu transformacje mo\u017cemy realizowa\u0107 wewn\u0105trz samej us\u0142ugi, nie anga\u017cuj\u0105c kolejnych technologii <strong>(Databricks, Spark itd.).<\/strong> Takie podej\u015bcie, opr\u00f3cz oczywi\u015bcie wpisywania si\u0119 w minimalistyczn\u0105 architektur\u0119, pozwala znacz\u0105co oszcz\u0119dzi\u0107 czas potrzebny na operacje takiego typu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wydajno\u015b\u0107 rozwi\u0105zania<\/h2>\n\n\n\n<p>To, w jaki spos\u00f3b uzyskiwana jest taka wysoka wydajno\u015b\u0107, jest r\u00f3wnie\u017c bardzo ciekawym zagadnieniem wykraczaj\u0105cym jednak poza ramy tego artyku\u0142u, ale nale\u017cy tu wspomnie\u0107 o tym, \u017ce wszystkie procesy zmierzaj\u0105ce do jej zapewnienia dziej\u0105 si\u0119 wewn\u0119trznie bez konieczno\u015bci sterowania nimi r\u0119cznie. Na podstawowym poziomie wystarczaj\u0105cym do du\u017cej cz\u0119\u015bci projekt\u00f3w nie ma potrzeby w og\u00f3le przeprowadzania jakichkolwiek dodatkowych operacji optymalizacyjnych.<\/p>\n\n\n\n<p>Te ogromne zalety, kt\u00f3re wskaza\u0142em powy\u017cej, ostatecznie pozwalaj\u0105 na zbudowanie wydajnego rozwi\u0105zania w oparciu tylko o kilka komponent\u00f3w do wyboru:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.09.01_graphic2.png\" alt=\"Snowflake - baza danych w chmurze\" class=\"wp-image-35696\" title=\"\"><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Poniewa\u017c wi\u0119kszo\u015b\u0107 dost\u0119pnych technologii wspiera Snowflake, bazuj\u0105c na takiej architekturze pozostaje nam tylko:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dobra\u0107 narz\u0119dzie ETL\/ELT<\/strong> (Azure Data Factory\/SSIS, Talend, Pentaho, Informatica itd.), aby za\u0142adowa\u0107 dane \u2013 przy czym tu podej\u015bcie ELT b\u0119dzie najbardziej wskazane, tak aby cz\u0119\u015b\u0107 \u201eT\u201d, a wi\u0119c transformacji danych, realizowa\u0107 ju\u017c wewn\u0105trz silnika Snowflake.<\/li>\n\n\n\n<li><strong>Wykorzysta\u0107 j\u0119zyk SQL do operacji na danych<\/strong> \u2013 tu opr\u00f3cz wydajno\u015bci silnika ma du\u017ce znaczenie r\u00f3wnie\u017c fakt, \u017ce j\u0119zyk SQL jest ca\u0142y czas jednym z najbardziej popularnych j\u0119zyk\u00f3w programowania, co pozytywnie wp\u0142ywa na tempo skompletowania zespo\u0142u do projektu czy wr\u0119cz mo\u017cliwo\u015b\u0107 zaanga\u017cowania developer\u00f3w baz danych bez do\u015bwiadczenia w \u015brodowisku chmurowym<\/li>\n\n\n\n<li><strong>Dobra\u0107 narz\u0119dzie do wizualizacji danych<\/strong> \u2013 do Snowflake mo\u017cna pod\u0142\u0105czy\u0107 si\u0119 z poziomu g\u0142\u00f3wnej tr\u00f3jki: Power BI, Qlik, Tableau, jak i wielu innych <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/system-business-intelligence-narzedzie-do-precyzyjnego-zarzadzania\">narz\u0119dzi Business Intelligence.<\/a><\/li>\n\n\n\n<li>\u00a0<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kompletny projekt Business Intelligence ze Snowflake<\/h2>\n\n\n\n<p>Ostatecznie, w minimalnej wersji, <strong>w oparciu o tylko 3 technologie mo\u017cemy zrealizowa\u0107 kompletny projekt Business Intelligence<\/strong> posiadaj\u0105cy Data Lake, hurtowni\u0119 danych oraz dost\u0119pne dla szerokiego grona odbiorc\u00f3w raporty. Warto tu tak\u017ce podkre\u015bli\u0107, \u017ce dzi\u0119ki wykorzystaniu chocia\u017cby trybu Direct Query w Microsoft Power BI mo\u017cemy w \u0142atwy spos\u00f3b zapewni\u0107 raportowanie na dowolnym poziomie agregacji \u2013 od danych og\u00f3lnych, takich jak zagregowane wyniki, po szczeg\u00f3\u0142owe dane, \u0142\u0105cznie z mo\u017cliwo\u015bci\u0105 doj\u015bcia do pojedynczych rekord\u00f3w nawet w sytuacji, gdy operujemy na terabajtach danych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zalety Snowflake<\/h2>\n\n\n\n<p>Na ostatniej wymianie wiedzy w Inetum, kiedy prezentowa\u0142em mo\u017cliwo\u015bci Snowflake, kolega Leszek (pozdrawiam go z tego miejsca) nazwa\u0142 Snowflake <strong>\u201eself-service data warehouse\u201d<\/strong> i musz\u0119 przyzna\u0107, \u017ce w kontek\u015bcie wysokiej wydajno\u015bci (kt\u00f3ra, jak ju\u017c wspomnia\u0142em powy\u017cej, jest uzyskiwana w spos\u00f3b automatyczny), bardzo spodoba\u0142o mi si\u0119 to okre\u015blenie. <strong>Praca z t\u0105 technologi\u0105 jest, najzwyczajniej w \u015bwiecie, przyjemna i pozwala budowa\u0107 rozwi\u0105zania bardzo szybko przy umiarkowanym nak\u0142adzie pracy.<\/strong> W obszarze zwi\u0119kszonej szybko\u015bci budowy kompletnego rozwi\u0105zania warto wspomnie\u0107 jeszcze o kilku kolejnych zaletach Snowflake:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mo\u017cliwo\u015b\u0107 klonowania danych w ekspresowym tempie<\/strong> \u2013 chyba nigdy wcze\u015bniej postawienie \u015brodowiska developerskiego bazuj\u0105cego na danych produkcyjnych nie by\u0142o tak proste i szybkie \u2013 nie ma potrzeby uruchamiania procesu ETL\/ELT, odtwarzania backup\u00f3w itd. Wystarczy proste polecenie CLONE i dos\u0142ownie chwil\u0119 potem, niezale\u017cnie od rozmiaru danych, dane s\u0105 gotowe do u\u017cycia w nowym miejscu.<\/li>\n\n\n\n<li><strong>Mo\u017cliwo\u015b\u0107 powo\u0142ywania nowych serwer\u00f3w obliczeniowych<\/strong> \u2013 Snowflake ma odseparowan\u0105 warstw\u0119 danych od warstwy obliczeniowej, zatem mo\u017cemy powo\u0142ywa\u0107 w dowolnym momencie kolejne serwery obliczeniowe do realizacji konkretnych cel\u00f3w i tak na potrzeby procesu ETL\/ELT dobieramy maszyn\u0119 np. o \u015bredniej mocy obliczeniowej, kt\u00f3ra ma dzia\u0142a\u0107 przez kilka godzin w ci\u0105gu dnia, a na potrzeb\u0119 nieskomplikowanych raport\u00f3w dobieramy mniejsz\u0105 maszyn\u0119 dzia\u0142aj\u0105c\u0105 przez ca\u0142y dzie\u0144. Serwery takie dzia\u0142aj\u0105 oddzielnie od siebie, dzi\u0119ki czemu uzyskujemy bardzo du\u017c\u0105 elastyczno\u015b\u0107 bez ryzyka przeskalowania rozwi\u0105zania. Ponadto wydzielaj\u0105c dedykowane konkretnym zadaniom serwery, \u0142atwo b\u0119dzie \u015bledzi\u0107 koszty poszczeg\u00f3lnych cz\u0119\u015bci rozwi\u0105zania.<\/li>\n\n\n\n<li><strong>Dynamiczne skalowanie<\/strong> \u2013 w momencie, gdy brakuje mocy obliczeniowej, przeskalowanie w g\u00f3r\u0119 czy wszerz serwera obliczeniowego nie stanowi \u017cadnego problemu\u2026 Je\u015bli tylko akceptujemy, \u017ce w tym momencie b\u0119dziemy wi\u0119cej p\u0142acili za ca\u0142\u0105 us\u0142ug\u0119. Oczywi\u015bcie je\u015bli nie potrzebujemy ju\u017c wi\u0119kszej mocy obliczeniowej, r\u00f3wnie sprawnie jak podczas skalowania w g\u00f3r\u0119 mo\u017cemy przeskalowa\u0107 serwery w d\u00f3\u0142. Stwarza to spore mo\u017cliwo\u015bci optymalizacji czasu poszczeg\u00f3lnych operacji oraz pozwala rozs\u0105dnie zarz\u0105dza\u0107 kosztami.<\/li>\n\n\n\n<li><strong>Niemal ca\u0142kowity brak nak\u0142ad\u00f3w administracyjnych<\/strong> \u2013 na podstawowym poziomie nie musimy zajmowa\u0107 si\u0119, wa\u017cnymi przecie\u017c w innych silnikach bazodanowych zagadnieniami, takimi jak tworzenie indeks\u00f3w i innych struktur optymalizacyjnych. Dzi\u0119ki opcji Time Travel pozwalaj\u0105cej nam, w i\u015bcie magiczny spos\u00f3b, przegl\u0105da\u0107 stan danych sprzed r\u00f3\u017cnorakich operacji (aktualizacja, usuni\u0119cie rekord\u00f3w czy nawet usuni\u0119cie tabeli) mo\u017cliwe jest podej\u015bcie (aczkolwiek polecam tu rozwag\u0119), w kt\u00f3rym nie tworzy si\u0119 backup\u00f3w.<\/li>\n\n\n\n<li>\u00a0<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Czy Snowflake ma jakie\u015b wady?<\/h2>\n\n\n\n<p>Owszem ma i z mojej perspektywy s\u0105 to przede wszystkim:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Brak mo\u017cliwo\u015bci tworzenia procedur sk\u0142adowanych w czystym j\u0119zyku SQL<\/strong> \u2013 owszem mo\u017cna tworzy\u0107 procedury, ale trzeba posi\u0142kowa\u0107 si\u0119 elementami j\u0119zyka JavaScript, co w pewnym sensie stoi w konflikcie z jak najmniejsz\u0105 liczb\u0105 element\u00f3w kt\u00f3re musz\u0105 by\u0107 u\u017cyte w rozwi\u0105zaniu,<\/li>\n\n\n\n<li><strong>Troch\u0119 jeszcze niedopracowana warstwa widok\u00f3w systemowych<\/strong> \u2013 wydaje si\u0119, \u017ce mo\u017cna by zrealizowa\u0107 j\u0105 lepiej \u2013 ot, chocia\u017cby po to, aby lepiej \u015bledzi\u0107 czas zadzia\u0142ania mechanizm\u00f3w autoskalowania, \u0142\u0105czenie z okre\u015bleniem, kiedy nast\u0105pi\u0142o skalowanie w d\u00f3\u0142<\/li>\n\n\n\n<li><strong>Pewne trudno\u015bci w kontrolowaniu koszt\u00f3w us\u0142ugi \u201eCloud Service\u201d<\/strong> \u2013 w tym miejscu chodzi mi przede wszystkim o konieczno\u015b\u0107 monitorowania koszt\u00f3w zwi\u0105zanych z dzia\u0142aniem Snowflake, aby w odpowiednim momencie zareagowa\u0107 w wypadku zwi\u0119kszania si\u0119 koszt\u00f3w Cloud Service.<\/li>\n<\/ul>\n\n\n\n<p>Trzeba jednocze\u015bnie w tym miejscu zaznaczy\u0107, \u017ce <strong>Snowflake jest bardzo dynamicznie rozwijany i usprawniany, wi\u0119c najprawdopodobniej to, co dzi\u015b mo\u017ce by\u0107 jeszcze jakim\u015b problemem, nied\u0142ugo b\u0119dzie ju\u017c rozwi\u0105zane.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Snowflake \u2013 podsumowanie<\/h2>\n\n\n\n<p>Reasumuj\u0105c, uwa\u017cam, \u017ce Snowflake powinno rozwa\u017ca\u0107 si\u0119 jako podstawow\u0105 technologi\u0119 do realizacji hurtowni danych w nowym projekcie Business Intelligence. Jest tu oczywi\u015bcie par\u0119 niuans\u00f3w, na kt\u00f3re trzeba zwr\u00f3ci\u0107 uwag\u0119, i trzeba mie\u0107 pomys\u0142 na to, jak optymalnie u\u017cy\u0107 tej technologii. Jednak odpowiednie u\u017cycie Snowflake do budowy hurtowni danych w chmurze sprawia, \u017ce praca staje \u0142atwiejsza, projektem mo\u017cna skuteczniej zarz\u0105dza\u0107, a efekty pracy wida\u0107 du\u017co szybciej ni\u017c przy wykorzystaniu klasycznych silnik\u00f3w bazodanowych.<\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Zawsze by\u0142em zwolennikiem nieskomplikowanych architektur rozwi\u0105za\u0144 IT \u2013 im mniej komponent\u00f3w rozwi\u0105zania, tym \u0142atwiej zarz\u0105dza\u0107 ca\u0142ym systemem, szybciej mo\u017cna go rozwija\u0107 i skuteczniej utrzymywa\u0107. W praktyce jednak bardzo ci\u0119\u017cko znale\u017a\u0107 kompromis pomi\u0119dzy mo\u017cliwo\u015bciami konkretnych sk\u0142adowych rozwi\u0105zania a wymaganiami stawianymi przez klienta \u2013 st\u0105d i zdarza\u0142o mi si\u0119 pracowa\u0107 przy architekturach z\u0142o\u017conych z kilkunastu sk\u0142adnik\u00f3w. Na [&hellip;]<\/p>\n","protected":false},"author":125,"featured_media":30446,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":78,"footnotes":""},"categories":[1,582],"tags":[51,576,564],"offering":[521],"class_list":["post-30438","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-business-intelligence","tag-cloud-engineering","tag-transformacja-cyfrowa","offering-modern-data-solutions"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/30438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/125"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=30438"}],"version-history":[{"count":3,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/30438\/revisions"}],"predecessor-version":[{"id":34499,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/30438\/revisions\/34499"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/30446"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=30438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=30438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=30438"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=30438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}