{"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\/lv\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera","title":{"rendered":"PostgreSQL Antipatterns: main\u0101m datus apejot trigerus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Agr\u0101k vai v\u0113l\u0101k daudz cilv\u0113ku saskaras ar nepiecie\u0161am\u012bbu masveid\u0101 veikt izmai\u0146as tabulas ierakstos. Es jau <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/481610\/\">st\u0101st\u012bjis, k\u0101 to lab\u0101k dar\u012bt<\/a><\/noindex>, un k\u0101 to lab\u0101k nedar\u012bt. \u0160odien st\u0101st\u012b\u0161u par otro aspektu masu atjaunin\u0101\u0161an\u0101 \u2014 <b>par trigeru izsist\u0113m<\/b>.<\/p>\n<p>Piem\u0113ram, tabul\u0101, kur\u0101 jums j\u0101veic izmai\u0146as, var b\u016bt \u013caunpr\u0101t\u012bgs triggers <code>ON UPDATE<\/code>, kas p\u0101rnes visus groz\u012bjumus uz k\u0101d\u0101m agreg\u0101t\u0101m. Bet jums ir nepiecie\u0161ams veikt visus atjaunin\u0101jumus (jaunu lauku inicializ\u0113t, piem\u0113ram) tik uzman\u012bgi, lai \u0161ie agreg\u0101ti netiktu skarti.<\/p>\n<h2>Tad vienk\u0101r\u0161i atsl\u0113gsim trigerus!<\/h2>\n<p><\/p>\n<pre><code class=\"sql\">S\u0100KT;\n  ALTER TABLE ... DIEN\u0100 TRIGGER ...;\n  UPDATE ...; -- \u0161eit ilgi\n  ALTER TABLE ... ATJAUNOT TRIGGER ...;\nAPSTIPRIN\u0100T;<\/code><\/pre>\n<p>\nPa \u012bsumam, viss jau ir \u0161eit \u2014 <b>viss jau ir piek\u0101rts<\/b>.<\/p>\n<p>T\u0101p\u0113c, ka <code>ALTER TABLE<\/code> uzliek <b>AccessExclusive<\/b>-blo\u0137\u0113\u0161ana, zem kuras neviens paral\u0113li veicamais pat vienk\u0101r\u0161i <code>SELECT<\/code>, neko no tabulas izlas\u012bt nevar\u0113s. Tas noz\u012bm\u0113, ka, kam\u0113r \u0161\u012b transakcija neb\u016bs pabeigta, visi interesenti pat \"vienk\u0101r\u0161i izlas\u012bt\" gaid\u012bs. Un m\u0113s atceramies, ka <code>UPDATE<\/code> mums ir \u013coti ilgi...<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Tad \u0101tri atsl\u0113gsim, p\u0113c tam \u0101tri iesl\u0113gsim!<\/h4>\n<p><\/p>\n<pre><code class=\"sql\">S\u0100KT;\n  ALTER TABLE ... DIEN\u0100 TRIGGER ...;\nAPSTIPRIN\u0100T;\n\nUPDATE ...;\n\nS\u0100KT;\n  ALTER TABLE ... ATJAUNOT TRIGGER ...;\nAPSTIPRIN\u0100T;<\/code><\/pre>\n<p>\n\u0160eit situ\u0101cija jau ir lab\u0101ka, gaid\u012b\u0161anas laiks ir iev\u0113rojami maz\u0101ks. Bet divas probl\u0113mas saboj\u0101 visu skaistumu:<\/p>\n<ul>\n<li><code>ALTER TABLE<\/code> vi\u0146\u0161 gaida visas citas oper\u0101cijas tabul\u0101, tostarp garas <code>SELECT<\/code><\/li>\n<li>Kam\u0113r triggers ir izsl\u0113gts, <b>\"neizb\u0113gs svaiga izmai\u0146a<\/b> tabul\u0101, pat ne m\u016bsu. Un agreg\u0101tos, nu nek\u0101d\u0101 gad\u012bjum\u0101 netiks, lai ar\u012b vajadz\u0113tu. Tra\u0123\u0113dija!<\/li>\n<\/ul>\n<p><\/p>\n<h2>Sesijas main\u012bgo p\u0101rvald\u012bba<\/h2>\n<p>\nT\u0101d\u0113j\u0101di, iepriek\u0161\u0113j\u0101 variant\u0101 m\u0113s sastap\u0101mies ar b\u016btisku aspektu \u2014 j\u0101m\u0101c\u0101s trigera at\u0161\u0137irt \"m\u016bsu\" izmai\u0146as tabul\u0101 no \"ne m\u016bsu\". \"M\u016bsu\" laist cauri t\u0101, k\u0101 ir, bet uz \"ne m\u016bsu\" \u2014 iedarboties. Tam var izmantot <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/runtime-config-client\">sesijas main\u012bgos<\/a><\/noindex>.<\/p>\n<h4>session_replication_role<\/h4>\n<p>\nLas\u0101m <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/sql-altertable\">administratora rokasgr\u0101mat\u0101, kas pieejama<\/a><\/noindex>:<\/p>\n<blockquote><p>Uz trigera aktiviz\u0101cijas meh\u0101nismu ietekm\u0113 konfigur\u0101cijas main\u012bgais <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/runtime-config-client#GUC-SESSION-REPLICATION-ROLE\">session_replication_role<\/a><\/noindex>. Iek\u013cautie bez papildu nor\u0101d\u0113m (p\u0113c noklus\u0113juma) trigeri darbosies, kad reprodukcijas loma ir \"origin\" (p\u0113c noklus\u0113juma) vai \"local\". Trigeri, kas iek\u013cauti ar nor\u0101di <code>ENABLE REPLICA<\/code>, darbosies tikai tad, ja <b>aktu\u0101l\u0101 sesijas re\u017e\u012bms<\/b> ir \"replica\", bet trigeri, kas iek\u013cauti ar nor\u0101di <code>ENABLE ALWAYS<\/code>, darbosies neatkar\u012bgi no pa\u0161reiz\u0113j\u0101 reprodukcijas re\u017e\u012bma.<\/p><\/blockquote>\n<p>\u012apa\u0161i uzsveru, ka iestat\u012bjums attiecas nevis uz visiem uzreiz, k\u0101 <code>ALTER TABLE<\/code>, bet tikai m\u016bsu atsevi\u0161\u0137ajam speci\u0101lajam savienojumam. T\u0101tad, lai nek\u0101di lietojumprogrammu trigeri neaktiviz\u0113tos:<\/p>\n<pre><code class=\"sql\">SET session_replication_role = replica; -- izsl\u0113dz\u0101m trigerus\nUPDATE ...;\nSET session_replication_role = DEFAULT; -- atgriez\u0101m s\u0101kotn\u0113j\u0101 st\u0101vokl\u012b<\/code><\/pre>\n<p><\/p>\n<h4>Noteikums triger\u012b<\/h4>\n<p>\nTom\u0113r iepriek\u0161 min\u0113tais risin\u0101jums darbojas visiem trigeriem uzreiz (vai ar\u012b ir j\u0101\"alter\u0113\" iepriek\u0161 trigeri, kurus nev\u0113laties izsl\u0113gt). Bet, ja mums vajag <b>izsl\u0113gt\u201d tie\u0161i vienu konkr\u0113tu trigeri<\/b>?<\/p>\n<p>\u0160aj\u0101 mums pal\u012bdz\u0113s <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/runtime-config-custom\">lietot\u0101ja sesijas main\u012bgais<\/a><\/noindex>:<\/p>\n<blockquote><p>Papla\u0161in\u0101jumu parametru nosaukumi tiek rakst\u012bti \u0161\u0101di: papla\u0161in\u0101juma nosaukums, punkts un p\u0113c tam pa\u0161a parametra nosaukums, l\u012bdz\u012bgi k\u0101 objektu pilnie nosaukumi SQL. Piem\u0113ram: plpgsql.variable_conflict.<br \/>\nT\u0101 k\u0101 nesist\u0113mas parametri var tikt iestat\u012bti procesos, kas nenov\u0113rt\u0113 attiec\u012bgo papla\u0161in\u0101juma modu\u013cu, PostgreSQL pie\u0146em <b>v\u0113rt\u012bbas jebk\u0101diem nosaukumiem ar div\u0101m komponent\u0113m<\/b>.<\/p><\/blockquote>\n<p>Vispirms p\u0101rrakst\u0101m trigeri, aptuveni t\u0101:<\/p>\n<pre><code class=\"sql\">BEGIN\n    -- konvert\u0113\u0161anas proces\u0101 var dar\u012bt visu\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>\nStarp citu, to var izdar\u012bt \u201edz\u012bvaj\u0101\u201d, bez blo\u0137\u0113\u0161anas, caur <code>CREATE OR REPLACE<\/code> trigeru funkcijai. Un tad \u012bpa\u0161aj\u0101 savienojum\u0101 aktiviz\u0113jam \u201esavu\u201d main\u012bgo:<\/p>\n<pre><code class=\"sql\">\nSET mycfg.my_table_convert_process = 'TRUE';\nUPDATE ...;\nSET mycfg.my_table_convert_process = ''; -- atgriez\u0101m s\u0101kotn\u0113j\u0101 st\u0101vokl\u012b\n<\/code><\/pre>\n<p>\nZin\u0101t citus veidus? Dalieties koment\u0101ros.<br \/>\n<br \/>Avots: <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.4 - 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\/lv\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/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: main\u0101m datus apejot trigerus | ProHoster","description":"Agri vai v\u0113lu daudzi saskaras ar nepiecie\u0161am\u012bbu masveid\u0101 labot ierakstus tabul\u0101.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/postgresql-antipatterns-menyaem-dannye-v-obhod-triggera","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/72265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=72265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/72265\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=72265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=72265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=72265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}