Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Ortiqchalik shunday ko'rinadi

Ortiqcha kodlar* ma'lumotlarni saqlash ishonchliligini oshirish uchun kompyuter tizimlarida keng qo'llaniladi. Yandex-da ular ko'plab loyihalarda qo'llaniladi. Misol uchun, bizning ichki ob'ekt xotiramizda replikatsiya o'rniga ortiqcha kodlardan foydalanish ishonchlilikni yo'qotmasdan millionlab odamlarni tejaydi. Ammo ularning keng qo'llanilishiga qaramay, ortiqcha kodlar qanday ishlashining aniq tavsiflari juda kam uchraydi. Tushunishni istaganlar taxminan quyidagilarga duch kelishadi (dan Vikipediya):

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Mening ismim Vadim, Yandex-da men MDS ichki ob'ektini saqlashni ishlab chiqyapman. Ushbu maqolada men ortiqcha kodlarning nazariy asoslarini (Reed-Solomon va LRC kodlari) oddiy so'zlar bilan tasvirlab beraman. Men sizga murakkab matematika va nodir atamalarsiz qanday ishlashini aytib beraman. Oxirida Yandex-da ortiqcha kodlardan foydalanishga misollar keltiraman.

Men bir qator matematik tafsilotlarni batafsil ko'rib chiqmayman, lekin chuqurroq sho'ng'ishni istaganlar uchun havolalar beraman. Shuni ham ta'kidlaymanki, ba'zi matematik ta'riflar qat'iy bo'lmasligi mumkin, chunki maqola matematiklar uchun emas, balki masalaning mohiyatini tushunishni istagan muhandislar uchun mo'ljallangan.

* Ingliz tilidagi adabiyotlarda ortiqcha kodlar ko'pincha o'chirish kodlari deb ataladi.

1. Ortiqchalik kodlarining mohiyati

Barcha ortiqcha kodlarning mohiyati juda oddiy: xatolar yuzaga kelganda (diskdagi nosozliklar, ma'lumotlarni uzatish xatolari va boshqalar) yo'qolmasligi uchun ma'lumotlarni saqlang (yoki uzating).

Ko'pchilik* ortiqcha kodlarda ma'lumotlar n ta ma'lumotlar blokiga bo'linadi, ular uchun m ortiqcha kod bloklari hisoblanadi, natijada jami n + m blok hosil bo'ladi. Ortiqchalik kodlari shunday tuzilganki, n blokli ma'lumotlar n + m bloklarning faqat bir qismi yordamida tiklanishi mumkin. Keyinchalik, biz faqat blokirovkaning ortiqcha kodlarini, ya'ni ma'lumotlar bloklarga bo'lingan kodlarni ko'rib chiqamiz.

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Barcha n blokli ma'lumotlarni qayta tiklash uchun sizda kamida n ta n + m blok bo'lishi kerak, chunki siz faqat n-1 blokga ega bo'lgan holda n ta blokga ega bo'lolmaysiz (bu holda siz 1 blokni "nozikdan" olishingiz kerak bo'ladi. havo"). Barcha ma'lumotlarni qayta tiklash uchun n + m blokdan iborat n ta tasodifiy blok etarlimi? Bu ortiqcha kodlarning turiga bog'liq, masalan, Reed-Solomon kodlari o'zboshimchalik bilan n bloklari yordamida barcha ma'lumotlarni qayta tiklashga imkon beradi, lekin LRC ortiqcha kodlari har doim ham emas.

Ma'lumotlarni saqlash

Ma'lumotlarni saqlash tizimlarida, qoida tariqasida, ma'lumotlar bloklari va ortiqcha kod bloklarining har biri alohida diskka yoziladi. Keyin, agar o'zboshimchalik bilan disk ishlamay qolsa, asl ma'lumotlar hali ham tiklanishi va o'qilishi mumkin. Bir vaqtning o'zida bir nechta disklar ishlamay qolsa ham, ma'lumotlarni qayta tiklash mumkin.

Ma'lumot uzatish

Ishonchsiz tarmoq orqali ma'lumotlarni ishonchli uzatish uchun ortiqcha kodlardan foydalanish mumkin. O'tkazilgan ma'lumotlar bloklarga bo'linadi va ular uchun ortiqcha kodlar hisoblanadi. Ma'lumotlar bloklari ham, ortiqcha kod bloklari ham tarmoq orqali uzatiladi. Agar ixtiyoriy bloklarda (ma'lum miqdordagi bloklargacha) xatolar yuzaga kelsa, ma'lumotlar tarmoq orqali xatosiz uzatilishi mumkin. Masalan, Reed-Solomon kodlari optik aloqa liniyalari va sun'iy yo'ldosh aloqalarida ma'lumotlarni uzatish uchun ishlatiladi.

* Bundan tashqari, Ethernet tarmoqlarida ma'lumotlarni uzatish uchun keng qo'llaniladigan Hamming kodlari va CRC kodlari kabi ma'lumotlar bloklarga bo'linmaydigan ortiqcha kodlar mavjud. Bu xatolarni tuzatish kodlari bo'lib, ular xatolarni aniqlash uchun mo'ljallangan, ularni tuzatish uchun emas (Xemming kodi xatolarni qisman tuzatishga ham imkon beradi).

2. Rid-Sulaymon kodlari

Reed-Solomon kodlari 1960-yillarda ixtiro qilingan va birinchi marta 1980-yillarda ixcham disklarni ommaviy ishlab chiqarish uchun keng qo'llanilgan eng ko'p ishlatiladigan ortiqcha kodlardan biridir.

Reed-Solomon kodlarini tushunish uchun ikkita asosiy savol mavjud: 1) ortiqcha kodlar bloklarini qanday yaratish kerak; 2) ortiqcha kod bloklari yordamida ma'lumotlarni qanday tiklash. Keling, ularga javob topaylik.
Oddiylik uchun n=6 va m=4 deb faraz qilamiz. Boshqa sxemalar analogiya bo'yicha ko'rib chiqiladi.

