{"id":31188,"date":"2022-09-07T12:28:20","date_gmt":"2022-09-07T10:28:20","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/big-data-azure\/"},"modified":"2024-11-07T13:36:05","modified_gmt":"2024-11-07T12:36:05","slug":"big-data-azure","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/big-data-azure\/","title":{"rendered":"Big Data w chmurze Azure\u00a0"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<div class=\"table-of-contents\">\n    <p class=\"title\"><\/p>\n    <ol>\n                    <li><a href=\"#Big-Data-w-chmurze-dla-ka\u017cdego?\">1.  Big Data w chmurze dla ka\u017cdego?\u00a0\u00a0<\/a><\/li>\n                    <li><a href=\"#Ekosystem-Azure'a-a-architektura-Big-Data\">2.  Ekosystem Azure&#8217;a a architektura Big Data\u00a0<\/a><\/li>\n                    <li><a href=\"#Us\u0142ugi-sk\u0142adowania-danych-(bez-limitu)\">3.  Us\u0142ugi sk\u0142adowania danych (bez limitu)\u00a0<\/a><\/li>\n                    <li><a href=\"#Azure-Stream-Analytics-(AStA)-\u2013-przetwarzanie-strumieniowe-PaaS\">4.  Azure Stream Analytics (AStA) \u2013 przetwarzanie strumieniowe PaaS\u00a0<\/a><\/li>\n                    <li><a href=\"#Azure-Synapse-Analitics-i-Azure-Databricks-\u2013-pojedynek-gigant\u00f3w\">5.  Azure Synapse Analitics i Azure Databricks \u2013 pojedynek gigant\u00f3w\u00a0<\/a><\/li>\n                    <li><a href=\"#Azure-Synapse-Analytics-\u2013-hurtownia-Big-Data\">6.  Azure Synapse Analytics \u2013 hurtownia Big Data<\/a><\/li>\n                    <li><a href=\"#Azure-Databricks-\u2013-architektura-Lakehouse\">7.  Azure Databricks \u2013 architektura Lakehouse\u00a0<\/a><\/li>\n                    <li><a href=\"#Cloud-przysz\u0142o\u015bci\u0105-Big-Data\">8.  Cloud przysz\u0142o\u015bci\u0105 Big Data\u00a0 <\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Big-Data-w-chmurze-dla-ka\u017cdego?\">Big Data w chmurze dla ka\u017cdego?&nbsp;&nbsp;<\/h2>\n\n\n\n<p>Termin <strong>\u201eBig Data\u201d <\/strong>oryginalnie zosta\u0142 stworzony ponad 30 lat temu, ale jak wszystko w IT, w ci\u0105gu 3 dekad ewoluowa\u0142 i rozwija\u0142 si\u0119, towarzysz\u0105c ekspansji Internetu i \u017ar\u00f3de\u0142 informacji. Do niedawna by\u0142 to termin opisuj\u0105cy systemy, na kt\u00f3re mog\u0142y sobie pozwoli\u0107 jedynie wielkie korporacje i wiod\u0105ce startupy z du\u017cym finansowaniem \u2013 wymaga\u0142o to wszak wielkich nak\u0142ad\u00f3w kapita\u0142owych na rozproszone klastry utrzymuj\u0105ce infrastruktur\u0119 Big Data. Nic dziwnego, \u017ce na wy\u0142uskiwaniu informacji w wielkiej skali zbudowa\u0142y swoj\u0105 pot\u0119g\u0119 takie korporacje jak Google czy Facebook. Liderzy obserwuj\u0105cy, co si\u0119 dzieje na rynku, nie mogli zaprzeczy\u0107, \u017ce zbieranie i analiza du\u017cych zbior\u00f3w danych mo\u017ce da\u0107 wymierne korzy\u015bci biznesowe.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Ch\u0119\u0107 zbudowania nowej warto\u015bci w oparciu o wielkoskalow\u0105 analiz\u0119 danych ros\u0142a, ale brak by\u0142o odpowiednich narz\u0119dzi, aby sprawdzi\u0107 potencja\u0142 drzemi\u0105cy w danych, jednocze\u015bnie zachowuj\u0105c rozs\u0105dne koszty (np. w modelu <strong><em>try-before-buy<\/em><\/strong>). Na t\u0119 potrzeb\u0119 odpowiedzieli dostawcy platform chmurowych, oferuj\u0105c w ostatnich latach ogromn\u0105 ilo\u015b\u0107 us\u0142ug zorientowanych na przetwarzanie danych \u2013 niekt\u00f3re wprost w <strong>modelu PaaS<\/strong> (Platform-as-Service). W wyniku tego mo\u017cemy zaobserwowa\u0107 eksplozj\u0119 popularno\u015bci system\u00f3w chmurowych Big Data. Po prostu dzisiaj ju\u017c ka\u017cdego sta\u0107 na to, \u017ceby spr\u00f3bowa\u0107 wycisn\u0105\u0107 ze swoich wielkich zbior\u00f3w danych maksimum informacji i\u2026 warto\u015bci.&nbsp;&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/kim-jest-devops-i-jak-wspiera-projekty-it\/\">Przeczytaj tak\u017ce:<strong> Kim jest DevOps?<\/strong><\/a><\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Ekosystem-Azure'a-a-architektura-Big-Data\">Ekosystem Azure&#8217;a a architektura Big Data&nbsp;<\/h2>\n\n\n\n<p>Na przestrzeni kilkunastu lat ugruntowa\u0142y si\u0119 dwa podstawowe modele wysokopoziomowej architektury Big Data \u2013 Lambda i Kappa. Model Lambda mo\u017ce uchodzi\u0107 za fundamentalny. W jego sk\u0142ad wchodz\u0105:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Magazyny danych (ang. <em>Stores<\/em>).&nbsp;<\/li>\n\n\n\n<li>Systemy przetwarzania wsadowego (ang. <em>Batch Layer<\/em>).&nbsp;<\/li>\n\n\n\n<li>Systemy przetwarzania strumieniowego \u2013 w czasie zbli\u017conym do rzeczywistego (ang. <em>Speed Layer<\/em>, <em>Near-Realitme \u2013 Stream Processing Systems<\/em>).&nbsp;<\/li>\n\n\n\n<li>Magazyny udost\u0119pniaj\u0105ce dane i wyniki analiz (ang. <em>Serving Layer<\/em>).&nbsp;<br><br><\/li>\n<\/ul>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.08.31_graphic_1.png\" alt=\"Azure big data analytics \" class=\"wp-image-67853\" title=\"\"><figcaption class=\"wp-element-caption\">\u0179r\u00f3d\u0142o: materia\u0142y w\u0142asne autora<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W modelu Lambda oba systemy przetwarzania danych s\u0105 niezale\u017cne i r\u00f3wnoleg\u0142e. W mi\u0119dzyczasie powsta\u0142a koncepcja architektury Kappa, w kt\u00f3rej model przetwarzania strumieniowego jest podstawowym elementem, a model przetwarzania wsadowego jest niejako procesem potomnym. Jest to model prostszy, ale bardziej wyspecjalizowany \u2013 odpowiedni w przypadku, gdy g\u0142\u00f3wnymi \u017ar\u00f3d\u0142ami danych s\u0105 dane nap\u0142ywaj\u0105ce w czasie rzeczywistym (np. logi, tweety \/ wiadomo\u015bci, komunikaty z urz\u0105dze\u0144 IoT).&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Us\u0142ugi-sk\u0142adowania-danych-(bez-limitu)\">Us\u0142ugi sk\u0142adowania danych (bez limitu)&nbsp;<\/h2>\n\n\n\n<p>Centralnym elementem ka\u017cdego systemu Big Data s\u0105 magazyny danych. W nich przechowujemy ogromne ilo\u015bci surowych (nieprzetworzonych) danych, kt\u00f3re zebrali\u015bmy ze \u017ar\u00f3de\u0142, ale tak\u017ce zbiory \u201epotomne\u201d powsta\u0142e w procesie transformacji, korelacji i analizy danych \u017ar\u00f3d\u0142owych. Azure umo\u017cliwia przechowywanie danych w dw\u00f3ch typach magazyn\u00f3w: <strong>Azure Storage (AS) i Azure Data Lake Storage (ADLS). <\/strong>W przypadku obu us\u0142ug rozliczani jeste\u015bmy za rozmiar sk\u0142adowanych danych i operacje na nich wykonane (podstawowe: zapis i odczyt oraz inne). Magazyn Azure Storage opr\u00f3cz mo\u017cliwo\u015bci sk\u0142adowania du\u017cych plik\u00f3w (Blob) ma te\u017c \u201ewbudowane\u201d dodatkowe us\u0142ugi:&nbsp;&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Files <\/strong>\u2013 serwer plik\u00f3w udost\u0119pniaj\u0105cy pliki z wykorzystaniem protoko\u0142u SMB.&nbsp;&nbsp;<\/li>\n\n\n\n<li><strong>Tables <\/strong>\u2013 <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/nosql-vs-sql-bazy-danych\" data-type=\"jpro\" data-id=\"62738\">Baza NoSQL<\/a> dzia\u0142aj\u0105ca na zasadzie Klucz \/ Warto\u015b\u0107 (<em>Key \/ Value<\/em>).&nbsp;&nbsp;<\/li>\n\n\n\n<li><strong>Queues <\/strong>\u2013 prosty system kolejkowy wymiany danych.&nbsp;&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Poniewa\u017c ka\u017cda z tych \u201edodatkowych\u201d us\u0142ug mo\u017ce \u0142atwo zosta\u0107 zast\u0105piona przez dedykowan\u0105 us\u0142ug\u0119 Azure, to ci\u0105gle podstawow\u0105 funkcj\u0105 AS i ADLS jest sk\u0142adowanie du\u017cych zbior\u00f3w danych.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Przyjrzyjmy si\u0119 im bardziej szczeg\u00f3\u0142owo:&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Azure Blob Storage (ABS)&nbsp;&nbsp;<\/h3>\n\n\n\n<p>ABS pojawi\u0142 si\u0119 na Azure kilka lat temu. Jego podstawowe cechy to:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sk\u0142adowanie danych bez limitu (standardowy limit \u2013 kt\u00f3ry jednak mo\u017cna usun\u0105\u0107 \u2013 to ponad 5 PB).&nbsp;&nbsp;<\/li>\n\n\n\n<li>Limit dla pojedynczego pliku danych (blob) to 4,7 TB.&nbsp;&nbsp;<\/li>\n\n\n\n<li>Wyst\u0119puje w dw\u00f3ch podstawowych rodzajach (ang. <em>Tiers<\/em>) Standard i Premium (Premium jest lepiej przystosowany do obs\u0142ugi plik\u00f3w o mniejszych rozmiarach).&nbsp;<\/li>\n\n\n\n<li>Umo\u017cliwia sk\u0142adowanie w kilku warstwach (ang. <em>Access Tiers<\/em>) \u2013 Premium, Hot, Cool, Archive r\u00f3\u017cni\u0105cych si\u0119 cen\u0105, wydajno\u015bci\u0105 i kosztem operacji \u2013 im \u201ezimniejsza\u201d warstwa, tym ta\u0144sze sk\u0142adowanie (przestrze\u0144), ale wolniejsze i dro\u017csze s\u0105 operacje dost\u0119pu do danych.&nbsp;<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Azure Data Lake Storage (ADLS)&nbsp;<\/h3>\n\n\n\n<p>Us\u0142uga ADLS zosta\u0142a zbudowana jako rozszerzenie ABS, umo\u017cliwiaj\u0105c sk\u0142adowanie danych w hierarchicznym systemie plik\u00f3w (ang. <em>Hierarchical Namespace<\/em>) \u2013 ABS sk\u0142aduje bowiem bloby w prostym systemie plik\u00f3w, opartym na s\u0142owniku Klucz \/ Warto\u015b\u0107 (ang. <em>Flat Namespace<\/em>). U\u017cycie hierarchicznego systemu plik\u00f3w to niew\u0105tpliwie udogodnienie, co mo\u017cna zaobserwowa\u0107 przy atomowych operacjach dotycz\u0105cych du\u017cej liczby blob\u00f3w, jak np. przeniesienie w inne miejsce. ADLS z takim systemem plik\u00f3w jest te\u017c bardziej wydajny, ale s\u0105 dwa punkty, w kt\u00f3rych przegrywa ze starsz\u0105 us\u0142ug\u0105:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Jest troch\u0119 dro\u017cszy w zakresie kosz\u00f3w operacji na danych.&nbsp;&nbsp;<\/li>\n\n\n\n<li>Ma nieznacznie ograniczone mo\u017cliwo\u015bci, je\u017celi chodzi o zabezpieczenie przed wszelkiego rodzaju katastrofami \u2013 magazyn ADLS mo\u017ce mie\u0107 redundantn\u0105 kopi\u0119 w innym rejonie \u015bwiata, ale prze\u0142\u0105czenie na kopi\u0119 mo\u017ce by\u0107 uruchomione jedynie przez Microsoft, gdy zorientuje si\u0119, \u017ce co\u015b nie dzia\u0142a. W przypadku starszej us\u0142ugi ASB kopi\u0119 mo\u017ce prze\u0142\u0105czy\u0107 sam u\u017cytkownik z poziomu portalu Azure&#8217;a. Niby to drobnostka, ale w przypadku system\u00f3w krytycznych dla biznesu mo\u017ce mie\u0107 znaczenie.&nbsp;<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Azure-Stream-Analytics-(AStA)-\u2013-przetwarzanie-strumieniowe-PaaS\">Azure Stream Analytics (AStA) \u2013 przetwarzanie strumieniowe PaaS&nbsp;<\/h2>\n\n\n\n<p>Jedn\u0105 z ciekawszych us\u0142ug przetwarzania danych udost\u0119pnionych przez Microsoft na platformie Azure jest Azure Stream Analytics (na potrzeby tego artyku\u0142u b\u0119d\u0119 pos\u0142ugiwa\u0142 si\u0119 skr\u00f3tem<strong> AStA<\/strong>, dla odr\u00f3\u017cnienia od <strong>ASA \u2013 Azure Storage Account i Azure Sunapse Analytics)<\/strong>. Jako \u017ce jest to us\u0142uga strumieniowego przetwarzania danych udost\u0119pniona w modelu PaaS, nie dotkniemy tu \u201eserwer\u00f3w\u201d ani nie wybierzemy rozmiaru pami\u0119ci naszego silnika przetwarzania danych. Prawie wszystkie parametry skali przetwarzania sprowadzaj\u0105 si\u0119 do przypisania do zadania magicznego czynnika Streaming Units (SU). <strong>Wi\u0119ksze ilo\u015bci SU przyznaj\u0105 wi\u0119cej mocy procesora, pami\u0119ci do zadania, a tak\u017ce przy wi\u0119kszych ilo\u015bciach SU \u2013 wi\u0119ksz\u0105 liczb\u0119 instancji przetwarzaj\u0105cych strumie\u0144 danych r\u00f3wnolegle. <\/strong>Zadania AStA mog\u0105 by\u0107 wykonywane na wirtualnych klastrach wsp\u00f3\u0142dzielonych z innymi klientami Microsoftu (multi-tenant), jak r\u00f3wnie\u017c na izolowanym i dedykowanym klastrze (us\u0142uga Azure Stream Analytics Cluster) z zastrze\u017ceniem, \u017ce dedykowany klaster nie mo\u017ce alokowa\u0107 mniej jednostek ni\u017c 36 SU<strong> (oznacza to wi\u0119kszy koszt startowy).&nbsp;<\/strong><\/p>\n\n\n\n<p>AStA oferuje ciekawy spos\u00f3b oprogramowania zada\u0144 przetwarzania strumieniowego. Zadania tworzy si\u0119 tu w formie kwerendy (lub zestawu kwerend) z u\u017cyciem konkretnego rozszerzenia, j\u0119zyka T-SQL. Innymi s\u0142owy \u2013 kod zadania ASA wygl\u0105da jak SQL, z zastrze\u017ceniem, \u017ce niekt\u00f3re \u201ewirtualne tabele\u201d z kt\u00f3rych ASA czyta i do kt\u00f3rych pisze, to w rzeczywisto\u015bci \u017ar\u00f3d\u0142a danych strumieniowych (zwykle kolejki) i zbiory wyj\u015bciowe (tu mamy pe\u0142n\u0105 gam\u0119 mo\u017cliwo\u015bci zapisywania wynik\u00f3w do kolejek wyj\u015bciowych, zbior\u00f3w na Azure Storage, baz SQL i NoSQL, hurtowni czy systemu BI). Trudno si\u0119 oprze\u0107 wra\u017ceniu, \u017ce jest to rozwi\u0105zanie odzwierciedlaj\u0105ce mo\u017cliwo\u015bci platformy open-source zaproponowanej przez Confluent.io i opartej na <a href=\"http:\/\/jcommerce.local\/kariera\/biteit\/biteit-60-apache-kafka-jako-rozproszony-system-strumieniowego-przesylania\" data-type=\"bite-it\" data-id=\"51984\" target=\"_blank\" rel=\"noopener\">systemie Kafka<\/a> i j\u0119zyku KSQL.&nbsp;<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.08.31_graphic_2.png\" alt=\"Azure big data analytics \" class=\"wp-image-67857\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jako \u017ce podstaw\u0105 analizy strumieniowej jest analiza kontekstowa wymiarze czasu, to j\u0119zyk T-SQL us\u0142ugi ASA zosta\u0142 wyposa\u017cony w specjalne funkcje pozwalaj\u0105ce agregowa\u0107 wyniki kwerendy po kluczach i w odpowiednich interwa\u0142ach czasowych (agregaty per okno czasowe). Mamy tutaj takie mo\u017cliwo\u015bci jak:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tumbling Window <\/strong>\u2013 sta\u0142a agregacja jedynie po czasie \u2013 podsumowanie i generowanie wynik\u00f3w nast\u0119puje zawsze po okre\u015blonej liczbie sekund (periodycznie).&nbsp;<\/li>\n\n\n\n<li><strong>Hoping Window<\/strong> \u2013 sta\u0142a agregacja po czasie z przesuni\u0119ciem \u2013 okna czasowe, w kt\u00f3rych obliczane s\u0105 wyniki, mog\u0105 na siebie zachodzi\u0107, okno nast\u0119pne mo\u017ce si\u0119 zacz\u0105\u0107 przed zako\u0144czeniem poprzedniego.&nbsp;<\/li>\n\n\n\n<li><strong>Sliding Window <\/strong>\u2013 dynamiczna agregacja po czasie z oknami czasowymi sta\u0142ej d\u0142ugo\u015bci \u2013 ale granice okien czasowych s\u0105 wyznaczane przez kolejne rekordy pojawiaj\u0105ce si\u0119 na wej\u015bciu \u2013 okna czasowe zatem zaczynaj\u0105 si\u0119 i ko\u0144cz\u0105 w nieustalonych z g\u00f3ry momentach.&nbsp;<\/li>\n\n\n\n<li><strong>Session Window<\/strong> \u2013 dynamiczna agregacja po czasie z oknami czasowymi r\u00f3\u017cnej d\u0142ugo\u015bci \u2013 okno czasowe jest wyd\u0142u\u017cane (sesja), je\u017celi wybrane rekordy pojawiaj\u0105 si\u0119 odpowiednio cz\u0119sto.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Innymi ciekawymi rozszerzeniami T-SQL na u\u017cytek ASA s\u0105 funkcje geolokacyjne (ang. <em>Geospatial Functions<\/em>) oraz natywne mo\u017cliwo\u015bci czytania rekord\u00f3w wej\u015bciowych, kt\u00f3re s\u0105 zakodowane w postaci obiekt\u00f3w najcz\u0119\u015bciej transportowanych wielkoskalowymi kolejkami AVRO i JSON. Je\u017celi ktokolwiek chce szybko zbudowa\u0107 w Azure system strumieniowy, to z pewno\u015bci\u0105 u\u017cycie AStA jest jednym z pomys\u0142\u00f3w, kt\u00f3re warto rozwa\u017cy\u0107.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Azure-Synapse-Analitics-i-Azure-Databricks-\u2013-pojedynek-gigant\u00f3w\">Azure Synapse Analitics i Azure Databricks \u2013 pojedynek gigant\u00f3w&nbsp;<\/h2>\n\n\n\n<p>W ostatnim czasie podstawowym frameworkiem do analizy zbior\u00f3w Big Data sta\u0142 si\u0119 Spark. Jego niezaprzeczalne walory oparte na rozproszonym przetwarzaniu z u\u017cyciem samej tylko pami\u0119ci zosta\u0142y docenione przez ca\u0142\u0105 rzesz\u0119 u\u017cytkownik\u00f3w na \u015bwiecie. Konsekwencj\u0105 tej popularno\u015bci jest pojawienie si\u0119 Databricks \u2013 komercyjnej platformy pocz\u0105tkowo zorientowanej na to redukowanie niedogodno\u015bci zwi\u0105zanych z zarz\u0105dzaniem klastrami Sparka (Managed-Spark). W odpowiedzi na popularno\u015b\u0107 Databricks Microsoft przygotowa\u0142 swoj\u0105 wersj\u0119 platformy analitycznej Big Data. Oba rozwi\u0105zania konkuruj\u0105 ze sob\u0105, staraj\u0105c si\u0119 sprosta\u0107 wymaganiom nowoczesnych system\u00f3w Big Data \u2013 ka\u017cdy w troch\u0119 innym modelu.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Azure-Synapse-Analytics-\u2013-hurtownia-Big-Data\">Azure Synapse Analytics \u2013 hurtownia Big Data&nbsp;<\/h2>\n\n\n\n<p>Azure Synapse Analytics wspiera bodaj najpopularniejszy model organizacji danych w nowoczesnych systemach danych. Wszystko zosta\u0142o pomy\u015blane w taki spos\u00f3b, aby wspiera\u0107 architektur\u0119 danych nazywan\u0105 kiedy\u015b Two-Tier Data \u2013 zak\u0142adaj\u0105ca wsp\u00f3\u0142istnienie dw\u00f3ch r\u00f3wnoleg\u0142ych g\u0142\u00f3wnych magazyn\u00f3w danych:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DataLake<\/strong> \u2013 jako magazynu przechowuj\u0105cego dane nieustrukturyzowane oraz wst\u0119pnie przetworzone&nbsp;&nbsp;<\/li>\n\n\n\n<li><strong>Hurtowni danych <\/strong>\u2013 jako \u017ar\u00f3d\u0142a dla <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/system-business-intelligence-narzedzie-do-precyzyjnego-zarzadzania\" data-type=\"jpro\" data-id=\"53275\">system\u00f3w BI.&nbsp;<\/a><\/li>\n<\/ul>\n\n\n\n<p>Ten dwutorowy model powsta\u0142, gdy zorientowano si\u0119, \u017ce nie istnieje jedno rozwi\u0105zanie odpowiadaj\u0105ce potrzebom wszystkich popularnych przypadk\u00f3w u\u017cycia danych. Hurtownie s\u0105 znacznie wygodniejsze jako \u017ar\u00f3d\u0142a danych dla system\u00f3w opartych na SQL (w tym BI), ale du\u017co mniej wygodne, je\u017celi chodzi o eksploracj\u0119 danych (<a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/ai-machine-learning-i-big-data-czym-sa-i-co-dalej\" data-type=\"jpro\" data-id=\"53773\">Data Science<\/a>) oraz \u017ar\u00f3d\u0142o danych do trenowania modeli sztucznej inteligencji (Machine Learning). St\u0105d pomys\u0142, aby w systemie obydwa te byty istnia\u0142y r\u00f3wnolegle.&nbsp;<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.08.31_graphic_3.png\" alt=\"Microsoft Azure data lake \" class=\"wp-image-67861\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Azure Synapse Analytics w pe\u0142ni implementuje ten model. Centralnym elementem platformy jest tandem \u2013 wysoce skalowalna chmurowa hurtownia danych Azure Synapse DWH (<em>Built-in pool<\/em>) oraz \u015brodowisko zarz\u0105dzalnych klastr\u00f3w Spark do analiz danych w Data Lake. To jednak jeszcze nie wszystko. Pod jednym dachem Microsoft umie\u015bci\u0142 dodatkowe us\u0142ugi przetwarzania danych.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Znajdziemy tu zintegrowane:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data Factory <\/strong>\u2013 us\u0142uga integracji danych.&nbsp;<\/li>\n\n\n\n<li><strong>Serverless SQL Pools<\/strong> \u2013 system serwer\u00f3w SQL on-demand \u2013 gdzie u\u017cytkownik p\u0142aci jedynie za czas i zasoby zu\u017cyte do wykonania zapytania, bez ponoszenia koszt\u00f3w serwera czy maszyny wirtualnej.&nbsp;<\/li>\n\n\n\n<li><strong>Data Explorer<\/strong> \u2013 us\u0142uga analizy danych.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Ka\u017cd\u0105 z tych us\u0142ug mo\u017cna oprogramowa\u0107 w ich natywnym j\u0119zyku (SQL, KustoQL, Python, Scala, a nawet C#).&nbsp;<\/p>\n\n\n\n<p>Do dyspozycji mamy wi\u0119c o wiele wi\u0119cej ni\u017c prosty system hurtownia +&nbsp;Data Lake. Zyskujemy scentralizowan\u0105 platform\u0119 udost\u0119pniaj\u0105c\u0105 wszystko, co najlepsze pod dachem Microsoftu do analizy danych. Brawo za pomys\u0142!&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Azure-Databricks-\u2013-architektura-Lakehouse\">Azure Databricks \u2013 architektura Lakehouse&nbsp;<\/h2>\n\n\n\n<p><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/databricks\/\" target=\"_blank\" rel=\"noopener\">Azure Databricks j<\/a>ako bezpo\u015brednia konkurencja Azure Synapse Analytics realizuje troch\u0119 inny model. Ta strategia wynika z faktu, \u017ce Databricks powsta\u0142 jako \u015brodowisko do \u0142atwego zastosowania Sparka i koncepcja silnika Big Data jako centralnego elementu pozosta\u0142a tu silnie zakorzeniona. W ci\u0105gu dw\u00f3ch ostatnich lat Databricks zorientowa\u0142 si\u0119 jednak, \u017ce sam Spark nie wystarczy. Wraz ze swoimi partnerami rozbudowa\u0142 platform\u0119 o dodatkowe funkcjonalno\u015bci prowadz\u0105ce do powstania kompletnie nowego modelu platformy danych \u2013 <strong>Lakehouse Architecture<\/strong>.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Koncepcja Lakehouse w skr\u00f3cie bazuje na tym, \u017ce platforma ci\u0105gle polega na danych umieszczonych w Data Lake, ale udost\u0119pnia wi\u0119kszo\u015b\u0107 funkcjonalno\u015bci dost\u0119pnych dotychczas tylko w hurtowniach:&nbsp;<\/p>\n\n\n\n<ol id=\"block-f787f919-8dd8-4002-be92-eda2a76d28b1\" class=\"wp-block-list\">\n<li>Transakcyjno\u015b\u0107 \u2013 model ACID dla (niekt\u00f3rych) zbior\u00f3w Big Data.<\/li>\n\n\n\n<li>Wsparcie wysoce wydajnego silnika zapyta\u0144 SQL.<\/li>\n\n\n\n<li>Mechanizmy kontroli dost\u0119pu do\u00a0danych w\u00a0Data Lake (Data Governance).<\/li>\n\n\n\n<li>Wsparcie importu danych i\u00a0orkiestracje ETL.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.08.31_graphic_4.png\" alt=\"Big data - mo\u017cliwo\u015bci przetwarzania danych platformy Azure\" class=\"wp-image-67837\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Model Lakehouse to naprawd\u0119 ma\u0142a rewolucja. Zapewne nie b\u0119dzie on a\u017c tak wydajny jak model typu <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/ewolucja-technik-modelowania-hurtowni-danych\" data-type=\"jpro\" data-id=\"53515\">StarSchema<\/a> w dobrej hurtowni danych, ale koncepcja Lakehouse opiera si\u0119 na paradygmacie taniego sk\u0142adowania du\u017cych zbior\u00f3w danych. St\u0105d Databricks zak\u0142ada, \u017ce skoro sk\u0142adowanie danych jest tanie, mog\u0105 by\u0107 one przechowywane i organizowane w redundantnych kopiach (tabelach) skierowanych pod konkretne zastosowania \u2013 przy jednoczesnym za\u0142o\u017ceniu, \u017ce dane s\u0105 klasyfikowane w ich zaawansowaniu (koncepcja klas tabel Bronze-Silver-Gold).&nbsp;&nbsp;<\/p>\n\n\n\n<p>Patrz\u0105c z boku, Databricks zbli\u017ca si\u0119 do koncepcji reprezentowanych przez innych konkurent\u00f3w, np. do platformy Vertica z podobnym redundantnym i specjalizowanym modelem tabel.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">DeltaLake \u2013 transakcyjno\u015b\u0107 Big Data&nbsp;<\/h3>\n\n\n\n<p>Idea Lakehouse nie by\u0142aby kompletna bez wspierania koncepcji transakcyjno\u015bci. Oczywi\u015bcie transakcyjno\u015bci nie da si\u0119 \u0142atwo zaimplementowa\u0107 dla surowych i nieustrukturyzowanych danych, ale dla danych przetworzonych mo\u017cna si\u0119 ju\u017c o to pokusi\u0107. Do realizacji tego celu Databricks i partnerzy (Delta.io) zaproponowali nowy format zapisu tabel \u201ezarz\u0105dzanych\u201d o nazwie \u201eDelta\u201d. Delta to rozszerzenie koncepcji tabel opartych na formacie Parquet, czyli kolumnowym formacie plikowym. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.08.31_graphic_5.png\" alt=\"Batch processing using azure\" class=\"wp-image-67841\" style=\"width:375px;height:125px\" title=\"\"><\/figure>\n<\/div>\n\n\n<p>Delta zak\u0142ada, \u017ce obraz \u201etabeli\u201d reprezentowanej przez zestaw plik\u00f3w w magazynie nie opiera si\u0119 na prostej sumie wszystkich rekord\u00f3w ze wszystkich plik\u00f3w danych. Obok plik\u00f3w z danymi Delta utrzymuje tzw. Delta-Log, czyli zestaw plik\u00f3w opisuj\u0105cy transakcje na zbiorze. Innymi s\u0142owy, przy zmianie zawarto\u015bci tabeli w magazynie pojawiaj\u0105 si\u0119 nowe wersje starych plik\u00f3w ze zmienionymi danymi, a informacja o zako\u0144czonej transakcji (o tym, \u017ce nowy plik jest wa\u017cniejszy ni\u017c stary) jest zapisywana w Delta-Logu. Poniewa\u017c w tym samym momencie w zbiorach plik\u00f3w wyst\u0119puj\u0105 pliki z danymi z r\u00f3\u017cnych okres\u00f3w, w Delta-Logu przechowywane jest ich wersjonowanie. Dzi\u0119ki tej prostej koncepcji tabele Delta maj\u0105 cechy ACID, a przy tym\u2026 mo\u017cliwa jest podr\u00f3\u017c w czasie, tzn. mo\u017cna poprosi\u0107 o obraz tabeli z pewnego momentu w przesz\u0142o\u015bci. Oczywi\u015bcie w dowolnym momencie mo\u017cemy wyczy\u015bci\u0107 tabel\u0119 z plik\u00f3w \/ rekord\u00f3w historycznych, co spowoduje zmniejszenie jej wielko\u015bci w magazynie danych.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SQL Warehouse \u2013 SQL w s\u0142u\u017cbie Big Data&nbsp;<\/h3>\n\n\n\n<p>Natywnym j\u0119zykiem wielu rozwi\u0105za\u0144 klasy BI pozostaje SQL. Z tego powodu koncepcja Lakehouse musi uwzgl\u0119dnia\u0107 jak najszersze wsparcie dla tego j\u0119zyka. Oczywi\u015bcie podstawowa wersja silnika Sparka zawiera wbudowany \u201eSpark SQL\u201d, ale jego u\u017cyteczno\u015b\u0107 by\u0142a troch\u0119 ograniczona. W celu poprawienia tej sytuacji Databricks zaproponowa\u0142 nowy rodzaj silnika zapyta\u0144 o nazwie Photon oraz nowy typ klastr\u00f3w dla zapyta\u0144 SQL \u2013 <strong>SQL Warehouses<\/strong> (albo SQL endpoints). Ze wzgl\u0119du na to, \u017ce nowy silnik zapyta\u0144 wykorzystuje mocno cache klastry SQL Warehouse trzeba opiera\u0107 si\u0119 na troch\u0119 mocniejszych maszynach <strong>(w Azure to Standard_E8ds_v4, czyli 8 vCore&#8217;\u00f3w i 64 GB pami\u0119ci). <\/strong>Zwi\u0119kszony koszt pozostaje jednak pod kontrol\u0105, poniewa\u017c dzia\u0142aj\u0105 na nich wszystkie dotychczasowe mechanizmy autoskalowania w g\u00f3r\u0119 i w d\u00f3\u0142, a\u017c do osi\u0105gni\u0119cia limit\u00f3w okre\u015blonych przez administratora.&nbsp;&nbsp;<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.08.31_graphic_6.png\" alt=\"Azure Data Lake \" class=\"wp-image-67845\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Z moich obserwacji wynika, \u017ce zastosowanie nowego silnika i nowych klastr\u00f3w znacz\u0105co przyspieszy\u0142o wykonywanie zapyta\u0144 SQL na zbiorach Big Data. Oczywi\u015bcie poniewa\u017c ci\u0105gle pod spodem mamy zbiory plikowe, warto pokusi\u0107 si\u0119 o stworzenie w\u0142a\u015bciwej organizacji danych, nie wahaj\u0105c si\u0119 przed tworzeniem redundantnych i dedykowanych zbior\u00f3w pod najbardziej krytyczne zapytania \u2013 po to, \u017ceby umo\u017cliwi\u0107 silnikowi skorzystanie z optymalizator\u00f3w wykorzystuj\u0105cych partycjonowanie oraz dane indeks\u00f3w i metadane dost\u0119pne w niekt\u00f3rych typach plik\u00f3w (np. Delta).&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Unity Catalog \u2013 w\u0142a\u015bciwy Data Governance w Data Lake&nbsp;<\/h3>\n\n\n\n<p>Nie mo\u017cna by nazwa\u0107 rozwi\u0105zania przygotowanego przez Databricks hurtowni\u0105 danych bez rozbudowanego mechanizmu umo\u017cliwiaj\u0105cego zarz\u0105dzanie danymi. W tym celu Databricks zaimplementowa\u0142 nowy, lepszy mechanizm \u201ekatalogu danych\u201d, czyli metabazy przetrzymuj\u0105cej informacje o zbiorach danych i ich schematach widzianych jako tabele. W tradycyjnych \u015brodowiskach Big Data (r\u00f3wnie\u017c opartych na Sparku) ten element&nbsp;bazowa\u0142 na najpopularniejszym katalogu Hive Metastore albo katalogu Impala. Databricks zaproponowa\u0142 swoj\u0105 w\u0142asn\u0105 wersj\u0119 katalogu danych nazwan\u0105<strong> Unity Catalog. <\/strong>Unity Catalog pozwala na rozbudowan\u0105 kontrol\u0119 nad zbiorami Big Data:&nbsp;<\/p>\n\n\n\n<ul id=\"block-652fed0c-4323-43c8-a21d-562a1a031c36\" class=\"wp-block-list\">\n<li>System zarz\u0105dzania oparty na\u00a0instrukcjach ANSI SQL.<\/li>\n\n\n\n<li>Szczeg\u00f3\u0142owy audyt i\u00a0analiz\u0119 log\u00f3w dost\u0119pu do\u00a0danych.<\/li>\n\n\n\n<li>Przypisywanie uprawnie\u0144 do\u00a0zbior\u00f3w danych na\u00a0poziomie konta u\u017cytkownika.<\/li>\n\n\n\n<li>Wsparcie dla implementacji uprawnie\u0144 na\u00a0poziome rekord\u00f3w (<em>Row-Level Security<\/em>) oraz\u00a0kolumn (<em>Column-Masking Policy<\/em>).<\/li>\n\n\n\n<li>Scentralizowane i\u00a0bezpieczne przeszukiwanie metadanych \u2013 pozwalaj\u0105ce zrozumie\u0107, kt\u00f3re zbiory \/ tabele Big Data zawieraj\u0105 jakie dane.<\/li>\n\n\n\n<li>Wizualizacje powi\u0105za\u0144 mi\u0119dzy zbiorami \u2013 grafy przedstawiaj\u0105ce zale\u017cno\u015bci mi\u0119dzy zbiorami z\u00a0uwzgl\u0119dnieniem uprawnie\u0144 u\u017cytkownika korzystaj\u0105cego z\u00a0tej\u00a0funkcjonalno\u015bci.<\/li>\n\n\n\n<li>Lepsza efektywno\u015b\u0107 kwerend zbior\u00f3w zarejestrowanych w\u00a0Unity Catalog \u2013 wynikaj\u0105ca z\u00a0okre\u015blonego przeorganizowania katalogu i\u00a0przetrzymywania jego zapis\u00f3w w\u00a0pami\u0119ci w\u00a0skompresowanej formie.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jak wida\u0107 powy\u017cej, korzy\u015bci, kt\u00f3re wnosi nowy metastore Databricks, s\u0105 rewolucyjne. Migracja zwyk\u0142ego Hive Metastore do Unity Catalog jest prosta i na pewno warto to zrobi\u0107, \u017ceby wynie\u015b\u0107 poziom zarz\u0105dzania danymi na niespotykany dot\u0105d poziom.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Delta Sharing \u2013 udost\u0119pnianie danych na zewn\u0105trz&nbsp;<\/h3>\n\n\n\n<p>Najnowsza wersja platfrom Databricks wprowadza jeszcze jedn\u0105 u\u017cyteczn\u0105 funkcjonalno\u015b\u0107 \u2013 w pe\u0142ni kontrolowane udost\u0119pnianie danych na zewn\u0105trz. Proces ten jest realizowany z u\u017cyciem rozwi\u0105zania Delta Sharing, kt\u00f3re zosta\u0142o wbud<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"585\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2022\/09\/jpro_2022.08.31_graphic_7.png.webp\" alt=\"\" class=\"wp-image-33045\" title=\"\" srcset=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2022\/09\/jpro_2022.08.31_graphic_7.png.webp 750w, https:\/\/nearshore-it.eu\/wp-content\/uploads\/2022\/09\/jpro_2022.08.31_graphic_7.png-300x234.webp 300w, https:\/\/nearshore-it.eu\/wp-content\/uploads\/2022\/09\/jpro_2022.08.31_graphic_7.png-495x386.webp 495w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p>Takie rozwi\u0105zanie jest bardzo wygodne w&nbsp;przypadku gdy&nbsp;system Big Data zosta\u0142 oparty na&nbsp;danych od&nbsp;wielu klient\u00f3w (np.&nbsp;serwis\u00f3w typu multi-tenant). W\u0142a\u015bciciel systemu Big Data ma&nbsp;dost\u0119p do&nbsp;wszystkich udzielonych mu&nbsp;danych, maj\u0105c jednocze\u015bnie mo\u017cliwo\u015b\u0107 udost\u0119pnienia okre\u015blonych informacji\/wynik\u00f3w na&nbsp;zewn\u0105trz w&nbsp;taki spos\u00f3b, aby jego indywidualni partnerzy mieli dost\u0119p jedynie do&nbsp;swoich podzbior\u00f3w.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Cloud-przysz\u0142o\u015bci\u0105-Big-Data\">Cloud przysz\u0142o\u015bci\u0105 Big Data&nbsp;<\/h2>\n\n\n\n<p>M\u00f3j&nbsp;artyku\u0142 jedynie pobie\u017cnie poruszy\u0142 temat kilku wa\u017cnych us\u0142ug z&nbsp;portfolio Azure. \u017beby opisa\u0107 je&nbsp;dok\u0142adnie, potrzebny by\u0142by ca\u0142y cykl.&nbsp;<strong>Mam nadziej\u0119 jednak, \u017ce&nbsp;tre\u015b\u0107 zainteresowa\u0142a was na&nbsp;tyle, aby spr\u00f3bowa\u0107 swoich si\u0142 z&nbsp;tematem projektowania i&nbsp;implementacji system\u00f3w Big Data z&nbsp;u\u017cyciem Azure.<\/strong>&nbsp;Rewolucja oparta na&nbsp;danych trwa nadal. Warto si\u0119 sta\u0107 jej cz\u0119\u015bci\u0105. Je\u017celi macie jakie\u015b w\u0105tpliwo\u015bci lub pytania s\u0142u\u017cymy pomoc\u0105!&nbsp;&nbsp;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W ostatnich 5 latach Microsoft rozwin\u0105\u0142, i to znacznie, portfolio us\u0142ug przetwarzania danych na platformie chmurowej Azure. Jako Inetum Polska mieli\u015bmy okazj\u0119 obserwowa\u0107 ten rozw\u00f3j z bliska \u2013 jeden z naszych najwi\u0119kszych klient\u00f3w z bran\u017cy aerospace zdecydowa\u0142 si\u0119 budowa\u0107 now\u0105 generacj\u0119 swojego systemu w oparciu o platform\u0119 Azure. Rozwijaj\u0105c ten system na przestrzeni lat, zbudowali\u015bmy unikalne do\u015bwiadczenie w tym zakresie. Oczywi\u015bcie, nie jest mo\u017cliwe nawet pobie\u017cne opisanie us\u0142ug Azure&#8217;a w jednym artykule, ale postaram si\u0119 tutaj skupi\u0107 na najciekawszych elementach i us\u0142ugach tej platformy w kontek\u015bcie wzorcowej architektury Big Data.<\/p>\n","protected":false},"author":193,"featured_media":31208,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":32,"footnotes":""},"categories":[1,582],"tags":[576,571],"offering":[516],"class_list":["post-31188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-cloud-engineering","tag-nosql-pl","offering-cloud-engineering"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31188","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\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=31188"}],"version-history":[{"count":7,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31188\/revisions"}],"predecessor-version":[{"id":33841,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31188\/revisions\/33841"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/31208"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=31188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=31188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=31188"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=31188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}