{"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\/ro\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Iat\u0103 cum arat\u0103 redundan\u021ba<\/em><\/p>\n<p><\/p>\n<p>Codurile de redundan\u021b\u0103* sunt larg utilizate \u00een sistemele de calcul pentru a cre\u0219te fiabilitatea stoc\u0103rii datelor. La Yandex, ele sunt folosite \u00een foarte multe proiecte. De exemplu, utilizarea codurilor de redundan\u021b\u0103 \u00een locul replic\u0103rii \u00een depozitul nostru intern de obiecte economise\u0219te milioane f\u0103r\u0103 a reduce fiabilitatea. Totu\u0219i, \u00een ciuda r\u0103sp\u00e2ndirii largi, o descriere clar\u0103 a modului \u00een care func\u021bioneaz\u0103 codurile de redundan\u021b\u0103 este destul de rar \u00eent\u00e2lnit\u0103. Cei care doresc s\u0103 \u00een\u021beleag\u0103 se confrunt\u0103 cu ceva de genul (din <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\">Wikipedia<\/a><\/noindex>):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>M\u0103 numesc Vadim, la Yandex m\u0103 ocup de dezvoltarea depozitului intern de obiecte MDS. \u00cen acest articol voi descrie, \u00een cuvinte simple, fundamentele teoretice ale codurilor de redundan\u021b\u0103 (codurile Reed-Solomon \u0219i LRC). Voi explica cum func\u021bioneaz\u0103, f\u0103r\u0103 matematic\u0103 complex\u0103 \u0219i termeni rari. La final, voi prezenta exemple de utilizare a codurilor de redundan\u021b\u0103 la Yandex.<\/p>\n<p><\/p>\n<p>O serie de detalii matematice nu le voi examina \u00een detaliu, dar voi oferi linkuri pentru cei care doresc s\u0103 aprofundeze subiectul. De asemenea, a\u0219 remarca faptul c\u0103 unele defini\u021bii matematice pot s\u0103 nu fie stricte, deoarece articolul este destinat nu matematicienilor, ci inginerilor care doresc s\u0103 \u00een\u021beleag\u0103 esen\u021ba problemei.<\/p>\n<p><\/p>\n<p>* \u00cen literatura \u00een limba englez\u0103, codurile de redundan\u021b\u0103 sunt adesea numite erasure codes.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. Esen\u021ba codurilor de redundan\u021b\u0103<\/h1>\n<p><\/p>\n<p>Esen\u021ba tuturor codurilor de redundan\u021b\u0103 este extrem de simpl\u0103: a stoca (sau a transmite) date astfel \u00eenc\u00e2t s\u0103 nu se piard\u0103 \u00een caz de erori (defec\u021biuni ale discurilor, erori de transmisie a datelor etc.). <\/p>\n<p><\/p>\n<p>\u00cen majoritatea* codurilor de redundan\u021b\u0103, datele sunt \u00eemp\u0103r\u021bite \u00een n blocuri de date, pentru care se consider\u0103 m blocuri de coduri de redundan\u021b\u0103, astfel rezult\u00e2nd \u00een total n + m blocuri. Codurile de redundan\u021b\u0103 sunt construite astfel \u00eenc\u00e2t s\u0103 permit\u0103 recuperarea n blocuri de date, folosind doar o parte din n + m blocuri. \u00cen continuare, ne vom concentra doar pe codurile de redundan\u021b\u0103 pe blocuri, adic\u0103 pe cele \u00een care datele sunt \u00eemp\u0103r\u021bite \u00een blocuri.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pentru a restaura toate n blocuri de date, este necesar s\u0103 ave\u021bi minimum n din n + m blocuri, deoarece nu este posibil s\u0103 ob\u021bine\u021bi n blocuri av\u00e2nd doar n-1 bloc (\u00een acest caz, ar trebui s\u0103 lua\u021bi 1 bloc \u201edin aer\u201d). Sunt suficiente n blocuri arbitrare din n + m blocuri pentru a restaura toate datele? Aceasta depinde de tipul de coduri de redundan\u021b\u0103, de exemplu, codurile Reed-Solomon permit restaurarea tuturor datelor cu ajutorul n blocuri arbitrare, \u00een timp ce codurile de redundan\u021b\u0103 LRC - nu \u00eentotdeauna.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Stocarea datelor<\/h3>\n<p><\/p>\n<p>\u00cen sistemele de stocare a datelor, de obicei, fiecare dintre blocurile de date \u0219i blocurile de coduri de redundan\u021b\u0103 sunt scrise pe un disc separat. Astfel, \u00een cazul defect\u0103rii unui disc arbitrar, datele originale pot fi restabilite \u0219i citite. Datele pot fi restaurate chiar \u0219i \u00een cazul defect\u0103rii simultane a mai multor discuri.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Transferul de date<\/h3>\n<p><\/p>\n<p>Codurile de redundan\u021b\u0103 pot fi utilizate pentru transmiterea fiabil\u0103 a datelor \u00eentr-o re\u021bea nesigur\u0103. Datele transmise sunt \u00eemp\u0103r\u021bite \u00een blocuri, pentru acestea se calculeaz\u0103 coduri de redundan\u021b\u0103. Prin re\u021bea sunt transmise at\u00e2t blocurile de date, c\u00e2t \u0219i blocurile de coduri de redundan\u021b\u0103. \u00cen cazul \u00een care apar erori \u00een blocuri arbitrare (p\u00e2n\u0103 la un anumit num\u0103r de blocuri), datele pot fi totu\u0219i transmise f\u0103r\u0103 erori prin re\u021bea. Codurile Reed-Solomon, de exemplu, sunt utilizate pentru transmiterea datelor prin linii de comunica\u021bie optic\u0103 \u0219i \u00een comunica\u021biile prin satelit.<\/p>\n<p><\/p>\n<p>* Exist\u0103, de asemenea, coduri de redundan\u021b\u0103 \u00een care datele nu sunt \u00eemp\u0103r\u021bite \u00een blocuri, de exemplu, codurile Hamming \u0219i codurile CRC, utilizate pe scar\u0103 larg\u0103 pentru transmiterea datelor \u00een re\u021bele Ethernet. Acestea sunt coduri pentru codificarea rezistent\u0103 la interferen\u021be, destinate detect\u0103rii erorilor, nu corect\u0103rii acestora (codul Hamming permite, de asemenea, corectarea par\u021bial\u0103 a erorilor).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. Codurile Reed-Solomon<\/h1>\n<p><\/p>\n<p>Codurile Reed-Solomon sunt unele dintre cele mai r\u0103sp\u00e2ndite coduri de redundan\u021b\u0103, inventate \u00eenc\u0103 \u00een anii 1960 \u0219i utilizate pe scar\u0103 larg\u0103 \u00een anii 1980 pentru produc\u021bia \u00een mas\u0103 de discuri compacte.<\/p>\n<p><\/p>\n<p>Exist\u0103 dou\u0103 \u00eentreb\u0103ri cheie pentru \u00een\u021belegerea codurilor Reed-Solomon: 1) cum se creeaz\u0103 blocuri de coduri de redundan\u021b\u0103; 2) cum se recupereaz\u0103 datele cu ajutorul blocurilor de coduri de redundan\u021b\u0103. S\u0103 g\u0103sim r\u0103spunsuri la acestea.<br \/>\nPentru simplificare, vom considera c\u0103 n=6 \u0219i m=4. Alte scheme sunt examinate prin analogie.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">Cum se creeaz\u0103 blocuri de coduri de redundan\u021b\u0103<\/h3>\n<p><\/p>\n<p>Fiecare bloc de coduri de redundan\u021b\u0103 este considerat independent de celelalte. Pentru calcularea fiec\u0103rui bloc se folosesc toate blocurile de date n. \u00cen diagrama de mai jos, X1-X6 sunt blocuri de date, iar P1\u2013P4 sunt blocuri de coduri de redundan\u021b\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toate blocurile de date trebuie s\u0103 fie de dimensiuni egale, iar pentru aliniere se pot folosi bi\u021bi nuli. Blocurile ob\u021binute de coduri de redundan\u021b\u0103 vor avea aceea\u0219i dimensiune ca blocurile de date. Toate blocurile de date sunt \u00eemp\u0103r\u021bite \u00een cuvinte (de exemplu, c\u00e2te 16 bi\u021bi). Presupunem c\u0103 am \u00eemp\u0103r\u021bit blocurile de date \u00een k cuvinte. Atunci, toate blocurile de coduri de redundan\u021b\u0103 vor fi de asemenea \u00eemp\u0103r\u021bite \u00een k cuvinte.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pentru calcularea celui i-lea cuv\u00e2nt din fiecare bloc de redundan\u021b\u0103 se vor folosi cele i-lea cuvinte ale tuturor blocurilor de date. Acestea vor fi calculate conform urm\u0103toarei formule:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aici valorile x reprezint\u0103 cuvintele blocurilor de date, p reprezint\u0103 cuvintele blocurilor de coduri de redundan\u021b\u0103, toate alfa, beta, gamma \u0219i delta sunt numere special alese, identice pentru toate i. Este important de men\u021bionat c\u0103 toate aceste valori nu sunt numere obi\u0219nuite, ci elemente ale unui c\u00e2mp Galois, iar opera\u021biile +, -, *, \/ nu sunt opera\u021bii standard, ci opera\u021bii speciale introduse pentru elementele c\u00e2mpului Galois.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">De ce sunt necesare c\u00e2mpurile Galois<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ar p\u0103rea c\u0103 totul este simplu: \u00eemp\u0103r\u021bim datele \u00een blocuri, blocurile \u00een cuvinte, folosind cuvintele blocurilor de date pentru a calcula cuvintele blocurilor de coduri de redundan\u021b\u0103 \u2014 ob\u021binem blocuri de coduri de redundan\u021b\u0103. \u00cen general, a\u0219a func\u021bioneaz\u0103, dar diavolul se afl\u0103 \u00een detalii:<\/p>\n<p><\/p>\n<ol>\n<li>A\u0219a cum am men\u021bionat mai sus, dimensiunea cuv\u00e2ntului este fix\u0103; \u00een exemplul nostru este de 16 bi\u021bi. Formulele de mai sus pentru codurile Reed-Solomon sunt astfel \u00eenc\u00e2t, atunci c\u00e2nd se folosesc numere \u00eentregi obi\u0219nuite, rezultatul calculului p poate s\u0103 nu fie reprezentabil printr-un cuv\u00e2nt de dimensiune acceptabil\u0103.<\/li>\n<li>La recuperarea datelor, formulele de mai sus vor fi considerate ca un sistem de ecua\u021bii care trebuie rezolvat pentru a recupera datele. \u00cen procesul de solu\u021bionare, poate ap\u0103rea necesitatea de a \u00eemp\u0103r\u021bi numere \u00eentregi, rezultatul fiind un num\u0103r real, care nu poate fi reprezentat exact \u00een memoria computerului.<\/li>\n<\/ol>\n<p><\/p>\n<p>Aceste probleme \u00eempiedic\u0103 utilizarea numerelor \u00eentregi pentru codurile Reed-Solomon. Solu\u021bia problemei este original\u0103 \u0219i poate fi descris\u0103 astfel: s\u0103 venim cu numere speciale care pot fi reprezentate folosind cuvinte de lungimea necesar\u0103 (de exemplu, 16 bi\u021bi), iar rezultatul tuturor opera\u021biunilor efectuate asupra lor (adunare, sc\u0103dere, \u00eenmul\u021bire, \u00eemp\u0103r\u021bire) va fi, de asemenea, reprezentat \u00een memoria computerului prin cuvinte de lungimea necesar\u0103.<\/p>\n<p><\/p>\n<p>Aceste \u201enumere speciale\u201d sunt studiate de matematic\u0103 de mult timp \u0219i se numesc c\u00e2mpuri. Un c\u00e2mp este un set de elemente cu opera\u021bii specifice de adunare, sc\u0103dere, \u00eenmul\u021bire \u0219i \u00eemp\u0103r\u021bire.<\/p>\n<p><\/p>\n<p>C\u00e2mpurile Galois* sunt c\u00e2mpuri pentru care exist\u0103 \u0219i este unic\u0103 rezultatul fiec\u0103rei opera\u021biuni (+, -, *, \/) pentru orice dou\u0103 elemente ale c\u00e2mpului. C\u00e2mpurile Galois pot fi construite pentru numere care sunt puteri ale lui 2: 2, 4, 8, 16 etc. (de fapt, puteri ale oric\u0103rui num\u0103r prim p, dar \u00een practic\u0103 ne intereseaz\u0103 doar puterile lui 2). De exemplu, pentru cuvinte de dimensiune de 16 bi\u021bi, acest c\u00e2mp con\u021bine 65.536 de elemente, pentru fiecare pereche dintre acestea put\u00e2ndu-se g\u0103si rezultatul oric\u0103rei opera\u021biuni (+, -, *, \/). Valorile x, p, alfa, beta, gamma, delta din ecua\u021biile de mai sus pentru calcule vor fi considerate elemente ale c\u00e2mpului Galois.<\/p>\n<p><\/p>\n<p>Prin urmare, avem un sistem de ecua\u021bii, cu ajutorul c\u0103ruia putem construi blocuri de coduri de redundan\u021b\u0103, scriind un program de calculator corespunz\u0103tor. Cu acest sistem de ecua\u021bii putem efectua, de asemenea, recuperarea datelor.<\/p>\n<p><\/p>\n<p>* Aceasta nu este o defini\u021bie strict\u0103, ci mai degrab\u0103 o descriere.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">Cum s\u0103 recuper\u0103m datele<\/h3>\n<p><\/p>\n<p>Recuperarea este necesar\u0103 atunci c\u00e2nd din n + m blocuri, o parte a blocurilor lipse\u0219te. Acestea pot fi at\u00e2t blocuri de date, c\u00e2t \u0219i blocuri de coduri de redundan\u021b\u0103. Lipsa blocurilor de date \u0219i\/sau a blocurilor de coduri de redundan\u021b\u0103 va \u00eensemna c\u0103 \u00een ecua\u021biile de mai sus sunt necunoscute variabilele corespunz\u0103toare x \u0219i\/sau p.<\/p>\n<p><\/p>\n<p>Ecua\u021biile pentru codurile Reed-Solomon pot fi considerate un sistem de ecua\u021bii \u00een care toate valorile alfa, beta, gamma, delta sunt constante, toate x \u0219i p, corespunz\u0103toare blocurilor disponibile, sunt variabile cunoscute, iar celelalte x \u0219i p sunt necunoscute.<\/p>\n<p><\/p>\n<p>De exemplu, s\u0103 presupunem c\u0103 blocurile de date 1, 2, 3 \u0219i blocul de coduri de redundan\u021b\u0103 2 sunt indisponibile, atunci pentru grupa i de cuvinte va exista urm\u0103torul sistem de ecua\u021bii (necunoscutele sunt marcate cu ro\u0219u):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Avem un sistem de 4 ecua\u021bii cu 4 necunoscute, ceea ce \u00eenseamn\u0103 c\u0103 putem s\u0103-l rezolv\u0103m \u0219i s\u0103 recuper\u0103m datele!<\/p>\n<p><\/p>\n<p>Din acest sistem de ecua\u021bii rezult\u0103 o serie de concluzii despre recuperarea datelor pentru codurile Reed-Solomon (n blocuri de date, m blocuri de coduri de redundan\u021b\u0103):<\/p>\n<p><\/p>\n<ul>\n<li>Datele pot fi recuperate \u00een cazul pierderii oric\u0103ror m blocuri sau mai pu\u021bin. \u00cen cazul pierderii a m+1 sau mai multe blocuri, datele nu pot fi recuperate: nu se poate rezolva un sistem de m ecua\u021bii cu m + 1 necunoscute. <\/li>\n<li>Pentru a recupera chiar \u0219i un singur bloc de date, trebuie s\u0103 folosim orice n din blocurile r\u0103mase, put\u00e2nd utiliza oricare dintre codurile de redundan\u021b\u0103.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Ce mai trebuie s\u0103 \u0219ti\u021bi<\/h3>\n<p><\/p>\n<p>\u00cen descrierea de mai sus, evit o serie de \u00eentreb\u0103ri importante, pentru analizarea c\u0103rora trebuie s\u0103 ne aprofund\u0103m \u00een matematic\u0103. \u00cen special, nu men\u021bionez urm\u0103toarele:<\/p>\n<p><\/p>\n<ul>\n<li>Sistemul de ecua\u021bii pentru codurile Reed-Solomon trebuie s\u0103 aib\u0103 o (singur\u0103) solu\u021bie pentru orice combina\u021bii de necunoscute (nu mai mult de m necunoscute). Pe baza acestei cerin\u021be, se aleg valorile alpha, beta, gamma \u0219i delta.<\/li>\n<li>Sistemul de ecua\u021bii trebuie s\u0103 fie capabil s\u0103 fie construit automat (\u00een func\u021bie de blocurile care nu sunt disponibile) \u0219i s\u0103 fie rezolvat.<\/li>\n<li>Trebuie construit un c\u00e2mp Galois: pentru o dimensiune dat\u0103 a cuv\u00e2ntului, trebuie s\u0103 putem g\u0103si rezultatul oric\u0103rei opera\u021bii (+, -, *, \/) pentru orice dou\u0103 elemente.<\/li>\n<\/ul>\n<p><\/p>\n<p>La finalul articolului exist\u0103 linkuri c\u0103tre literatura referitoare la aceste \u00eentreb\u0103ri importante.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Alegerea n \u0219i m<\/h3>\n<p><\/p>\n<p>Cum se aleg practic n \u0219i m? \u00cen practic\u0103, \u00een sistemele de stocare a datelor, codurile de redundan\u021b\u0103 sunt utilizate pentru economisirea spa\u021biului, a\u0219a c\u0103 m este \u00eentotdeauna ales mai mic dec\u00e2t n. Valorile lor concrete depind de o serie de factori, inclusiv:<\/p>\n<p><\/p>\n<ul>\n<li>Fiabilitatea stoc\u0103rii datelor. Cu c\u00e2t m este mai mare, cu at\u00e2t mai multe defecte ale discurilor pot fi suportate, adic\u0103 fiabilitatea este mai mare.<\/li>\n<li>Redundan\u021ba stoc\u0103rii. Cu c\u00e2t raportul m \/ n este mai mare, cu at\u00e2t redundan\u021ba stoc\u0103rii va fi mai mare, iar sistemul va costa mai mult.<\/li>\n<li>Timpul de procesare a cererilor. Cu c\u00e2t suma n + m este mai mare, cu at\u00e2t timpul de r\u0103spuns la cereri va fi mai lung. Deoarece pentru citirea datelor (\u00een timpul recuper\u0103rii) trebuie citite n blocuri, g\u0103zduite pe n discuri diferite, timpul de citire va fi determinat de cel mai lent disc.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00cen plus, stocarea datelor \u00een mai multe centre de date impune restric\u021bii suplimentare asupra alegerii n \u0219i m: \u00een cazul \u00een care un centru de date este oprit, datele trebuie s\u0103 fie \u00eenc\u0103 disponibile pentru citire. De exemplu, pentru stocarea datelor \u00een 3 centre de date, trebuie respectat\u0103 condi\u021bia: m &gt;= n\/2, altfel este posibil s\u0103 se ajung\u0103 \u00een situa\u021bia \u00een care datele nu sunt disponibile pentru citire \u00een cazul unei opriri a unui centru de date.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 Coduri locale de reconstruc\u021bie<\/h1>\n<p><\/p>\n<p>Pentru a recupera datele folosind codurile Reed-Solomon, este necesar s\u0103 se foloseasc\u0103 n blocuri de date arbitrare. Acesta este un dezavantaj considerabil pentru sistemele distribuite de stocare a datelor, deoarece pentru a recupera datele de pe un disc defect, va trebui s\u0103 se citeasc\u0103 datele de pe majoritatea celorlalte, gener\u00e2nd o \u00eenc\u0103rc\u0103tur\u0103 suplimentar\u0103 mare pe discuri \u0219i re\u021bea.<\/p>\n<p><\/p>\n<p>Cele mai frecvente erori sunt indisponibilitatea unui bloc de date din cauza defect\u0103rii sau suprasolicit\u0103rii unui disc. Poate fi redus\u0103 cumva \u00eenc\u0103rc\u0103tura excesiv\u0103 pentru recuperarea datelor \u00een acest caz (cel mai frecvent)? Se pare c\u0103 da: special pentru aceasta exist\u0103 codurile de redundan\u021b\u0103 LRC.<\/p>\n<p><\/p>\n<p>LRC (Coduri locale de reconstruc\u021bie) sunt coduri de redundan\u021b\u0103 inventate de Microsoft pentru utilizarea \u00een Windows Azure Storage. Ideea LRC este extrem de simpl\u0103: a \u00eemp\u0103r\u021bi toate blocurile de date \u00een dou\u0103 (sau mai multe) grupe \u0219i a calcula o parte din blocurile de coduri de redundan\u021b\u0103 pentru fiecare grup\u0103 \u00een parte. Astfel, o parte din blocurile de coduri de redundan\u021b\u0103 vor fi calculate utiliz\u00e2nd toate blocurile de date (\u00een LRC acestea sunt denumite coduri globale de redundan\u021b\u0103), iar o parte \u2014 cu ajutorul uneia dintre cele dou\u0103 grupe de blocuri de date (acestea sunt denumite coduri locale de redundan\u021b\u0103).<\/p>\n<p><\/p>\n<p>LRC este reprezentat prin trei numere: n-r-l, unde n este num\u0103rul de blocuri de date, r este num\u0103rul de blocuri globale de coduri de redundan\u021b\u0103, iar l este num\u0103rul de blocuri locale de coduri de redundan\u021b\u0103. Pentru a citi datele \u00een cazul indisponibilit\u0103\u021bii unui bloc de date, este necesar s\u0103 se citeasc\u0103 doar n\/l blocuri \u2014 acesta fiind de l ori mai pu\u021bin dec\u00e2t \u00een codurile Reed-Solomon.<\/p>\n<p><\/p>\n<p>De exemplu, s\u0103 analiz\u0103m schema LRC 6-2-2. X1\u2013X6 \u2014 6 blocuri de date, P1, P2 \u2014 2 blocuri globale de redundan\u021b\u0103, P3, P4 \u2014 2 blocuri locale de redundan\u021b\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Blocurile de coduri de redundan\u021b\u0103 P1, P2 sunt calculate cu ajutorul tuturor blocurilor de date. Blocul de coduri de redundan\u021b\u0103 P3 \u2014 cu ajutorul blocurilor de date X1\u2013X3, blocul de coduri de redundan\u021b\u0103 P4 \u2014 cu ajutorul blocurilor de date X4\u2013X6.<\/p>\n<p><\/p>\n<p>Restul se face \u00een LRC, similar cu codurile Reed-Solomon. Ecua\u021biile pentru calcularea cuvintelor blocurilor de coduri redundante sunt urm\u0103toarele:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een mod sigur \u0219i ieftin\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pentru a determina numerele alfa, beta, gamma, delta, este necesar s\u0103 se \u00eendeplineasc\u0103 o serie de condi\u021bii care garanteaz\u0103 posibilitatea de a recupera datele (adic\u0103 solu\u021bia sistemului de ecua\u021bii). Mai multe detalii pot fi citite \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">pe care l-a\u021bi citit<\/a><\/noindex>.<br \/>\nDe asemenea, \u00een practic\u0103, pentru calcularea codurilor redundante locale P3, P4 se aplic\u0103 opera\u021bia XOR. <\/p>\n<p><\/p>\n<p>Din sistemul de ecua\u021bii pentru LRC rezult\u0103 o serie de concluzii:<\/p>\n<p><\/p>\n<ul>\n<li>Pentru a recupera un bloc de date este suficient s\u0103 se citeasc\u0103 n\/l blocuri (n\/2 \u00een exemplul nostru).<\/li>\n<li>Dac\u0103 r + l blocuri nu sunt accesibile, iar toate blocurile fac parte din aceea\u0219i grup\u0103, atunci datele nu pot fi recuperate. Acest lucru poate fi explicat u\u0219or printr-un exemplu. S\u0103 presupunem c\u0103 blocurile X1\u2013X3 \u0219i P3 nu sunt accesibile: acestea constituie r + l blocuri dintr-o singur\u0103 grup\u0103, 4 \u00een cazul nostru. Atunci avem un sistem de 3 ecua\u021bii cu 4 necunoscute, care nu poate fi rezolvat.<\/li>\n<li>\u00cen toate celelalte cazuri de inaccesibilitate a r + l blocuri (c\u00e2nd din fiecare grup\u0103 este disponibil cel pu\u021bin un bloc), datele \u00een LRC pot fi recuperate.<\/li>\n<\/ul>\n<p><\/p>\n<p>Astfel, LRC are avantaje fa\u021b\u0103 de codurile Reed-Solomon \u00een recuperarea datelor dup\u0103 erori simple. \u00cen codurile Reed-Solomon, pentru a recupera chiar \u0219i un singur bloc de date, este necesar s\u0103 se utilizeze n blocuri, \u00een timp ce \u00een LRC pentru recuperarea unui bloc de date este suficient s\u0103 se foloseasc\u0103 n\/l blocuri (n\/2 \u00een exemplul nostru). Pe de alt\u0103 parte, LRC este inferior codurilor Reed-Solomon \u00een ceea ce prive\u0219te num\u0103rul maxim de erori tolerate. \u00cen exemplele de mai sus, codurile Reed-Solomon pot recupera datele \u00een cazul a 4 erori, iar pentru LRC exist\u0103 2 combina\u021bii de 4 erori \u00een care datele nu pot fi recuperate.<\/p>\n<p><\/p>\n<p>Ceea ce este mai important \u2014 depinde de situa\u021bia specific\u0103, dar adesea economisirea sarcinii redundante oferite de LRC dep\u0103\u0219e\u0219te o u\u0219oar\u0103 fiabilitate mai mic\u0103 a stoc\u0103rii.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Alte coduri de redundan\u021b\u0103<\/h1>\n<p><\/p>\n<p>Pe l\u00e2ng\u0103 codurile Reed-Solomon \u0219i LRC, exist\u0103 multe alte coduri de redundan\u021b\u0103. Diferite coduri de redundan\u021b\u0103 folosesc matematici diferite. Iat\u0103 c\u00e2teva alte coduri de redundan\u021b\u0103:<\/p>\n<p><\/p>\n<ul>\n<li>Cod de redundan\u021b\u0103 prin operatorul XOR. Opera\u021bia XOR se desf\u0103\u0219oar\u0103 pe n blocuri de date, \u0219i rezultatul este 1 bloc de coduri redundante, adic\u0103 schema n+1 (n blocuri de date, 1 cod de redundan\u021b\u0103). Se folose\u0219te \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, unde blocurile de date \u0219i codurile de redundan\u021b\u0103 sunt scrise \u00een mod ciclisc pe toate discurile din matrice.<\/li>\n<li>Algoritmul even-odd, bazat pe opera\u021bia XOR. Permite construirea a 2 blocuri de coduri de redundan\u021b\u0103, adic\u0103 schema n+2.<\/li>\n<li>Algoritmul STAR, bazat pe opera\u021bia XOR. Permite construirea a 3 blocuri de coduri de redundan\u021b\u0103, adic\u0103 schema n+3.<\/li>\n<li>Codurile pyramide \u2014 \u00eenc\u0103 un tip de coduri de redundan\u021b\u0103 de la Microsoft.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Utilizare \u00een Yandex<\/h1>\n<p><\/p>\n<p>O serie de proiecte infrastructurale ale Yandex utilizeaz\u0103 coduri de redundan\u021b\u0103 pentru stocarea fiabil\u0103 a datelor. Iat\u0103 c\u00e2teva exemple:<\/p>\n<p><\/p>\n<ul>\n<li>Stocarea obiectelor interne MDS, despre care am scris la \u00eenceputul articolului.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2014 sistemul MapReduce al Yandex.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FwLvAuOSIOU\">YDB<\/a><\/noindex> (Yandex DataBase) \u2014 baz\u0103 de date distribuit\u0103 newSQL.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00cen MDS, se utilizeaz\u0103 coduri de redundan\u021b\u0103 LRC, schema 8-2-2. Datele cu coduri de redundan\u021b\u0103 sunt scrise pe 12 discuri diferite \u00een servere diferite \u00een 3 centre de date diferite: c\u00e2te 4 servere \u00een fiecare centru. Cite\u0219te mai multe despre asta \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">pe care l-a\u021bi citit<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>\u00cen YT se utilizeaz\u0103 at\u00e2t coduri Reed-Solomon (schema 6-3), care au fost implementate primele, c\u00e2t \u0219i coduri de redundan\u021b\u0103 LRC (schema 12-2-2), LRC fiind metoda preferat\u0103 de stocare.<\/p>\n<p><\/p>\n<p>\u00cen YDB se utilizeaz\u0103 coduri de redundan\u021b\u0103 bazate pe even-odd (schema 4-2). Despre codurile de redundan\u021b\u0103 \u00een YDB s-a vorbit deja <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">la Highload<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Aplicarea diferitelor scheme de coduri de redundan\u021b\u0103 este dictat\u0103 de diferitele cerin\u021be impuse sistemelor. De exemplu, \u00een MDS, datele stocate cu ajutorul LRC sunt distribuite \u00een 3 centre de date. Este esen\u021bial ca datele s\u0103 r\u0103m\u00e2n\u0103 accesibile la citire \u00een cazul defect\u0103rii oric\u0103rui centru de date, a\u0219a c\u0103 blocurile trebuie s\u0103 fie distribuite astfel \u00eenc\u00e2t, \u00een cazul inaccesibilit\u0103\u021bii oric\u0103rui centru, num\u0103rul blocurilor inaccesibile s\u0103 nu dep\u0103\u0219easc\u0103 limita admisibil\u0103. \u00cen schema 8-2-2 se pot plasa c\u00e2te 4 blocuri \u00een fiecare centru, astfel \u00eenc\u00e2t, la deconectarea oric\u0103rui centru, vor fi inaccesibile 4 blocuri, iar datele vor putea fi citite. Indiferent de schema aleas\u0103 pentru plasarea \u00een cele 3 centre de date, trebuie s\u0103 existe (r + l) \/ n &gt;= 0,5, adic\u0103 redundan\u021ba stoc\u0103rii va fi de minimum 50%.<\/p>\n<p><\/p>\n<p>\u00cen YT situa\u021bia este diferit\u0103: fiecare cluster YT se afl\u0103 integral \u00eentr-un centru de date (clustere diferite \u00een centre de date diferite), astfel \u00eenc\u00e2t nu exist\u0103 aceast\u0103 restric\u021bie. Schema 12-2-2 ofer\u0103 o redundan\u021b\u0103 de 33%, adic\u0103 stocarea datelor devine mai ieftin\u0103, de asemenea, pot supravie\u021bui p\u00e2n\u0103 la 4 deconect\u0103ri simultane ale discurilor, la fel ca schema din MDS.<\/p>\n<p><\/p>\n<p>Exist\u0103 \u00eenc\u0103 multe particularit\u0103\u021bi \u00een aplicarea codurilor de redundan\u021b\u0103 \u00een sistemele de stocare \u0219i procesare a datelor: nuan\u021bele restaur\u0103rii datelor, influen\u021ba restaur\u0103rii asupra timpului de executare a cererilor, particularit\u0103\u021bile scrierii datelor etc. Am de g\u00e2nd s\u0103 vorbesc separat despre aceste \u0219i alte particularit\u0103\u021bi ale aplic\u0103rii codurilor de redundan\u021b\u0103 \u00een practic\u0103, dac\u0103 tema va fi de interes.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. Linkuri<\/h1>\n<p><\/p>\n<ol>\n<li>Seria de articole despre codurile Reed-Solomon \u0219i c\u00e2mpurile Galois: <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 \/>\n\u00cen acestea se analizeaz\u0103 matematica mai profund, \u00eentr-un limbaj accesibil.<\/li>\n<li>Articol de la Microsoft despre LRC: <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 \/>\n\u00cen sec\u021biunea 2 se explic\u0103 pe scurt teoria, apoi se discut\u0103 despre experien\u021ba aplic\u0103rii LRC \u00een practic\u0103.<\/li>\n<li>Schema even-odd: <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>Schema STAR: <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>Coduri piramidale: <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>Coduri de redundan\u021b\u0103 \u00een MDS: <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>Coduri de redundan\u021b\u0103 \u00een YT: <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>Coduri de redundan\u021b\u0103 \u00een YDB: <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>Sursa: <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.2.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\/ro\/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.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Coduri de redundan\u021b\u0103: explicate simplu despre cum s\u0103 stochezi datele \u00een siguran\u021b\u0103 \u0219i ieftin | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/87758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}