Ortiqcha kod bloklarini qanday yaratish mumkin

Ortiqcha kodlarning har bir bloki boshqalardan mustaqil ravishda hisoblanadi. Har bir blokni hisoblash uchun barcha n ma'lumotlar bloklari ishlatiladi. Quyidagi diagrammada X1-X6 ma'lumotlar bloklari, P1-P4 - ortiqcha kod bloklari.

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Barcha ma'lumotlar bloklari bir xil o'lchamda bo'lishi kerak va moslashtirish uchun nol bitlardan foydalanish mumkin. Olingan ortiqcha kod bloklari ma'lumotlar bloklari bilan bir xil o'lchamda bo'ladi. Barcha ma'lumotlar bloklari so'zlarga bo'linadi (masalan, 16 bit). Aytaylik, ma'lumotlar bloklarini k so'zlarga ajratamiz. Keyin ortiqcha kodlarning barcha bloklari ham k so'zga bo'linadi.

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Har bir ortiqcha blokning i-so'zini hisoblash uchun barcha ma'lumotlar bloklarining i-so'zlari ishlatiladi. Ular quyidagi formula bo'yicha hisoblab chiqiladi:

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Bu erda x qiymatlari ma'lumotlar bloklari so'zlari, p - ortiqcha kod bloklari so'zlari, barcha alfa, beta, gamma va delta - barcha i uchun bir xil bo'lgan maxsus tanlangan raqamlar. Darhol aytish kerakki, bu qiymatlarning barchasi oddiy raqamlar emas, balki Galois maydonining elementlari; +, -, *, / operatsiyalari barchamizga tanish operatsiyalar emas, balki Galois elementlariga kiritilgan maxsus operatsiyalardir. maydon.

