{"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\/es\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>As\u00ed es la redundancia<\/em><\/p>\n<p><\/p>\n<p>Los c\u00f3digos de redundancia* se utilizan ampliamente en sistemas inform\u00e1ticos para aumentar la fiabilidad del almacenamiento de datos. En Yandex, se aplican en muchos proyectos. Por ejemplo, el uso de c\u00f3digos de redundancia en lugar de replicaci\u00f3n en nuestro almacenamiento de objetos interno ahorra millones sin disminuir la fiabilidad. Pero a pesar de su amplia difusi\u00f3n, descripciones claras de c\u00f3mo funcionan los c\u00f3digos de redundancia son muy raras. Aquellos que desean entender se enfrentan a lo siguiente (de <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=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me llamo Vadim, en Yandex me encargo del desarrollo del almacenamiento de objetos interno MDS. En este art\u00edculo, describir\u00e9 con palabras simples los fundamentos te\u00f3ricos de los c\u00f3digos de redundancia (c\u00f3digos de Reed-Solomon y LRC). Explicar\u00e9 c\u00f3mo funciona, sin matem\u00e1ticas complejas ni t\u00e9rminos poco comunes. Al final, proporcionar\u00e9 ejemplos del uso de c\u00f3digos de redundancia en Yandex.<\/p>\n<p><\/p>\n<p>No profundizar\u00e9 en una serie de detalles matem\u00e1ticos, pero proporcionar\u00e9 enlaces para aquellos que deseen profundizar m\u00e1s. Tambi\u00e9n se\u00f1alar\u00e9 que algunas definiciones matem\u00e1ticas pueden no ser estrictas, ya que el art\u00edculo est\u00e1 dirigido no a matem\u00e1ticos, sino a ingenieros que quieren comprender la esencia del asunto.<\/p>\n<p><\/p>\n<p>* En la literatura en ingl\u00e9s, los c\u00f3digos de redundancia a menudo se denominan erasure codes.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. La esencia de los c\u00f3digos de redundancia<\/h1>\n<p><\/p>\n<p>La esencia de todos los c\u00f3digos de redundancia es extremadamente simple: almacenar (o transmitir) datos de manera que no se pierdan ante la aparici\u00f3n de errores (fallos de discos, errores de transmisi\u00f3n de datos, etc.). <\/p>\n<p><\/p>\n<p>En la mayor\u00eda* de los c\u00f3digos de redundancia, los datos se dividen en n bloques de datos, y para ellos se consideran m bloques de c\u00f3digos de redundancia, en total se obtienen n + m bloques. Los c\u00f3digos de redundancia se construyen de tal manera que se puedan recuperar n bloques de datos utilizando solo una parte de los n + m bloques. A continuaci\u00f3n, solo examinaremos los c\u00f3digos de redundancia de bloques, es decir, aquellos en los que los datos se dividen en bloques.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Para recuperar todos los n bloques de datos, se necesita tener al menos n de n + m bloques, ya que no se pueden obtener n bloques con solo n-1 bloque (en este caso, se necesitar\u00eda tomar 1 bloque \u00abdel aire\u00bb). \u00bfSon suficientes n bloques arbitrarios de n + m bloques para recuperar todos los datos? Depende del tipo de c\u00f3digos de redundancia. Por ejemplo, los c\u00f3digos de Reed-Solomon permiten recuperar todos los datos con n bloques arbitrarios, mientras que los c\u00f3digos de redundancia LRC no siempre lo permiten.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Almacenamiento de datos<\/h3>\n<p><\/p>\n<p>En los sistemas de almacenamiento de datos, generalmente, cada uno de los bloques de datos y bloques de c\u00f3digos de redundancia se graba en un disco separado. As\u00ed, en caso de que falle un disco arbitrario, los datos originales a\u00fan se pueden recuperar y leer. Los datos pueden recuperarse incluso en caso de que varios discos fallen simult\u00e1neamente.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Transmisi\u00f3n de datos<\/h3>\n<p><\/p>\n<p>Se pueden usar c\u00f3digos de redundancia para la transmisi\u00f3n confiable de datos en una red no confiable. Los datos transmitidos se dividen en bloques y se calculan c\u00f3digos de redundancia para ellos. Tanto los bloques de datos como los bloques de c\u00f3digos de redundancia se transmiten por la red. En caso de errores en bloques arbitrarios (hasta cierto n\u00famero de bloques), los datos a\u00fan se pueden transmitir sin errores a trav\u00e9s de la red. Los c\u00f3digos de Reed-Solomon, por ejemplo, se utilizan para la transmisi\u00f3n de datos a trav\u00e9s de l\u00edneas de comunicaci\u00f3n \u00f3pticas y en comunicaci\u00f3n por sat\u00e9lite.<\/p>\n<p><\/p>\n<p>* Tambi\u00e9n existen c\u00f3digos de redundancia en los que los datos no se dividen en bloques, como los c\u00f3digos de Hamming y los c\u00f3digos CRC, que se utilizan ampliamente para la transmisi\u00f3n de datos en redes Ethernet. Estos son c\u00f3digos para codificaci\u00f3n resistente a fallos, destinados a la detecci\u00f3n de errores, y no a su correcci\u00f3n (el c\u00f3digo de Hamming tambi\u00e9n permite corregir errores parcialmente).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. C\u00f3digos de Reed-Solomon<\/h1>\n<p><\/p>\n<p>Los c\u00f3digos de Reed-Solomon son uno de los c\u00f3digos de redundancia m\u00e1s ampliamente utilizados, inventados en la d\u00e9cada de 1960 y que encontraron su aplicaci\u00f3n generalizada en la d\u00e9cada de 1980 para la producci\u00f3n en serie de discos compactos.<\/p>\n<p><\/p>\n<p>Hay dos preguntas clave para comprender los c\u00f3digos de Reed-Solomon: 1) \u00bfc\u00f3mo se crean los bloques de c\u00f3digos de redundancia?; 2) \u00bfc\u00f3mo se recuperan los datos utilizando bloques de c\u00f3digos de redundancia? Buscaremos respuestas a estas preguntas.<br \/>\nPara simplificar, a partir de ahora consideraremos que n=6 y m=4. Otras configuraciones se analizan por analog\u00eda.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">C\u00f3mo crear bloques de c\u00f3digos de redundancia<\/h3>\n<p><\/p>\n<p>Cada bloque de c\u00f3digos de redundancia se considera independientemente de los dem\u00e1s. Para calcular cada bloque se utilizan todos los n bloques de datos. En el esquema a continuaci\u00f3n, X1-X6 son bloques de datos y P1\u2013P4 son bloques de c\u00f3digos de redundancia.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Todos los bloques de datos deben tener el mismo tama\u00f1o; para la alineaci\u00f3n se pueden usar bits nulos. Los bloques de c\u00f3digos de redundancia resultantes tendr\u00e1n el mismo tama\u00f1o que los bloques de datos. Todos los bloques de datos se dividen en palabras (por ejemplo, de 16 bits). Supongamos que hemos dividido los bloques de datos en k palabras. Entonces, todos los bloques de c\u00f3digos de redundancia tambi\u00e9n se dividir\u00e1n en k palabras.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Para calcular la i-\u00e9sima palabra de cada bloque de redundancia se utilizar\u00e1n las i-\u00e9simas palabras de todos los bloques de datos. Se calcular\u00e1n seg\u00fan la siguiente f\u00f3rmula:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aqu\u00ed los valores x son las palabras de los bloques de datos, p son las palabras de los bloques de c\u00f3digos de redundancia, todos alfa, beta, gamma y delta son n\u00fameros especialmente escogidos, iguales para todos los i. Debo mencionar que todos estos valores no son n\u00fameros ordinarios, sino elementos del campo de Galois; las operaciones +, -, *, \/ no son las operaciones comunes que conocemos, sino operaciones especiales definidas sobre los elementos del campo de Galois.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">\u00bfPara qu\u00e9 sirven los campos de Galois?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A primera vista, todo parece simple: dividimos los datos en bloques, los bloques en palabras, y usando las palabras de los bloques de datos calculamos las palabras de los bloques de c\u00f3digos de redundancia, obteniendo as\u00ed bloques de c\u00f3digos de redundancia. En general, as\u00ed es como funciona, pero el diablo est\u00e1 en los detalles:<\/p>\n<p><\/p>\n<ol>\n<li>Como se mencion\u00f3 anteriormente, el tama\u00f1o de la palabra es fijo, en nuestro ejemplo, 16 bits. Las f\u00f3rmulas anteriores para los c\u00f3digos de Reed-Solomon son tales que al usar n\u00fameros enteros comunes, el resultado del c\u00e1lculo de p puede no ser representable con una palabra de tama\u00f1o permitido.<\/li>\n<li>Al recuperar datos, las f\u00f3rmulas anteriores se considerar\u00e1n como un sistema de ecuaciones que debe resolverse para recuperar los datos. En el proceso de resoluci\u00f3n, puede ser necesario realizar divisiones de n\u00fameros enteros entre s\u00ed, cuyo resultado ser\u00e1 un n\u00famero decimal que no puede ser representado con precisi\u00f3n en la memoria de la computadora.<\/li>\n<\/ol>\n<p><\/p>\n<p>Estos problemas impiden usar n\u00fameros enteros para los c\u00f3digos de Reed-Solomon. La soluci\u00f3n es original y se puede describir de la siguiente manera: inventemos n\u00fameros especiales que se puedan representar mediante palabras de la longitud necesaria (por ejemplo, 16 bits), y el resultado de todas las operaciones realizadas sobre ellos (suma, resta, multiplicaci\u00f3n, divisi\u00f3n) tambi\u00e9n se representar\u00e1 en la memoria de la computadora mediante palabras de la longitud necesaria.<\/p>\n<p><\/p>\n<p>Estos n\u00fameros \"especiales\" han sido estudiados durante mucho tiempo en matem\u00e1ticas, y se les llama campos. Un campo es un conjunto de elementos con operaciones definidas de suma, resta, multiplicaci\u00f3n y divisi\u00f3n.<\/p>\n<p><\/p>\n<p>Los campos de Galois* son campos que tienen un resultado \u00fanico para cada operaci\u00f3n (+, -, *, \/) entre cualesquiera dos elementos del campo. Se pueden construir campos de Galois para n\u00fameros que son potencias de 2: 2, 4, 8, 16, etc. (de hecho, para cualquier potencia de un n\u00famero primo p, pero en la pr\u00e1ctica solo nos interesan las potencias de 2). Por ejemplo, para palabras de 16 bits, este campo contiene 65,536 elementos, para los cuales se puede encontrar el resultado de cualquier operaci\u00f3n (+, -, *, \/) para cada par de ellos. Los valores x, p, alfa, beta, gamma, delta de las ecuaciones anteriores se considerar\u00e1n como elementos del campo de Galois para los c\u00e1lculos.<\/p>\n<p><\/p>\n<p>Por lo tanto, tenemos un sistema de ecuaciones con el que se pueden construir bloques de c\u00f3digos de redundancia, escribiendo un programa de computadora correspondiente. Con este mismo sistema de ecuaciones, se puede llevar a cabo la recuperaci\u00f3n de datos.<\/p>\n<p><\/p>\n<p>* Esta no es una definici\u00f3n estricta, m\u00e1s bien es una descripci\u00f3n.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">C\u00f3mo recuperar datos<\/h3>\n<p><\/p>\n<p>La recuperaci\u00f3n es necesaria cuando de n + m bloques, algunos bloques est\u00e1n ausentes. Estos pueden ser bloques de datos o bloques de c\u00f3digos de redundancia. La ausencia de bloques de datos y\/o bloques de c\u00f3digos de redundancia significar\u00e1 que en las ecuaciones anteriores se desconocen las variables correspondientes x y\/o p.<\/p>\n<p><\/p>\n<p>Las ecuaciones para los c\u00f3digos de Reed-Solomon se pueden considerar como un sistema de ecuaciones en el que todos los valores alfa, beta, gamma, delta son constantes, todos los x y p correspondientes a los bloques disponibles son variables conocidas, y los dem\u00e1s x y p son desconocidos.<\/p>\n<p><\/p>\n<p>Por ejemplo, supongamos que los bloques de datos 1, 2, 3 y el bloque de c\u00f3digos de redundancia 2 no est\u00e1n disponibles, entonces para el i-\u00e9simo grupo de palabras habr\u00e1 el siguiente sistema de ecuaciones (los desconocidos est\u00e1n marcados en rojo):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00a1Tenemos un sistema de 4 ecuaciones con 4 inc\u00f3gnitas, as\u00ed que podemos resolverlo y recuperar los datos!<\/p>\n<p><\/p>\n<p>De este sistema de ecuaciones se derivan varias conclusiones sobre la recuperaci\u00f3n de datos para los c\u00f3digos de Reed-Solomon (n bloques de datos, m bloques de c\u00f3digos de redundancia):<\/p>\n<p><\/p>\n<ul>\n<li>Los datos se pueden recuperar ante la p\u00e9rdida de cualquier m bloques o menos. Ante la p\u00e9rdida de m+1 bloques o m\u00e1s, los datos no se pueden recuperar: no se puede resolver un sistema de m ecuaciones con m + 1 inc\u00f3gnitas. <\/li>\n<li>Para recuperar incluso un solo bloque de datos, es necesario usar cualesquiera n de los bloques restantes, pudiendo emplear cualquiera de los c\u00f3digos de redundancia.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Qu\u00e9 m\u00e1s hay que saber<\/h3>\n<p><\/p>\n<p>En la descripci\u00f3n anterior, evito una serie de cuestiones importantes que requieren un mayor enfoque en la matem\u00e1tica. En particular, no menciono lo siguiente:<\/p>\n<p><\/p>\n<ul>\n<li>El sistema de ecuaciones para los c\u00f3digos de Reed-Solomon debe tener (una \u00fanica) soluci\u00f3n para cualesquiera combinaciones de inc\u00f3gnitas (no m\u00e1s de m inc\u00f3gnitas). A partir de esta exigencia se seleccionan los valores de alfa, beta, gamma y delta.<\/li>\n<li>El sistema de ecuaciones debe poder construirse autom\u00e1ticamente (dependiendo de qu\u00e9 bloques no est\u00e9n disponibles) y resolverse.<\/li>\n<li>Es necesario construir un campo de Galois: para un tama\u00f1o de palabra dado, se debe ser capaz de encontrar el resultado de cualquier operaci\u00f3n (+, -, *, \/) para cualesquiera dos elementos.<\/li>\n<\/ul>\n<p><\/p>\n<p>Al final del art\u00edculo hay enlaces a literatura sobre estas cuestiones importantes.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Elecci\u00f3n de n y m<\/h3>\n<p><\/p>\n<p>\u00bfC\u00f3mo elegir n y m en la pr\u00e1ctica? En la pr\u00e1ctica, en los sistemas de almacenamiento de datos, los c\u00f3digos de redundancia se utilizan para ahorrar espacio, por lo que siempre m se elige menor que n. Sus valores concretos dependen de varios factores, incluidos:<\/p>\n<p><\/p>\n<ul>\n<li>Fiabilidad del almacenamiento de datos. Cuanto mayor sea m, mayor ser\u00e1 el n\u00famero de fallos de discos que se pueden soportar, es decir, mayor ser\u00e1 la fiabilidad.<\/li>\n<li>Redundancia de almacenamiento. Cuanto mayor sea la relaci\u00f3n m \/ n, mayor ser\u00e1 la redundancia de almacenamiento, y m\u00e1s costosa ser\u00e1 la sistema.<\/li>\n<li>Tiempo de procesamiento de solicitudes. Cuanto mayor sea la suma n + m, m\u00e1s largo ser\u00e1 el tiempo de respuesta a las solicitudes. Dado que para leer los datos (durante la recuperaci\u00f3n) es necesario leer n bloques almacenados en n discos diferentes, el tiempo de lectura ser\u00e1 determinado por el disco m\u00e1s lento.<\/li>\n<\/ul>\n<p><\/p>\n<p>Adem\u00e1s, almacenar datos en varios centros de datos impone restricciones adicionales en la elecci\u00f3n de n y m: cuando se desconecta 1 centro de datos, los datos a\u00fan deben ser accesibles para lectura. Por ejemplo, al almacenar datos en 3 centros de datos, se debe cumplir la condici\u00f3n: m &gt;= n\/2; de lo contrario, puede darse el caso de que los datos no sean accesibles para lectura al desconectar 1 centro de datos.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 C\u00f3digos de Reconstrucci\u00f3n Local<\/h1>\n<p><\/p>\n<p>Para recuperar datos utilizando los c\u00f3digos de Reed-Solomon, es necesario utilizar n bloques de datos arbitrarios. Esta es una desventaja muy significativa para los sistemas de almacenamiento de datos distribuidos, ya que para recuperar datos de un disco roto se tiene que leer datos de la mayor\u00eda de los otros, creando una carga adicional considerable sobre los discos y la red.<\/p>\n<p><\/p>\n<p>Los errores m\u00e1s comunes son la falta de acceso a un bloque de datos debido a la falla o sobrecarga de un disco. \u00bfSe puede reducir de alg\u00fan modo la carga excesiva para recuperar datos en tal (el caso m\u00e1s com\u00fan) situaci\u00f3n? Resulta que s\u00ed: para esto existen los c\u00f3digos de redundancia LRC.<\/p>\n<p><\/p>\n<p>LRC (C\u00f3digos de Reconstrucci\u00f3n Local) son c\u00f3digos de redundancia creados por Microsoft para su uso en Windows Azure Storage. La idea detr\u00e1s de LRC es muy simple: dividir todos los bloques de datos en dos (o m\u00e1s) grupos y calcular la parte de los bloques de c\u00f3digos de redundancia para cada grupo por separado. Entonces, parte de los bloques de c\u00f3digos de redundancia se calcular\u00e1 utilizando todos los bloques de datos (en LRC se denominan c\u00f3digos de redundancia globales), mientras que la otra parte se calcular\u00e1 utilizando uno de los dos grupos de bloques de datos (que se denominan c\u00f3digos de redundancia locales).<\/p>\n<p><\/p>\n<p>LRC se representa con tres n\u00fameros: n-r-l, donde n es la cantidad de bloques de datos, r es la cantidad de bloques de c\u00f3digos de redundancia globales, l es la cantidad de bloques de c\u00f3digos de redundancia locales. Para leer datos cuando un bloque de datos no est\u00e1 disponible, solo es necesario leer n\/l bloques; esto es l veces menos que en los c\u00f3digos de Reed-Solomon.<\/p>\n<p><\/p>\n<p>Como ejemplo, consideremos el esquema LRC 6-2-2. X1\u2013X6 son 6 bloques de datos, P1, P2 son 2 bloques de redundancia global, P3, P4 son 2 bloques de redundancia local.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Los bloques de c\u00f3digos de redundancia P1, P2 se calculan utilizando todos los bloques de datos. El bloque de c\u00f3digos de redundancia P3 se calcula utilizando los bloques de datos X1\u2013X3, y el bloque de c\u00f3digos de redundancia P4 se calcula utilizando los bloques de datos X4\u2013X6.<\/p>\n<p><\/p>\n<p>Lo dem\u00e1s se hace en LRC de manera similar a los c\u00f3digos de Reed-Solomon. Las ecuaciones para calcular las palabras de los bloques de c\u00f3digos de redundancia ser\u00e1n las siguientes:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3digos de redundancia: en t\u00e9rminos simples, c\u00f3mo almacenar datos de manera confiable y econ\u00f3mica\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Para seleccionar los n\u00fameros alfa, beta, gamma, delta es necesario cumplir una serie de condiciones que garantizan la posibilidad de recuperaci\u00f3n de datos (es decir, la soluci\u00f3n del sistema de ecuaciones). Puedes leer m\u00e1s sobre esto en <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">el art\u00edculo<\/a><\/noindex>.<br \/>\nAdem\u00e1s, en la pr\u00e1ctica, para calcular los c\u00f3digos locales de redundancia P3, P4 se utiliza la operaci\u00f3n XOR. <\/p>\n<p><\/p>\n<p>De la sistema de ecuaciones para LRC se deducen varias conclusiones:<\/p>\n<p><\/p>\n<ul>\n<li>Para recuperar cualquier bloque de datos, es suficiente leer n\/l bloques (n\/2 en nuestro ejemplo).<\/li>\n<li>Si r + l bloques son inaccesibles, y todos los bloques pertenecen a un mismo grupo, no se pueden recuperar los datos. Esto se puede explicar f\u00e1cilmente con un ejemplo. Supongamos que los bloques X1\u2013X3 y P3 son inaccesibles: estos son r + l bloques de un mismo grupo, 4 en nuestro caso. Entonces tenemos un sistema de 3 ecuaciones con 4 inc\u00f3gnitas, el cual no se puede resolver.<\/li>\n<li>En todos los dem\u00e1s casos de inaccesibilidad de r + l bloques (cuando al menos un bloque de cada grupo es accesible), los datos se pueden recuperar en LRC.<\/li>\n<\/ul>\n<p><\/p>\n<p>As\u00ed, LRC supera a los c\u00f3digos de Reed-Solomon en la recuperaci\u00f3n de datos tras errores \u00fanicos. En los c\u00f3digos de Reed-Solomon, para recuperar incluso un bloque de datos se deben utilizar n bloques, mientras que en LRC, para recuperar un bloque de datos, es suficiente utilizar n\/l bloques (n\/2 en nuestro ejemplo). Por otro lado, LRC es menos eficiente que los c\u00f3digos de Reed-Solomon en cuanto al n\u00famero m\u00e1ximo de errores permitidos. En los ejemplos anteriores, los c\u00f3digos de Reed-Solomon pueden recuperar datos en caso de producirse hasta 4 errores, mientras que para LRC hay 2 combinaciones de 4 errores en las que no se pueden recuperar los datos.<\/p>\n<p><\/p>\n<p>Lo que es m\u00e1s importante depende de la situaci\u00f3n espec\u00edfica, pero a menudo el ahorro en la carga redundante que proporciona LRC supera una fiabilidad de almacenamiento algo menor.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Otros c\u00f3digos de redundancia<\/h1>\n<p><\/p>\n<p>Adem\u00e1s de los c\u00f3digos de Reed-Solomon y LRC, existen muchos otros c\u00f3digos de redundancia. Diferentes c\u00f3digos de redundancia utilizan diferentes matem\u00e1ticas. Aqu\u00ed algunos otros c\u00f3digos de redundancia:<\/p>\n<p><\/p>\n<ul>\n<li>C\u00f3digo de redundancia utilizando el operador XOR. La operaci\u00f3n XOR se aplica sobre n bloques de datos, obteniendo 1 bloque de c\u00f3digos de redundancia, es decir, el esquema n+1 (n bloques de datos, 1 c\u00f3digo de redundancia). Utilizado en <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, donde los bloques de datos y los c\u00f3digos de redundancia se escriben c\u00edclicamente en todos los discos del arreglo.<\/li>\n<li>El algoritmo par-impar, basado en la operaci\u00f3n XOR. Permite construir 2 bloques de c\u00f3digos de redundancia, es decir, un esquema n+2.<\/li>\n<li>El algoritmo STAR, basado en la operaci\u00f3n XOR. Permite construir 3 bloques de c\u00f3digos de redundancia, es decir, un esquema n+3.<\/li>\n<li>C\u00f3digos Pyramide \u2014 otros c\u00f3digos de redundancia de Microsoft.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Uso en Yandex<\/h1>\n<p><\/p>\n<p>Varios proyectos de infraestructura de Yandex utilizan c\u00f3digos de redundancia para un almacenamiento de datos fiable. Aqu\u00ed hay algunos ejemplos:<\/p>\n<p><\/p>\n<ul>\n<li>El almacenamiento de objetos interno MDS, del cual habl\u00e9 al principio del art\u00edculo.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2014 Sistema 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 datos distribuida newSQL.<\/li>\n<\/ul>\n<p><\/p>\n<p>En MDS se utilizan c\u00f3digos de redundancia LRC, esquema 8-2-2. Los datos con c\u00f3digos de redundancia se escriben en 12 discos diferentes en diferentes servidores en 3 centros de datos: 4 servidores en cada centro de datos. M\u00e1s detalles sobre esto se pueden encontrar en <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">el art\u00edculo<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>En YT se utilizan tanto los c\u00f3digos de Reed-Solomon (esquema 6-3), que fueron implementados primero, como los c\u00f3digos de redundancia LRC (esquema 12-2-2), siendo LRC el m\u00e9todo preferido de almacenamiento.<\/p>\n<p><\/p>\n<p>En YDB se utilizan c\u00f3digos de redundancia basados en par-impar (esquema 4-2). Ya se ha hablado sobre los c\u00f3digos de redundancia en YDB <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">en Highload<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>La aplicaci\u00f3n de diferentes esquemas de c\u00f3digos de redundancia se debe a los diferentes requisitos que se presentan a los sistemas. Por ejemplo, en MDS, los datos almacenados con LRC se distribuyen en 3 centros de datos. Es importante que los datos permanezcan accesibles para la lectura incluso si falla 1 de los centros de datos, por lo tanto, los bloques deben estar distribuidos por centros de datos de tal manera que, al no estar disponible cualquier centro de datos, la cantidad de bloques no accesibles no sea mayor que la permitida. En el esquema 8-2-2 se pueden colocar 4 bloques en cada centro de datos, por lo que al desconectar cualquier centro de datos habr\u00e1 4 bloques no accesibles, y los datos podr\u00e1n ser le\u00eddos. Cualquiera que sea el esquema que elijamos al distribuir en 3 centros de datos, en cualquier caso debe cumplirse (r + l) \/ n &gt;= 0,5, es decir, la redundancia de almacenamiento ser\u00e1 como m\u00ednimo del 50%.<\/p>\n<p><\/p>\n<p>En YT la situaci\u00f3n es diferente: cada cl\u00faster de YT se encuentra completamente en 1 centro de datos (diferentes cl\u00fasteres en diferentes centros de datos), por lo que no hay tal restricci\u00f3n. El esquema 12-2-2 proporciona una redundancia del 33%, lo que significa que almacenar datos resulta m\u00e1s econ\u00f3mico, adem\u00e1s pueden soportar hasta 4 desconexiones simult\u00e1neas de discos, igual que el esquema en MDS.<\/p>\n<p><\/p>\n<p>Existen muchas caracter\u00edsticas adicionales en el uso de c\u00f3digos de redundancia en sistemas de almacenamiento y procesamiento de datos: matices en la recuperaci\u00f3n de datos, impacto de la recuperaci\u00f3n en el tiempo de respuesta de las consultas, particularidades en la escritura de datos, etc. Tengo la intenci\u00f3n de hablar sobre estas y otras caracter\u00edsticas de la aplicaci\u00f3n de c\u00f3digos de redundancia en la pr\u00e1ctica, si el tema resulta interesante.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. Enlaces<\/h1>\n<p><\/p>\n<ol>\n<li>Serie de art\u00edculos sobre c\u00f3digos de Reed-Solomon y campos 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 \/>\nSe analiza la matem\u00e1tica de manera accesible y detallada.<\/li>\n<li>Art\u00edculo de Microsoft sobre 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 \/>\nEn la secci\u00f3n 2 se explica brevemente la teor\u00eda, y luego se analiza la experiencia de aplicaci\u00f3n de LRC en la pr\u00e1ctica.<\/li>\n<li>Esquema 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>Esquema 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>C\u00f3digos piramidales: <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>C\u00f3digos de redundancia en 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>C\u00f3digos de redundancia en 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>C\u00f3digos de redundancia en 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>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47C\u00f3digos de redundancia: explicados de manera sencilla sobre c\u00f3mo almacenar datos de manera segura y econ\u00f3mica | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/87758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}