{"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\/hu\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye","title":{"rendered":"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/4d853e314dfea596b45a6aff00238bea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ez a redundancia<\/em><\/p>\n<p><\/p>\n<p>A redundancia k\u00f3dokat* sz\u00e9les k\u00f6rben alkalmazz\u00e1k a sz\u00e1m\u00edt\u00f3g\u00e9pes rendszerekben az adatok t\u00e1rol\u00e1s\u00e1nak megb\u00edzhat\u00f3s\u00e1g\u00e1nak n\u00f6vel\u00e9s\u00e9re. A Yandexn\u00e9l sz\u00e1mos projektben haszn\u00e1lj\u00e1k \u0151ket. P\u00e9ld\u00e1ul a redundancia k\u00f3dok alkalmaz\u00e1sa a replik\u00e1ci\u00f3 helyett a bels\u0151 objektum t\u00e1rol\u00f3nkban milli\u00f3kat takar\u00edt meg an\u00e9lk\u00fcl, hogy cs\u00f6kkenten\u00e9 a megb\u00edzhat\u00f3s\u00e1got. De a sz\u00e9lesk\u00f6r\u0171 elterjed\u00e9s ellen\u00e9re ritk\u00e1n tal\u00e1lhat\u00f3 \u00e9rthet\u0151 le\u00edr\u00e1s arr\u00f3l, hogyan m\u0171k\u00f6dnek a redundancia k\u00f3dok. Azok, akik szeretn\u00e9k meg\u00e9rteni, k\u00f6r\u00fclbel\u00fcl a k\u00f6vetkez\u0151vel tal\u00e1lkoznak (a <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\">Wikip\u00e9di\u00e1n<\/a><\/noindex>):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/c5e592acd8c1e113c099357d1ba48d5c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nevem Vadim, a Yandexn\u00e9l az MDS bels\u0151 objektum t\u00e1rol\u00f3 fejleszt\u00e9s\u00e9vel foglalkozom. Ebben a cikkben egyszer\u0171 szavakkal fogom le\u00edrni a redundancia k\u00f3dok (Reed-Solomon k\u00f3dok \u00e9s LRC) elm\u00e9leti alapjait. Elmondom, hogyan m\u0171k\u00f6dik ez, bonyolult matematika \u00e9s ritka kifejez\u00e9sek n\u00e9lk\u00fcl. A v\u00e9g\u00e9n p\u00e9ld\u00e1kat hozok a redundancia k\u00f3dok Yandexbeli haszn\u00e1lat\u00e1ra.<\/p>\n<p><\/p>\n<p>N\u00e9h\u00e1ny matematikai r\u00e9szletet nem fogok r\u00e9szletesen t\u00e1rgyalni, de linkeket fogok adni azok sz\u00e1m\u00e1ra, akik szeretn\u00e9nek m\u00e9lyebben elmer\u00fclni a t\u00e9m\u00e1ban. Megjegyzem tov\u00e1bb\u00e1, hogy egyes matematikai meghat\u00e1roz\u00e1sok nem lehetnek szigor\u00faak, mivel a cikk nem matematikusoknak k\u00e9sz\u00fclt, hanem m\u00e9rn\u00f6k\u00f6knek, akik szeretn\u00e9k meg\u00e9rteni a k\u00e9rd\u00e9s l\u00e9nyeg\u00e9t.<\/p>\n<p><\/p>\n<p>* Az angol nyelv\u0171 szakirodalomban a redundancia k\u00f3dokat gyakran erasure code-nak nevezik.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"1-sut-kodov-izbytochnosti\">1. A redundancia k\u00f3dok l\u00e9nyege<\/h1>\n<p><\/p>\n<p>A redundancia k\u00f3dok l\u00e9nyege rendk\u00edv\u00fcl egyszer\u0171: az adatok t\u00e1rol\u00e1sa (vagy tov\u00e1bb\u00edt\u00e1sa) \u00fagy, hogy azok ne vesszenek el hib\u00e1k (p\u00e9ld\u00e1ul lemezhib\u00e1k, adat\u00e1tviteli hib\u00e1k stb.) eset\u00e9n. <\/p>\n<p><\/p>\n<p>A legt\u00f6bb* redundancia k\u00f3dban az adatokat n blokkra osztj\u00e1k, \u00e9s m redundancia blokkot sz\u00e1m\u00edtanak hozz\u00e1juk, \u00edgy \u00f6sszesen n + m blokkb\u00f3l \u00e1ll. A redundancia k\u00f3dokat \u00fagy \u00e9p\u00edtik fel, hogy n adatblokk helyre\u00e1ll\u00edthat\u00f3 legyen csak n + m blokk egy r\u00e9sz\u00e9nek felhaszn\u00e1l\u00e1s\u00e1val. Ezut\u00e1n csak a blokk k\u00f3dokkal foglalkozunk, vagyis azokkal, amelyekben az adatokat blokkokra osztj\u00e1k.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/1273b4643f915dd615026ec38ca56473.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahhoz, hogy helyre\u00e1ll\u00edtsuk az \u00f6sszes n adatblokkot, minimum n az n + m blokkb\u00f3l sz\u00fcks\u00e9ges, mivel nem lehet n blokkot el\u0151\u00e1ll\u00edtani, ha csak n-1 blokkunk van (ebben az esetben 1 blokkot a \u201eleveg\u0151b\u0151l\u201d kellene szerezni). El\u00e9gs\u00e9gesek-e n tetsz\u0151leges blokk az n + m blokk k\u00f6z\u00fcl az \u00f6sszes adat helyre\u00e1ll\u00edt\u00e1s\u00e1hoz? Ez a redundancia k\u00f3djainak t\u00edpus\u00e1t\u00f3l f\u00fcgg, p\u00e9ld\u00e1ul a Reed-Solomon k\u00f3dok lehet\u0151v\u00e9 teszik, hogy tetsz\u0151leges n blokk seg\u00edts\u00e9g\u00e9vel helyre\u00e1ll\u00edtsuk az \u00f6sszes adatot, m\u00edg az LRC redundancia k\u00f3dok ezt nem mindig teszik lehet\u0151v\u00e9.<\/p>\n<p><\/p>\n<h3 id=\"hranenie-dannyh\">Adatt\u00e1rol\u00e1s<\/h3>\n<p><\/p>\n<p>Az adatt\u00e1rol\u00f3 rendszerekben \u00e1ltal\u00e1ban minden adatblokk \u00e9s redundancia k\u00f3d blokk k\u00fcl\u00f6n lemezen t\u00e1rol\u00f3dik. \u00cdgy, ha egy tetsz\u0151leges lemez meghib\u00e1sodik, az eredeti adatok m\u00e9g mindig helyre\u00e1ll\u00edthat\u00f3k \u00e9s olvashat\u00f3k. Az adatok ak\u00e1r t\u00f6bb lemez egyidej\u0171 meghib\u00e1sod\u00e1sa eset\u00e9n is helyre\u00e1ll\u00edthat\u00f3k.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh\">Adat\u00e1tvitel<\/h3>\n<p><\/p>\n<p>A redundancia k\u00f3dok megb\u00edzhat\u00f3 adat\u00e1tvitelre haszn\u00e1lhat\u00f3k megb\u00edzhatatlan h\u00e1l\u00f3zatokon. Az \u00e1tvitt adatokat blokkokra bontj\u00e1k, \u00e9s ehhez k\u00f3dokat sz\u00e1m\u00edtanak. Az adatblokkok mellett a redundancia k\u00f3d blokkjait is \u00e1tviszik a h\u00e1l\u00f3zaton. Ha hib\u00e1k l\u00e9pnek fel tetsz\u0151leges blokkokban (ak\u00e1r bizonyos sz\u00e1m\u00fa blokkig), az adatokat akkor is hibamentesen \u00e1t lehet vinni a h\u00e1l\u00f3zaton. A Reed-Solomon k\u00f3dokat p\u00e9ld\u00e1ul optikai kommunik\u00e1ci\u00f3s vonalakon \u00e9s m\u0171holdas kommunik\u00e1ci\u00f3ban haszn\u00e1lj\u00e1k az adatok \u00e1tvitel\u00e9re.<\/p>\n<p><\/p>\n<p>* Vannak olyan redundancia k\u00f3dok is, amelyek nem bontj\u00e1k blokkokra az adatokat, p\u00e9ld\u00e1ul a Hamming-k\u00f3dok \u00e9s a CRC k\u00f3dok, amelyeket sz\u00e9les k\u00f6rben haszn\u00e1lnak az Ethereum h\u00e1l\u00f3zatokban t\u00f6rt\u00e9n\u0151 adat\u00e1tvitelhez. Ezek a zajt\u0171r\u0151 k\u00f3dok hib\u00e1k \u00e9szlel\u00e9s\u00e9re szolg\u00e1lnak, nem azok jav\u00edt\u00e1s\u00e1ra (a Hamming-k\u00f3d r\u00e9szben hib\u00e1k jav\u00edt\u00e1s\u00e1ra is alkalmas).<\/p>\n<p><\/p>\n<h1 id=\"2-kody-rida--solomona\">2. Reed-Solomon k\u00f3dok<\/h1>\n<p><\/p>\n<p>A Reed-Solomon k\u00f3dok a legsz\u00e9lesebb k\u00f6rben elterjedt redundancia k\u00f3dok k\u00f6z\u00e9 tartoznak, amelyeket m\u00e9g az 1960-as \u00e9vekben tal\u00e1ltak ki, \u00e9s el\u0151sz\u00f6r az 1980-as \u00e9vekben alkalmaztak sz\u00e9les k\u00f6rben a CD-k sorozatgy\u00e1rt\u00e1s\u00e1ban.<\/p>\n<p><\/p>\n<p>A Reed-Solomon k\u00f3dok meg\u00e9rt\u00e9s\u00e9hez k\u00e9t kulcsk\u00e9rd\u00e9s tartozik: 1) hogyan \u00e1ll\u00edtsunk el\u0151 redundancia k\u00f3d blokkokat; 2) hogyan \u00e1ll\u00edtsuk helyre az adatokat redundancia k\u00f3d blokkok seg\u00edts\u00e9g\u00e9vel. Keress\u00fck meg a v\u00e1laszokat ezekre.<br \/>\nA tov\u00e1bbi egyszer\u0171s\u00edt\u00e9s \u00e9rdek\u00e9ben tegy\u00fck fel, hogy n=6 \u00e9s m=4. M\u00e1s s\u00e9m\u00e1k hasonl\u00f3an kezelhet\u0151k.<\/p>\n<p><\/p>\n<h3 id=\"kak-sozdavat-bloki-kodov-izbytochnosti\">Hogyan \u00e1ll\u00edtsunk el\u0151 redundancia k\u00f3d blokkokat<\/h3>\n<p><\/p>\n<p>Minden parit\u00e1sblokkot f\u00fcggetlen\u00fcl kell kezelni. Minden parit\u00e1sblokk kisz\u00e1m\u00edt\u00e1s\u00e1hoz az \u00f6sszes n adatblokkot haszn\u00e1ljuk. Az al\u00e1bbi \u00e1br\u00e1n az X1-X6 az adatblokkok, a P1\u2013P4 pedig a parit\u00e1sblokkok.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/b4841e48a5f2f059376bb458a26c6235.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Minden adatblokk azonos m\u00e9ret\u0171 kell legyen, a kiegyenl\u00edt\u00e9st z\u00e9r\u00f3 bitek haszn\u00e1lat\u00e1val lehet el\u00e9rni. A l\u00e9trej\u00f6v\u0151 parit\u00e1sblokkok ugyanolyan m\u00e9ret\u0171ek lesznek, mint az adatblokkok. Minden adatblokkot szavakra bontunk (p\u00e9ld\u00e1ul 16 bitre). Tegy\u00fck fel, hogy az adatblokkokat k sz\u00f3val osztottuk fel. Ekkor az \u00f6sszes parit\u00e1sblokkot szint\u00e9n k sz\u00f3ra bontj\u00e1k.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/fff9c998a760e3f05ef45497557888a9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az i-edik parit\u00e1sblokk szav\u00e1nak kisz\u00e1m\u00edt\u00e1s\u00e1hoz az \u00f6sszes adatblokk i-edik szav\u00e1t haszn\u00e1lj\u00e1k. Ezen a k\u00e9pleten kereszt\u00fcl sz\u00e1m\u00edtj\u00e1k ki:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/8f52209ef7f628c8a748325b1a30c2d4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Itt az x \u00e9rt\u00e9kek az adatblokkok szavai, a p \u00e9rt\u00e9kek a parit\u00e1sblokkok szavai, minden alfa, b\u00e9ta, gamma \u00e9s delta - k\u00fcl\u00f6nlegesen megv\u00e1lasztott sz\u00e1mok, amelyek az \u00f6sszes i-ra \u00e9rv\u00e9nyesek. Azonnal meg kell eml\u00edteni, hogy ezek az \u00e9rt\u00e9kek nem szokv\u00e1nyos sz\u00e1mok, hanem Galois-mez\u0151k elemei. A +, -, *, \/ m\u0171veletek nem a megszokott m\u0171veletek, hanem a Galois-mez\u0151k elemein v\u00e9gzett speci\u00e1lis m\u0171veletek.<\/p>\n<p><\/p>\n<h3 id=\"zachem-nuzhny-polya-galua\">Mi\u00e9rt sz\u00fcks\u00e9gesek a Galois-mez\u0151k<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/94ed4514ae15b01e7869efdeb9a605c6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Els\u0151 pillant\u00e1sra \u00fagy t\u0171nik, hogy ez egyszer\u0171: az adatokat blokkokra bontjuk, a blokkokat szavakra, majd az adatblokkok szavaival sz\u00e1m\u00edtjuk ki a parit\u00e1sblokkok szavait - \u00edgy kapjuk meg a parit\u00e1sblokkokat. \u00c1ltal\u00e1ban ez \u00edgy m\u0171k\u00f6dik, de a r\u00e9szletekben rejlik a buktat\u00f3:<\/p>\n<p><\/p>\n<ol>\n<li>Amint azt eml\u00edtettem, a sz\u00f3 m\u00e9rete fix, a mi p\u00e9ld\u00e1nkban 16 bit. A Reed-Solomon k\u00f3dokhoz tartoz\u00f3 k\u00e9pletek olyanok, hogy a szok\u00e1sos eg\u00e9sz sz\u00e1mok haszn\u00e1lata eset\u00e9n a p sz\u00e1m\u00edt\u00e1s\u00e1nak eredm\u00e9nye nem \u00e1br\u00e1zolhat\u00f3 a megengedett m\u00e9ret\u0171 sz\u00f3val.<\/li>\n<li>Az adatok vissza\u00e1ll\u00edt\u00e1sakor a fenti k\u00e9pleteket egy egyenletrendszerk\u00e9nt kezelik, amelyet meg kell oldani az adatok helyre\u00e1ll\u00edt\u00e1s\u00e1hoz. A megold\u00e1si folyamat sor\u00e1n el\u0151fordulhat, hogy eg\u00e9szeket kell osztani egym\u00e1ssal, aminek eredm\u00e9nye egy val\u00f3s sz\u00e1m, amit nem lehet pontosan \u00e1br\u00e1zolni a sz\u00e1m\u00edt\u00f3g\u00e9p mem\u00f3ri\u00e1j\u00e1ban.<\/li>\n<\/ol>\n<p><\/p>\n<p>Ezek a probl\u00e9m\u00e1k megakad\u00e1lyozz\u00e1k, hogy a Reed-Solomon k\u00f3dok eg\u00e9sz sz\u00e1mokat haszn\u00e1ljanak. A probl\u00e9ma megold\u00e1sa egyedi, a k\u00f6vetkez\u0151k\u00e9ppen lehet le\u00edrni: tal\u00e1ljuk ki azokat a speci\u00e1lis sz\u00e1mokat, amelyeket a megfelel\u0151 hossz\u00fas\u00e1g\u00fa szavakkal (p\u00e9ld\u00e1ul 16 bit) lehet \u00e1br\u00e1zolni, \u00e9s amelyekkel v\u00e9gzett \u00f6sszes m\u0171velet (\u00f6sszead\u00e1s, kivon\u00e1s, szorz\u00e1s, oszt\u00e1s) szint\u00e9n a sz\u00e1m\u00edt\u00f3g\u00e9p mem\u00f3ri\u00e1j\u00e1ban a megfelel\u0151 hossz\u00fas\u00e1g\u00fa szavakkal lesz \u00e1br\u00e1zolva.<\/p>\n<p><\/p>\n<p>Az ilyen \u00bbspeci\u00e1lis\u00ab sz\u00e1mokat a matematika r\u00e9g\u00f3ta tanulm\u00e1nyozza, mez\u0151knek h\u00edvj\u00e1k \u0151ket. A mez\u0151 olyan elemek halmaza, amelyekre meghat\u00e1rozott \u00f6sszead\u00e1si, kivon\u00e1si, szorz\u00e1si \u00e9s oszt\u00e1si m\u0171veletek vonatkoznak.<\/p>\n<p><\/p>\n<p>A Galois-mez\u0151k* olyan mez\u0151k, amelyek eset\u00e9ben minden m\u0171veletnek (+, -, *, \/) egy\u00e9rtelm\u0171 \u00e9s egyedi eredm\u00e9nye van b\u00e1rmely k\u00e9t mez\u0151elem sz\u00e1m\u00e1ra. A Galois-mez\u0151ket a 2 hatv\u00e1nyainak sz\u00e1m\u00e1hoz lehet fel\u00e9p\u00edteni: 2, 4, 8, 16 stb. (val\u00f3j\u00e1ban b\u00e1rmely pr\u00edmsz\u00e1m p hatv\u00e1nyai, de a gyakorlatban csak a 2 hatv\u00e1nyai \u00e9rdekelnek minket). P\u00e9ld\u00e1ul, 16 bit m\u00e9ret\u0171 szavak eset\u00e9n ez a mez\u0151 65 536 elemet tartalmaz, b\u00e1rmely p\u00e1r eset\u00e9ben megtal\u00e1lhat\u00f3 az \u00f6sszes m\u0171velet (+, -, *, \/) eredm\u00e9nye. Az x, p, alfa, b\u00e9ta, gamma, delta \u00e9rt\u00e9kek a fenti egyenletekben a sz\u00e1m\u00edt\u00e1sok sz\u00e1m\u00e1ra Galois-mez\u0151elemeknek tekinthet\u0151k.<\/p>\n<p><\/p>\n<p>Teh\u00e1t rendelkez\u00e9s\u00fcnkre \u00e1ll egy egyenletrendszer, amely seg\u00edts\u00e9g\u00e9vel redundancia k\u00f3dblokkokat tudunk l\u00e9trehozni egy megfelel\u0151 sz\u00e1m\u00edt\u00f3g\u00e9pes program \u00edr\u00e1s\u00e1val. Ezen egyenletek seg\u00edts\u00e9g\u00e9vel az adatok helyre\u00e1ll\u00edt\u00e1s\u00e1t is v\u00e9gre lehet hajtani.<\/p>\n<p><\/p>\n<p>* Ez nem szigor\u00fa defin\u00edci\u00f3, ink\u00e1bb egy le\u00edr\u00e1s.<\/p>\n<p><\/p>\n<h3 id=\"kak-vosstanavlivat-dannye\">Hogyan lehet vissza\u00e1ll\u00edtani az adatokat<\/h3>\n<p><\/p>\n<p>A helyre\u00e1ll\u00edt\u00e1sra akkor van sz\u00fcks\u00e9g, ha az n + m blokkb\u00f3l n\u00e9h\u00e1ny blokknak hi\u00e1nyzik. Ez lehet adatblokk vagy redundancia k\u00f3dblokk is. Az adatblokk \u00e9s\/vagy a redundancia k\u00f3dblokkok hi\u00e1nya azt jelenti, hogy a fenti egyenletekben az adott x \u00e9s\/vagy p v\u00e1ltoz\u00f3k ismeretlenek.<\/p>\n<p><\/p>\n<p>A Reed-Solomon k\u00f3dok egyenletei egy egyenletrendszerk\u00e9nt tekinthet\u0151k, ahol minden alfa, b\u00e9ta, gamma, delta \u2014 konstans \u00e9rt\u00e9kek, minden x \u00e9s p, a rendelkez\u00e9sre \u00e1ll\u00f3 blokkoknak megfelel\u0151en \u2014 ismert v\u00e1ltoz\u00f3k, m\u00edg a t\u00f6bbi x \u00e9s p \u2014 ismeretlen.<\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul, tegy\u00fck fel, hogy az 1., 2., 3. adatblokkok \u00e9s a 2. redundancia k\u00f3dblokk nem el\u00e9rhet\u0151, akkor az i. szavak csoportj\u00e1ra a k\u00f6vetkez\u0151 egyenletrendszer vonatkozik (az ismeretlenek pirossal megjel\u00f6lve):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/6f24804c3d34423f31796e43e9ae1203.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rendelkez\u00fcnk n\u00e9gy ismeretlent tartalmaz\u00f3, n\u00e9gy egyenletb\u0151l \u00e1ll\u00f3 rendszerrel, teh\u00e1t meg tudjuk oldani, \u00e9s vissza tudjuk \u00e1ll\u00edtani az adatokat!<\/p>\n<p><\/p>\n<p>Ez a rendszer sz\u00e1mos k\u00f6vetkeztet\u00e9st von le az adatok helyre\u00e1ll\u00edt\u00e1s\u00e1r\u00f3l a Reed-Solomon k\u00f3dok eset\u00e9ben (n adatblokk, m redund\u00e1ns k\u00f3dbloock):<\/p>\n<p><\/p>\n<ul>\n<li>Az adatok b\u00e1rmely m blokk vagy ann\u00e1l kevesebb elveszt\u00e9se eset\u00e9n vissza\u00e1ll\u00edthat\u00f3k. Ha m+1 blokk vagy t\u00f6bb veszik el, az adatokat nem lehet vissza\u00e1ll\u00edtani: nem lehet megoldani m egyenletet m + 1 ismeretlennel. <\/li>\n<li>M\u00e9g egy blokk adat vissza\u00e1ll\u00edt\u00e1s\u00e1hoz is b\u00e1rmely n megmaradt blokkot haszn\u00e1lni kell, b\u00e1rmely redund\u00e1ns k\u00f3dot felhaszn\u00e1lva.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"chto-eschyo-nuzhno-znat\">Mit \u00e9rdemes m\u00e9g tudni<\/h3>\n<p><\/p>\n<p>A fenti le\u00edr\u00e1sban sz\u00e1mos fontos k\u00e9rd\u00e9st \u00e9rintettem, amelyek m\u00e9lyebb matematikai meg\u00e9rt\u00e9st ig\u00e9nyelnek. \u00cdgy p\u00e9ld\u00e1ul nem besz\u00e9lek a k\u00f6vetkez\u0151kr\u0151l:<\/p>\n<p><\/p>\n<ul>\n<li>A Reed-Solomon k\u00f3dok egyenletrendszer\u00e9nek (egyetlen) megold\u00e1ssal kell rendelkeznie b\u00e1rmely ismeretlen kombin\u00e1ci\u00f3 eset\u00e9n (legfeljebb m ismeretlennel). E k\u00f6vetelm\u00e9ny alapj\u00e1n v\u00e1lasztj\u00e1k ki az alfa, b\u00e9ta, gamma \u00e9s delta \u00e9rt\u00e9keket.<\/li>\n<li>Meg kell tanulni automatikusan fel\u00e9p\u00edteni (att\u00f3l f\u00fcgg\u0151en, hogy mely blokkok nem el\u00e9rhet\u0151k) \u00e9s megoldani az egyenletrendszert.<\/li>\n<li>Fel kell \u00e9p\u00edteni a Galois-mez\u0151t: a sz\u00f3 m\u00e9ret\u00e9nek ismeret\u00e9ben k\u00e9pesnek kell lenn\u00fcnk meghat\u00e1rozni b\u00e1rmely m\u0171velet (+, -, *, \/) eredm\u00e9ny\u00e9t b\u00e1rmely k\u00e9t elem eset\u00e9n.<\/li>\n<\/ul>\n<p><\/p>\n<p>A cikk v\u00e9g\u00e9n hivatkoz\u00e1sok tal\u00e1lhat\u00f3k az ezekhez a fontos k\u00e9rd\u00e9sekhez kapcsol\u00f3d\u00f3 irodalomra.<\/p>\n<p><\/p>\n<h3 id=\"vybor-n-i-m\">Az n \u00e9s m kiv\u00e1laszt\u00e1sa<\/h3>\n<p><\/p>\n<p>Hogyan v\u00e1lasszuk meg az n-t \u00e9s m-t a gyakorlatban? A gyakorlatban az adatt\u00e1rol\u00f3 rendszerek redund\u00e1ns k\u00f3dokat haszn\u00e1lnak a helymegtakar\u00edt\u00e1s \u00e9rdek\u00e9ben, ez\u00e9rt m-t mindig n alatt v\u00e1lasztj\u00e1k. A pontos \u00e9rt\u00e9kek sz\u00e1mos t\u00e9nyez\u0151t\u0151l f\u00fcggenek, bele\u00e9rtve:<\/p>\n<p><\/p>\n<ul>\n<li>Az adatok t\u00e1rol\u00e1s\u00e1nak megb\u00edzhat\u00f3s\u00e1ga. Min\u00e9l nagyobb m, ann\u00e1l t\u00f6bb lemez meghib\u00e1sod\u00e1s\u00e1t tudja elviselni, teh\u00e1t a megb\u00edzhat\u00f3s\u00e1g magasabb.<\/li>\n<li>A t\u00e1rol\u00e1s redundanci\u00e1ja. Min\u00e9l magasabb az m \/ n ar\u00e1ny, ann\u00e1l nagyobb lesz a t\u00e1rol\u00e1s redundanci\u00e1ja, \u00e9s ann\u00e1l dr\u00e1g\u00e1bb lesz a rendszer.<\/li>\n<li>A k\u00e9r\u00e9sek feldolgoz\u00e1si ideje. Min\u00e9l nagyobb a n + m \u00f6sszeg, ann\u00e1l hosszabb id\u0151t vesz ig\u00e9nybe a k\u00e9r\u00e9sekre adott v\u00e1lasz. Mivel az adatok olvas\u00e1s\u00e1hoz (vissza\u00e1ll\u00edt\u00e1s k\u00f6zben) n blokkot kell olvasni, amelyek n k\u00fcl\u00f6nb\u00f6z\u0151 lemezen t\u00e1rol\u00f3dnak, az olvas\u00e1si id\u0151t a leglassabb lemez hat\u00e1rozza meg.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ezenk\u00edv\u00fcl az adatok t\u00f6bb adatk\u00f6zpontban val\u00f3 t\u00e1rol\u00e1sa tov\u00e1bbi korl\u00e1tokat szab n \u00e9s m kiv\u00e1laszt\u00e1s\u00e1ra: ha egy adatk\u00f6zpont le\u00e1ll, az adatoknak tov\u00e1bbra is olvashat\u00f3nak kell lenni\u00fck. P\u00e9ld\u00e1ul, ha az adatokat 3 adatk\u00f6zpontban t\u00e1rolj\u00e1k, a k\u00f6vetkez\u0151 felt\u00e9telnek kell teljes\u00fclnie: m &gt;= n\/2, k\u00fcl\u00f6nben lehets\u00e9ges, hogy az adatok nem lesznek olvashat\u00f3ak egy adatk\u00f6zpont le\u00e1ll\u00e1sa eset\u00e9n.<\/p>\n<p><\/p>\n<h1 id=\"3-lrc--local-reconstruction-codes\">3. LRC \u2014 Helyi Rekonstrukci\u00f3s K\u00f3dok<\/h1>\n<p><\/p>\n<p>Az adatok Reed-Solomon k\u00f3dokkal val\u00f3 helyre\u00e1ll\u00edt\u00e1s\u00e1hoz n tetsz\u0151leges adatblokkot kell haszn\u00e1lni. Ez nagyon jelent\u0151s h\u00e1tr\u00e1ny a disztrib\u00falt adatt\u00e1rol\u00f3 rendszerek sz\u00e1m\u00e1ra, mivel egy meghib\u00e1sodott lemezr\u0151l val\u00f3 adathelyre\u00e1ll\u00edt\u00e1s sor\u00e1n a legt\u00f6bb m\u00e1sik lemezr\u0151l is adatokat kell olvasni, ezzel pedig nagy tov\u00e1bbi terhel\u00e9st okozva a lemezeken \u00e9s a h\u00e1l\u00f3zaton.<\/p>\n<p><\/p>\n<p>A leggyakrabban el\u0151fordul\u00f3 hib\u00e1k \u2014 az egyik adatblokk el\u00e9rhetetlens\u00e9ge egy lemez meghib\u00e1sod\u00e1sa vagy t\u00falterhelts\u00e9ge miatt. Van-e m\u00f3d a helyre\u00e1ll\u00edt\u00e1si folyamat f\u00f6l\u00f6sleges terhel\u00e9s\u00e9nek cs\u00f6kkent\u00e9s\u00e9re ilyen (leggyakoribb) esetben? Kider\u00fcl, hogy van: erre kifejezetten a LRC t\u00f6bbletk\u00f3djai l\u00e9teznek.<\/p>\n<p><\/p>\n<p>Az LRC (Helyi Rekonstrukci\u00f3s K\u00f3dok) \u2014 a Microsoft \u00e1ltal a Windows Azure Storage alkalmaz\u00e1s\u00e1hoz kifejlesztett t\u00f6bbletk\u00f3dok. Az LRC \u00f6tlete rendk\u00edv\u00fcl egyszer\u0171: az \u00f6sszes adatblokkot k\u00e9t (vagy t\u00f6bb) csoportra kell bontani, \u00e9s az egyes csoportok sz\u00e1m\u00e1ra k\u00fcl\u00f6n sz\u00e1m\u00edtani a t\u00f6bbletk\u00f3dok egy r\u00e9sz\u00e9t. \u00cdgy a t\u00f6bbletk\u00f3dok egy r\u00e9sze az \u00f6sszes adatblokk (az LRC-ben glob\u00e1lis t\u00f6bbletk\u00f3dnak nevezik) seg\u00edts\u00e9g\u00e9vel ker\u00fcl kisz\u00e1m\u00edt\u00e1sra, m\u00edg egy r\u00e9sz\u00e9t az adatok egyik k\u00e9t csoportj\u00e1nak seg\u00edts\u00e9g\u00e9vel (ezeket helyi t\u00f6bbletk\u00f3doknak h\u00edvj\u00e1k).<\/p>\n<p><\/p>\n<p>Az LRC h\u00e1rom sz\u00e1mmal jel\u00f6lhet\u0151: n-r-l, ahol n \u2014 az adatblokkok sz\u00e1ma, r \u2014 a glob\u00e1lis t\u00f6bbletk\u00f3d blokkok sz\u00e1ma, l \u2014 a helyi t\u00f6bbletk\u00f3d blokkok sz\u00e1ma. Egy adatblokk el\u00e9rhetetlens\u00e9ge eset\u00e9n az adatok olvas\u00e1s\u00e1hoz csak n\/l blokkot kell olvasni \u2014 ez l-szer kevesebb, mint a Reed-Solomon k\u00f3dokn\u00e1l.<\/p>\n<p><\/p>\n<p>P\u00e9ld\u00e1ul vegy\u00fck az LRC 6-2-2 s\u00e9m\u00e1t. X1\u2013X6 \u2014 6 adatblokk, P1, P2 \u2014 2 glob\u00e1lis t\u00f6bbletk\u00f3d blokk, P3, P4 \u2014 2 helyi t\u00f6bbletk\u00f3d blokk.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/783f6d4b57b992c56385cdd07603cda8.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A P1, P2 t\u00f6bbletk\u00f3d blokkokat az \u00f6sszes adatblokk seg\u00edts\u00e9g\u00e9vel sz\u00e1m\u00edtj\u00e1k. A P3 t\u00f6bbletk\u00f3d blokk az X1\u2013X3 adatblokkok seg\u00edts\u00e9g\u00e9vel, a P4 t\u00f6bbletk\u00f3d blokk pedig az X4\u2013X6 adatblokkok seg\u00edts\u00e9g\u00e9vel ker\u00fcl kisz\u00e1m\u00edt\u00e1sra.<\/p>\n<p><\/p>\n<p>A t\u00f6bbi LRC-ben t\u00f6rt\u00e9nik, hasonl\u00f3an a Reed-Solomon k\u00f3dokhoz. A hibajav\u00edt\u00f3 k\u00f3dok szavainak kisz\u00e1m\u00edt\u00e1s\u00e1hoz az al\u00e1bbi egyenletek sz\u00fcks\u00e9gesek:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Redundancia k\u00f3dok: egyszer\u0171 szavakkal arr\u00f3l, hogyan t\u00e1rolhatunk adatokat megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n\" src=\"\/wp-content\/uploads\/2020\/07\/b32c8864fac0678014fc9a5abf490537.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Az alfa, b\u00e9ta, gamma \u00e9s delta sz\u00e1mok meghat\u00e1roz\u00e1s\u00e1hoz t\u00f6bb felt\u00e9telt kell teljes\u00edteni, amelyek biztos\u00edtj\u00e1k az adatok helyre\u00e1ll\u00edt\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9t (vagyis az egyenletrendszer megold\u00e1s\u00e1t). R\u00e9szletesebben err\u0151l olvashat itt: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2016\/02\/LRC12-cheng20webpage.pdf\">a Spotify d\u00f6nt\u00e9shozatali m\u00f3dszertan\u00e1r\u00f3l. Egyre t\u00f6bb felhaszn\u00e1l\u00f3 prefer\u00e1lja a zenehallgat\u00e1st mobilon a streaming szolg\u00e1ltat\u00e1sban, de a c\u00e9gn\u00e9l t\u00falnyom\u00f3r\u00e9szt webprogramoz\u00f3k dolgoznak. A Spotify elemezte ezt a helyzetet, \u00e9s \u00fagy d\u00f6nt\u00f6tt, hogy t\u00f6bb mobilfejleszt\u0151t vesz fel, valamint \u00e1tnevezi a webes szakembereket \u00faj ir\u00e1nyba:<\/a><\/noindex>.<br \/>\nA gyakorlatban a P3, P4 helyi redundancia k\u00f3dok sz\u00e1m\u00edt\u00e1s\u00e1hoz is alkalmazz\u00e1k az XOR m\u0171veletet. <\/p>\n<p><\/p>\n<p>Az LRC egyenletrendszer\u00e9b\u0151l sz\u00e1mos k\u00f6vetkeztet\u00e9s ad\u00f3dik:<\/p>\n<p><\/p>\n<ul>\n<li>B\u00e1rmely egy adatblokk helyre\u00e1ll\u00edt\u00e1s\u00e1hoz elegend\u0151 n\/l blokkot (n\/2 a p\u00e9lda eset\u00e9n) elolvasni.<\/li>\n<li>Ha r + l blokk nem el\u00e9rhet\u0151, \u00e9s mindezek a blokkok egy csoportba tartoznak, akkor az adatokat nem lehet helyre\u00e1ll\u00edtani. Ezt k\u00f6nnyen meg lehet magyar\u00e1zni egy p\u00e9ld\u00e1n. Tegy\u00fck fel, hogy az X1\u2013X3 \u00e9s P3 blokkok nem el\u00e9rhet\u0151ek: ez r + l blokkokat jelent egy csoportban, ami a mi eset\u00fcnkben 4. Akkor van egy 3 egyenletb\u0151l \u00e1ll\u00f3 rendszere 4 ismeretlennel, amit nem lehet megoldani.<\/li>\n<li>Minden m\u00e1s esetben, amikor r + l blokk el\u00e9rhetetlen (amikor minden csoportb\u00f3l legal\u00e1bb egy blokk el\u00e9rhet\u0151), az LRC-ben az adatok helyre\u00e1ll\u00edthat\u00f3k.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00cdgy az LRC el\u0151nyben van a Reed-Solomon k\u00f3dokkal szemben az adatok helyre\u00e1ll\u00edt\u00e1s\u00e1ban egyes hib\u00e1k ut\u00e1n. A Reed-Solomon k\u00f3dokhoz viszony\u00edtva egy adatblokk helyre\u00e1ll\u00edt\u00e1s\u00e1hoz n blokkra van sz\u00fcks\u00e9g, m\u00edg LRC-hez elegend\u0151 n\/l blokk (n\/2 a p\u00e9lda eset\u00e9n). M\u00e1sr\u00e9szt az LRC h\u00e1tr\u00e1nyban van a Reed-Solomon k\u00f3dokkal szemben a megengedett hib\u00e1k maxim\u00e1lis sz\u00e1m\u00e1ban. A fentiekben a Reed-Solomon k\u00f3dok b\u00e1rmely 4 hiba mellett k\u00e9pesek helyre\u00e1ll\u00edtani az adatokat, m\u00edg az LRC-n\u00e9l 4 hib\u00e1b\u00f3l 2 kombin\u00e1ci\u00f3 eset\u00e9n lehetetlen az adatok helyre\u00e1ll\u00edt\u00e1sa.<\/p>\n<p><\/p>\n<p>A fontosabb k\u00e9rd\u00e9s a konkr\u00e9t helyzett\u0151l f\u00fcgg, de gyakran az LRC \u00e1ltal biztos\u00edtott redund\u00e1ns terhel\u00e9s cs\u00f6kkent\u00e9se fel\u00fclm\u00falja a kicsit alacsonyabb t\u00e1rol\u00e1si megb\u00edzhat\u00f3s\u00e1got.<\/p>\n<p><\/p>\n<h1 id=\"4-drugie-kody-izbytochnosti\">4. Egy\u00e9b redundancia k\u00f3dok<\/h1>\n<p><\/p>\n<p>A Reed-Solomon \u00e9s LRC k\u00f3dokon k\u00edv\u00fcl sok m\u00e1s redundancia k\u00f3d is l\u00e9tezik. K\u00fcl\u00f6nb\u00f6z\u0151 redundancia k\u00f3dok k\u00fcl\u00f6nf\u00e9le matematik\u00e1t alkalmaznak. \u00cdme n\u00e9h\u00e1ny egy\u00e9b redundancia k\u00f3d:<\/p>\n<p><\/p>\n<ul>\n<li>Redundancia k\u00f3d XOR oper\u00e1torral. Az XOR m\u0171veletet n adatblokkon hajtj\u00e1k v\u00e9gre, \u00edgy 1 redundancia blokk keletkezik, azaz n+1 s\u00e9ma (n adatblokk, 1 redundancia k\u00f3d). Haszn\u00e1lj\u00e1k <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/RAID#RAID_5\">RAID 5<\/a><\/noindex>, ahol az adatblokkokat \u00e9s a redundancia k\u00f3dokat ciklikusan minden lemezen t\u00e1rolj\u00e1k az adatt\u00e1rol\u00f3ban.<\/li>\n<li>Az even-odd algoritmus, amely az XOR m\u0171veleten alapul. Lehet\u0151v\u00e9 teszi 2 redund\u00e1ns k\u00f3dblokk l\u00e9trehoz\u00e1s\u00e1t, azaz az n+2 s\u00e9ma szerint.<\/li>\n<li>A STAR algoritmus, amely az XOR m\u0171veleten alapul. Lehet\u0151v\u00e9 teszi 3 redund\u00e1ns k\u00f3dblokk l\u00e9trehoz\u00e1s\u00e1t, azaz az n+3 s\u00e9ma szerint.<\/li>\n<li>A Pyramide k\u00f3dok \u2014 tov\u00e1bbi redund\u00e1ns k\u00f3dok a Microsoft-t\u00f3l.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"5-ispolzovanie-v-yandekse\">5. Haszn\u00e1lat a Yandexben<\/h1>\n<p><\/p>\n<p>A Yandex sz\u00e1mos infrastrukt\u00fara projektje alkalmaz redund\u00e1ns k\u00f3dokat az adatok megb\u00edzhat\u00f3 t\u00e1rol\u00e1s\u00e1ra. \u00cdme n\u00e9h\u00e1ny p\u00e9lda:<\/p>\n<p><\/p>\n<ul>\n<li>A MDS bels\u0151 objektum t\u00e1rol\u00f3ja, amelyr\u0151l az \u00edr\u00e1s elej\u00e9n besz\u00e9ltem.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311104\/\">YT<\/a><\/noindex> \u2014 A Yandex MapReduce rendszere.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FwLvAuOSIOU\">YDB<\/a><\/noindex> (Yandex DataBase) \u2014 elosztott newSQL adatb\u00e1zis.<\/li>\n<\/ul>\n<p><\/p>\n<p>A MDS-ben LRC redund\u00e1ns k\u00f3dokat haszn\u00e1lnak, 8-2-2 s\u00e9ma szerint. A redund\u00e1ns k\u00f3dokkal ell\u00e1tott adatokat 12 k\u00fcl\u00f6nb\u00f6z\u0151 lemezen t\u00e1rolj\u00e1k, k\u00fcl\u00f6nb\u00f6z\u0151 szervereken, 3 k\u00fcl\u00f6nb\u00f6z\u0151 adatk\u00f6zpontban: 4 szerver minden adatk\u00f6zpontban. Tov\u00e1bbi inform\u00e1ci\u00f3 err\u0151l: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/311806\/\">a Spotify d\u00f6nt\u00e9shozatali m\u00f3dszertan\u00e1r\u00f3l. Egyre t\u00f6bb felhaszn\u00e1l\u00f3 prefer\u00e1lja a zenehallgat\u00e1st mobilon a streaming szolg\u00e1ltat\u00e1sban, de a c\u00e9gn\u00e9l t\u00falnyom\u00f3r\u00e9szt webprogramoz\u00f3k dolgoznak. A Spotify elemezte ezt a helyzetet, \u00e9s \u00fagy d\u00f6nt\u00f6tt, hogy t\u00f6bb mobilfejleszt\u0151t vesz fel, valamint \u00e1tnevezi a webes szakembereket \u00faj ir\u00e1nyba:<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Az YT-ben a Reed-Solomon k\u00f3dokat (6-3 s\u00e9ma), amelyeket els\u0151k\u00e9nt val\u00f3s\u00edtottak meg, \u00e9s az LRC redund\u00e1ns k\u00f3dokat (12-2-2 s\u00e9ma) haszn\u00e1lj\u00e1k, ahol az LRC az prefer\u00e1lt t\u00e1rol\u00e1si m\u00f3d.<\/p>\n<p><\/p>\n<p>Az YDB-ben even-odd alap\u00fa redund\u00e1ns k\u00f3dok tal\u00e1lhat\u00f3k (4-2 s\u00e9ma). Az YDB redund\u00e1ns k\u00f3djair\u00f3l m\u00e1r <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=dCpfGJ35kK8\">besz\u00e9ltek a Highload-on.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>A k\u00fcl\u00f6nb\u00f6z\u0151 redund\u00e1ns k\u00f3dok alkalmaz\u00e1sa elt\u00e9r\u0151 k\u00f6vetelm\u00e9nyeknek k\u00f6sz\u00f6nhet\u0151, amelyeket a rendszerek t\u00e1masztanak. P\u00e9ld\u00e1ul az MDS-ben az LRC \u00e1ltal t\u00e1rolt adatok h\u00e1rmas adatk\u00f6zpontban helyezkednek el. Fontos sz\u00e1munkra, hogy az adatok olvashat\u00f3k maradjanak, amikor b\u00e1rmelyik adatk\u00f6zpont le\u00e1ll, ez\u00e9rt a blokkokat \u00fagy kell elosztani az adatk\u00f6zpontok k\u00f6z\u00f6tt, hogy b\u00e1rmelyik adatk\u00f6zpont el\u00e9rhetetlens\u00e9ge eset\u00e9n a nem el\u00e9rhet\u0151 blokkok sz\u00e1ma ne haladja meg a megengedettet. A 8-2-2 s\u00e9m\u00e1ban minden adatk\u00f6zpontban 4 blokk helyezhet\u0151 el, \u00edgy b\u00e1rmely adatk\u00f6zpont lekapcsol\u00e1sa eset\u00e9n 4 blokk lesz el\u00e9rhetetlen, \u00e9s az adatok olvashat\u00f3ak maradnak. B\u00e1rmilyen s\u00e9m\u00e1t is v\u00e1lasszunk a 3 adatk\u00f6zpont eloszt\u00e1s\u00e1hoz, a redundancia t\u00e1rol\u00e1s\u00e1nak minimuma mindig (r + l) \/ n &gt;= 0,5, azaz a t\u00e1rol\u00e1si redundancia minimum 50% lesz.<\/p>\n<p><\/p>\n<p>Az YT helyzete m\u00e1s: minden YT klaszter teljes eg\u00e9sz\u00e9ben egy adatk\u00f6zpontban helyezkedik el (k\u00fcl\u00f6nb\u00f6z\u0151 klaszterek k\u00fcl\u00f6nb\u00f6z\u0151 adatk\u00f6zpontokban), ez\u00e9rt ott nincs ilyen korl\u00e1toz\u00e1s. A 12-2-2 s\u00e9ma 33%-os redundanci\u00e1t biztos\u00edt, teh\u00e1t az adatok t\u00e1rol\u00e1sa olcs\u00f3bb\u00e1 v\u00e1lik, emellett 4 lemez egyidej\u0171 lekapcsol\u00e1s\u00e1t is t\u00fal\u00e9lhetik, ak\u00e1rcsak a MDS s\u00e9ma.<\/p>\n<p><\/p>\n<p>M\u00e9g sok olyan jellemz\u0151 van a redund\u00e1ns k\u00f3dok adatstor\u00e1l\u00e1si \u00e9s -feldolgoz\u00e1si rendszerekben val\u00f3 alkalmaz\u00e1s\u00e1r\u00f3l, mint p\u00e9ld\u00e1ul az adatok helyre\u00e1ll\u00edt\u00e1s\u00e1nak bonyodalmai, a helyre\u00e1ll\u00edt\u00e1s id\u0151tartam\u00e1nak hat\u00e1sa a lek\u00e9rdez\u00e9sek v\u00e9grehajt\u00e1si idej\u00e9re, valamint az adatok r\u00f6gz\u00edt\u00e9s\u00e9nek saj\u00e1toss\u00e1gai. K\u00fcl\u00f6n szeretn\u00e9k besz\u00e9lni ezekr\u0151l \u00e9s m\u00e1s gyakorlati alkalmaz\u00e1sok jellemz\u0151ir\u0151l, ha a t\u00e9ma \u00e9rdekes.<\/p>\n<p><\/p>\n<h1 id=\"6-ssylki\">6. Hivatkoz\u00e1sok<\/h1>\n<p><\/p>\n<ol>\n<li>Cikkek sorozata Reed-Solomon k\u00f3dokr\u00f3l \u00e9s Galois mez\u0151kr\u0151l: <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 \/>\nEzek a matematik\u00e1t \u00e9rthet\u0151 nyelven, r\u00e9szletesebben t\u00e1rgyalj\u00e1k.<\/li>\n<li>Cikk a Microsoftt\u00f3l az LRC-r\u0151l: <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 \/>\nA 2. szakaszban r\u00f6viden kifejtik az elm\u00e9letet, majd a gyakorlatban alkalmazott LRC tapasztalatait vizsg\u00e1lj\u00e1k.<\/li>\n<li>Even-odd s\u00e9ma: <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>STAR s\u00e9ma: <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>Pyramid k\u00f3dok: <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>MDS alap\u00fa redund\u00e1ns k\u00f3dok: <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>YT alap\u00fa redund\u00e1ns k\u00f3dok: <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>YDB alap\u00fa redund\u00e1ns k\u00f3dok: <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>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/kody-izbytochnosti-prostymi-slovami-o-tom-kak-nadyozhno-i-dyoshevo-hranit-dannye\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Redund\u00e1ns k\u00f3dok: egy\u00e9rtelm\u0171en arr\u00f3l, hogyan lehet megb\u00edzhat\u00f3an \u00e9s olcs\u00f3n adatokat t\u00e1rolni | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/87758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=87758"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/87758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/87759"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=87758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=87758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=87758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}