Galois maydonlari nima uchun kerak?

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Ko'rinishidan, hamma narsa oddiy: biz ma'lumotlarni bloklarga, bloklarni so'zlarga ajratamiz, ma'lumotlar bloklari so'zlari yordamida ortiqcha kod bloklari so'zlarini hisoblaymiz - biz ortiqcha kod bloklarini olamiz. Umuman olganda, bu shunday ishlaydi, lekin shayton tafsilotlarda:

  1. Yuqorida ta'kidlab o'tilganidek, so'z hajmi aniqlangan, bizning misolimizda 16 bit. Reed-Solomon kodlari uchun yuqoridagi formulalar shundayki, oddiy butun sonlardan foydalanganda p ni hisoblash natijasi haqiqiy o'lchamdagi so'z yordamida ifodalanmasligi mumkin.
  2. Ma'lumotlarni qayta tiklashda yuqoridagi formulalar ma'lumotlarni qayta tiklash uchun echilishi kerak bo'lgan tenglamalar tizimi sifatida ko'rib chiqiladi. Yechish jarayonida butun sonlarni bir-biriga bo'lish kerak bo'lishi mumkin, natijada kompyuter xotirasida to'g'ri ko'rsatib bo'lmaydigan haqiqiy son paydo bo'ladi.

Ushbu muammolar Reed-Solomon kodlari uchun butun sonlardan foydalanishga to'sqinlik qiladi. Muammoning yechimi originaldir, uni quyidagicha ta'riflash mumkin: keling, kerakli uzunlikdagi so'zlar (masalan, 16 bit) va barcha operatsiyalarni bajarish natijasi (qo'shish) yordamida ifodalanishi mumkin bo'lgan maxsus raqamlarni ishlab chiqaylik. , ayirish, ko'paytirish, bo'lish) ham kompyuter xotirasida kerakli uzunlikdagi so'zlar yordamida taqdim etiladi.

Bunday "maxsus" raqamlar matematika tomonidan uzoq vaqt davomida o'rganilgan, ular maydonlar deb ataladi. Maydon - qo'shish, ayirish, ko'paytirish va bo'lish amallari ular uchun belgilangan elementlar to'plami.

Galois* maydonlari - bu maydonning istalgan ikkita elementi uchun har bir operatsiyaning noyob natijasi (+, -, *, /) mavjud bo'lgan maydonlar. Galois maydonlari 2: 2, 4, 8, 16 va boshqalarning darajalari bo'lgan raqamlar uchun tuzilishi mumkin (aslida har qanday p sonning darajalari, lekin amalda bizni faqat 2 ning darajalari qiziqtiradi). Masalan, 16 bitli so'zlar uchun bu 65 ta elementni o'z ichiga olgan maydon bo'lib, ularning har bir jufti uchun har qanday operatsiya natijasini topishingiz mumkin (+, -, *, /). Yuqoridagi tenglamalardan x, p, alfa, beta, gamma, delta qiymatlari hisob-kitoblar uchun Galois maydonining elementlari hisoblanadi.

Shunday qilib, bizda tegishli kompyuter dasturini yozish orqali ortiqcha kodlar bloklarini qurishimiz mumkin bo'lgan tenglamalar tizimi mavjud. Xuddi shu tenglamalar tizimidan foydalanib, siz ma'lumotlarni qayta tiklashingiz mumkin.

* Bu qat'iy ta'rif emas, balki tavsif.

Ma'lumotlarni qanday tiklash mumkin

Ba'zi n + m bloklari yo'q bo'lganda tiklash kerak. Bu ma'lumotlar bloklari va ortiqcha kod bloklari bo'lishi mumkin. Ma'lumotlar bloklari va/yoki ortiqcha kod bloklarining yo'qligi yuqoridagi tenglamalarda mos keladigan x va/yoki p o'zgaruvchilari noma'lumligini bildiradi.

Reed-Solomon kodlari uchun tenglamalarni tenglamalar tizimi sifatida ko'rish mumkin, unda barcha alfa, beta, gamma, delta qiymatlari doimiylar, mavjud bloklarga mos keladigan barcha x va plar ma'lum o'zgaruvchilar, qolgan x va p esa noma'lum.

