{"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\/fr\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Voici \u00e0 quoi ressemble la redondance<\/em><\/p>\n<p><\/p>\n<p>Les codes de redondance* sont largement utilis\u00e9s dans les syst\u00e8mes informatiques pour am\u00e9liorer la fiabilit\u00e9 du stockage des donn\u00e9es. Chez Yandex, ils sont utilis\u00e9s dans de nombreux projets. Par exemple, l'utilisation de codes de redondance \u00e0 la place de la r\u00e9plication dans notre syst\u00e8me de stockage d'objets interne permet d'\u00e9conomiser des millions sans diminuer la fiabilit\u00e9. Mais malgr\u00e9 leur large utilisation, une description claire de leur fonctionnement est rare. Ceux qui souhaitent comprendre se heurtent g\u00e9n\u00e9ralement \u00e0 ce qui suit (voir <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=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Je m'appelle Vadim, et chez Yandex, je travaille sur le d\u00e9veloppement du syst\u00e8me de stockage d'objets interne MDS. Dans cet article, je vais expliquer les principes th\u00e9oriques des codes de redondance (codes de Reed-Solomon et LRC) en des termes simples. Je vais d\u00e9crire leur fonctionnement sans math\u00e9matiques complexes ni termes rares. \u00c0 la fin, je donnerai des exemples d'utilisation des codes de redondance chez Yandex.<\/p>\n<p><\/p>\n<p>Je ne vais pas aborder en d\u00e9tail certains aspects math\u00e9matiques, mais je fournirai des liens pour ceux qui souhaitent approfondir. Je souligne \u00e9galement que certaines d\u00e9finitions math\u00e9matiques peuvent ne pas \u00eatre strictes, car l'article s'adresse non pas \u00e0 des math\u00e9maticiens mais \u00e0 des ing\u00e9nieurs d\u00e9sireux de comprendre le c\u0153ur du sujet.<\/p>\n<p><\/p>\n<p>* Dans la litt\u00e9rature anglophone, les codes de redondance sont souvent appel\u00e9s erasure codes.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. La nature des codes de redondance<\/h1>\n<p><\/p>\n<p>La nature de tous les codes de redondance est extr\u00eamement simple : stocker (ou transmettre) des donn\u00e9es de mani\u00e8re \u00e0 ce qu'elles ne soient pas perdues en cas d'erreurs (pannes de disque, erreurs de transmission des donn\u00e9es, etc.). <\/p>\n<p><\/p>\n<p>Dans la plupart des* codes de redondance, les donn\u00e9es sont divis\u00e9es en n blocs de donn\u00e9es, et m blocs de codes de redondance sont g\u00e9n\u00e9r\u00e9s, ce qui donne un total de n + m blocs. Les codes de redondance sont construits de mani\u00e8re \u00e0 ce que l'on puisse r\u00e9cup\u00e9rer n blocs de donn\u00e9es en n'utilisant qu'une partie des n + m blocs. Nous allons ici examiner uniquement les codes de redondance bloqu\u00e9s, c'est-\u00e0-dire ceux dans lesquels les donn\u00e9es sont divis\u00e9es en blocs.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pour r\u00e9cup\u00e9rer tous les n blocs de donn\u00e9es, il faut au minimum n des n + m blocs, car il est impossible d'obtenir n blocs avec seulement n-1 bloc (dans ce cas, il faudrait prendre 1 bloc \u00ab dans l'air \u00bb). Suffit-il d'avoir n blocs al\u00e9atoires parmi n + m blocs pour restaurer toutes les donn\u00e9es ? Cela d\u00e9pend du type de codes dRedondance, par exemple les codes de Reed-Solomon permettent de r\u00e9cup\u00e9rer toutes les donn\u00e9es avec des blocs al\u00e9atoires n, tandis que les codes de redondance LRC ne le permettent pas toujours.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Stockage des donn\u00e9es<\/h3>\n<p><\/p>\n<p>Dans les syst\u00e8mes de stockage de donn\u00e9es, en r\u00e8gle g\u00e9n\u00e9rale, chacun des blocs de donn\u00e9es et des blocs de codes de redondance est enregistr\u00e9 sur un disque distinct. Ainsi, en cas de panne d'un disque al\u00e9atoire, les donn\u00e9es d'origine pourront toujours \u00eatre restaur\u00e9es et lues. Les donn\u00e9es pourront \u00eatre restaur\u00e9es m\u00eame en cas de panne simultan\u00e9e de plusieurs disques.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Transmission de donn\u00e9es<\/h3>\n<p><\/p>\n<p>Les codes de redondance peuvent \u00eatre utilis\u00e9s pour une transmission fiable des donn\u00e9es sur un r\u00e9seau peu fiable. Les donn\u00e9es transmises sont divis\u00e9es en blocs, pour lesquels des codes de redondance sont calcul\u00e9s. Tant les blocs de donn\u00e9es que les blocs de codes de redondance sont transmis sur le r\u00e9seau. En cas d'erreurs dans des blocs al\u00e9atoires (jusqu'\u00e0 un certain nombre de blocs), les donn\u00e9es peuvent tout de m\u00eame \u00eatre transmises sans erreur sur le r\u00e9seau. Les codes de Reed-Solomon, par exemple, sont utilis\u00e9s pour la transmission de donn\u00e9es sur des lignes de communication optique et dans les communications par satellite.<\/p>\n<p><\/p>\n<p>* Il existe \u00e9galement des codes de redondance dans lesquels les donn\u00e9es ne sont pas divis\u00e9es en blocs, comme les codes de Hamming et les codes CRC, largement utilis\u00e9s pour la transmission de donn\u00e9es dans les r\u00e9seaux Ethernet. Ce sont des codes de codage \u00e0 \u00e9preuve d'erreurs, destin\u00e9s \u00e0 la d\u00e9tection des erreurs plut\u00f4t qu'\u00e0 leur correction (le code de Hamming permet \u00e9galement de corriger partiellement les erreurs).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. Codes de Reed-Solomon<\/h1>\n<p><\/p>\n<p>Les codes de Reed-Solomon sont parmi les codes de redondance les plus largement utilis\u00e9s, invent\u00e9s dans les ann\u00e9es 1960 et qui ont d'abord \u00e9t\u00e9 largement appliqu\u00e9s dans les ann\u00e9es 1980 pour la production en s\u00e9rie de disques compacts.<\/p>\n<p><\/p>\n<p>Deux questions cl\u00e9s pour comprendre les codes de Reed-Solomon sont : 1) comment cr\u00e9er des blocs de codes de redondance ; 2) comment restaurer les donn\u00e9es \u00e0 l'aide de blocs de codes de redondance. Trouvons les r\u00e9ponses \u00e0 ces questions.<br \/>\nPour simplifier, nous allons consid\u00e9rer que n=6 et m=4. D'autres sch\u00e9mas peuvent \u00eatre examin\u00e9s par analogie.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">Comment cr\u00e9er des blocs de codes de redondance<\/h3>\n<p><\/p>\n<p>Chaque bloc de codes d'erreur est compt\u00e9 ind\u00e9pendamment des autres. Pour le calcul de chaque bloc, tous les n blocs de donn\u00e9es sont utilis\u00e9s. Dans le sch\u00e9ma ci-dessous, X1-X6 repr\u00e9sentent les blocs de donn\u00e9es, P1\u2013P4 les blocs de codes d'erreur.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tous les blocs de donn\u00e9es doivent \u00eatre de la m\u00eame taille. Des bits nuls peuvent \u00eatre utilis\u00e9s pour l'alignement. Les blocs de codes d'erreur obtenus auront la m\u00eame taille que les blocs de donn\u00e9es. Tous les blocs de donn\u00e9es sont divis\u00e9s en mots (par exemple, de 16 bits). Supposons que nous avons divis\u00e9 les blocs de donn\u00e9es en k mots. Alors, tous les blocs de codes d'erreur seront \u00e9galement divis\u00e9s en k mots.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pour le calcul du i\u00e8me mot de chaque bloc de codes d'erreur, les i\u00e8mes mots de tous les blocs de donn\u00e9es seront utilis\u00e9s. Ils seront calcul\u00e9s selon la formule suivante :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ici, les valeurs x repr\u00e9sentent les mots des blocs de donn\u00e9es, p les mots des blocs de codes d'erreur, et tous les alpha, beta, gamma et delta sont des nombres sp\u00e9cifiquement choisis, identiques pour tous les i. Il faut pr\u00e9ciser que toutes ces valeurs ne sont pas des nombres ordinaires, mais des \u00e9l\u00e9ments du corps de Galois, avec des op\u00e9rations +, -, *, \/ qui ne sont pas les op\u00e9rations habituelles, mais des op\u00e9rations sp\u00e9ciales d\u00e9finies sur les \u00e9l\u00e9ments du corps de Galois.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">Pourquoi les corps de Galois sont-ils n\u00e9cessaires ?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c0 premi\u00e8re vue, cela semble simple : nous divisons les donn\u00e9es en blocs, les blocs en mots, et avec les mots des blocs de donn\u00e9es, nous calculons les mots des blocs de codes d'erreur, et nous obtenons les blocs de codes d'erreur. En g\u00e9n\u00e9ral, c'est ainsi que cela fonctionne, mais le diable est dans les d\u00e9tails :<\/p>\n<p><\/p>\n<ol>\n<li>Comme mentionn\u00e9 ci-dessus, la taille du mot est fixe, dans notre exemple 16 bits. Les formules ci-dessus pour les codes de Reed-Solomon sont telles que, lorsque des entiers ordinaires sont utilis\u00e9s, le r\u00e9sultat du calcul de p peut ne pas \u00eatre repr\u00e9sentable par un mot de taille admissible.<\/li>\n<li>Lors de la r\u00e9cup\u00e9ration des donn\u00e9es, les formules ci-dessus seront consid\u00e9r\u00e9es comme un syst\u00e8me d'\u00e9quations \u00e0 r\u00e9soudre pour r\u00e9cup\u00e9rer les donn\u00e9es. Dans le processus de r\u00e9solution, il peut \u00eatre n\u00e9cessaire de diviser des entiers les uns par les autres, ce qui aboutira \u00e0 un nombre r\u00e9el qui ne peut pas \u00eatre repr\u00e9sent\u00e9 avec pr\u00e9cision en m\u00e9moire informatique.<\/li>\n<\/ol>\n<p><\/p>\n<p>Ces probl\u00e8mes emp\u00eachent d'utiliser des entiers pour les codes de Reed-Solomon. La solution est originale et peut \u00eatre d\u00e9crite comme suit : inventons des nombres sp\u00e9ciaux qui peuvent \u00eatre repr\u00e9sent\u00e9s par des mots de longueur appropri\u00e9e (par exemple, 16 bits), et le r\u00e9sultat de toutes les op\u00e9rations sur eux (addition, soustraction, multiplication, division) sera \u00e9galement repr\u00e9sent\u00e9 en m\u00e9moire de l'ordinateur par des mots de la m\u00eame longueur.<\/p>\n<p><\/p>\n<p>Ces \u00ab nombres sp\u00e9ciaux \u00bb sont \u00e9tudi\u00e9s depuis longtemps par les math\u00e9maticiens, et on les appelle des corps. Un corps est un ensemble d'\u00e9l\u00e9ments avec des op\u00e9rations de addition, soustraction, multiplication et division d\u00e9finies.<\/p>\n<p><\/p>\n<p>Les corps de Galois* sont des corps pour lesquels il existe un et un seul r\u00e9sultat pour chaque op\u00e9ration (+, -, *, \/) pour n'importe quelle paire d'\u00e9l\u00e9ments du corps. Des corps de Galois peuvent \u00eatre construits pour des nombres qui sont des puissances de 2 : 2, 4, 8, 16, etc. (en r\u00e9alit\u00e9, toute puissance d'un nombre premier p, mais en pratique, nous nous int\u00e9ressons uniquement aux puissances de 2). Par exemple, pour des mots de taille 16 bits, ce corps contient 65 536 \u00e9l\u00e9ments, pour chaque paire desquels il est possible de trouver le r\u00e9sultat de toute op\u00e9ration (+, -, *, \/). Les valeurs x, p, alpha, beta, gamma, delta des \u00e9quations ci-dessus seront consid\u00e9r\u00e9es comme des \u00e9l\u00e9ments du corps de Galois lors des calculs.<\/p>\n<p><\/p>\n<p>Ainsi, nous avons un syst\u00e8me d'\u00e9quations qui permet de construire des blocs de codes de redondance en \u00e9crivant un programme informatique ad\u00e9quat. Ce m\u00eame syst\u00e8me d'\u00e9quations peut \u00eatre utilis\u00e9 pour r\u00e9cup\u00e9rer des donn\u00e9es.<\/p>\n<p><\/p>\n<p>* Ce n'est pas une d\u00e9finition stricte, plut\u00f4t une description.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">Comment r\u00e9cup\u00e9rer des donn\u00e9es<\/h3>\n<p><\/p>\n<p>La r\u00e9cup\u00e9ration est n\u00e9cessaire lorsque, dans n + m blocs, une partie des blocs est manquante. Cela peut concerner \u00e0 la fois des blocs de donn\u00e9es et des blocs de codes de redondance. L'absence de blocs de donn\u00e9es et\/ou de blocs de codes de redondance signifie que dans les \u00e9quations ci-dessus, les variables correspondantes x et\/ou p sont inconnues.<\/p>\n<p><\/p>\n<p>Les \u00e9quations pour les codes de Reed-Solomon peuvent \u00eatre consid\u00e9r\u00e9es comme un syst\u00e8me d'\u00e9quations dans lequel toutes les valeurs alpha, beta, gamma, delta sont des constantes, tous les x et p correspondant aux blocs disponibles sont des variables connues, tandis que les autres x et p sont inconnus.<\/p>\n<p><\/p>\n<p>Par exemple, supposons que les blocs de donn\u00e9es 1, 2, 3 et le bloc de codes de redondance 2 soient indisponibles, alors pour le i\u00e8me groupe de mots, le syst\u00e8me d'\u00e9quations suivant sera le suivant (les inconnues sont marqu\u00e9es en rouge) :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nous avons un syst\u00e8me de 4 \u00e9quations avec 4 inconnues, ce qui signifie que nous pouvons le r\u00e9soudre et r\u00e9cup\u00e9rer les donn\u00e9es !<\/p>\n<p><\/p>\n<p>De ce syst\u00e8me d'\u00e9quations d\u00e9coulent plusieurs conclusions sur la restauration des donn\u00e9es pour les codes de Reed-Solomon (n blocs de donn\u00e9es, m blocs de codes de redondance) :<\/p>\n<p><\/p>\n<ul>\n<li>Les donn\u00e9es peuvent \u00eatre r\u00e9cup\u00e9r\u00e9es en cas de perte de n'importe quels m blocs ou moins. En cas de perte de m+1 blocs ou plus, les donn\u00e9es ne peuvent pas \u00eatre r\u00e9cup\u00e9r\u00e9es : il est impossible de r\u00e9soudre un syst\u00e8me de m \u00e9quations avec m + 1 inconnues. <\/li>\n<li>Pour restaurer m\u00eame un seul bloc de donn\u00e9es, il faut utiliser n'importe quels n des blocs restants, tout en pouvant utiliser n'importe quel code de redondance.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Que faut-il savoir d'autre<\/h3>\n<p><\/p>\n<p>Dans la description ci-dessus, j'ignore un certain nombre de questions importantes, dont l'examen n\u00e9cessite une plong\u00e9e plus approfondie dans les math\u00e9matiques. En particulier, je ne dis rien sur ce qui suit :<\/p>\n<p><\/p>\n<ul>\n<li>Le syst\u00e8me d'\u00e9quations pour les codes de Reed-Solomon doit avoir une (unique) solution quelle que soit la combinaison des inconnues (pas plus de m inconnues). \u00c0 partir de cette exigence, les valeurs d'alpha, b\u00eata, gamma, et delta sont choisies.<\/li>\n<li>Le syst\u00e8me d'\u00e9quations doit \u00eatre capable d'\u00eatre construit automatiquement (selon les blocs qui sont inaccessibles) et r\u00e9solu.<\/li>\n<li>Il faut construire un corps de Galois : pour une taille de mot donn\u00e9e, savoir trouver le r\u00e9sultat de n'importe quelle op\u00e9ration (+, -, *, \/) pour deux \u00e9l\u00e9ments quelconques.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00c0 la fin de l'article, il y a des liens vers la litt\u00e9rature sur ces questions importantes.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Choix de n et m<\/h3>\n<p><\/p>\n<p>Comment choisir pratiquement n et m ? Dans la pratique, dans les syst\u00e8mes de stockage de donn\u00e9es, les codes de redondance sont utilis\u00e9s pour \u00e9conomiser de l'espace, donc m est toujours choisi inf\u00e9rieur \u00e0 n. Leurs valeurs sp\u00e9cifiques d\u00e9pendent de plusieurs facteurs, y compris :<\/p>\n<p><\/p>\n<ul>\n<li>Fiabilit\u00e9 du stockage des donn\u00e9es. Plus m est grand, plus le nombre de pannes de disque pouvant \u00eatre tol\u00e9r\u00e9 est \u00e9lev\u00e9, donc plus la fiabilit\u00e9 est accrue.<\/li>\n<li>Redondance du stockage. Plus le ratio m\/n est \u00e9lev\u00e9, plus la redondance du stockage sera importante, et plus le co\u00fbt du syst\u00e8me sera \u00e9lev\u00e9.<\/li>\n<li>Temps de traitement des requ\u00eates. Plus la somme n + m est grande, plus le temps de r\u00e9ponse aux requ\u00eates sera long. En effet, pour lire les donn\u00e9es (en cas de restauration), il faut lire n blocs, stock\u00e9s sur n disques diff\u00e9rents, donc le temps de lecture sera d\u00e9termin\u00e9 par le disque le plus lent.<\/li>\n<\/ul>\n<p><\/p>\n<p>De plus, le stockage des donn\u00e9es dans plusieurs centres de donn\u00e9es impose des restrictions suppl\u00e9mentaires sur le choix de n et m : lors de la d\u00e9faillance d'un centre de donn\u00e9es, les donn\u00e9es doivent toujours \u00eatre accessibles en lecture. Par exemple, lorsque des donn\u00e9es sont stock\u00e9es dans 3 centres de donn\u00e9es, la condition suivante doit \u00eatre remplie : m &gt;= n\/2, sinon il se peut que les donn\u00e9es ne soient pas accessibles en lecture lors de la d\u00e9connexion d'un centre de donn\u00e9es.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 Codes de Reconstruction Locaux<\/h1>\n<p><\/p>\n<p>Pour r\u00e9cup\u00e9rer les donn\u00e9es \u00e0 l'aide des codes de Reed-Solomon, il est n\u00e9cessaire d'utiliser n blocs de donn\u00e9es arbitraires. C'est un inconv\u00e9nient majeur pour les syst\u00e8mes de stockage de donn\u00e9es r\u00e9partis, car pour r\u00e9cup\u00e9rer les donn\u00e9es d'un disque d\u00e9fectueux, il faudra lire les donn\u00e9es de la plupart des autres disques, cr\u00e9ant ainsi une charge suppl\u00e9mentaire importante sur les disques et le r\u00e9seau.<\/p>\n<p><\/p>\n<p>Les erreurs les plus courantes sont l'indisponibilit\u00e9 d'un bloc de donn\u00e9es en raison de la panne ou de la surcharge d'un disque. Peut-on r\u00e9duire la charge excessive lors de la r\u00e9cup\u00e9ration des donn\u00e9es dans un tel cas (le plus fr\u00e9quent) ? Il s'av\u00e8re que oui : des codes de redondance LRC existent sp\u00e9cifiquement \u00e0 cet effet.<\/p>\n<p><\/p>\n<p>LRC (Local Reconstruction Codes) \u2014 codes de redondance con\u00e7us par Microsoft pour une utilisation dans Windows Azure Storage. L'id\u00e9e des LRC est tr\u00e8s simple : diviser tous les blocs de donn\u00e9es en deux (ou plusieurs) groupes et calculer une partie des blocs de codes de redondance pour chaque groupe s\u00e9par\u00e9ment. Ainsi, une partie des blocs de codes de redondance sera calcul\u00e9e \u00e0 l'aide de tous les blocs de donn\u00e9es (dans les LRC, ils sont appel\u00e9s codes de redondance globaux), et une autre partie \u2014 \u00e0 l'aide de l'un des deux groupes de blocs de donn\u00e9es (appel\u00e9s codes de redondance locaux).<\/p>\n<p><\/p>\n<p>Les LRC sont not\u00e9s par trois nombres : n-r-l, o\u00f9 n est le nombre de blocs de donn\u00e9es, r est le nombre de blocs de codes de redondance globaux, et l est le nombre de blocs de codes de redondance locaux. Pour lire les donn\u00e9es lors de l'indisponibilit\u00e9 d'un bloc de donn\u00e9es, il suffit de lire seulement n\/l blocs \u2014 c'est l fois moins que dans les codes de Reed-Solomon.<\/p>\n<p><\/p>\n<p>Prenons par exemple le sch\u00e9ma LRC 6-2-2. X1\u2013X6 \u2014 6 blocs de donn\u00e9es, P1, P2 \u2014 2 blocs de redondance globaux, P3, P4 \u2014 2 blocs de redondance locaux.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Les blocs de codes de redondance P1, P2 sont calcul\u00e9s \u00e0 l'aide de tous les blocs de donn\u00e9es. Le bloc de codes de redondance P3 \u2014 \u00e0 l'aide des blocs de donn\u00e9es X1\u2013X3, le bloc de codes de redondance P4 \u2014 \u00e0 l'aide des blocs de donn\u00e9es X4\u2013X6.<\/p>\n<p><\/p>\n<p>Le reste se fait dans LRC de la m\u00eame mani\u00e8re que pour les codes de Reed-Solomon. Les \u00e9quations pour le calcul des mots des blocs de codes d'exc\u00e9dent seront les suivantes :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Codes de redondance : en termes simples, comment stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pour s\u00e9lectionner les nombres alpha, beta, gamma, delta, il est n\u00e9cessaire de respecter une s\u00e9rie de conditions garantissant la possibilit\u00e9 de r\u00e9cup\u00e9rer les donn\u00e9es (c'est-\u00e0-dire de r\u00e9soudre le syst\u00e8me d'\u00e9quations). Vous pouvez en savoir plus \u00e0 ce sujet dans <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">article<\/a><\/noindex>.<br \/>\nEn pratique, l'op\u00e9ration XOR est \u00e9galement utilis\u00e9e pour le calcul des codes d'exc\u00e9dent locaux P3, P4. <\/p>\n<p><\/p>\n<p>Du syst\u00e8me d'\u00e9quations pour LRC, on peut tirer plusieurs conclusions :<\/p>\n<p><\/p>\n<ul>\n<li>Pour r\u00e9cup\u00e9rer n'importe quel bloc de donn\u00e9es, il suffit de lire n\/l blocs (n\/2 dans notre exemple).<\/li>\n<li>Si r + l blocs ne sont pas accessibles et que tous les blocs appartiennent \u00e0 un m\u00eame groupe, alors les donn\u00e9es ne peuvent pas \u00eatre r\u00e9cup\u00e9r\u00e9es. Cela peut \u00eatre illustr\u00e9 par un exemple. Supposons que les blocs X1\u2013X3 et P3 ne soient pas accessibles : ce sont r + l blocs d'un m\u00eame groupe, soit 4 dans notre cas. Nous avons alors un syst\u00e8me de 3 \u00e9quations avec 4 inconnues, qui ne peut pas \u00eatre r\u00e9solu.<\/li>\n<li>Dans tous les autres cas d'indisponibilit\u00e9 de r + l blocs (lorsqu'au moins un bloc de chaque groupe est accessible), les donn\u00e9es dans LRC peuvent \u00eatre r\u00e9cup\u00e9r\u00e9es.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ainsi, LRC a un avantage sur les codes de Reed-Solomon en mati\u00e8re de r\u00e9cup\u00e9ration de donn\u00e9es apr\u00e8s des erreurs simples. Dans les codes de Reed-Solomon, pour r\u00e9cup\u00e9rer m\u00eame un seul bloc de donn\u00e9es, n blocs doivent \u00eatre utilis\u00e9s, tandis que dans LRC, il suffit d'utiliser n\/l blocs (n\/2 dans notre exemple) pour r\u00e9cup\u00e9rer un bloc de donn\u00e9es. D'un autre c\u00f4t\u00e9, LRC est d\u00e9savantag\u00e9 par rapport aux codes de Reed-Solomon en ce qui concerne le nombre maximum d'erreurs tol\u00e9r\u00e9es. Dans les exemples ci-dessus, les codes de Reed-Solomon peuvent r\u00e9cup\u00e9rer des donn\u00e9es m\u00eame avec 4 erreurs, alors que pour LRC, il existe 2 combinaisons de 4 erreurs o\u00f9 les donn\u00e9es ne peuvent pas \u00eatre r\u00e9cup\u00e9r\u00e9es.<\/p>\n<p><\/p>\n<p>Ce qui est plus important d\u00e9pend de la situation concr\u00e8te, mais souvent, l'\u00e9conomie de surcharge d'exc\u00e9dent que LRC offre l'emporte sur une fiabilit\u00e9 de stockage l\u00e9g\u00e8rement inf\u00e9rieure.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Autres codes d'exc\u00e9dent<\/h1>\n<p><\/p>\n<p>Outre les codes de Reed-Solomon et LRC, il existe de nombreux autres codes d'exc\u00e9dent. Diff\u00e9rents codes d'exc\u00e9dent utilisent des math\u00e9matiques diff\u00e9rentes. Voici quelques autres codes d'exc\u00e9dent :<\/p>\n<p><\/p>\n<ul>\n<li>Code d'exc\u00e9dent utilisant un op\u00e9rateur XOR. L'op\u00e9ration XOR est effectu\u00e9e sur n blocs de donn\u00e9es, et un bloc de codes d'exc\u00e9dent en r\u00e9sulte, soit le sch\u00e9ma n+1 (n blocs de donn\u00e9es, 1 code d'exc\u00e9dent). Utilis\u00e9 dans <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, o\u00f9 les blocs de donn\u00e9es et de codes d'exc\u00e9dent sont \u00e9crits de mani\u00e8re cyclique sur tous les disques du tableau.<\/li>\n<li>L'algorithme even-odd, bas\u00e9 sur l'op\u00e9ration XOR. Permet de construire 2 blocs de codes de redondance, soit le sch\u00e9ma n+2.<\/li>\n<li>L'algorithme STAR, bas\u00e9 sur l'op\u00e9ration XOR. Permet de construire 3 blocs de codes de redondance, soit le sch\u00e9ma n+3.<\/li>\n<li>Les codes pyramides \u2014 encore des codes de redondance de Microsoft.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Utilisation dans Yandex<\/h1>\n<p><\/p>\n<p>Plusieurs projets d'infrastructure de Yandex utilisent des codes de redondance pour un stockage fiable des donn\u00e9es. Voici quelques exemples :<\/p>\n<p><\/p>\n<ul>\n<li>Le stockage d'objets interne MDS, dont j'ai parl\u00e9 au d\u00e9but de l'article.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2014 Syst\u00e8me MapReduce de Yandex.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FwLvAuOSIOU\">YDB<\/a><\/noindex> (Yandex DataBase) \u2014 base de donn\u00e9es distribu\u00e9e newSQL.<\/li>\n<\/ul>\n<p><\/p>\n<p>Dans MDS, des codes de redondance LRC sont utilis\u00e9s, le sch\u00e9ma 8-2-2. Les donn\u00e9es avec des codes de redondance sont \u00e9crites sur 12 disques diff\u00e9rents dans diff\u00e9rents serveurs dans 3 centres de donn\u00e9es : 4 serveurs dans chaque centre de donn\u00e9es. Pour plus de d\u00e9tails, lisez <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">article<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Dans YT, sont utilis\u00e9s \u00e0 la fois des codes de Reed-Solomon (sch\u00e9ma 6-3), qui ont \u00e9t\u00e9 r\u00e9alis\u00e9s en premier, et des codes de redondance LRC (sch\u00e9ma 12-2-2), le LRC \u00e9tant le moyen de stockage pr\u00e9f\u00e9r\u00e9.<\/p>\n<p><\/p>\n<p>Dans YDB, des codes de redondance bas\u00e9s sur even-odd (sch\u00e9ma 4-2) sont utilis\u00e9s. Des informations sur les codes de redondance dans YDB ont d\u00e9j\u00e0 \u00e9t\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">discut\u00e9es lors de Highload<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>L'utilisation de diff\u00e9rents sch\u00e9mas de codes de redondance est d\u00e9termin\u00e9e par les exigences diverses qui sont pos\u00e9es aux syst\u00e8mes. Par exemple, dans MDS, les donn\u00e9es stock\u00e9es par LRC sont r\u00e9parties sur 3 centres de donn\u00e9es. Il est important pour nous que les donn\u00e9es restent accessibles en lecture lors d'une panne de n'importe quel centre de donn\u00e9es, donc les blocs doivent \u00eatre distribu\u00e9s entre les centres de donn\u00e9es de mani\u00e8re \u00e0 ce qu'en cas d'inaccessibilit\u00e9 de l'un d'eux, le nombre de blocs inaccessibles ne d\u00e9passe pas le seuil acceptable. Dans le sch\u00e9ma 8-2-2, il est possible de placer 4 blocs dans chaque centre de donn\u00e9es, de sorte qu'en cas de d\u00e9sactivation de n'importe quel centre de donn\u00e9es, 4 blocs seront inaccessibles, mais les donn\u00e9es pourront \u00eatre lues. Quel que soit le sch\u00e9ma que nous choisissons pour le placement dans 3 centres de donn\u00e9es, il doit en tout cas y avoir (r + l) \/ n &gt;= 0,5, c'est-\u00e0-dire que la redondance de stockage sera d'au moins 50%.<\/p>\n<p><\/p>\n<p>Dans YT, la situation est diff\u00e9rente : chaque cluster YT se trouve enti\u00e8rement dans 1 centre de donn\u00e9es (divers clusters dans diff\u00e9rents centres de donn\u00e9es), donc il n'y a pas de telle restriction. Le sch\u00e9ma 12-2-2 donne une redondance de 33%, donc le stockage des donn\u00e9es devient moins cher, tout en permettant \u00e9galement de survivre \u00e0 4 pannes simultan\u00e9es de disques, tout comme dans le sch\u00e9ma MDS.<\/p>\n<p><\/p>\n<p>Il existe encore de nombreuses particularit\u00e9s concernant l'application des codes de redondance dans les syst\u00e8mes de stockage et de traitement des donn\u00e9es : nuances de la r\u00e9cup\u00e9ration des donn\u00e9es, impact de la r\u00e9cup\u00e9ration sur le temps de r\u00e9ponse, particularit\u00e9s de l'\u00e9criture des donn\u00e9es, etc. Je pr\u00e9vois d'aborder s\u00e9par\u00e9ment ces aspects et d'autres concernant l'application des codes de redondance dans la pratique, si le sujet suscite de l'int\u00e9r\u00eat.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. Liens<\/h1>\n<p><\/p>\n<ol>\n<li>S\u00e9rie d'articles sur les codes de Reed-Solomon et les champs de 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 \/>\nIls abordent la math\u00e9matique de mani\u00e8re accessible.<\/li>\n<li>Article de Microsoft sur 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 \/>\nDans la section 2, la th\u00e9orie est bri\u00e8vement expliqu\u00e9e, suivie d'une discussion sur l'exp\u00e9rience de l'application de LRC dans la pratique.<\/li>\n<li>Sch\u00e9ma 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>Sch\u00e9ma 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>Codes pyramidaux : <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>Codes de redondance dans 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>Codes de redondance dans 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>Codes de redondance dans 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>Source : <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 - 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\/fr\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Codes de redondance : des mots simples sur la mani\u00e8re de stocker des donn\u00e9es de mani\u00e8re fiable et \u00e9conomique | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/fr\/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":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/87758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}