ProHoster > Blogs > AdministrÄcija > AtlaiÅ”anas kodi: vienkÄrÅ”iem vÄrdiem sakot, kÄ droÅ”i un lÄti uzglabÄt datus
AtlaiÅ”anas kodi: vienkÄrÅ”iem vÄrdiem sakot, kÄ droÅ”i un lÄti uzglabÄt datus
Å Ädi izskatÄs atlaiÅ”ana
AtlaiÅ”anas kodi* tiek plaÅ”i izmantoti datorsistÄmÄs, lai palielinÄtu datu uzglabÄÅ”anas uzticamÄ«bu. Yandex tie tiek izmantoti daudzos projektos. PiemÄram, izmantojot dublÄÅ”anas kodus, nevis replikÄciju mÅ«su iekÅ”ÄjÄ objektu krÄtuvÄ, tiek ietaupÄ«ti miljoni, nezaudÄjot uzticamÄ«bu. Bet, neskatoties uz to plaÅ”o izmantoÅ”anu, skaidri apraksti par to, kÄ darbojas atlaiÅ”anas kodi, ir ļoti reti. Tie, kas vÄlas saprast, saskaras ar aptuveni sekojoÅ”o (no Wikipedia):
Mani sauc Vadims, Yandex es izstrÄdÄju iekÅ”Äjo objektu krÄtuves MDS. Å ajÄ rakstÄ vienkÄrÅ”os vÄrdos aprakstÄ«Å”u atlaiÅ”anas kodu (Reed-Solomon un LRC kodu) teorÄtiskos pamatus. Es jums pastÄstÄ«Å”u, kÄ tas darbojas, bez sarežģītas matemÄtikas un retiem terminiem. BeigÄs es sniegÅ”u piemÄrus par atlaiÅ”anas kodu izmantoÅ”anu Yandex.
VairÄkas matemÄtiskas detaļas es sÄ«kÄk neapskatÄ«Å”u, bet sniegÅ”u saites tiem, kas vÄlas ienirt dziļÄk. AtzÄ«mÄÅ”u arÄ« to, ka dažas matemÄtiskÄs definÄ«cijas var nebÅ«t stingras, jo raksts nav paredzÄts matemÄtiÄ·iem, bet gan inženieriem, kuri vÄlas izprast jautÄjuma bÅ«tÄ«bu.
* Angļu valodas literatÅ«rÄ redundances kodus bieži sauc par dzÄÅ”anas kodiem.
1. AtlaiŔanas kodu būtība
Visu atlaiÅ”anas kodu bÅ«tÄ«ba ir ÄrkÄrtÄ«gi vienkÄrÅ”a: saglabÄjiet (vai pÄrsÅ«tiet) datus tÄ, lai tie netiktu zaudÄti kļūdu gadÄ«jumÄ (diska kļūmes, datu pÄrsÅ«tÄ«Å”anas kļūdas utt.).
LielÄkajÄ daļÄ* redundances kodu dati tiek sadalÄ«ti n datu blokos, kuriem tiek saskaitÄ«ti m atlaiÅ”anas kodu bloki, kÄ rezultÄtÄ kopÄ tiek iegÅ«ti n + m bloki. Redundances kodi ir izveidoti tÄ, lai n datu blokus varÄtu atgÅ«t, izmantojot tikai daļu no n + m blokiem. TÄlÄk mÄs apsvÄrsim tikai bloku dublÄÅ”anas kodus, tas ir, tos, kuros dati ir sadalÄ«ti blokos.
Lai atgÅ«tu visus n datu blokus, jums ir jÄbÅ«t vismaz n blokiem no n + m, jo āājÅ«s nevarat iegÅ«t n blokus, ja ir tikai n-1 bloks (Å”ajÄ gadÄ«jumÄ jums vajadzÄtu izÅemt 1 bloku no plÄna gaiss"). Vai ar n nejauÅ”iem n + m blokiem pietiek, lai atgÅ«tu visus datus? Tas ir atkarÄ«gs no atlaiÅ”anas kodu veida, piemÄram, RÄ«da-Solamona kodi ļauj atgÅ«t visus datus, izmantojot patvaļīgus n blokus, bet LRC redundances kodi ne vienmÄr.
Datu glabÄÅ”ana
Datu uzglabÄÅ”anas sistÄmÄs, kÄ likums, katrs datu bloks un dublÄÅ”anas koda bloks tiek ierakstÄ«ts atseviÅ”Ä·Ä diskÄ. PÄc tam, ja patvaļīgs disks neizdodas, sÄkotnÄjos datus joprojÄm var atjaunot un nolasÄ«t. Datus var atgÅ«t pat tad, ja vienlaikus neizdodas vairÄki diski.
Datu pÄrsÅ«tÄ«Å”ana
Redundances kodus var izmantot, lai droÅ”i pÄrsÅ«tÄ«tu datus neuzticamÄ tÄ«klÄ. PÄrsÅ«tÄ«tie dati tiek sadalÄ«ti blokos, un tiem tiek aprÄÄ·inÄti atlaiÅ”anas kodi. TÄ«klÄ tiek pÄrsÅ«tÄ«ti gan datu bloki, gan dublÄÅ”anas kodu bloki. Ja kļūdas rodas patvaļīgos blokos (lÄ«dz noteiktam bloku skaitam), datus joprojÄm var pÄrsÅ«tÄ«t tÄ«klÄ bez kļūdÄm. PiemÄram, RÄ«da-ZÄlamana kodus izmanto, lai pÄrraidÄ«tu datus pa optiskÄm sakaru lÄ«nijÄm un satelÄ«tu sakaros.
* Ir arÄ« tÄdi atlaiÅ”anas kodi, kuros dati nav sadalÄ«ti blokos, piemÄram, Haminga kodi un CRC kodi, kurus plaÅ”i izmanto datu pÄrraidei Ethernet tÄ«klos. Tie ir kodi kļūdu laboÅ”anai, tie ir paredzÄti kļūdu noteikÅ”anai, nevis to laboÅ”anai (Haminga kods pieļauj arÄ« daļÄju kļūdu laboÅ”anu).
2. RÄ«da-ZÄlamana kodi
Reed-Solomon kodi ir viens no visplaÅ”Äk izmantotajiem atlaiÅ”anas kodiem, kas tika izgudrots tÄlajÄ 1960. gados un pirmo reizi plaÅ”i izmantoti 1980. gados kompaktdisku masveida ražoÅ”anÄ.
Ir divi galvenie jautÄjumi, lai izprastu RÄ«da-ZÄlamana kodus: 1) kÄ izveidot atlaiÅ”anas kodu blokus; 2) kÄ atgÅ«t datus, izmantojot dublÄÅ”anas kodu blokus. MeklÄsim atbildes uz tiem.
VienkÄrŔības labad mÄs turpmÄk pieÅemsim, ka n = 6 un m = 4. Citas shÄmas tiek aplÅ«kotas pÄc analoÄ£ijas.
KÄ izveidot dublÄÅ”anas kodu blokus
Katrs atlaiÅ”anas kodu bloks tiek skaitÄ«ts neatkarÄ«gi no pÄrÄjiem. Katra bloka skaitÄ«Å”anai tiek izmantoti visi n datu bloki. ZemÄk redzamajÄ diagrammÄ X1-X6 ir datu bloki, P1-P4 ir redundances koda bloki.
Visiem datu blokiem jÄbÅ«t vienÄda izmÄra, un lÄ«dzinÄÅ”anai var izmantot nulles bitus. IegÅ«tie redundances koda bloki bÅ«s tÄda paÅ”a izmÄra kÄ datu bloki. Visi datu bloki ir sadalÄ«ti vÄrdos (piemÄram, 16 biti). PieÅemsim, ka mÄs sadalÄm datu blokus k vÄrdos. Tad arÄ« visi atlaiÅ”anas kodu bloki tiks sadalÄ«ti k vÄrdos.
Lai saskaitÄ«tu katra liekuma bloka i-to vÄrdu, tiks izmantoti visu datu bloku i-tie vÄrdi. Tos aprÄÄ·ina pÄc Å”Ädas formulas:
Å eit vÄrtÄ«bas x ir datu bloku vÄrdi, p ir atlaiÅ”anas kodu bloku vÄrdi, visi alfa, beta, gamma un delta ir Ä«paÅ”i atlasÄ«ti skaitļi, kas ir vienÄdi visiem i. Uzreiz jÄsaka, ka visas Ŕīs vÄrtÄ«bas nav parastie skaitļi, bet gan Galois lauka elementi; darbÄ«bas +, -, *, / nav mums visiem pazÄ«stamas darbÄ«bas, bet gan Ä«paÅ”as darbÄ«bas, kas ieviestas ar Galois elementiem. lauks.
KÄpÄc ir vajadzÄ«gi Galois lauki?
Å Ä·iet, ka viss ir vienkÄrÅ”i: mÄs sadalÄm datus blokos, blokus vÄrdos, izmantojot datu bloku vÄrdus, mÄs saskaitÄm atlaiÅ”anas kodu bloku vÄrdus - mÄs iegÅ«stam dublÄÅ”anas kodu blokus. KopumÄ tas darbojas Å”Ädi, bet velns slÄpjas detaļÄs:
KÄ minÄts iepriekÅ”, vÄrda lielums ir fiksÄts, mÅ«su piemÄrÄ 16 biti. IepriekÅ” minÄtÄs formulas RÄ«da-ZÄlamana kodiem ir tÄdas, ka, izmantojot parastus veselus skaitļus, p aprÄÄ·ina rezultÄts var nebÅ«t attÄlojams, izmantojot derÄ«ga lieluma vÄrdu.
Atkopjot datus, iepriekÅ” minÄtÄs formulas tiks uzskatÄ«tas par vienÄdojumu sistÄmu, kas jÄatrisina, lai datus atgÅ«tu. RisinÄjuma procesÄ var bÅ«t nepiecieÅ”ams dalÄ«t veselus skaitļus savÄ starpÄ, kÄ rezultÄtÄ tiek iegÅ«ts reÄls skaitlis, ko nevar precÄ«zi attÄlot datora atmiÅÄ.
Å Ä«s problÄmas neļauj izmantot veselus skaitļus RÄ«da-ZÄlamana kodiem. ProblÄmas risinÄjums ir oriÄ£inÄls, to var raksturot Å”Ädi: izdomÄsim Ä«paÅ”us skaitļus, kurus var attÄlot, izmantojot vajadzÄ«gÄ garuma vÄrdus (piemÄram, 16 biti), un visu darbÄ«bu veikÅ”anas rezultÄtu, uz kuriem (papildinÄjums , atÅemÅ”ana, reizinÄÅ”ana, dalÄ«Å”ana) tiks parÄdÄ«ti arÄ« datora atmiÅÄ, izmantojot vajadzÄ«gÄ garuma vÄrdus.
Å Ädus āÄ«paÅ”usā skaitļus matemÄtika ir pÄtÄ«jusi jau ilgu laiku, tos sauc par laukiem. Lauks ir elementu kopa ar tiem definÄtÄm saskaitÄ«Å”anas, atÅemÅ”anas, reizinÄÅ”anas un dalÄ«Å”anas operÄcijÄm.
Galois* lauki ir lauki, kuriem ir unikÄls katras darbÄ«bas rezultÄts (+, -, *, /) jebkuriem diviem lauka elementiem. Galois laukus var konstruÄt skaitļiem, kas ir pakÄpju 2: 2, 4, 8, 16 utt. (faktiski jebkura pirmskaitļa p pakÄpes, bet praksÄ mÅ«s interesÄ tikai 2 pakÄpes). PiemÄram, 16 bitu vÄrdiem Å”is ir lauks, kurÄ ir 65 536 elementi, no kuriem katram pÄrim var atrast jebkuras darbÄ«bas rezultÄtu (+, -, *, /). IepriekÅ” minÄto vienÄdojumu vÄrtÄ«bas x, p, alfa, beta, gamma, delta tiks uzskatÄ«tas par Galois lauka elementiem aprÄÄ·inos.
TÄdÄjÄdi mums ir vienÄdojumu sistÄma, ar kuru mÄs varam konstruÄt atlaiÅ”anas kodu blokus, uzrakstot atbilstoÅ”u datorprogrammu. Izmantojot to paÅ”u vienÄdojumu sistÄmu, varat veikt datu atkopÅ”anu.
* Å Ä« nav stingra definÄ«cija, bet drÄ«zÄk apraksts.
KÄ atgÅ«t datus
RestaurÄcija ir nepiecieÅ”ama, ja trÅ«kst dažu n + m bloku. Tie var bÅ«t gan datu bloki, gan atlaiÅ”anas kodu bloki. Datu bloku un/vai atlaiÅ”anas koda bloku neesamÄ«ba nozÄ«mÄs, ka iepriekÅ” minÄtajos vienÄdojumos atbilstoÅ”ie x un/vai p mainÄ«gie nav zinÄmi.
RÄ«da-ZÄlamana kodu vienÄdojumus var aplÅ«kot kÄ vienÄdojumu sistÄmu, kurÄ visas alfa, beta, gamma, delta vÄrtÄ«bas ir konstantes, visi x un p, kas atbilst pieejamajiem blokiem, ir zinÄmi mainÄ«gie, bet atlikuÅ”ie x un p nav zinÄmi.
PiemÄram, lai datu bloki 1, 2, 3 un redundances koda bloks 2 nebÅ«tu pieejami, tad i-ajai vÄrdu grupai bÅ«s Å”Äda vienÄdojumu sistÄma (nezinÄmie ir atzÄ«mÄti ar sarkanu):
Mums ir 4 vienÄdojumu sistÄma ar 4 nezinÄmajiem, kas nozÄ«mÄ, ka mÄs varam to atrisinÄt un atjaunot datus!
No Ŕīs vienÄdojumu sistÄmas izriet vairÄki secinÄjumi par datu atkopÅ”anu RÄ«da-ZÄlamana kodiem (n datu bloki, m redundances kodu bloki):
Datus var atgÅ«t, ja tiek zaudÄti m bloki vai mazÄk. Ja tiek zaudÄti m+1 vai vairÄk bloki, datus nevar atjaunot: nav iespÄjams atrisinÄt m vienÄdojumu sistÄmu ar m + 1 nezinÄmajiem.
Lai atgÅ«tu kaut vienu datu bloku, jums ir jÄizmanto jebkurÅ” n no atlikuÅ”ajiem blokiem, un jÅ«s varat izmantot jebkuru no atlaiÅ”anas kodiem.
Kas vÄl jums jÄzina
IepriekÅ” minÄtajÄ aprakstÄ es izvairos no vairÄkiem svarÄ«giem jautÄjumiem, kuru izskatÄ«Å”anai ir nepiecieÅ”ams dziļÄks ienirt matemÄtikÄ. Jo Ä«paÅ”i es neko nesaku par sekojoÅ”o:
RÄ«da-ZÄlamana kodu vienÄdojumu sistÄmai ir jÄbÅ«t (unikÄlam) risinÄjumam jebkurai nezinÄmo kombinÄcijai (ne vairÄk kÄ m nezinÄmo). Pamatojoties uz Å”o prasÄ«bu, tiek atlasÄ«tas alfa, beta, gamma un delta vÄrtÄ«bas.
VienÄdojumu sistÄmu jÄspÄj automÄtiski izveidot (atkarÄ«bÄ no tÄ, kuri bloki nav pieejami) un atrisinÄt.
Mums ir jÄizveido Galois lauks: konkrÄtam vÄrda izmÄram jÄspÄj atrast jebkuras darbÄ«bas rezultÄtu (+, -, *, /) jebkuriem diviem elementiem.
Raksta beigÄs ir atsauces uz literatÅ«ru par Å”iem svarÄ«gajiem jautÄjumiem.
n un m izvÄle
KÄ praksÄ izvÄlÄties n un m? PraksÄ datu uzglabÄÅ”anas sistÄmÄs, lai ietaupÄ«tu vietu, tiek izmantoti atlaiÅ”anas kodi, tÄpÄc m vienmÄr izvÄlas mazÄku par n. To Ä«paÅ”Äs vÄrtÄ«bas ir atkarÄ«gas no vairÄkiem faktoriem, tostarp:
Datu uzglabÄÅ”anas uzticamÄ«ba. Jo lielÄks m, jo āālielÄks ir diska bojÄjumu skaits, ko var pÄrdzÄ«vot, tas ir, jo lielÄka ir uzticamÄ«ba.
Lieka krÄtuve. Jo augstÄka ir m/n attiecÄ«ba, jo lielÄka bÅ«s krÄtuves dublÄÅ”ana, un sistÄma bÅ«s dÄrgÄka.
PieprasÄ«t apstrÄdes laiku. Jo lielÄka summa n + m, jo āāilgÄks bÅ«s atbildes laiks uz pieprasÄ«jumiem. TÄ kÄ datu lasÄ«Å”anai (atkopÅ”anas laikÄ) ir jÄnolasa n bloki, kas saglabÄti n dažÄdos diskos, lasÄ«Å”anas laiku noteiks lÄnÄkais disks.
TurklÄt datu glabÄÅ”ana vairÄkos DC uzliek papildu ierobežojumus n un m izvÄlei: ja ir izslÄgts 1 DC, datiem joprojÄm jÄbÅ«t pieejamiem nolasÄ«Å”anai. PiemÄram, saglabÄjot datus 3 DC, ir jÄievÄro Å”Äds nosacÄ«jums: m >= n/2, pretÄjÄ gadÄ«jumÄ var rasties situÄcija, ka dati nav pieejami nolasÄ«Å”anai, kad ir izslÄgts 1 DC.
3. LRC - VietÄjie rekonstrukcijas kodeksi
Lai atgÅ«tu datus, izmantojot Reed-Solomon kodus, jums ir jÄizmanto n patvaļīgi datu bloki. Tas ir ļoti bÅ«tisks trÅ«kums sadalÄ«tajÄm datu glabÄÅ”anas sistÄmÄm, jo, lai atjaunotu datus vienÄ bojÄtÄ diskÄ, jums bÅ«s jÄlasa dati no lielÄkÄs daļas pÄrÄjo, radot lielu papildu slodzi diskiem un tÄ«klam.
VisbiežÄk sastopamÄs kļūdas ir viena datu bloka nepieejamÄ«ba viena diska kļūmes vai pÄrslodzes dÄļ. Vai Å”ajÄ (visbiežÄk) gadÄ«jumÄ ir iespÄjams kaut kÄ samazinÄt lieko slodzi datu atkopÅ”anai? IzrÄdÄs, ka var: ir speciÄli Å”im nolÅ«kam paredzÄti LRC atlaiÅ”anas kodi.
LRC (vietÄjie rekonstrukcijas kodi) ir atlaiÅ”anas kodi, ko Microsoft izgudroja izmantoÅ”anai Windows Azure krÄtuvÄ. LRC ideja ir pÄc iespÄjas vienkÄrÅ”Äka: sadaliet visus datu blokus divÄs (vai vairÄkÄs) grupÄs un nolasiet daļu no atlaiÅ”anas koda blokiem katrai grupai atseviŔķi. PÄc tam daži atlaiÅ”anas koda bloki tiks skaitÄ«ti, izmantojot visus datu blokus (LRC tos sauc par globÄlajiem redundances kodiem), bet daži - izmantojot vienu no divÄm datu bloku grupÄm (tos sauc par vietÄjiem atlaiÅ”anas kodiem).
LRC apzÄ«mÄ ar trim cipariem: nrl, kur n ir datu bloku skaits, r ir globÄlÄs atlaiÅ”anas koda bloku skaits, l ir lokÄlo redundances kodu bloku skaits. Lai nolasÄ«tu datus, kad viens datu bloks nav pieejams, jÄlasa tikai n/l bloki ā tas ir l reizes mazÄk nekÄ RÄ«da-ZÄlamana kodos.
Redundances koda bloki P1, P2 tiek skaitīti, izmantojot visus datu blokus. Redundances koda bloks P3 - izmantojot datu blokus X1-X3, atlaiŔanas koda bloks P4 - izmantojot datu blokus X4-X6.
PÄrÄjais tiek darÄ«ts LRC pÄc analoÄ£ijas ar Reed-Solomon kodiem. AtlaiÅ”anas kodu bloku vÄrdu skaitÄ«Å”anas vienÄdojumi bÅ«s Å”Ädi:
Lai atlasÄ«tu skaitļus alfa, beta, gamma, delta, ir jÄizpilda vairÄki nosacÄ«jumi, kas garantÄ datu atkopÅ”anas iespÄju (tas ir, vienÄdojumu sistÄmas atrisinÄÅ”anu). VairÄk par tiem varat lasÄ«t sadaÄ¼Ä raksts.
ArÄ« praksÄ XOR operÄcija tiek izmantota, lai aprÄÄ·inÄtu lokÄlos atlaiÅ”anas kodus P3, P4.
No LRC vienÄdojumu sistÄmas izriet vairÄki secinÄjumi:
Lai atgÅ«tu jebkuru 1 datu bloku, pietiek nolasÄ«t n/l blokus (mÅ«su piemÄrÄ n/2).
Ja r + l bloki nav pieejami un visi bloki ir iekļauti vienÄ grupÄ, datus nevar atjaunot. To ir viegli izskaidrot ar piemÄru. Ä»aujiet, lai bloki X1āX3 un P3 nebÅ«tu pieejami: tie ir r + l bloki no vienas grupas, mÅ«su gadÄ«jumÄ ā 4. Tad mums ir 3 vienÄdojumu sistÄma ar 4 nezinÄmajiem, kurus nevar atrisinÄt.
Visos citos r + l bloku nepieejamības gadījumos (kad ir pieejams vismaz viens bloks no katras grupas), datus LRC var atjaunot.
TÄdÄjÄdi LRC pÄrspÄj Reed-Solomon kodus datu atgÅ«Å”anÄ pÄc atseviŔķÄm kļūdÄm. Reed-Solomon kodos, lai atgÅ«tu kaut vienu datu bloku, ir jÄizmanto n bloki, savukÄrt LRC, lai atgÅ«tu vienu datu bloku, pietiek ar n/l blokiem (mÅ«su piemÄrÄ n/2). No otras puses, LRC ir zemÄks par Reed-Solomon kodiem maksimÄlÄ pieļaujamo kļūdu skaita ziÅÄ. IepriekÅ” minÄtajos piemÄros RÄ«da-Solamona kodi var atgÅ«t datus par jebkurÄm 4 kļūdÄm, savukÄrt LRC gadÄ«jumÄ ir 2 4 kļūdu kombinÄcijas, kad datus nevar atgÅ«t.
SvarÄ«gÄkais ir atkarÄ«gs no konkrÄtÄs situÄcijas, taÄu nereti ietaupÄ«jumi pÄrslodzÄ, ko nodroÅ”ina LRC, atsver nedaudz mazÄk uzticamu uzglabÄÅ”anu.
4. Citi atlaiŔanas kodi
Bez Reed-Solomon un LRC kodiem ir arÄ« daudzi citi atlaiÅ”anas kodi. DažÄdi atlaiÅ”anas kodi izmanto dažÄdu matemÄtiku. Å eit ir daži citi atlaiÅ”anas kodi:
Redundances kods, izmantojot operatoru XOR. XOR operÄcija tiek veikta uz n datu blokiem, un tiek iegÅ«ts 1 dublÄÅ”anas kodu bloks, tas ir, n+1 shÄma (n datu bloki, 1 redundances kods). Lietots in RAID 5, kur datu bloki un dublÄÅ”anas kodi tiek cikliski ierakstÄ«ti visos masÄ«va diskos.
PÄra nepÄra algoritms, kas balstÄ«ts uz XOR darbÄ«bu. Ä»auj izveidot 2 atlaiÅ”anas kodu blokus, tas ir, n+2 shÄmu.
STAR algoritms, kas balstÄ«ts uz XOR darbÄ«bu. Ä»auj izveidot 3 atlaiÅ”anas kodu blokus, tas ir, n+3 shÄmu.
PiramÄ«du kodi ir vÄl viens Microsoft atlaiÅ”anas kods.
5. Izmantojiet Yandex
VairÄki Yandex infrastruktÅ«ras projekti izmanto atlaiÅ”anas kodus uzticamai datu glabÄÅ”anai. Å eit ir daži piemÄri:
MDS iekÅ”ÄjÄ objektu krÄtuve, par kuru rakstÄ«ju raksta sÄkumÄ.
YDB (Yandex DataBase) - newSQL izplatÄ«ta datu bÄze.
MDS izmanto LRC atlaiÅ”anas kodus, 8-2-2 shÄmu. Dati ar dublÄÅ”anas kodiem tiek ierakstÄ«ti 12 dažÄdos diskos dažÄdos serveros 3 dažÄdos DC: 4 serveri katrÄ DC. VairÄk par to lasiet sadaÄ¼Ä raksts.
YT izmanto gan Reed-Solomon kodus (shÄma 6-3), kas tika ieviesti pirmie, un LRC atlaiÅ”anas kodus (shÄma 12-2-2), un LRC ir vÄlamÄ uzglabÄÅ”anas metode.
YDB izmanto pÄra un nepÄra atlaiÅ”anas kodus (4-2. attÄls). Par atlaiÅ”anas kodiem jau YDB stÄstÄ«ja Highload.
DažÄdu atlaiÅ”anas kodu shÄmu izmantoÅ”ana ir saistÄ«ta ar dažÄdÄm prasÄ«bÄm sistÄmÄm. PiemÄram, MDS dati, kas tiek glabÄti, izmantojot LRC, tiek ievietoti 3 lÄ«dzstrÄvas blokos vienlaikus. Mums ir svarÄ«gi, lai dati paliktu pieejami lasÄ«Å”anai, ja 1 no DC neizdodas, tÄpÄc bloki ir jÄsadala starp DC tÄ, lai gadÄ«jumÄ, ja kÄds lÄ«dzstrÄvas bloks nav pieejams, nepieejamo bloku skaits bÅ«tu ne vairÄk kÄ pieļaujams. ShÄmÄ 8-2-2 jÅ«s varat ievietot 4 blokus katrÄ DC, tad, kad jebkurÅ” DC ir izslÄgts, 4 bloki nebÅ«s pieejami, un datus varÄs nolasÄ«t. NeatkarÄ«gi no tÄ, kÄdu shÄmu mÄs izvÄlamies, ievietojot to 3 DC, jebkurÄ gadÄ«jumÄ jÄbÅ«t (r + l) / n >= 0,5, tas ir, krÄtuves dublÄÅ”ana bÅ«s vismaz 50%.
YT situÄcija ir atŔķirÄ«ga: katrs YT klasteris pilnÄ«bÄ atrodas 1 DC (dažÄdas kopas dažÄdos DC), tÄpÄc Å”Ädu ierobežojumu nav. ShÄma 12-2-2 nodroÅ”ina 33% dublÄÅ”anu, tas ir, datu glabÄÅ”ana ir lÄtÄka, un tÄ var arÄ« izturÄt lÄ«dz pat 4 vienlaicÄ«giem diska pÄrtraukumiem, tÄpat kÄ MDS shÄma.
AtlaiÅ”anas kodu izmantoÅ”anai datu uzglabÄÅ”anas un apstrÄdes sistÄmÄs ir daudz vairÄk iespÄju: datu atkopÅ”anas nianses, atkopÅ”anas ietekme uz vaicÄjuma izpildes laiku, datu ierakstÄ«Å”anas iespÄjas utt. Par Ŕīm un citÄm funkcijÄm es runÄÅ”u atseviŔķi. par atlaiÅ”anas kodu izmantoÅ”anu praksÄ, ja tÄma bÅ«s interesanta.