Masalan, 1, 2, 3 ma'lumotlar bloklari va ortiqcha kod bloki 2 mavjud bo'lmasin, keyin i-guruh so'zlari uchun quyidagi tenglamalar tizimi bo'ladi (noma'lumlar qizil rang bilan belgilangan):

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Bizda 4 ta noma'lum bo'lgan 4 ta tenglama tizimi mavjud, ya'ni biz uni hal qilishimiz va ma'lumotlarni qayta tiklashimiz mumkin!

Ushbu tenglamalar tizimidan Reed-Solomon kodlari (n ma'lumotlar bloklari, m ortiqcha kod bloklari) uchun ma'lumotlarni qayta tiklash bo'yicha bir qator xulosalar chiqariladi:

  • Agar m yoki undan kam blok yo'qolsa, ma'lumotlarni qayta tiklash mumkin. Agar m+1 yoki undan ortiq bloklar yo‘qolsa, ma’lumotlarni qayta tiklab bo‘lmaydi: m+1 noma’lumli m tenglamalar tizimini yechish mumkin emas.
  • Hatto bitta ma'lumot blokini tiklash uchun siz qolgan bloklardan istalgan n dan foydalanishingiz kerak va siz ortiqcha kodlardan foydalanishingiz mumkin.

Yana nimani bilishingiz kerak

Yuqoridagi tavsifda men matematikaga chuqurroq kirib borishni talab qiladigan bir qator muhim masalalardan qochaman. Xususan, men quyidagilar haqida hech narsa aytmayapman:

  • Reed-Solomon kodlari uchun tenglamalar tizimi noma'lumlarning har qanday kombinatsiyasi uchun (o'ziga xos) yechimga ega bo'lishi kerak (m dan ko'p bo'lmagan noma'lum). Ushbu talabdan kelib chiqib, alfa, beta, gamma va delta qiymatlari tanlanadi.
  • Tenglamalar tizimi avtomatik ravishda tuzilishi (qaysi bloklar mavjud emasligiga qarab) va echilishi mumkin bo'lishi kerak.
  • Biz Galois maydonini qurishimiz kerak: berilgan so'z hajmi uchun istalgan ikkita element uchun har qanday operatsiya natijasini (+, -, *, /) topa olish.

Maqolaning oxirida ushbu muhim masalalar bo'yicha adabiyotlarga havolalar mavjud.

n va m ni tanlash

Amalda n va m ni qanday tanlash mumkin? Amalda, ma'lumotlarni saqlash tizimlarida bo'sh joyni tejash uchun ortiqcha kodlar qo'llaniladi, shuning uchun m har doim n dan kam tanlanadi. Ularning o'ziga xos qiymatlari bir qator omillarga bog'liq, jumladan:

  • Ma'lumotlarni saqlashning ishonchliligi. m qanchalik katta bo'lsa, omon qolish mumkin bo'lgan diskdagi nosozliklar soni shunchalik ko'p bo'ladi, ya'ni ishonchliligi shunchalik yuqori bo'ladi.
  • Ortiqcha saqlash. M/n nisbati qanchalik baland bo'lsa, saqlashning ortiqcha miqdori shunchalik yuqori bo'ladi va tizim qimmatroq bo'ladi.
  • So'rovni ko'rib chiqish vaqti. n + m summasi qanchalik katta bo'lsa, so'rovlarga javob berish vaqti shunchalik uzoq bo'ladi. Ma'lumotlarni o'qish (tiklash vaqtida) n xil diskda saqlangan n ta blokni o'qishni talab qilganligi sababli, o'qish vaqti eng sekin disk tomonidan aniqlanadi.

Bundan tashqari, ma'lumotlarni bir nechta DClarda saqlash n va m ni tanlashga qo'shimcha cheklovlar qo'yadi: agar 1 DC o'chirilgan bo'lsa, ma'lumotlar hali ham o'qish uchun mavjud bo'lishi kerak. Masalan, 3 ta doimiy tokda ma'lumotlarni saqlashda quyidagi shart bajarilishi kerak: m >= n/2, aks holda 1 DC o'chirilganda ma'lumotlar o'qish uchun mavjud bo'lmagan holat bo'lishi mumkin.

