{"id":72265,"date":"2020-03-03T08:42:17","date_gmt":"2020-03-03T05:42:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera"},"modified":"2020-03-03T16:13:51","modified_gmt":"2020-03-03T13:13:51","slug":"postgresql-antipatterns-menyaem-dannye-v-obhod-triggera","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera","title":{"rendered":"Antipatterns PostgreSQL: Ndryshimi i t\u00eb dh\u00ebnave p\u00ebrmes nj\u00eb trigger-i","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>N\u00eb nj\u00eb moment apo tjet\u00ebr, shum\u00eb njer\u00ebz p\u00ebrballen me nevoj\u00ebn p\u00ebr t\u00eb korrigjuar masivisht t\u00eb dh\u00ebnat n\u00eb tabela. Un\u00eb tashm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/481610\/\">kam folur p\u00ebr m\u00ebnyrat m\u00eb t\u00eb mira p\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb<\/a><\/noindex>, si dhe p\u00ebr at\u00eb si \u2014 nuk \u00ebsht\u00eb mir\u00eb t\u00eb b\u00ebhet. Sot do t\u00eb flas p\u00ebr aspektin e dyt\u00eb t\u00eb p\u00ebrdit\u00ebsimit masiv \u2014 <b>p\u00ebr funksionimin e trigger-ave<\/b>.<\/p>\n<p>P\u00ebr shembull, n\u00eb nj\u00eb tabel\u00eb, ku ju duhet t\u00eb b\u00ebni disa ndryshime, ka nj\u00eb trigger t\u00eb rreziksh\u00ebm <code>ON UPDATE<\/code>, i cili p\u00ebrcjell t\u00eb gjitha ndryshimet n\u00eb disa agregate. Dhe ju duhet t\u00eb p\u00ebrdit\u00ebsoni gjith\u00e7ka (p\u00ebr shembull, t\u00eb inicializoni nj\u00eb fush\u00eb t\u00eb re) n\u00eb nj\u00eb m\u00ebnyr\u00eb kaq delikate sa q\u00eb k\u00ebto aggregate t\u00eb mos preken.<\/p>\n<h2>Le t\u00eb mbyllim thjesht trigger-at!<\/h2>\n<p><\/p>\n<pre><code class=\"sql\">BEGIN;\n  ALTER TABLE ... DISABLE TRIGGER ...;\n  UPDATE ...; -- k\u00ebtu zgjat shum\u00eb\n  ALTER TABLE ... ENABLE TRIGGER ...;\nCOMMIT;<\/code><\/pre>\n<p>\nN\u00eb thelb, k\u00ebtu \u00ebsht\u00eb gjith\u00e7ka \u2014 <b>gjith\u00e7ka \u00ebsht\u00eb e aktivizuar<\/b>.<\/p>\n<p>Sepse <code>ALTER TABLE<\/code> vendos <b>AccessExclusive<\/b>-bllokimin, n\u00ebn t\u00eb cilin askush q\u00eb ekzekuton paralelisht, madje as nj\u00eb thjesht <code>SELECT<\/code>, nuk mund t\u00eb lexoj\u00eb asgj\u00eb nga tabela. Pra, derisa kjo transaksion t\u00eb p\u00ebrfundoj\u00eb, t\u00eb gjith\u00eb q\u00eb d\u00ebshirojn\u00eb madje \"thjesht t\u00eb lexojn\u00eb\" do t\u00eb presin. Dhe ne kujtojm\u00eb se <code>UPDATE<\/code> kemi nj\u00eb periudh\u00eb shum\u00eb t\u00eb gjat\u00eb...<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Le t\u00eb \u00e7aktivizojm\u00eb shpejt, pastaj ta aktivizojm\u00eb shpejt!<\/h4>\n<p><\/p>\n<pre><code class=\"sql\">BEGIN;\n  ALTER TABLE ... DISABLE TRIGGER ...;\nCOMMIT;\n\nUPDATE ...;\n\nBEGIN;\n  ALTER TABLE ... ENABLE TRIGGER ...;\nCOMMIT;<\/code><\/pre>\n<p>\nK\u00ebtu situata \u00ebsht\u00eb m\u00eb e mir\u00eb, koha e pritjes \u00ebsht\u00eb duksh\u00ebm m\u00eb e shkurt\u00ebr. Por dy probleme prishin gjith\u00eb bukurin\u00eb:<\/p>\n<ul>\n<li><code>ALTER TABLE<\/code> ai pret t\u00eb gjitha operacionet e tjera n\u00eb tabel\u00eb, duke p\u00ebrfshir\u00eb ato t\u00eb gjat\u00eb <code>SELECT<\/code><\/li>\n<li>Nd\u00ebrsa trigger-i \u00ebsht\u00eb i \u00e7aktivizuar, <b>\"do t\u00eb kaloj\u00eb\" \u00e7do ndryshim<\/b> n\u00eb tabel\u00eb, madje edhe ai q\u00eb nuk \u00ebsht\u00eb tonin. Dhe n\u00eb agregate nuk do t\u00eb arrij\u00eb, edhe pse duhet. Nj\u00eb problem!<\/li>\n<\/ul>\n<p><\/p>\n<h2>Menaxhimi i variablave t\u00eb sesionit<\/h2>\n<p>\nPra, n\u00eb variantin e m\u00ebparsh\u00ebm ne u ndesh\u00ebm me nj\u00eb moment thelb\u00ebsor \u2014 duhet t\u00eb m\u00ebsojm\u00eb ndonj\u00ebher\u00eb trigger-in p\u00ebr t\u00eb dalluar ndryshimet \"tona\" n\u00eb tabel\u00eb nga ato \"t\u00eb huaja\". T\u00eb \"tonat\" le t\u00eb kalojn\u00eb si\u00e7 jan\u00eb, nd\u00ebrsa \"t\u00eb huajat\" \u2013 t\u00eb aktivizohen. P\u00ebr k\u00ebt\u00eb mund t\u00eb shfryt\u00ebzojm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/runtime-config-client\">variablat e sesionit<\/a><\/noindex>.<\/p>\n<h4>session_replication_role<\/h4>\n<p>\nLexojm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/sql-altertable\">manual<\/a><\/noindex>:<\/p>\n<blockquote><p>Mekanizmi i funksionimit t\u00eb trigger-ave gjithashtu ndikohet nga variabla konfiguruese <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/runtime-config-client#GUC-SESSION-REPLICATION-ROLE\">session_replication_role<\/a><\/noindex>. Trigger-at e p\u00ebrfshir\u00eb pa udh\u00ebzime t\u00eb tjera (p\u00ebr t\u00eb drejt\u00eb) do t\u00eb aktivizohen kur roli i replikimit \u00ebsht\u00eb \"origin\" (p\u00ebr t\u00eb drejt\u00eb) ose \"local\". Trigger-at e p\u00ebrfshir\u00eb duke e caktuar <code>ENABLE REPLICA<\/code>, do t\u00eb aktivizohen vet\u00ebm n\u00ebse <b>modi i tanish\u00ebm i sesionit<\/b> \u00ebsht\u00eb \"replica\", dhe trigger-at e p\u00ebrfshir\u00eb duke e caktuar <code>ENABLE ALWAYS<\/code>, do t\u00eb aktivizohen pavar\u00ebsisht nga moda e tanishme e replikimit.<\/p><\/blockquote>\n<p>Dua t\u00eb theksoj ve\u00e7an\u00ebrisht, se kjo konfigurim nuk prek t\u00eb gjitha gjithashtu, si <code>ALTER TABLE<\/code>, por nj\u00eb lidhje speciale t\u00eb ve\u00e7ant\u00eb. N\u00eb total, q\u00eb t\u00eb mos aktivizohen ndonj\u00ebher\u00eb trigger-a aplikativ\u00eb:<\/p>\n<pre><code class=\"sql\">SET session_replication_role = replica; -- ndalova trigger-at\nUPDATE ...;\nSET session_replication_role = DEFAULT; -- e riktheva n\u00eb gjendjen fillestare<\/code><\/pre>\n<p><\/p>\n<h4>Kushti brenda trigger-it<\/h4>\n<p>\nPor varianti i lartp\u00ebrmendur funksionon p\u00ebr t\u00eb gjith\u00eb trigger-at n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb (ose duhet \"t\u00eb ndryshoni\" m\u00eb par\u00eb trigger-at q\u00eb nuk d\u00ebshironi t'i ndaloni). Por n\u00ebse na nevojitet <b>\"t\u00eb ndalojm\u00eb\" nj\u00eb trigger konkret<\/b>?<\/p>\n<p>N\u00eb k\u00ebt\u00eb na ndihmon <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/runtime-config-custom\">\"ndryshimi\" i variablit t\u00eb sesionit<\/a><\/noindex>:<\/p>\n<blockquote><p>Emrat e parametrave t\u00eb zgjerimeve shkruhen n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb: emri i zgjerimit, pika dhe pastaj emri real i parametrit, si\u00e7 jan\u00eb emrat e plot\u00eb t\u00eb objekteve n\u00eb SQL. P\u00ebr shembull: plpgsql.variable_conflict.<br \/>\nT\u00eb dh\u00ebnat jasht\u00eb sistemit mund t\u00eb vendosen n\u00eb procese q\u00eb nuk ngarkojn\u00eb modulin p\u00ebrkat\u00ebs t\u00eb zgjerimit, PostgreSQL pranon <b>vlerat p\u00ebr \u00e7do em\u00ebr me dy komponente<\/b>.<\/p><\/blockquote>\n<p>S\u00eb pari, p\u00ebrmir\u00ebsojm\u00eb trigger-in, n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb:<\/p>\n<pre><code class=\"sql\">BEGIN\n    -- procesi i konvertimit mund t\u00eb b\u00ebj\u00eb gjith\u00e7ka\n    IF current_setting('mycfg.my_table_convert_process') = 'TRUE' THEN\n        IF TG_OP IN ('INSERT', 'UPDATE') THEN\n            RETURN NEW;\n        ELSE\n            RETURN OLD;\n        END IF;\n    END IF;\n...<\/code><\/pre>\n<p>\nP\u00ebr m\u00eb tep\u00ebr, mund ta b\u00ebjm\u00eb \"n\u00eb koh\u00eb reale\", pa bllokime, p\u00ebrmes <code>KRIJO OSE Z\u00cbVEND\u00cbSO<\/code> p\u00ebr funksionin e trigger-it. Nd\u00ebrsa m\u00eb pas n\u00eb lidhjen speciale aktivizojm\u00eb \"variablin ton\u00eb\":<\/p>\n<pre><code class=\"sql\">\nSET mycfg.my_table_convert_process = 'TRUE';\nUPDATE ...;\nSET mycfg.my_table_convert_process = ''; -- e riktheva n\u00eb gjendjen fillestare\n<\/code><\/pre>\n<p>\nA keni njohuri p\u00ebr m\u00ebnyra t\u00eb tjera? Ndani n\u00eb komentet.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/489900\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0447\u0442\u043e-\u0442\u043e \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u042f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435, \u0430 \u043a\u0430\u043a \u2014 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u0435 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \u043e \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0432\u0438\u0441\u0438\u0442 \u0437\u043b\u043e\u0431\u043d\u044b\u0439 \u0442\u0440\u0438\u0433\u0433\u0435\u0440 ON UPDATE, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0449\u0438\u0439 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-72265","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0447\u0442\u043e-\u0442\u043e \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47PostgreSQL Antipatterns: \u043c\u0435\u043d\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u0445\u043e\u0434 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0447\u0442\u043e-\u0442\u043e \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-03T05:42:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:13:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47PostgreSQL Antipatterns: ndryshimi i t\u00eb dh\u00ebnave p\u00ebrmes nj\u00eb bypass-i t\u00eb trigger-it | ProHoster","description":"Her\u00ebt ose von\u00eb, shum\u00eb p\u00ebrballen me nevoj\u00ebn p\u00ebr t\u00eb korrigjuar di\u00e7ka n\u00eb m\u00ebnyr\u00eb masive n\u00eb regjistrat e tabel\u00ebs.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47PostgreSQL Antipatterns: \u043c\u0435\u043d\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u0445\u043e\u0434 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 | ProHoster","og:description":"\u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0447\u0442\u043e-\u0442\u043e \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-03T05:42:17+00:00","article:modified_time":"2020-03-03T13:13:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"72265","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:47:24","updated":"2022-09-27 18:26:38","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/72265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=72265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/72265\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=72265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=72265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=72265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}