{"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\/it\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Cos'\u00e8 la ridondanza<\/em><\/p>\n<p><\/p>\n<p>I codici di ridondanza* sono ampiamente utilizzati nei sistemi informatici per aumentare l'affidabilit\u00e0 della memorizzazione dei dati. In Yandex, vengono utilizzati in molti progetti. Ad esempio, l'uso dei codici di ridondanza invece della replicazione nel nostro archivio oggetti interno consente di risparmiare milioni senza compromettere l'affidabilit\u00e0. Tuttavia, nonostante la loro ampia diffusione, \u00e8 raro trovare una descrizione chiara di come funzionano i codici di ridondanza. Chi desidera capire si trova di fronte a quanto segue (da <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=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mi chiamo Vadim, e in Yandex mi occupo dello sviluppo dell'archivio oggetti interno MDS. In questo articolo, spiegher\u00f2 con parole semplici le basi teoriche dei codici di ridondanza (codici di Reed-Solomon e LRC). Racconter\u00f2 come funziona, senza complicate formule matematiche e termini rari. Alla fine, fornir\u00f2 esempi dell'uso dei codici di ridondanza in Yandex.<\/p>\n<p><\/p>\n<p>Non approfondir\u00f2 una serie di dettagli matematici, ma fornir\u00f2 dei rimandi per chi desidera approfondire. Inoltre, segnalo che alcune definizioni matematiche potrebbero non essere rigorose, poich\u00e9 l'articolo \u00e8 destinato non ai matematici, ma agli ingegneri che vogliono comprendere il senso della questione.<\/p>\n<p><\/p>\n<p>* Nella letteratura anglofona, i codici di ridondanza sono spesso chiamati erasure codes.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. La natura dei codici di ridondanza<\/h1>\n<p><\/p>\n<p>Il concetto fondamentale di tutti i codici di ridondanza \u00e8 estremamente semplice: conservare (o trasmettere) i dati in modo che non vadano persi in caso di errori (guasti dei dischi, errori di trasmissione dei dati, ecc.). <\/p>\n<p><\/p>\n<p>Nella maggior parte* dei codici di ridondanza, i dati vengono suddivisi in n blocchi, da cui vengono calcolati m blocchi di codici di ridondanza, per un totale di n + m blocchi. I codici di ridondanza sono costruiti in modo che sia possibile ripristinare n blocchi di dati utilizzando solo una parte di n + m blocchi. In seguito considereremo solo i codici di ridondanza a blocchi, cio\u00e8 quelli in cui i dati sono suddivisi in blocchi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per ripristinare tutti i n blocchi di dati, \u00e8 necessario avere almeno n su n + m blocchi, poich\u00e9 non \u00e8 possibile ottenere n blocchi avendo solo n-1 blocco (in questo caso si dovrebbe prendere 1 blocco 'dal nulla'). Sono sufficienti n blocchi a caso da n + m blocchi per ripristinare tutti i dati? Questo dipende dal tipo di codici di ridondanza; ad esempio, i codici Reed-Solomon consentono di ripristinare tutti i dati con n blocchi a caso, mentre i codici di ridondanza LRC non sempre lo permettono.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Archiviazione dei dati<\/h3>\n<p><\/p>\n<p>Nei sistemi di archiviazione dei dati, generalmente, ciascuno dei blocchi di dati e dei blocchi di codici di ridondanza viene registrato su un disco separato. Pertanto, in caso di guasto di un disco qualsiasi, i dati originali possono comunque essere ripristinati e letti. I dati possono essere ripristinati anche in caso di guasto simultaneo di pi\u00f9 dischi.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Trasmissione dati<\/h3>\n<p><\/p>\n<p>I codici di ridondanza possono essere utilizzati per la trasmissione affidabile dei dati su reti inaffidabili. I dati trasmessi vengono suddivisi in blocchi, e per ciascun blocco vengono calcolati i codici di ridondanza. Sia i blocchi di dati che quelli di codici di ridondanza vengono trasmessi attraverso la rete. In caso di errori in blocchi arbitrari (fino a un certo numero di blocchi), i dati possono comunque essere trasmessi senza errori attraverso la rete. I codici di Reed-Solomon, ad esempio, sono utilizzati per la trasmissione di dati su linee ottiche e nelle comunicazioni satellitari.<\/p>\n<p><\/p>\n<p>* Esistono anche codici di ridondanza in cui i dati non vengono suddivisi in blocchi, come i codici di Hamming e i codici CRC, ampiamente utilizzati per la trasmissione di dati nelle reti Ethernet. Questi sono codici per la codifica a prova di errore, progettati per la rilevazione degli errori, non per la loro correzione (il codice di Hamming consente anche di correggere parzialmente gli errori).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. Codici di Reed-Solomon<\/h1>\n<p><\/p>\n<p>I codici di Reed-Solomon sono tra i codici di ridondanza pi\u00f9 diffusi, inventati negli anni '60 e adottati per la prima volta su larga scala negli anni '80 per la produzione in serie di dischi compatti.<\/p>\n<p><\/p>\n<p>Le questioni chiave per comprendere i codici Reed-Solomon sono due: 1) come creare blocchi di codici di ridondanza; 2) come recuperare dati tramite i blocchi di codici di ridondanza. Troveremo le risposte a queste domande.<br \/>\nPer semplificare, d'ora in poi assumiamo che n=6 e m=4. Altre configurazioni possono essere considerate per analogia.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">Come creare blocchi di codici di ridondanza<\/h3>\n<p><\/p>\n<p>Ogni blocco di codici di ridondanza \u00e8 considerato indipendente dagli altri. Per calcolare ogni blocco si utilizzano tutti i n blocchi di dati. Nello schema sottostante, X1-X6 rappresentano i blocchi di dati, P1\u2013P4 sono i blocchi di codici di ridondanza.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tutti i blocchi di dati devono essere della stessa dimensione; per l'allineamento si possono utilizzare bit zero. I blocchi di codici di ridondanza ottenuti avranno la stessa dimensione dei blocchi di dati. Tutti i blocchi di dati vengono suddivisi in parole (ad esempio, di 16 bit). Supponiamo che abbiamo suddiviso i blocchi di dati in k parole. Allora tutti i blocchi di codici di ridondanza saranno anch'essi suddivisi in k parole.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per il calcolo della i-esima parola di ciascun blocco di ridondanza si utilizzeranno le i-esime parole di tutti i blocchi di dati. Esse verranno calcolate secondo la seguente formula:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Qui valori x sono parole dei blocchi di dati, p sono parole dei blocchi di codici di ridondanza, tutti alpha, beta, gamma e delta sono numeri scelti in modo particolare, identici per tutti i i. \u00c8 necessario dire subito che tutti questi valori non sono numeri normali, ma elementi di un campo di Galois, le operazioni +, -, *, \/ non sono le operazioni a cui siamo abituati, ma operazioni speciali definite sugli elementi di un campo di Galois.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">A cosa servono i campi di Galois<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Potrebbe sembrare tutto semplice: dividiamo i dati in blocchi, i blocchi in parole, e usando le parole dei blocchi di dati calcoliamo le parole dei blocchi di codici di ridondanza, ottenendo cos\u00ec i blocchi di codici di ridondanza. In generale funziona cos\u00ec, ma il diavolo \u00e8 nei dettagli:<\/p>\n<p><\/p>\n<ol>\n<li>Come detto in precedenza, la dimensione della parola \u00e8 fissa, nel nostro esempio \u00e8 di 16 bit. Le formule sopra per i codici di Reed-Solomon sono tali che, utilizzando numeri interi normali, il risultato del calcolo p potrebbe non essere rappresentabile con una parola di dimensione valida.<\/li>\n<li>Nel ripristino dei dati, le formule di cui sopra saranno considerate come un sistema di equazioni da risolvere per recuperare i dati. Durante il processo di risoluzione, potrebbe rendersi necessario eseguire la divisione tra numeri interi, il cui risultato sar\u00e0 un numero reale, che non pu\u00f2 essere rappresentato esattamente nella memoria del computer.<\/li>\n<\/ol>\n<p><\/p>\n<p>Questi problemi non consentono di utilizzare numeri interi per i codici di Reed-Solomon. La soluzione al problema \u00e8 originale e pu\u00f2 essere descritta come segue: inventiamo numeri speciali che possano essere rappresentati usando parole di lunghezza appropriata (ad esempio, 16 bit), e il risultato di tutte le operazioni su di essi (somma, differenza, moltiplicazione, divisione) sar\u00e0 anch'esso rappresentato nella memoria del computer tramite parole di lunghezza appropriata.<\/p>\n<p><\/p>\n<p>Questi \"numeri speciali\" sono stati studiati a lungo dalla matematica e sono noti come campi. Un campo \u00e8 un insieme di elementi con determinate operazioni di somma, differenza, moltiplicazione e divisione.<\/p>\n<p><\/p>\n<p>I campi di Galois* sono campi per i quali esiste e \u00e8 unico il risultato di ciascuna operazione (+, -, *, \/) per due elementi qualsiasi del campo. I campi di Galois possono essere costruiti per numeri che sono potenze di 2: 2, 4, 8, 16, ecc. (in realt\u00e0 potenze di qualsiasi numero primo p, ma nella pratica ci interessano solo le potenze di 2). Ad esempio, per parole di dimensione 16 bit, si tratta di un campo che contiene 65.536 elementi, per cui \u00e8 possibile trovare il risultato di qualsiasi operazione (+, -, *, \/) per ogni coppia. I valori x, p, alfa, beta, gamma, delta delle equazioni sopra per i calcoli saranno considerati elementi del campo di Galois.<\/p>\n<p><\/p>\n<p>In questo modo, abbiamo un sistema di equazioni attraverso il quale possiamo costruire blocchi di codici di ridondanza scrivendo il relativo programma informatico. Utilizzando questo stesso sistema di equazioni, \u00e8 possibile eseguire il ripristino dei dati.<\/p>\n<p><\/p>\n<p>* Questa non \u00e8 una definizione rigorosa, ma piuttosto una descrizione.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">Come recuperare i dati<\/h3>\n<p><\/p>\n<p>Il ripristino \u00e8 necessario quando, da n + m blocchi, alcuni blocchi sono assenti. Questi possono essere sia blocchi di dati che blocchi di codici di ridondanza. L'assenza di blocchi di dati e\/o di blocchi di codici di ridondanza significa che nelle equazioni precedenti le corrispondenti variabili x e\/o p non sono conosciute.<\/p>\n<p><\/p>\n<p>Le equazioni per i codici di Reed-Solomon possono essere considerate come un sistema di equazioni in cui tutti i valori alpha, beta, gamma, delta sono costanti, tutte le x e p, corrispondenti ai blocchi disponibili, sono variabili note, mentre le altre x e p sono sconosciute.<\/p>\n<p><\/p>\n<p>Ad esempio, supponiamo che i blocchi di dati 1, 2, 3 e il blocco di codici di ridondanza 2 non siano disponibili, allora per il i-esimo gruppo di parole avremo il seguente sistema di equazioni (le sconosciute sono evidenziate in rosso):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Abbiamo un sistema di 4 equazioni con 4 incognite, il che significa che possiamo risolverlo e ripristinare i dati!<\/p>\n<p><\/p>\n<p>Da questo sistema di equazioni derivano alcune conclusioni sul ripristino dei dati per i codici di Reed-Solomon (n blocchi di dati, m blocchi di codici di ridondanza):<\/p>\n<p><\/p>\n<ul>\n<li>I dati possono essere recuperati in caso di perdita di un massimo di m blocchi. Con la perdita di m+1 o pi\u00f9 blocchi, i dati non possono essere recuperati: non \u00e8 possibile risolvere un sistema di m equazioni con m + 1 incognite. <\/li>\n<li>Per recuperare anche un solo blocco di dati, \u00e8 necessario utilizzare qualsiasi n dei blocchi rimanenti, utilizzando qualsiasi dei codici di ridondanza.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Cosa c'\u00e8 altro da sapere<\/h3>\n<p><\/p>\n<p>Nella descrizione sopra, evito di trattare una serie di questioni importanti che richiederebbero un'analisi pi\u00f9 approfondita della matematica. In particolare, non dico nulla riguardo a quanto segue:<\/p>\n<p><\/p>\n<ul>\n<li>Il sistema di equazioni per i codici di Reed-Solomon deve avere una (unica) soluzione per qualsiasi combinazione di incognite (non pi\u00f9 di m incognite). Da questo requisito si scelgono i valori di alfa, beta, gamma e delta.<\/li>\n<li>\u00c8 necessario saper costruire automaticamente il sistema di equazioni (in base ai blocchi non disponibili) e risolverlo.<\/li>\n<li>Deve essere costruito un campo di Galois: per una data dimensione della parola, saper trovare il risultato di qualsiasi operazione (+, -, *, \/) per qualsiasi coppia di elementi.<\/li>\n<\/ul>\n<p><\/p>\n<p>Alla fine dell'articolo ci sono riferimenti alla letteratura su queste questioni importanti.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Scelta di n e m<\/h3>\n<p><\/p>\n<p>Come scegliere concretamente n e m? Nelle pratiche nei sistemi di archiviazione, i codici di ridondanza vengono utilizzati per risparmiare spazio, quindi si sceglie sempre m minore di n. I loro valori specifici dipendono da vari fattori, tra cui:<\/p>\n<p><\/p>\n<ul>\n<li>Affidabilit\u00e0 dell'archiviazione dei dati. Maggiore \u00e8 m, maggiori sono i guasti ai dischi che possono essere tollerati, quindi l'affidabilit\u00e0 aumenta.<\/li>\n<li>Ridondanza di archiviazione. Maggiore \u00e8 il rapporto m \/ n, maggiore sar\u00e0 la ridondanza di archiviazione e pi\u00f9 costosa sar\u00e0 la sistemazione.<\/li>\n<li>Tempo di elaborazione delle richieste. Maggiore \u00e8 la somma n + m, pi\u00f9 lungo sar\u00e0 il tempo di risposta alle richieste. Poich\u00e9 per leggere i dati (durante il ripristino) \u00e8 necessario leggere n blocchi su n dischi diversi, il tempo di lettura sar\u00e0 determinato dal disco pi\u00f9 lento.<\/li>\n<\/ul>\n<p><\/p>\n<p>Inoltre, archiviare i dati in pi\u00f9 DC impone ulteriori restrizioni sulla scelta di n e m: se un DC viene disattivato, i dati devono ancora essere accessibili per la lettura. Ad esempio, se i dati sono archiviati in 3 DC, deve essere rispettata la condizione: m &gt;= n\/2, altrimenti c'\u00e8 il rischio che i dati non siano accessibili per la lettura in caso di disattivazione di 1 DC.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 Local Reconstruction Codes<\/h1>\n<p><\/p>\n<p>Per ripristinare i dati con i codici Reed-Solomon \u00e8 necessario utilizzare n blocchi di dati arbitrari. Questo \u00e8 un grosso svantaggio per i sistemi di storage distribuiti, poich\u00e9 per il recupero dei dati da un disco guasto \u00e8 necessario leggere i dati dalla maggior parte degli altri, creando cos\u00ec un carico aggiuntivo significativo sui dischi e sulla rete.<\/p>\n<p><\/p>\n<p>Gli errori pi\u00f9 comuni comprendono l'inaccessibilit\u00e0 di un blocco di dati a causa di un guasto o dell'eccessivo carico di un disco. Esiste un modo per ridurre il carico eccessivo durante il recupero dei dati in questo (il caso pi\u00f9 comune)? A quanto pare, s\u00ec: i codici di ridondanza LRC sono stati creati appositamente per questo scopo.<\/p>\n<p><\/p>\n<p>LRC (Local Reconstruction Codes) \u2014 codici di ridondanza sviluppati da Microsoft per l'uso in Windows Azure Storage. L'idea alla base dell'LRC \u00e8 molto semplice: suddividere tutti i blocchi di dati in due (o pi\u00f9) gruppi e calcolare una parte dei blocchi di codici di ridondanza per ciascun gruppo separatamente. Cos\u00ec, una parte dei blocchi di codici di ridondanza sar\u00e0 calcolata utilizzando tutti i blocchi di dati (in LRC sono chiamati codici di ridondanza globali), mentre l'altra parte sar\u00e0 calcolata utilizzando uno dei due gruppi di blocchi di dati (chiamati codici di ridondanza locali).<\/p>\n<p><\/p>\n<p>LRC \u00e8 rappresentato da tre numeri: n-r-l, dove n \u00e8 il numero di blocchi di dati, r \u00e8 il numero di blocchi di codici di ridondanza globali, e l \u00e8 il numero di blocchi di codici di ridondanza locali. Per leggere i dati quando un blocco di dati non \u00e8 disponibile, \u00e8 necessario leggere solo n\/l blocchi \u2014 questo \u00e8 l\/i volte inferiore rispetto ai codici di Reed-Solomon.<\/p>\n<p><\/p>\n<p>Ad esempio, consideriamo lo schema LRC 6-2-2. X1\u2013X6 sono 6 blocchi di dati, P1 e P2 sono 2 blocchi di ridondanza globali, P3 e P4 sono 2 blocchi di ridondanza locali.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I blocchi di codici di ridondanza P1, P2 vengono calcolati utilizzando tutti i blocchi di dati. Il blocco di codici di ridondanza P3 \u00e8 calcolato utilizzando i blocchi di dati X1\u2013X3, mentre il blocco di codici di ridondanza P4 \u00e8 calcolato utilizzando i blocchi di dati X4\u2013X6.<\/p>\n<p><\/p>\n<p>Il resto \u00e8 gestito in LRC in modo analogo ai codici di Reed-Solomon. Le equazioni per il calcolo delle parole nei blocchi di codici di ridondanza sono le seguenti:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codici di ridondanza: spieghiamo in parole semplici come conservare dati in modo sicuro ed economico\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per determinare i valori alpha, beta, gamma, delta \u00e8 necessario soddisfare una serie di condizioni che garantiscano la possibilit\u00e0 di recuperare i dati (cio\u00e8 la soluzione del sistema di equazioni). Per maggiori dettagli, si pu\u00f2 leggere in <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">articolo<\/a><\/noindex>.<br \/>\nIn pratica, per il calcolo dei codici di ridondanza locali P3 e P4 si applica anche l'operazione XOR. <\/p>\n<p><\/p>\n<p>Dal sistema di equazioni per LRC derivano una serie di conclusioni:<\/p>\n<p><\/p>\n<ul>\n<li>Per recuperare un singolo blocco di dati \u00e8 sufficiente leggere n\/l blocchi (n\/2 nel nostro esempio).<\/li>\n<li>Se non sono disponibili r + l blocchi e tutti i blocchi appartengono a un unico gruppo, i dati non possono essere recuperati. Questo \u00e8 facilmente spiegabile con un esempio. Supponiamo che i blocchi X1\u2013X3 e P3 non siano disponibili: questi sono r + l blocchi di un unico gruppo, 4 nel nostro caso. Abbiamo quindi un sistema di 3 equazioni con 4 incognite, che non pu\u00f2 essere risolto.<\/li>\n<li>Nei restanti casi di indisponibilit\u00e0 dei blocchi r + l (quando almeno un blocco \u00e8 disponibile in ogni gruppo) i dati nell'LRC possono essere recuperati.<\/li>\n<\/ul>\n<p><\/p>\n<p>Cos\u00ec, l'LRC supera i codici di Reed-Solomon nel recupero dei dati dopo errori singoli. Nei codici di Reed-Solomon, per recuperare anche un solo blocco di dati \u00e8 necessario utilizzare n blocchi, mentre nell'LRC per recuperare un blocco di dati \u00e8 sufficiente utilizzare n\/l blocchi (n\/2 nel nostro esempio). D'altro canto, l'LRC \u00e8 svantaggiato rispetto ai codici di Reed-Solomon per il numero massimo di errori tollerabili. Negli esempi sopra, i codici di Reed-Solomon possono recuperare i dati con qualsiasi 4 errori, mentre per l'LRC esistono 2 combinazioni di 4 errori in cui i dati non possono essere recuperati.<\/p>\n<p><\/p>\n<p>Ci\u00f2 che \u00e8 pi\u00f9 importante dipende dalla situazione specifica, ma spesso il risparmio in carico ridondante offerto dall'LRC supera una leggera minore affidabilit\u00e0 del storage.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Altri codici di ridondanza<\/h1>\n<p><\/p>\n<p>Oltre ai codici di Reed-Solomon e all'LRC, ci sono molti altri codici di ridondanza. Diversi codici di ridondanza utilizzano matematiche diverse. Ecco alcuni altri codici di ridondanza:<\/p>\n<p><\/p>\n<ul>\n<li>Codice di ridondanza utilizzando l'operatore XOR. L'operazione XOR viene eseguita su n blocchi di dati, producendo 1 blocco di codici di ridondanza, ovvero uno schema n+1 (n blocchi di dati, 1 codice di ridondanza). Utilizzato in <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, dove i blocchi di dati e di codici di ridondanza sono scritti ciclicamente su tutti i dischi dell'array.<\/li>\n<li>Algoritmo even-odd, basato sull'operazione XOR. Consente di costruire 2 blocchi di codici di ridondanza, cio\u00e8 uno schema n+2.<\/li>\n<li>Algoritmo STAR, basato sull'operazione XOR. Permette di costruire 3 blocchi di codici di ridondanza, ovvero uno schema n+3.<\/li>\n<li>Codici Pyramide \u2014 altri codici di ridondanza di Microsoft.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Utilizzo in Yandex<\/h1>\n<p><\/p>\n<p>Diversi progetti infrastrutturali di Yandex applicano i codici di ridondanza per un'archiviazione dati sicura. Ecco alcuni esempi:<\/p>\n<p><\/p>\n<ul>\n<li>L'archivio oggetti interno MDS, di cui ho parlato all'inizio dell'articolo.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2014 Sistema MapReduce di Yandex.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FwLvAuOSIOU\">YDB<\/a><\/noindex> (Yandex DataBase) \u2014 database distribuito newSQL.<\/li>\n<\/ul>\n<p><\/p>\n<p>In MDS vengono utilizzati codici di ridondanza LRC, schema 8-2-2. I dati con i codici di ridondanza vengono scritti su 12 dischi diversi in server diversi in 3 diversi DC: 4 server in ogni DC. Maggiori dettagli su questo puoi trovarli in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">articolo<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>In YT si utilizzano sia i codici Reed-Solomon (schema 6-3), che sono stati implementati per primi, sia i codici di ridondanza LRC (schema 12-2-2), con LRC come metodo di archiviazione preferito.<\/p>\n<p><\/p>\n<p>In YDB si utilizzano codici di ridondanza basati su even-odd (schema 4-2). Gi\u00e0 si \u00e8 parlato dei codici di ridondanza in YDB <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">sul Highload.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>L'uso di diverse schemi di codici di ridondanza \u00e8 determinato dalle diverse esigenze richieste dai sistemi. Ad esempio, nei MDS i dati archiviati tramite LRC sono distribuiti immediatamente in 3 DC. \u00c8 fondamentale che i dati rimangano leggibili anche in caso di guasto di uno qualsiasi dei DC, quindi i blocchi devono essere distribuiti tra i DC in modo che, con la non disponibilit\u00e0 di uno qualsiasi di essi, il numero di blocchi non disponibili non superi il limite consentito. Nello schema 8-2-2 \u00e8 possibile collocare 4 blocchi in ciascun DC, quindi, disattivando uno dei DC, saranno non disponibili 4 blocchi, e i dati potranno ancora essere letti. Qualunque schema scegliamo per la distribuzione nei 3 DC, deve comunque valere (r + l) \/ n &gt;= 0,5, ossia la ridondanza di archiviazione sar\u00e0 almeno del 50%.<\/p>\n<p><\/p>\n<p>In YT, the situation is different: each YT cluster is entirely located in one data center (different clusters in different data centers), so there is no such restriction. The 12-2-2 scheme provides 33% redundancy, meaning data storage is cheaper, and it can also withstand up to 4 simultaneous disk failures, just like the scheme in MDS.<\/p>\n<p><\/p>\n<p>There are many other specific features of applying redundancy codes in data storage and processing systems: nuances of data recovery, the impact of recovery on query execution time, specifics of data writing, etc. I plan to discuss these and other practical aspects of redundancy codes separately, if the topic is of interest.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. References<\/h1>\n<p><\/p>\n<ol>\n<li>A series of articles on Reed-Solomon codes and Galois fields: <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 \/>\nThey explore the mathematics in greater depth in an accessible language.<\/li>\n<li>Article from Microsoft on 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 \/>\nSection 2 briefly explains the theory, followed by practical experiences of applying LRC.<\/li>\n<li>Even-odd scheme: <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 scheme: <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>Pyramid codes: <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>Redundancy codes in 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>Redundancy codes in 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>Redundancy codes in 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>Fonte: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/it\/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) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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=\"\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Codici di ridondanza: spiegato in parole semplici su come archiviare dati in modo sicuro e a basso costo | ProHoster","description":"Cos'\u00e8 la ridondanza I codici di ridondanza* sono ampiamente utilizzati nei sistemi informatici per aumentare l'affidabilit\u00e0 dell'archiviazione dei dati. In Yandex, vengono utilizzati in molti progetti. Ad esempio, l'uso dei codici di ridondanza invece della replicazione nel nostro archiviazione di oggetti interna fa risparmiare milioni senza compromettere l'affidabilit\u00e0. Tuttavia, nonostante la loro ampia diffusione, \u00e8 raro trovare una descrizione chiara di come funzionano i codici di ridondanza. Gli interessati","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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":"\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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}