3. LRC - Mahalliy qayta qurish kodlari

Reed-Solomon kodlari yordamida ma'lumotlarni qayta tiklash uchun siz n ixtiyoriy ma'lumotlar blokidan foydalanishingiz kerak. Bu tarqatilgan ma'lumotlarni saqlash tizimlari uchun juda muhim kamchilikdir, chunki bitta buzilgan diskdagi ma'lumotlarni qayta tiklash uchun siz boshqalardan ma'lumotlarni o'qishingiz kerak bo'ladi, bu esa disklar va tarmoqqa katta qo'shimcha yuk hosil qiladi.

Eng ko'p uchraydigan xatolar - bitta diskning ishlamay qolishi yoki haddan tashqari yuklanishi tufayli bitta ma'lumotlar blokiga kirish imkoni yo'qligi. Ushbu (eng keng tarqalgan) holatda ma'lumotlarni qayta tiklash uchun ortiqcha yukni qandaydir tarzda kamaytirish mumkinmi? Ma'lum bo'lishicha, siz qila olasiz: bu maqsad uchun maxsus LRC ortiqcha kodlari mavjud.

LRC (Mahalliy qayta qurish kodlari) - Windows Azure Storage-da foydalanish uchun Microsoft tomonidan ixtiro qilingan ortiqcha kodlar. LRC g'oyasi iloji boricha sodda: barcha ma'lumotlar bloklarini ikkita (yoki undan ko'p) guruhga bo'ling va har bir guruh uchun ortiqcha kod bloklarining bir qismini alohida o'qing. Keyin ba'zi ortiqcha kod bloklari barcha ma'lumotlar bloklari (LRCda ular global ortiqcha kodlar deb ataladi) va ba'zilari - ma'lumotlar bloklarining ikkita guruhidan biri (ular mahalliy ortiqcha kodlar deb ataladi) yordamida hisobga olinadi.

LRC uchta raqam bilan belgilanadi: nrl, bu erda n - ma'lumotlar bloklari soni, r - global ortiqcha kod bloklari soni, l - mahalliy ortiqcha kod bloklari soni. Bitta ma'lumot bloki mavjud bo'lmaganda ma'lumotlarni o'qish uchun siz faqat n/l bloklarini o'qishingiz kerak - bu Reed-Solomon kodlariga qaraganda l marta kamroq.

Misol uchun, LRC 6-2-2 sxemasini ko'rib chiqing. X1–X6 — 6 ta maʼlumotlar bloklari, P1, P2 — 2 ta global ortiqcha bloklar, P3, P4 — 2 ta mahalliy ortiqcha bloklar.

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

P1, P2 ortiqcha kod bloklari barcha ma'lumotlar bloklari yordamida hisoblanadi. Qo'shimcha kod bloki P3 - ma'lumotlar bloklari X1-X3, ortiqcha kod bloki P4 - X4-X6 ma'lumotlar bloklari yordamida.

Qolganlari LRCda Reed-Solomon kodlariga o'xshash tarzda amalga oshiriladi. Ortiqcha kod bloklari so'zlarini hisoblash uchun tenglamalar quyidagicha bo'ladi:

Ortiqcha kodlar: oddiy so'zlar bilan ma'lumotlarni ishonchli va arzon saqlash haqida

Alfa, beta, gamma, delta raqamlarini tanlash uchun ma'lumotlarni qayta tiklash imkoniyatini kafolatlash uchun bir qator shartlar bajarilishi kerak (ya'ni tenglama tizimini echish). Siz ular haqida ko'proq ma'lumotni o'qishingiz mumkin maqola.
Amalda, shuningdek, XOR operatsiyasi mahalliy ortiqcha kodlarni P3, P4 hisoblash uchun ishlatiladi.

