Redundancy codes: in simple words about how to store data reliably and cheaply



This is what redundancy looks like



* . . , . , , , . ( ):





, MDS. ( โ€” LRC). , , . .



, , . , , , , .



* ยซ ยป ยซerasure codesยป.



1.



: ( ) , ( , . .).



* n , m , n + m . , n , n + m . , , .





n , n n + m , n , n-1 ( 1 ยซ ยป). n n + m ? , โ€” n , LRC โ€” .





, , . . .





. , . , . ( ), . โ€” , , .



* , , CRC, Ethernet. , , ( ).



2. โ€”



โ€” โ€” , 1960- 1980- -.



โ€” : 1) ; 2) . .

, n=6 m=4. .





. n . X1-X6 โ€” , P1โ€“P4 โ€” .





, . , . (, 16 ). , k . k .





i- i- . :





x โ€” , p โ€” , , , โ€” , i. , โ€” , , +, -, *, / โ€” , , .







, : , โ€” , โ€” . , :



  1. , โ€” , 16 . โ€” , p .
  2. , , . , , .


โ€” . , : , (, 16 ), (, , , ) .



ยซยป , . โ€” , , .



* โ€” , (+, -, *, /) . , 2: 2, 4, 8, 16 . . ( p, 2). , 16 , 65 536 , (+, -, *, /). x, p, , , , .



, , , . .



* , .





, n + m . , . / , x / p.



โ€” , , , , โ€” , x p, , โ€” , x p โ€” .



, 1, 2, 3 2 , i- ( ):





4 4 , !



โ€” (n , m ):



  • m . m+1 : m m + 1 .
  • n , .




, . , :



  • โ€” () ( m ). , , .
  • ( , ) .
  • : (+, -, *, /) .


.



n m



n m? , m n. , :



  • . m, , .
  • . m / n, , .
  • . n + m, . ( ) n , n , .


, n m: 1 . , 3 : m >= n/2, , 1 .



3. LRC โ€” Local Reconstruction Codes



โ€” n . , , .



โ€” - . - ( ) ? , : LRC.



LRC (Local Reconstruction Codes) โ€” , Microsoft Windows Azure Storage. LRC : ( ) . ( LRC ), โ€” ( ).



LRC : n-r-l, n โ€” , r โ€” , l โ€” . n/l โ€” l , โ€” .



LRC 6-2-2. X1โ€“X6 โ€” 6 , P1, P2 โ€” 2 , P3, P4 โ€” 2 .





P1, P2 . P3 โ€” X1โ€“X3, P4 โ€” X4โ€“X6.



LRC โ€” . :





, , , , ( ). .

P3, P4 XOR.



LRC :



  • 1 n/l (n/2 ).
  • r + l , , . . X1โ€“X3 P3: r + l , 4 . 3 4 , .
  • r + l ( ) LRC .


, LRC โ€” . โ€” n , LRC n/l (n/2 ). , LRC โ€” . โ€” 4 , LRC 2 4 , .



โ€” , , LRC, .



4.



โ€” LRC, . . :



  • XOR. XOR n , 1 , n+1 (n , 1 ). RAID 5, .
  • even-odd, XOR. 2 , n+2.
  • STAR, XOR. 3 , n+3.
  • Pyramide codes โ€” Microsoft.


5.



. :



  • MDS, .
  • YT โ€” MapReduce- .
  • YDB (Yandex DataBase) โ€” newSQL.


MDS LRC, 8-2-2. 12 3 : 4 . .



YT โ€” ( 6-3), , LRC ( 12-2-2), LRC โ€” .



YDB , even-odd ( 4-2). YDB Highload.



, . , MDS , LRC, 3 . , 1 , , . 8-2-2 4 , 4 , . 3 , (r + l) / n >= 0,5, 50%.



YT : YT 1 ( ), . 12-2-2 33%, , 4 , MDS.



: , , . . , .



6.



  1. โ€” : https://habr.com/ru/company/yadro/blog/336286/

    https://habr.com/ru/company/yadro/blog/341506/

    .
  2. Microsoft LRC: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/LRC12-cheng20webpage.pdf

    2 , LRC .
  3. even-odd: https://people.eecs.berkeley.edu/~kubitron/courses/cs262a-F12/handouts/papers/p245-blaum.pdf
  4. STAR: https://www.usenix.org/legacy/event/fast05/tech/full_papers/huang/huang.pdf
  5. Pyramid codes: https://www.microsoft.com/en-us/research/publication/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems/
  6. MDS: https://habr.com/ru/company/yandex/blog/311806
  7. YT: https://habr.com/ru/company/yandex/blog/311104/
  8. YDB: https://www.youtube.com/watch?v=dCpfGJ35kK8



All Articles