{"id":88581,"date":"2020-07-15T01:42:09","date_gmt":"2020-07-14T23:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real"},"modified":"2020-07-15T01:42:09","modified_gmt":"2020-07-14T23:42:09","slug":"unreal-features-of-real-types-ili-budte-ostorozhny-s-real","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real","title":{"rendered":"Reaali t\u00f5elised omadused, v\u00f5i olge ettevaatlikud REAL-i suhtes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00e4rast avaldamist <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/508038\/\">artikleid<\/a><\/noindex> PostgreSQL-i t\u00fc\u00fcbid on keerulised, ja esimene kommentaar k\u00e4sitles p\u00e4risnumbritega t\u00f6\u00f6tamise raskusi. Otsustasin kiiresti \u00fcle vaadata koodi, mis mulle SQL-p\u00e4ringutena k\u00e4tte on antud, et n\u00e4ha, kui sageli seal kasutatakse t\u00fc\u00fcpi REAL. Selgus, et seda kasutatakse \u00fcsna tihti, ja mitte alati ei m\u00f5ista arendajad sellega seotud ohte. Ja see mald isegi vaatamata sellele, et internetis ja Habr's on piisavalt h\u00e4id artikleid, mis k\u00e4sitlevad reaalarvude salvestamise erip\u00e4rasid masina m\u00e4lus ja nende kasutamist. Seet\u00f5ttu p\u00fc\u00fcan selles artiklis rakendada neid erip\u00e4rasid PostgreSQL-ile ning \u00fcritan k\u00e4tega seletada seotud probleeme, et SQL-p\u00e4ringute arendajad saaksid neist kergemini m\u00f6\u00f6da minna.<\/p>\n<p><\/p>\n<p>PostgreSQL dokumentatsioon sisaldab l\u00fchikest lauset: \"Selliste vigade k\u00e4itlemine ja nende levik arvutuste k\u00e4igus on terve matemaatika ja arvutiteaduse valdkonna \u00f5ppeaine, ja seda siin ei k\u00e4sitleta\" (samuti suunab see ettevaatlikult lugeja IEEE 754 standardi poole). Milliseid vigu siin silmas peetakse? R\u00e4\u00e4gime neist j\u00e4rkj\u00e4rgult ning varsti selgub, miks ma j\u00e4lle kirjutamise kallale asusin.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>V\u00f5tame n\u00e4iteks lihtsa p\u00e4ringu:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL;\n**************************\nfloat4\n--------\n    0.1\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Tulemuseks ei n\u00e4e me midagi erilist \u2013 saame oodatud 0.1. Kuid n\u00fc\u00fcd v\u00f5rdleme seda 0.1-ga:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL = 0.1;\n**************************\n?column?\n----------\nf\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Ei ole v\u00f5rdsed! Millised ime asjad! Kuid edasi rohkem. Keegi \u00fctleb, et ma tean, et REAL ei k\u00e4itu murdudega h\u00e4sti, seega ma panen sinna t\u00e4isarve, nendega on k\u00f5ik kindlasti korras. Okei, viime numbri 123&nbsp;456&nbsp;789 REAL t\u00fc\u00fcpidesse:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 123456789::REAL::INT;\n**************************\n   int4   \n-----------\n123456792\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Ja see tuli 3 v\u00f5rra suurem! K\u00f5ik, andmebaas on t\u00e4iesti lugema unustanud! V\u00f5i ei saa me millestki aru? L\u00e4heme edasi.<\/p>\n<p><\/p>\n<p>Kuna alguseks meenutame teooriat. Nagu on teada, v\u00f5ib iga k\u00fcmneline arv lagundada k\u00fcmniste astmete summaks. Seega number 123.456 on v\u00f5rdne 1*10\u00b2 + 2*10\u00b9 + 3*10\u2070 + 4*10\u207b\u00b9 + 5*10\u207b\u00b2 + 6*10\u207b\u00b3. Kuid arvuti t\u00f6\u00f6tab kahendvormis, seega tuleb need esitada kahendkalduvuste summana. Seet\u00f5ttu esindatakse number 5.625 kahendvormis kui 101.101 ja on v\u00f5rdne 1*2\u00b2 + 0*2\u00b9 + 1*2\u2070 + 1*2\u207b\u00b9 + 0*2\u207b\u00b2 + 1*2\u207b\u00b3. Ja kui positiivsed kahetiseste astmed annavad alati t\u00e4isarve (1, 2, 4, 8, 16 jne), siis negatiivsete osas on see keerulisem (0.5, 0.25, 0.125, 0.0625 jne). Probleem seisneb selles, et <b>k\u00f5iki k\u00fcmnende murde ei saa esitada l\u00f5plike kahendmurdena<\/b>. N\u00e4iteks meie kuulus 0.1 esindatakse kahendmurdena kui perioodiline v\u00e4\u00e4rtus 0.0(0011). Seega numbrite l\u00f5plik v\u00e4\u00e4rtus masinamuudatustes muutub s\u00f5ltuvalt bittide arvust.<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd on aeg meenutada, kuidas reaalarve salvestatakse arvuti m\u00e4lus. \u00dcldiselt koosneb reaalarv kolmest p\u00f5hiosast - m\u00e4rgist, mantissist ja eksponentsist. M\u00e4rgiks v\u00f5ib olla kas pluss v\u00f5i miinus, seega kulutab sellele \u00fcks bitt. Kuid mantissi ja eksponendi bittide arv m\u00e4\u00e4rab reaali t\u00fc\u00fcp. N\u00e4iteks REAL t\u00fc\u00fcbi puhul on mantissi pikkus 23 bitti (\u00fcks bitt, mis on v\u00f5rdne 1, lisatakse salaja mantissi ette, ja seet\u00f5ttu on kokku 24), ning eksponents on 8 bitti. Kokku on see 32 bitti ehk 4 baiti. T\u00fc\u00fcp DOUBLE PRECISION puhul on mantissi pikkus juba 52 bitti ja eksponents 11 bitti, kokku 64 bitti ehk 8 baiti. PostgreSQL ei toeta suuremat t\u00e4psust ujukomaarvude jaoks.<\/p>\n<p><\/p>\n<p>Pakkime n\u00fc\u00fcd meie k\u00fcmnendilise arvu 0.1 m\u00f5lemasse t\u00fc\u00fcpi - REAL ja DOUBLE PRECISION. Kuna m\u00e4rk ja eksponendi v\u00e4\u00e4rtus on meil samad, keskendume mantissile (ma v\u00e4ldin teadlikult eksponendi salvestamise ja nullsete reaalarvude mitteilmsed omadused, kuna need raskendavad m\u00f5istmist ja segavad probleemi tuumast, kui huvitav - vaadake standardit IEEE 754). Mida me saame? \u00dclemises reas toon v\u00e4lja \"mantissi\" REAL t\u00fc\u00fcbi jaoks (arvestades viimane bitt 1 \u00fcmardatakse l\u00e4himaks esitatavaks arvuks, vastasel juhul saame 0.099999...), ja alumises REAL t\u00fc\u00fcbi jaoks DOUBLE PRECISION:<\/p>\n<p><\/p>\n<blockquote><p><b>0.0001<\/b>1001100110011001100110<b>1<\/b><br \/>\n<b>0.0001<\/b>1001100110011001100110011001100110011001100110011001\n<\/p><\/blockquote>\n<p><\/p>\n<p>On selge, et need on kaks t\u00e4iesti erinevat numbrit! Seet\u00f5ttu, kui me esimese numbri v\u00f5rreldes t\u00e4iendame seda nullidega, on see seega suurem kui teine (arvesse v\u00f5ttes \u00fcmardamist \u2013 r\u00f5hutatud rasvases kirjas \u00fchte). Just see seletab meie n\u00e4idete mitmeti m\u00f5istetavust. Teises n\u00e4ites konverteeritakse selgelt m\u00e4\u00e4ratud arv 0.1 t\u00fc\u00fcpi DOUBLE PRECISION, p\u00e4rast mida v\u00f5rreldakse seda t\u00fc\u00fcpi REAL numbriga. M\u00f5lemad konverteeritakse \u00fchte t\u00fc\u00fcpi ja saame t\u00e4pselt seda, mida n\u00e4eme \u00fclalpool. Muudame p\u00e4ringut, et k\u00f5ik omaks oma kohta:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL &gt; 0.1::DOUBLE PRECISION;\n**************************\n?column?\n----------\nt\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Ja t\u00f5epoolest, viies 0.1 kahekordselt REAL-iks ja DOUBLE PRECISION-iks, saame vastuse m\u00f5istatusele:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 0.1::REAL::DOUBLE PRECISION;\n**************************\n\n      float8       \n-------------------\n0.100000001490116\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Sellega selgitatakse ka kolmandat n\u00e4idet, mis \u00fclaltoodud on. Number 123&nbsp;456&nbsp;789 on lihtsalt <b>v\u00f5imatu mahutada 24 bitti mantissasse<\/b> (23 selget + 1 varjatud). Suurim t\u00e4isarv, mis 24 bitis mahub, on 2<sup>24<\/sup>-1 = 16&nbsp;777&nbsp;215. Seet\u00f5ttu \u00fcmardatakse meie number 123&nbsp;456&nbsp;789 l\u00e4himale esindatavale 123&nbsp;456&nbsp;792. Muutuv t\u00fc\u00fcp DOUBLE PRECISION ei n\u00e4ita meile enam sellist stsenaariumi:<\/p>\n<p><\/p>\n<pre><code class=\"sql\">********* P\u00c4RING *********\nSELECT 123456789::DOUBLE PRECISION::INT;\n**************************\n   int4   \n-----------\n123456789\n(1 rida)\n<\/code><\/pre>\n<p><\/p>\n<p>Ja ongi k\u00f5ik. Selgub, et mingeid imesid pole. Kuid k\u00f5ik see, mis on kirjas, on hea p\u00f5hjus m\u00f5elda, kui t\u00f5eliselt on teil vaja t\u00fc\u00fcpi REAL. T\u00f5en\u00e4oliselt on tema kasutamise suurim eelis arvutuste kiire teostamine vaatamata juba olemasolevale t\u00e4psuse kadumisele. Kuid kas on see universaalne stsenaarium, mis \u00f5igustab selle t\u00fc\u00fcbi nii sagedast kasutamist? Ei, ma ei usu.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/508350\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u042f \u0440\u0435\u0448\u0438\u043b \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u043d\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u0432 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f REAL. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0437\u0430 \u043d\u0438\u043c. \u0418 \u044d\u0442\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, [&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-88581","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441.\" \/>\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\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\udd47Unreal Features of Real Types, \u0438\u043b\u0438 \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 REAL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real\" \/>\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-07-14T23:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-14T23:42:09+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\udd47T\u00f5eliselt uskumatud omadused reaalsest t\u00fc\u00fcbist, v\u00f5i Olge ettevaatlik REAL-iga | ProHoster","description":"P\u00e4rast artikli avaldamist PostgreSQL t\u00fc\u00fcbiomadustest oli esimene kommentaar, mis puudutas t\u00f6\u00f6tamise keerukusi.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\udd47Unreal Features of Real Types, \u0438\u043b\u0438 \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 REAL | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 PostgreSQL, \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0431\u044b\u043b \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/unreal-features-of-real-types-ili-budte-ostorozhny-s-real","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-07-14T23:42:09+00:00","article:modified_time":"2020-07-14T23:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"88581","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 13:10:53","updated":"2022-10-03 00:47:31","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/88581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=88581"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/88581\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=88581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=88581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=88581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}