LRC uchun tenglamalar tizimidan bir qator xulosalar kelib chiqadi:

  • Har qanday 1 ta ma'lumot blokini tiklash uchun n / l bloklarini o'qish kifoya (bizning misolimizda n / 2).
  • Agar r + l bloklari mavjud bo'lmasa va barcha bloklar bitta guruhga kiritilgan bo'lsa, u holda ma'lumotlarni qayta tiklab bo'lmaydi. Buni misol bilan tushuntirish oson. X1–X3 va P3 bloklari mavjud bo'lmasin: bular bir guruhdagi r + l bloklari, bizning holatlarimizda 4 ta. U holda bizda yechilmaydigan 3 ta noma’lumli 4 ta tenglamalar tizimi mavjud.
  • R + l bloklari mavjud bo'lmagan boshqa barcha holatlarda (har bir guruhdan kamida bitta blok mavjud bo'lganda), LRCdagi ma'lumotlar tiklanishi mumkin.

Shunday qilib, LRC bitta xatolardan keyin ma'lumotlarni qayta tiklashda Reed-Solomon kodlaridan ustundir. Reed-Solomon kodlarida ma'lumotlarning bitta blokini tiklash uchun n blokdan foydalanish kerak, LRCda esa bitta blokni tiklash uchun n/l bloklardan foydalanish kifoya (bizning misolimizda n/2). Boshqa tomondan, LRC ruxsat etilgan xatolarning maksimal soni bo'yicha Reed-Solomon kodlaridan pastroq. Yuqoridagi misollarda Reed-Solomon kodlari har qanday 4 xatolik uchun ma'lumotlarni qayta tiklashi mumkin va LRC uchun ma'lumotlarni qayta tiklash mumkin bo'lmaganda 2 ta xatoning 4 ta kombinatsiyasi mavjud.

Eng muhimi, muayyan vaziyatga bog'liq, lekin ko'pincha LRC tomonidan taqdim etilgan ortiqcha yukni tejash biroz kamroq ishonchli saqlashdan ustun turadi.

4. Boshqa ortiqcha kodlar

Reed-Solomon va LRC kodlaridan tashqari, boshqa ko'plab ortiqcha kodlar mavjud. Turli ortiqcha kodlar turli matematikadan foydalanadi. Mana yana bir nechta ortiqcha kodlar:

  • XOR operatoridan foydalangan holda ortiqcha kod. XOR operatsiyasi n ta ma’lumotlar blokida bajariladi va 1 ta ortiqcha kod bloki, ya’ni n+1 sxemasi (n ta ma’lumotlar bloki, 1 ta ortiqcha kod) olinadi. ichida ishlatilgan RAID 5, bu erda ma'lumotlar bloklari va ortiqcha kodlar massivning barcha disklariga tsiklik ravishda yoziladi.
  • XOR operatsiyasiga asoslangan juft-toq algoritm. 2 blokli ortiqcha kodlarni, ya'ni n+2 sxemasini qurish imkonini beradi.
  • XOR operatsiyasiga asoslangan STAR algoritmi. 3 ta ortiqcha kod bloklarini, ya'ni n+3 sxemasini qurish imkonini beradi.
  • Piramida kodlari - bu Microsoft-ning yana bir ortiqcha kodlari.

5. Yandex-da foydalaning

Bir qator Yandex infratuzilma loyihalari ishonchli ma'lumotlarni saqlash uchun ortiqcha kodlardan foydalanadi. Mana bir nechta misollar:

  • Men maqolaning boshida yozgan MDS ichki ob'ektini saqlash.
  • YT — Yandex-ning MapReduce tizimi.
  • YDB (Yandex DataBase) - newSQL taqsimlangan ma'lumotlar bazasi.

MDS LRC ortiqcha kodlaridan, 8-2-2 sxemasidan foydalanadi. Ortiqcha kodli ma'lumotlar 12 xil DCdagi turli serverlardagi 3 xil disklarga yoziladi: har bir DCda 4 ta server. Bu haqda ko'proq ma'lumotni o'qing maqola.

