{"id":87758,"date":"2020-07-10T01:41:58","date_gmt":"2020-07-09T23:41:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye"},"modified":"2020-07-10T01:41:58","modified_gmt":"2020-07-09T23:41:58","slug":"kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Nii n\u00e4eb v\u00e4lja \u00fcleliigne<\/em><\/p>\n<p><\/p>\n<p>\u00dcksikasjad, mis k\u00e4sitlevad \u00fcleliigseid koode*, on laialdaselt rakendatud arvutis\u00fcsteemides andmete salvestamise usaldusv\u00e4\u00e4rsuse suurendamiseks. Yandexis kasutatakse neid paljuski erinevates projektides. N\u00e4iteks on \u00fcleliigsete koodide rakendamine meie sisemises objektide salvestamise s\u00fcsteemis v\u00e4hendanud kulusid miljoneid ilma usaldusv\u00e4\u00e4rsust v\u00e4hendamata. Kuid hoolimata laialdasest kasutusest on arusaadav kirjeldus selle kohta, kuidas \u00fcleliigsed koodid t\u00f6\u00f6tavad, \u00fcliharv. Need, kes soovivad teemaga tutvuda, seisavad silmitsi umbes j\u00e4rgneva olukorraga (v\u00e4ljav\u00f5te <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%B4_%D0%A0%D0%B8%D0%B4%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0\">Vikipeediad<\/a><\/noindex>):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Minu nimi on Vadim, Yandexis t\u00f6\u00f6tan ma MDS sisemiste objektide salvestamise s\u00fcsteemi arendamisega. Sellel artiklil selgitan lihtsate s\u00f5nadega \u00fcleliigsete koodide (Reedi-Salomoni ja LRC koodide) teoreetilisi aluseid. R\u00e4\u00e4gin, kuidas see t\u00f6\u00f6tab, ilma keerulise matemaatika ja haruldaste terminite puudutamiseta. L\u00f5pus toon v\u00e4lja n\u00e4ited \u00fcleliigsete koodide kasutamisest Yandexis.<\/p>\n<p><\/p>\n<p>M\u00f5ned matemaatilised detailid, mida ma ei k\u00e4sitle s\u00fcvitsi, kuid annan lingid neile, kes soovivad s\u00fcgavamale teemasse s\u00fcveneda. Samuti m\u00e4rgin, et m\u00f5ned matemaatilised m\u00e4\u00e4ratlused ei pruugi olla rangelt t\u00e4psed, kuna artikkel ei ole suunatud matemaatikutele, vaid inseneridele, kes soovivad m\u00f5ista probleemi olemust.<\/p>\n<p><\/p>\n<p>* Ingli keelses kirjanduses nimetatakse \u00fcleliigseid koode sageli erasure codes.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. \u00dcleliigsete koodide olemus<\/h1>\n<p><\/p>\n<p>\u00dcleliigsete koodide olemus on \u00e4\u00e4rmiselt lihtne: anda andmeid nii, et need ei kaoks, kui esinevad vead (nt k\u00f5vaketaste rike, andmete edastamise vead jne). <\/p>\n<p><\/p>\n<p>Enamikes* \u00fcleliigsetes koodides jagatakse andmed n andmeplokiks, mille jaoks arvutatakse m \u00fcleliigse koodi plokki, kokku on n + m plokki. \u00dcleliigsed koodid on \u00fcles ehitatud nii, et n andmeplokki on v\u00f5imalik taastada, kasutades ainult osa n + m plokkidest. Edasi k\u00e4sitleme ainult plokkide \u00fcleliigseid koode, see t\u00e4hendab selliseid, kus andmed jagatakse plokkideks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kogu n andmete bloke taastamiseks on vaja v\u00e4hemalt n blokki n + m blokist, sest ei saa saada n blokki, omades ainult n-1 plokki (sel juhul tuleb 1 blokk v\u00f5tta \"\u00f5hust\"). Kas n meelevaldselt valitud plokki n + m plokist on piisavad k\u00f5igi andmete taastamiseks? See s\u00f5ltub \u00fclem\u00e4\u00e4raste koodide t\u00fc\u00fcbist, n\u00e4iteks Reed-Solomoni koodid v\u00f5imaldavad taastada k\u00f5ik andmed meelevaldsete n plokkide abil, kuid LRC \u00fclem\u00e4\u00e4rased koodid ei pruugi alati seda teha.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Andmete salvestamine<\/h3>\n<p><\/p>\n<p>Andmesalvestuss\u00fcsteemides on tavaliselt iga andme- ja \u00fclem\u00e4\u00e4raste koodide plokk salvestatud eraldi kettale. Seega, kui \u00fcksk\u00f5ik milline ketas rikneb, on algandmed ikkagi v\u00f5imalik taastada ja lugeda. Andmeid saab taastada isegi siis, kui mitu ketast riknevad korraga.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Andmete edastamine<\/h3>\n<p><\/p>\n<p>\u00dclem\u00e4\u00e4raseid koode saab kasutada usaldusv\u00e4\u00e4rseks andmete edastamiseks ebausaldusv\u00e4\u00e4rses v\u00f5rgus. Edastatavad andmed jagatakse plokkideks, nende jaoks arvutatakse \u00fclem\u00e4\u00e4rase koodi. V\u00f5rgus edastatakse nii andmeplokid kui ka \u00fclem\u00e4\u00e4raste koodide plokid. Kui juhuslikes plokkides (kuni teatud arvu plokini) tekivad vead, on andmete edastamine siiski usaldusv\u00e4\u00e4rne. Reed-Solomoni koode kasutatakse n\u00e4iteks andmete edastamiseks optiliste sideliinide ja satelliitside kaudu.<\/p>\n<p><\/p>\n<p>* On ka \u00fclem\u00e4\u00e4raseid koode, milles andmeid ei jagata plokkideks, n\u00e4iteks Hamming-koodid ja CRC-koodid, mida laialdaselt kasutatakse andmete edastamiseks Ethernet-v\u00f5rkudes. Need on koodid h\u00e4irekindlaks kodeerimiseks, mis on m\u00f5eldud vigade tuvastamiseks, mitte nende parandamiseks (Hamming-kood v\u00f5imaldab samuti osaliselt vigu parandada).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. Reed-Solomoni koodid<\/h1>\n<p><\/p>\n<p>Reed-Solomoni koodid on \u00fched levinumad \u00fclem\u00e4\u00e4rase koodi t\u00fc\u00fcbid, mis leiutati 1960. aastatel ja said esmakordselt laialdast kasutamist 1980. aastatel kompaktdiskide seeriatootmises.<\/p>\n<p><\/p>\n<p>Kaks peamist k\u00fcsimust Reed-Solomoni koodide m\u00f5istmiseks on: 1) kuidas luua \u00fclem\u00e4\u00e4raste koodide plokke; 2) kuidas taastada andmeid \u00fclem\u00e4\u00e4raste koodide plokkide abil. Leiam sellele vastused.<br \/>\nLihtsuse huvides eeldame edaspidi, et n=6 ja m=4. Teisi skeeme k\u00e4sitletakse sarnasel viisil.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">Kuidas luua \u00fclem\u00e4\u00e4raste koodide plokke<\/h3>\n<p><\/p>\n<p>Iga parandusblokki loetakse s\u00f5ltumatuks teistest. Iga blokki arvestamiseks kasutatakse k\u00f5iki n andmeplokke. Alloleval skeemil on X1-X6 andmeplokid, P1\u2013P4 parandusplokid.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00f5ik andmeplokid peavad olema samas suuruses, \u00fchtlustamiseks v\u00f5ib kasutada nulli bitsid. Saadud parandusplokid on sama suurusega kui andmeplokid. K\u00f5ik andmeplokid jagatakse s\u00f5nadeks (nt 16 bitti). Oletame, et oleme jaganud andmeplokid k s\u00f5naks. Siis jagatakse ka k\u00f5ik parandusplokid k s\u00f5naks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Iga parandusploki i-ndat s\u00f5na arvestatakse kasutades k\u00f5igi andmeplokkide i-nda s\u00f5na. Need arvutatakse j\u00e4rgmise valemi abil:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin x v\u00e4\u00e4rtused on andmeplokkide s\u00f5nad, p on parandusplokkide s\u00f5nad, k\u00f5ik alfa, beeta, gamma ja delta on eriliselt valitud numbrid, mis on k\u00f5igi i jaoks \u00fchesugused. Tuleb kohe \u00f6elda, et k\u00f5ik need v\u00e4\u00e4rtused ei ole tavalised numbrid, vaid Galoisi v\u00e4li elemendid, operatsioonid +, -, *, \/ \u2013 ei ole meie jaoks harilikud operatsioonid, vaid Galoisi v\u00e4li elementide peal kehtivad erilised operatsioonid.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">Miks on Galoisi v\u00e4ljad vajalikud<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tundub, et k\u00f5ik on lihtne: jagame andmed plokkideks, plokid s\u00f5nadeks, andmeplokkide s\u00f5nade abil arvestame parandusplokkide s\u00f5nu \u2013 saame parandusplokid. \u00dcldiselt nii see toimib, kuid detailides peitub kurat:<\/p>\n<p><\/p>\n<ol>\n<li>Nagu eespool mainitud, on s\u00f5na suurus fikseeritud, meie n\u00e4ites 16 bitti. \u00dclaltoodud valemid Reed-Solomoni koodide jaoks on sellised, et tavaliste t\u00e4isarvude kasutamisel v\u00f5ib p arvutamise tulemus olla selline, mida ei saa sobiva suurusega s\u00f5naga esitada.<\/li>\n<li>Andmete taastamisel k\u00e4sitletakse \u00fclaltoodud valemeid v\u00f5rrandis\u00fcsteemina, mille lahendamiseks on vaja taastada andmed. Lahendamise k\u00e4igus v\u00f5ib tekkida vajadus jagada t\u00e4isarve \u00fcksteisega, mille tulemusena tekib reaalne arv, mida ei saa t\u00e4pselt arvutisse m\u00e4llu salvestada.<\/li>\n<\/ol>\n<p><\/p>\n<p>Need for Reed\u2013Solomon codes prevents the use of whole numbers. The solution to the problem is original; it can be described as follows: let\u2019s invent special numbers that can be represented using words of the required length (for example, 16 bits), and the result of all operations performed on them (addition, subtraction, multiplication, division) will also be represented in the computer's memory using words of the required length.<\/p>\n<p><\/p>\n<p>Such 'special' numbers have long been studied in mathematics; they are called fields. A field is a set of elements with defined operations of addition, subtraction, multiplication, and division.<\/p>\n<p><\/p>\n<p>Galois fields* are fields for which there exists and is unique a result for each operation (+, -, *, \/) between any two elements of the field. Galois fields can be built for numbers that are powers of 2: 2, 4, 8, 16, etc. (in fact, any prime number p, but in practice, we are only interested in powers of 2). For example, for words of size 16 bits, this is a field containing 65,536 elements, for each pair of which a result of any operation (+, -, *, \/) can be found. The values x, p, alpha, beta, gamma, delta from the equations above for calculations will be considered elements of the Galois field.<\/p>\n<p><\/p>\n<p>Thus, we have a system of equations using which redundancy code blocks can be constructed by writing the corresponding computer program. This same system of equations can be used for data recovery.<\/p>\n<p><\/p>\n<p>* This is not a strict definition, more of a description.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">How to Restore Data<\/h3>\n<p><\/p>\n<p>Recovery is necessary when part of the n + m blocks is missing. These can be either data blocks or redundancy code blocks. The absence of data blocks and\/or redundancy code blocks means that in the equations above the corresponding variables x and\/or p are unknown.<\/p>\n<p><\/p>\n<p>The equations for Reed\u2013Solomon codes can be seen as a system of equations where all values alpha, beta, gamma, delta are constants, all x and p corresponding to the available blocks are known variables, and the others x and p are unknown.<\/p>\n<p><\/p>\n<p>For example, let blocks 1, 2, 3 of data and the redundancy code block 2 be unavailable; then for the i-th group of words, the following system of equations will be present (the unknowns are marked in red):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Meil on s\u00fcsteem, mis koosneb 4 v\u00f5rrandist 4 tundmatuga, seega saame selle lahendada ja andmed taastada!<\/p>\n<p><\/p>\n<p>Sellest v\u00f5rrandite s\u00fcsteemist j\u00e4relduvad mitmed j\u00e4reldused andmete taastamiseks Reed-Solomoni koodide puhul (n andmeplokki, m \u00fcleliigset koodiplokki):<\/p>\n<p><\/p>\n<ul>\n<li>Andmed on taastatavad, kui kaovad mistahes m plokki v\u00f5i v\u00e4hem. Kui kaob m+1 v\u00f5i rohkem plokki, ei ole andmete taastamine v\u00f5imalik: m v\u00f5rrandi lahendamiseks ei saa lahendada s\u00fcsteemi, kus on m + 1 tundmatut. <\/li>\n<li>Isegi \u00fche andmeploki taastamiseks tuleb kasutada mistahes n \u00fclej\u00e4\u00e4nud plokki, kusjuures v\u00f5ib kasutada mistahes \u00fcleliigse koodi.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Mida veel peaks teadma<\/h3>\n<p><\/p>\n<p>\u00dclal toodud kirjelduses j\u00e4tan t\u00e4helepanuta mitmed olulised k\u00fcsimused, mille arutamiseks tuleb s\u00fcgavamalt matemaatikasse s\u00fcveneda. Eelk\u00f5ige ei r\u00e4\u00e4gi ma j\u00e4rgmistest:<\/p>\n<p><\/p>\n<ul>\n<li>Reed-Solomoni koodide v\u00f5rrandite s\u00fcsteem peab omama (ainult \u00fchte) lahendust iga tundmatute kombinatsiooni puhul (mitte rohkem kui m tundmatut). Selle n\u00f5ude alusel valitakse alfade, beetade, gamma ja delta v\u00e4\u00e4rtused.<\/li>\n<li>V\u00f5rrandite s\u00fcsteemi tuleb osata automaatselt koostada (s\u00f5ltuvalt sellest, millised plokid on k\u00e4ttesaamatud) ja lahendada.<\/li>\n<li>On vajalik luua Galois' v\u00e4li: antud s\u00f5na suuruse jaoks tuleb osata leida mistahes kahe elemendi operatsiooni tulemus (+, -, *, \/).<\/li>\n<\/ul>\n<p><\/p>\n<p>Artikli l\u00f5pus on viidatud kirjandusele nende oluliste k\u00fcsimuste kohta.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Valiku n ja m<\/h3>\n<p><\/p>\n<p>Kuidas praktikas valida n ja m? Praktikas kasutavad andmesalvestuss\u00fcsteemid \u00fcleliigseid koode ruumi kokkuhoidmiseks, seega valitakse alati m v\u00e4iksemaks kui n. Nende konkreetsed v\u00e4\u00e4rtused s\u00f5ltuvad mitmest tegurist, sealhulgas:<\/p>\n<p><\/p>\n<ul>\n<li>Andmete salvestamise usaldusv\u00e4\u00e4rsus. Mida suurem on m, seda rohkem ketta t\u00f5rkeid saab \u00fcle elada, st usaldusv\u00e4\u00e4rsus on k\u00f5rgem.<\/li>\n<li>Salvestuse \u00fcleliigsus. Mida suurem on suhe m \/ n, seda k\u00f5rgem on salvestuse \u00fcleliigsus ja seda kallim on s\u00fcsteem.<\/li>\n<li>P\u00e4ringute t\u00f6\u00f6tlemise aeg. Mida suurem on summa n + m, seda kauem v\u00f5tab aega p\u00e4ringutele vastamine. Kuna andmete lugemiseks (taastamise ajal) tuleb lugeda n plokki, mis asuvad n erineval kettal, siis m\u00e4\u00e4rab lugemise aeg k\u00f5ige aeglasem ketas.<\/li>\n<\/ul>\n<p><\/p>\n<p>Lisaks sellele, andmete salvestamine mitmesse andmekeskusesse seab m ja n valikule t\u00e4iendavaid piiranguid: \u00fche andmekeskuse sulgemisel peavad andmed olema ikkagi loetavad. N\u00e4iteks, andmete salvestamisel kolmes andmekeskuses peab olema t\u00e4idetud tingimus: m &gt;= n\/2, vastasel juhul v\u00f5ib tekkida olukord, kus andmed ei ole \u00fche andmekeskuse sulgemisel loetavad.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 Kohalikud rekonstrueerimiskoodid<\/h1>\n<p><\/p>\n<p>Andmete taastamiseks Reed-Solomoni koodide abil tuleb kasutada n suvalist andmeplokki. See on v\u00e4ga oluline puudus hajutatud andmesalvestuss\u00fcsteemide jaoks, kuna \u00fche katki l\u00e4inud plaadi andmete taastamiseks tuleb lugeda andmeid enamuselt teistelt, luues suurt t\u00e4iendavat koormust plaatidel ja v\u00f5rgus.<\/p>\n<p><\/p>\n<p>Levinumad vead on \u00fche andmeploki k\u00e4ttesaamatuks muutumine kas plaadi rikke v\u00f5i \u00fclem\u00e4\u00e4rase koormuse t\u00f5ttu. Kas on v\u00f5imalik kuidagi v\u00e4hendada liigset koormust andmete taastamiseks sellises (k\u00f5ige levinumas) olukorras? Selgub, et on: selleks on olemas LRC \u00fcleliigsuse koodid.<\/p>\n<p><\/p>\n<p>LRC (Kohalikud rekonstrueerimiskoodid) on \u00fcleliigsuse koodid, mis m\u00f5eldi v\u00e4lja Microsoftis Windows Azure Storage'i rakendamiseks. LRC idee on \u00e4\u00e4rmiselt lihtne: jagada k\u00f5ik andmeplokid kaheks (v\u00f5i rohkemaks) grupiks ja arvutada iga grupi jaoks eraldi osa \u00fcleliigsuse blokke. Nii arvutatakse osa \u00fcleliigsuse blokke k\u00f5igi andmeplokkide abil (LRC-s nimetatakse neid globaalseteks \u00fcleliigsuse koodideks), ja osa \u00fchte kahest andmeplokkide grupist (need nimetatakse kohalikele \u00fcleliigsuse koodideks).<\/p>\n<p><\/p>\n<p>LRC t\u00e4histatakse kolme numbri abil: n-r-l, kus n on andmeplokkide arv, r on globaalsete \u00fcleliigsuse koodide arv, l on kohalike \u00fcleliigsuse koodide arv. \u00dche andmeploki k\u00e4ttesaamatuse korral andmete lugemiseks tuleb lugeda ainult n\/l plokki \u2014 see on l korda v\u00e4hem kui Reed-Solomoni koodide puhul.<\/p>\n<p><\/p>\n<p>N\u00e4iteks vaatame LRC skeemi 6-2-2. X1\u2013X6 \u2014 6 andmeplokki, P1, P2 \u2014 2 globaalset \u00fcleliigsuse plokki, P3, P4 \u2014 2 kohalikku \u00fcleliigsuse plokki.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00dcleliigsuse plokid P1, P2 arvutatakse k\u00f5igi andmeplokkide abil. \u00dcleliigsuse plokk P3 arvutatakse andmeplokkide X1\u2013X3 abil, \u00fcleliigsuse plokk P4 arvutatakse andmeplokkide X4\u2013X6 abil.<\/p>\n<p><\/p>\n<p>\u00dclej\u00e4\u00e4nu tehakse LRC-s sarnaselt Reed-Solomoni koodidega. \u00dcksused plokkide k\u00f5igi s\u00f5nade loendamiseks \u00fcleliigsete koodide seast on j\u00e4rgmised:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00dclem\u00e4\u00e4rasuse koodid: lihtsustatult, kuidas usaldusv\u00e4\u00e4rselt ja odavalt andmeid salvestada\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Alfa, beeta, gamma ja delta numbrite leidmiseks tuleb t\u00e4ita rida tingimusi, mis tagavad andmete taastamise v\u00f5imaluse (st v\u00f5rrandis\u00fcsteemi lahendamine). T\u00e4iendavat teavet nende kohta saab lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">artiklis<\/a><\/noindex>.<br \/>\nSamuti kasutatakse praktikas P3, P4 kohalike \u00fcleliigsete koodide loendamiseks XOR-operatsiooni. <\/p>\n<p><\/p>\n<p>LRC v\u00f5rrandis\u00fcsteemist tulenevad mitmed j\u00e4reldused:<\/p>\n<p><\/p>\n<ul>\n<li>\u00dche andmeploki taastamiseks on piisav lugeda n\/l plokki (n\/2 meie n\u00e4ites).<\/li>\n<li>Kui r + l plokki pole saadaval ja k\u00f5ik plokid kuuluvad \u00fchte gruppi, ei saa andmeid taastada. Seda on lihtne n\u00e4idata n\u00e4ite abil. Oletame, et plokid X1\u2013X3 ja P3 pole saadaval: see on r + l plokki \u00fchest grupist, meie n\u00e4ites 4. Siis on meil 3 v\u00f5rrandiga s\u00fcsteem 4 tundmatuga, mida ei saa lahendada.<\/li>\n<li>K\u00f5igis teistes r + l plokkide puutumatuse juhtudel (kui igast grupist on v\u00e4hemalt \u00fcks plokk saadaval) on andmed v\u00f5imalik taastada LRC-s.<\/li>\n<\/ul>\n<p><\/p>\n<p>Seega on LRC Reed-Solomoni koodidest parem andmete taastamisel p\u00e4rast \u00fcksikvigu. Reed-Solomoni koodide puhul on \u00fche andmeploki taastamiseks vajalik n plokki, LRC puhul piisab \u00fche andmeploki taastamiseks n\/l plokist (n\/2 meie n\u00e4ites). Teisest k\u00fcljest on LRC Reed-Solomoni koodidest halvem maksimaalse lubatud vigade arvus. \u00dclaltoodud n\u00e4idetes saavad Reed-Solomoni koodid taastada andmeid mis tahes 4 vea korral, samas kui LRC-l on 2 kombinatsiooni 4 veast, kui andmeid ei saa taastada.<\/p>\n<p><\/p>\n<p>Oluline on see, et see s\u00f5ltub konkreetsest olukorrast, kuid tihti kaalub LRC-st saadud \u00fcleliigse koormuse kokkuhoid \u00fcles veidi v\u00e4iksema andmete salvestamise usaldusv\u00e4\u00e4rsuse.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Muud \u00fcleliigsed koodid<\/h1>\n<p><\/p>\n<p>Lisaks Reed-Solomoni ja LRC koodidele on olemas palju muid \u00fcleliigseid koode. Erinevad \u00fcleliigsed koodid kasutavad erinevat matemaatikat. Siin on m\u00f5ned teised \u00fcleliigsed koodid:<\/p>\n<p><\/p>\n<ul>\n<li>\u00dcleliigsete koodide XOR-operaatoriga. XOR-operatsioonit tehakse n andmeplokki ja saadakse 1 \u00fcleliigse koodiplokk, st skeem n+1 (n andmeplokki, 1 \u00fcleliigse koodiga). Kasutatakse <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, kus andmeplokid ja \u00fcleliigsed koodid salvestatakse ts\u00fckliliselt k\u00f5igile kompuutri ketastele.<\/li>\n<li>Even-odd algoritm, mis p\u00f5hineb XOR-operatsioonil. See v\u00f5imaldab luua 2 \u00fclearune koodiblokki, st skeem n+2.<\/li>\n<li>STAR algoritm, mis p\u00f5hineb XOR-operatsioonil. See v\u00f5imaldab luua 3 \u00fclearune koodiblokki, st skeem n+3.<\/li>\n<li>Pyramide koodid \u2014 veel \u00fched \u00fclearune koodid Microsoftilt.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Kasutamine Yandexis<\/h1>\n<p><\/p>\n<p>Mitmed Yandexi infrastruktuuri projektid kasutavad \u00fclearuse koode usaldusv\u00e4\u00e4rse andmete salvestamise tagamiseks. Siin on m\u00f5ned n\u00e4ited:<\/p>\n<p><\/p>\n<ul>\n<li>Sisemine objekti salvestus MDS, millest r\u00e4\u00e4kisin artikli alguses.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2014 Yandexi MapReduce s\u00fcsteem.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FwLvAuOSIOU\">YDB<\/a><\/noindex> (Yandex DataBase) \u2014 jaotatud newSQL andmebaas.<\/li>\n<\/ul>\n<p><\/p>\n<p>MDS-is kasutatakse LRC \u00fclearuse koode, skeem 8-2-2. Andmed \u00fclearuse koodidega kirjutatakse 12 erinevale kettale erinevates serverites 3 erinevas andmekeskuses: igas andmekeskuses 4 serverit. Rohkem selle kohta leiate <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">artiklis<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>YT-s kasutatakse nii Reed-Salomon koodide (skeem 6-3), mis olid esimesed ellu viidud, kui ka LRC \u00fclearuse koode (skeem 12-2-2), kusjuures LRC on eelistatud salvestamisviis.<\/p>\n<p><\/p>\n<p>YDB-s kasutatakse \u00fclearuse koode, mis p\u00f5hinevad even-odd (skeem 4-2). \u00dclearuse koode YDB-s on juba <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">r\u00e4\u00e4gitud Highload'is.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Erinevate \u00fclearuse koodide skeemide kasutamine on tingitud erinevatest s\u00fcsteemidele esitatud n\u00f5uetest. N\u00e4iteks MDS-is salvestatakse LRC abil andmed kohe 3 andmekeskuses. Meile on oluline, et andmed oleksid loetavad, kui \u00fcks andmekeskus eba\u00f5nnestub, seet\u00f5ttu peavad plokid olema jaotatud andmekeskuste vahel nii, et mis tahes andmekeskuse puudumisel oleks puuduvate plokkide arv mitte suurem kui lubatud. Skeemi 8-2-2 puhul v\u00f5ib igas andmekeskuses asuda 4 plokki, siis on 1 andmekeskuse v\u00e4ljal\u00fclitamisel puuduv 4 plokki ja andmeid on v\u00f5imalik lugeda. \u00dcksk\u00f5ik, millise skeemi me valime 3 andmekeskuses, peab igal juhul olema (r + l) \/ n &gt;= 0,5, st salvestamise \u00fclearus peab olema minimaalne 50%.<\/p>\n<p><\/p>\n<p>YT-s on olukord teine: iga YT kluster asub t\u00e4ielikult 1 andmekeskuses (erinevad klastrid erinevates andmekeskustes), seega ei ole seal sellist piirangut. Skeem 12-2-2 annab 33% \u00fclearuse, st andmete salvestamine osutub odavamaks ja need v\u00f5ivad taluda kuni 4 samaaegset kettavea, nagu MDS-s.<\/p>\n<p><\/p>\n<p>Andmed, mille \u00fcleliigsete koodide rakendamisega on seotud, h\u00f5lmavad paljusid aspekte: andmete taastamise n\u00fcansid, taastamise m\u00f5ju p\u00e4ringute t\u00e4itmise ajale, andmete salvestamise omadused jne. Kavatseme r\u00e4\u00e4kida eraldi nendest ja muudest aspektidest, kui teema huvi pakub.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. Lingid<\/h1>\n<p><\/p>\n<ol>\n<li>Reedi-Solomoni koodide ja Galois' v\u00e4li artikkelide seeria: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yadro\/blog\/336286\/\">https:\/\/habr.com\/ru\/company\/yadro\/blog\/336286\/<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yadro\/blog\/341506\/\">https:\/\/habr.com\/ru\/company\/yadro\/blog\/341506\/<\/a><\/noindex><br \/>\nNeis k\u00e4sitletakse matemaatikat s\u00fcgavamal ja selgemal viisil.<\/li>\n<li>Microsofti artikkel LRC kohta: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf<\/a><\/noindex><br \/>\nJaotis 2 selgitab teooriat l\u00fchidalt, seej\u00e4rel k\u00e4sitletakse LRC rakendamise kogemust praktikas.<\/li>\n<li>Even-odd skeem: <noindex><a rel=\"nofollow\" href=\"https:\/\/people.eecs.berkeley.edu\/~kubitron\/courses\/cs262a-F12\/handouts\/papers\/p245-blaum.pdf\">https:\/\/people.eecs.berkeley.edu\/~kubitron\/courses\/cs262a-F12\/handouts\/papers\/p245-blaum.pdf<\/a><\/noindex><\/li>\n<li>STAR skeem: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/legacy\/event\/fast05\/tech\/full_papers\/huang\/huang.pdf\">https:\/\/www.usenix.org\/legacy\/event\/fast05\/tech\/full_papers\/huang\/huang.pdf<\/a><\/noindex><\/li>\n<li>P\u00fcramiidi koodid: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems\/\">https:\/\/www.microsoft.com\/en-us\/research\/publication\/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems\/<\/a><\/noindex><\/li>\n<li>MDS-is olevad \u00fclemineku koodid: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\">https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806<\/a><\/noindex> <\/li>\n<li>YT-s olevad \u00fclemineku koodid: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/<\/a><\/noindex><\/li>\n<li>YDB-s olevad \u00fclemineku koodid: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8<\/a><\/noindex><\/li>\n<\/ol>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/510050\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438* \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u042f\u043d\u0434\u0435\u043a\u0441\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u043e\u0432 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0435\u0437 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0434\u043a\u043e. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87758","post","type-post","status-publish","format-standard","has-post-thumbnail","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=\".\" \/>\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\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye\" \/>\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\udd47\u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\".\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye\" \/>\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-09T23:41:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-09T23:41:58+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\udd47\u00dclemineku koodid: lihtsate s\u00f5nadega, kuidas andmeid usaldusv\u00e4\u00e4rselt ja odavalt salvestada | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","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\udd47\u041a\u043e\u0434\u044b \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 | ProHoster","og:description":".","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","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-09T23:41:58+00:00","article:modified_time":"2020-07-09T23:41:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87758","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:44:06","updated":"2022-09-29 13:02:43","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\/87758","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=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}