{"id":31530,"date":"2021-12-21T17:15:16","date_gmt":"2021-12-21T16:15:16","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/snowpipe-w-analizie-danych\/"},"modified":"2024-11-07T13:06:18","modified_gmt":"2024-11-07T12:06:18","slug":"snowpipe-w-analizie-danych","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/snowpipe-w-analizie-danych\/","title":{"rendered":"Need for Speed, czyli analiza danych ze Snowpipe"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Przejd\u017a do: <\/p>\n    <ol>\n                    <li><a href=\"#Snowpipe-co-to-takiego\">1.  Czym jest Snowpipe?<\/a><\/li>\n                    <li><a href=\"#Wydajno\u015b\u0107-Snowpipe\">2.  Wydajno\u015b\u0107 Snowpipe<\/a><\/li>\n                    <li><a href=\"#Kiedy-stosowa\u0107-Snowpipe?-Czyli-ETL-vs.-CDI\">3.  Kiedy stosowa\u0107 Snowpipe? ETL vs. CDI<\/a><\/li>\n                    <li><a href=\"#Snowpipe-jak-to-dzia\u0142a\">4.  Snowpipe: jak to dzia\u0142a? <\/a><\/li>\n                    <li><a href=\"#Przyk\u0142ady-u\u017cycia-Snowpipe\">5.   Przyk\u0142ady u\u017cycia Snowpipe<\/a><\/li>\n                    <li><a href=\"#Dobre-praktyki\">6.  Dobre praktyki<\/a><\/li>\n                    <li><a href=\"#Snowpipe-ile-to-kosztuje\">7.  Koszty<\/a><\/li>\n                    <li><a href=\"#Test-wydajno\u015bci-Snowpipe\">8.  Test wydajno\u015bci<\/a><\/li>\n                    <li><a href=\"#test-szybko\u015bci-Snowpipe\">9.  Test szybko\u015bci<\/a><\/li>\n                    <li><a href=\"#Snowpipe-czy-ma-jakie\u015b-wady\">10.  Wady Snowpipe<\/a><\/li>\n                    <li><a href=\"#Podsumowanie\">11.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Snowpipe-co-to-takiego\">Snowpipe \u2013 co to takiego?<\/h2>\n\n\n\n<p>Snowpipe jest bezserwerow\u0105 us\u0142ug\u0105 pozwalaj\u0105c\u0105 na <strong>\u0142adowanie danych tak szybko, jak szybko znajd\u0105 si\u0119 one w zasobie chmurowym. <\/strong>Platforma sama dobiera potrzebn\u0105 moc obliczeniow\u0105 do przetworzenia danych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Wydajno\u015b\u0107-Snowpipe\">Wydajno\u015b\u0107 Snowpipe<\/h2>\n\n\n\n<p>Kluczem do odpowiedniej wydajno\u015bci jest prawid\u0142owe u\u017cycie Snowflake i Snowpipe. Aby uzyska\u0107 po\u017c\u0105dane rezultaty, nale\u017cy traktowa\u0107 platform\u0119 jak <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/ewolucja-technik-modelowania-hurtowni-danych\">hurtowni\u0119 danych, <\/a>kt\u00f3ra pracuje na zestawach danych wi\u0119kszego rozmiaru ni\u017c pojedyncze transakcje.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Kiedy-stosowa\u0107-Snowpipe?-Czyli-ETL-vs.-CDI\">Kiedy stosowa\u0107 Snowpipe? Czyli ETL vs. CDI<\/h2>\n\n\n\n<p>Aby wiedzie\u0107, w jakich przypadkach warto u\u017cywa\u0107 Snowpipe, nale\u017cy zrozumie\u0107 g\u0142\u00f3wne r\u00f3\u017cnice pomi\u0119dzy koncepcjami klasycznymi (ETL czy ELT) a CDI (ang. <em>continuous data ingestion)<\/em>. W przypadku <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/modern-data-solutions\/\">klasycznych rozwi\u0105za\u0144 ETL<\/a> o konkretnej porze mamy dost\u0119pny pe\u0142ny zestaw danych, kt\u00f3ry jest pobierany, obrabiany i przeliczany. W przypadku CDI chcemy mie\u0107 dost\u0119p do danych \u201eju\u017c\u201d i mog\u0105 si\u0119 one pojawi\u0107 w ka\u017cdym momencie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Snowpipe-jak-to-dzia\u0142a\">Snowpipe \u2013 jak to dzia\u0142a? <\/h2>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image image-on-desktop\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.12.22_graphic1.png\" alt=\"snowpipe - jak dzia\u0142a\" class=\"wp-image-58112\" style=\"width:750px;height:159px\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Idea dzia\u0142ania Snowpipe jest jednakowa dla 3 g\u0142\u00f3wnych \u015brodowisk chmurowych<strong> (Azure, AWS, GCP).<\/strong><\/p>\n\n\n\n<p>Wyr\u00f3\u017cni\u0107 mo\u017cna 4 g\u0142\u00f3wne komponenty:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Storage<\/strong> \u2013 miejsce sk\u0142adowania plik\u00f3w p\u0142askich.<\/li>\n\n\n\n<li><strong>Notification Service<\/strong> \u2013 us\u0142uga informuj\u0105ca Snowpipe Service, \u017ce pojawi\u0142y si\u0119 nowe pliki.<\/li>\n\n\n\n<li><strong>Snowpipe Service<\/strong> \u2013 przestrze\u0144 w chmurze, kt\u00f3ra dzia\u0142a w spos\u00f3b bezobs\u0142ugowy (konfiguracja nie jest wymagana przy zmianach wolumenu danych).<\/li>\n\n\n\n<li><strong>Snowflake Database<\/strong> \u2013 finalne miejsce sk\u0142adowania danych z plik\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p>W momencie pojawienia si\u0119 pliku w miejscu sk\u0142adowania narz\u0119dzie chmurowe, np. Azure Event Grid,&nbsp;wysy\u0142a powiadomienie do Snowpipe Service, aby ten rozpocz\u0105\u0142 \u0142adowanie plik\u00f3w do bazy <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/snowflake-czyli-lawina-mozliwosci\">Snowflake<\/a>. Snowpipe sam rozpozna pliki, kt\u00f3re ju\u017c raz zosta\u0142y za\u0142adowane, wi\u0119c natychmiastowe usuwanie poprzednio za\u0142adowanych plik\u00f3w nie jest wymagane.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Przyk\u0142ady-u\u017cycia-Snowpipe\">Przyk\u0142ady u\u017cycia Snowpipe<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Analiza danych z medi\u00f3w spo\u0142eczno\u015bciowych<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Jednym z zastosowa\u0144 Snowpipe mo\u017ce by\u0107 analiza danych z medi\u00f3w spo\u0142eczno\u015bciowych. Platformy takie jak Twitter, LinkedIn itp. pozwalaj\u0105 na automatyczne pobieranie post\u00f3w o zadanych parametrach czy danych o u\u017cytkowniku (takich jak np. geolokalizacja, ca\u0142y tekst tweeta, hashtagi itp.). Mo\u017cemy wi\u0119c \u015bci\u0105gn\u0105\u0107 informacj\u0119 o postach czy polubieniach pod postem o produkcie, przeprowadzi\u0107 scoring u\u017cytkownika, czyli oszacowa\u0107 jego potencja\u0142 zakupowy, wykorzystuj\u0105c model Machine Learningowy, a nast\u0119pnie wys\u0142a\u0107 mu spersonalizowan\u0105 wiadomo\u015b\u0107: \u201eTen produkt dost\u0119pny jest u nas taniej\u201d. Wszystko to przed up\u0142ywem minuty! Wykorzystanie Snowpipe mo\u017ce wi\u0119c prze\u0142o\u017cy\u0107 si\u0119 na zwi\u0119kszenie sprzeda\u017cy w e-commerce dzi\u0119ki natychmiastowemu reagowaniu na dzia\u0142ania konkurencji.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zarz\u0105dzanie danymi kluczowymi dla organizacji <\/strong><\/li>\n<\/ul>\n\n\n\n<p>CDI jest \u015bwietnym dope\u0142nieniem klasycznych proces\u00f3w zasilania hurtowni danych. Przyk\u0142adowo, nocny proces ETL mo\u017ce procesowa\u0107 pe\u0142ny zestaw danych, a Snowpipe dodawa\u0107 kluczowe dane, kt\u00f3re musz\u0105 by\u0107 zawsze aktualne. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Analiza danych z urz\u0105dze\u0144 IoT<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Wed\u0142ug raportu <a href=\"https:\/\/thestateofiot.com\/\" target=\"_blank\" rel=\"noopener\">\u201eState of IoT 2021\u201d<\/a> liczba urz\u0105dze\u0144 mobilnych podpi\u0119tych do sieci ro\u015bnie i przekroczy\u0142a ju\u017c 2 mld. Przek\u0142ada si\u0119 to na potrzeb\u0119 coraz wydajniejszej analizy danych. Snowpipe pozwala na analiz\u0119 danych z samochod\u00f3w, informacji z urz\u0105dze\u0144 domowych czy log\u00f3w z telefon\u00f3w w czasie rzeczywistym.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Dobre-praktyki\">Dobre praktyki<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Optymalny rozmiar plik\u00f3w powinien mie\u015bci\u0107 si\u0119 w przedziale <strong>mi\u0119dzy 100 a 250 MB<\/strong> (nie jest to jednak wymagane). Kluczowym za\u0142o\u017ceniem rozwi\u0105zania ma by\u0107 szybko\u015b\u0107 \u2013 je\u015bli nie mamy odpowiedniej ilo\u015bci danych, agregujemy to, co si\u0119 da, w mo\u017cliwe najwi\u0119kszym pliku i tak \u0142adujemy. Unikamy tworzenia plik\u00f3w transakcyjnych, np. 1 wierszem, poniewa\u017c powoduje to problem z wydajno\u015bci\u0105, gdy plik\u00f3w jest du\u017co, oraz mo\u017ce nas narazi\u0107 na dodatkowe koszty.<\/li>\n\n\n\n<li>Wydajne \u0142adowanie danych za pomoc\u0105 zapytania <strong>COPY INTO.<\/strong><\/li>\n\n\n\n<li>Usuwanie plik\u00f3w historycznych. Nadmiar plik\u00f3w w miejscu sk\u0142adowania spowalnia ich obs\u0142ug\u0119, co winduje koszty.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Snowpipe-ile-to-kosztuje\">Snowpipe \u2013 ile to kosztuje?<\/h2>\n\n\n\n<p>U\u017cytkownik us\u0142ugi Snowpipe p\u0142aci za czas \u0142adowania zgodnie z naliczaniem sekundowym. 0,06 kredytu za ka\u017cde 1000 za\u0142adowanych plik\u00f3w. Je\u017celi na blobie istniej\u0105 pliki niepasuj\u0105ce do wzorca lub wcze\u015bniej za\u0142adowane, koszt nie zostanie naliczony.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Test-wydajno\u015bci-Snowpipe\">Test wydajno\u015bci Snowpipe<\/h2>\n\n\n\n<p>Poni\u017cej znajduje si\u0119 wyci\u0105g rachunku za Snowpipe, kt\u00f3ry co 30 sekund pr\u00f3bowa\u0142 przetworzy\u0107 1000 plik\u00f3w z 1 tweetem (Function App na najni\u017cszym poziomie nie dostarcza\u0142 danych dostatecznie szybko, wi\u0119c koszt jest ni\u017cszy, ni\u017c by\u0107 powinien. Przedstawiony koszt odpowiada przeprocesowaniu mniej wi\u0119cej 400000 plik\u00f3w na godzin\u0119) bez usuwania plik\u00f3w historycznych.<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full image-on-desktop\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.12.22_graphic2.png\" alt=\"snowflake - test\" class=\"wp-image-58116\" title=\"\"><\/figure>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Poni\u017cej znajduje si\u0119 koszt obs\u0142ugi ok. 600 plik\u00f3w i 400 tys. tweet\u00f3w w nich zawartych co godzin\u0119 z usuwaniem plik\u00f3w historycznych<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full image-on-desktop\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.12.22_graphic3.png\" alt=\"snowflake - test\" class=\"wp-image-58120\" title=\"\"><\/figure>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jak wida\u0107, nieprawid\u0142owa obs\u0142uga Snowpipe mo\u017ce wygenerowa\u0107 nawet niemal 36-krotnie wy\u017cszy rachunek za 10 razy mniej obs\u0142u\u017conych tweet\u00f3w. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"test-szybko\u015bci-Snowpipe\">Od zera do 100k w 5 sekund&#8230; Czyli test szybko\u015bci Snowpipe<\/h2>\n\n\n\n<p>Jak szybko mo\u017cna \u0142adowa\u0107 pliki do bazy? Wykres poni\u017cej przedstawia&nbsp;1,5-godzinny test.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>O\u015b x \u2013<\/strong> przedstawia liczb\u0119 tweet\u00f3w.<\/li>\n\n\n\n<li><strong>O\u015b y <\/strong>\u2013 przedstawia r\u00f3\u017cnic\u0119 czasu w sekundach mi\u0119dzy pojawieniem si\u0119 pliku na blobie a za\u0142adowaniem go do bazy.<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 image-on-desktop\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/JPro_2021.12.22_graphic4.png\" alt=\"test wydajno\u015bci Snowpipe\" class=\"wp-image-58124\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jak wida\u0107, zdecydowana wi\u0119kszo\u015b\u0107 tweet\u00f3w trafia do bazy <strong>w pierwszych 5 sekundach.&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Snowpipe-czy-ma-jakie\u015b-wady\">Snowpipe \u2013 czy ma jakie\u015b wady?&nbsp;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Brak trigger\u00f3w <\/strong>\u2013 Snowflake jako platforma nie posiada klasycznych trigger\u00f3w dzia\u0142aj\u0105cych na wierszu, co ogranicza niekt\u00f3re rozwi\u0105zania. Istnieje jednak mo\u017cliwo\u015b\u0107 symulowania swego rodzaju \u201etriggera\u201d (trigger w cudzys\u0142owie, poniewa\u017c tak naprawd\u0119 rozwi\u0105zanie to triggerem nie jest). Wystarczy za\u0142o\u017cy\u0107 w tabeli stream, a nast\u0119pnie ustawi\u0107 task, kt\u00f3ry b\u0119dzie si\u0119 uruchamia\u0142 w kr\u00f3tkim odst\u0119pie czasu i sprawdza\u0142, czy w streamie s\u0105 nowe dane. Tym sposobem mo\u017cemy mie\u0107 \u201etrigger\u201d dzia\u0142aj\u0105cy z op\u00f3\u017anieniem na wi\u0119kszym zestawie danych.<\/li>\n\n\n\n<li><strong>Brak opcji purge w COPY INTO<\/strong> \u2013 polecenie COPY INTO zawarte w Snowpipe jest nieco okrojone, brak opcji kasowania zmienia proste czyszczenie zaczytanych plik\u00f3w w przymus sprawdzania, co si\u0119 zaczyta\u0142o, i usuwania. Alternatywnie mo\u017cna kasowa\u0107 pliki starsze ni\u017c ok. 15 minut.<\/li>\n\n\n\n<li><strong>Wymuszona obs\u0142uga przechowywania w chmurze<\/strong> \u2013 jest to w\u0142a\u015bciwie cecha, a nie wada, ale dla niekt\u00f3rych rozwi\u0105za\u0144 (jak storage chmurowy Azure Blob czy S3) mo\u017ce by\u0107 to problem, poniewa\u017c nie mamy mo\u017cliwo\u015bci zaczytania danych z dysku sieciowego czy Sharepointa.<\/li>\n\n\n\n<li><strong>Pierwsza implementacja<\/strong> \u2013 dokumentacja Snowflake&nbsp;jest bardzo czytelna, ale mimo to nie uda\u0142o mi si\u0119 zaimplementowa\u0107 rozwi\u0105zania, wykonuj\u0105c wdro\u017cenie w 100% wedle dokumentacji. Jedn\u0105 z r\u00f3\u017cnic stanowi\u0142y uprawnienia powiadomie\u0144 do kolejki, kt\u00f3re zaczyna\u0142y dzia\u0142a\u0107 dopiero, gdy nada\u0142em je na poziomie ca\u0142ego bloba. Drugi problem polega\u0142 na znalezieniu w\u0142a\u015bciwego komponentu do obs\u0142ugi event\u00f3w (jest nim Event Grid System Topic). Nie licz\u0105c tych dw\u00f3ch drobnych nie\u015bcis\u0142o\u015bci, reszta implementacji przebieg\u0142a ju\u017c bez problemu.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p>Snowpipe oraz idea CDI nie musi zast\u0119powa\u0107 klasycznych rozwi\u0105za\u0144 ETL czy ELT \u2013 jest raczej ich naturalnym dope\u0142nieniem. <strong>Sprawdza si\u0119 \u015bwietnie wsz\u0119dzie tam, gdzie liczy si\u0119 czas reakcji. <\/strong>Poprawnie zaimplementowany, Snowpipe b\u0119dzie <strong>ta\u0144szy i szybszy ni\u017c jego klasyczny odpowiednik.&nbsp; <\/strong><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Narz\u0119dzia analizy biznesowej musz\u0105 dzi\u015b szybko reagowa\u0107 na zmian\u0119 danych i dostarcza\u0107 informacje niemal w czasie rzeczywistym. W przypadku obszernych rozwi\u0105za\u0144 bazodanowych przeliczanie modelu odbywa si\u0119 raz dziennie, a wszystko, co zmieni si\u0119 po tym procesie, odzwierciedlenie w danych b\u0119dzie mia\u0142o dopiero nast\u0119pnego dnia. Problem ten zazwyczaj rozwi\u0105zywany jest przy pomocy kolejnych proces\u00f3w ETL lub ELT, kt\u00f3re r\u00f3wnie\u017c odbywaj\u0105 si\u0119 zgodnie z okre\u015blonymi harmonogramami. Odpowiedzi\u0105 na potrzeby analizy danych \u201etu i teraz\u201d jest platforma Snowflake, kt\u00f3ra pozwala na wydajniejsze zarz\u0105dzanie danymi przy pomocy Snowpipe.<\/p>\n","protected":false},"author":177,"featured_media":31544,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":15,"footnotes":""},"categories":[1,582],"tags":[51],"offering":[521],"class_list":["post-31530","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-business-intelligence","offering-modern-data-solutions"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31530","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\/177"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=31530"}],"version-history":[{"count":3,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31530\/revisions"}],"predecessor-version":[{"id":33820,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31530\/revisions\/33820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/31544"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=31530"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=31530"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=31530"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=31530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}