YT birinchi bo'lib qo'llanilgan Reed-Solomon kodlaridan (6-3-sxema) va LRC ortiqcha kodlaridan (sxema 12-2-2) foydalanadi, LRC esa afzal saqlash usuli hisoblanadi.

YDB juft-toq asosli ortiqcha kodlardan foydalanadi (4-2-rasm). YDBda ortiqcha kodlar haqida allaqachon Highload-da aytdi.

Turli ortiqcha kod sxemalarini qo'llash tizimlar uchun turli talablar bilan bog'liq. Masalan, MDSda LRC yordamida saqlangan ma'lumotlar bir vaqtning o'zida 3 ta DC ga joylashtiriladi. Har qanday DC dan 1 tasi ishlamay qolsa, ma'lumotlar o'qish uchun mavjud bo'lib qolishi biz uchun muhim, shuning uchun bloklar DC lar bo'ylab taqsimlanishi kerak, shunda biron bir DC mavjud bo'lmasa, kirish mumkin bo'lmagan bloklar soni ruxsat etilganidan ko'p bo'lmasligi kerak. 8-2-2 sxemasida siz har bir shaharda 4 ta blokni joylashtirishingiz mumkin, keyin har qanday DC o'chirilganda, 4 blok mavjud bo'lmaydi va ma'lumotlarni o'qish mumkin. Biz uni 3 ta DC ga joylashtirishda qanday sxemani tanlasak ham, har qanday holatda (r + l) / n >= 0,5 bo'lishi kerak, ya'ni saqlash zaxirasi kamida 50% bo'ladi.

YTda vaziyat boshqacha: har bir YT klasteri butunlay 1 DCda joylashgan (turli shaharlarda turli klasterlar), shuning uchun bunday cheklov yo'q. 12-2-2 sxemasi 33% ortiqchalikni ta'minlaydi, ya'ni ma'lumotlarni saqlash arzonroq va u MDS sxemasi kabi bir vaqtning o'zida 4 tagacha diskdagi uzilishlarga bardosh bera oladi.

Ma'lumotlarni saqlash va qayta ishlash tizimlarida ortiqcha kodlardan foydalanishning yana ko'plab xususiyatlari mavjud: ma'lumotlarni qayta tiklash nuanslari, tiklashning so'rovlarni bajarish vaqtiga ta'siri, ma'lumotlarni yozib olish xususiyatlari va boshqalar. Men bu va boshqa xususiyatlar haqida alohida gapirmoqchiman. Agar mavzu qiziqarli bo'lsa, amaliyotda ortiqcha kodlardan foydalanish.

6. Havolalar

  1. Reed-Solomon kodlari va Galois maydonlari haqida bir qator maqolalar: https://habr.com/ru/company/yadro/blog/336286/
    https://habr.com/ru/company/yadro/blog/341506/
    Ular matematikaga tushunarli tilda chuqurroq nazar tashlaydilar.
  2. Microsoft-dan LRC haqidagi maqola: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/LRC12-cheng20webpage.pdf
    2-bo'lim nazariyani qisqacha tushuntiradi va keyin amalda LRC bilan tajribalarni muhokama qiladi.
  3. Juft-toq sxema: https://people.eecs.berkeley.edu/~kubitron/courses/cs262a-F12/handouts/papers/p245-blaum.pdf
  4. STAR sxemasi: https://www.usenix.org/legacy/event/fast05/tech/full_papers/huang/huang.pdf
  5. Piramida kodlari: https://www.microsoft.com/en-us/research/publication/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems/
  6. MDSdagi ortiqcha kodlar: https://habr.com/ru/company/yandex/blog/311806
  7. YTda ortiqcha kodlar: https://habr.com/ru/company/yandex/blog/311104/
  8. YDBdagi ortiqcha kodlar: https://www.youtube.com/watch?v=dCpfGJ35kK8

Manba: www.habr.com

a Izoh qo'shish