Andmete sünkroniseerimine: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Uus lehekülg: 'Ehk, kui * mitmel eri arvutil peab olema kõigil ühesugune andmehulk (failide, andmebaasi vms kujul) * seda andmehulka pidevalt muudetakse (lisatakse midagi, muudetakse olemas...'
 
Resümee puudub
 
13. rida: 13. rida:
* jne.
* jne.


Kogu see sünkroniseerimise probleem on üks suuri arvutiteaduse ja praktilise tarkvara-ehituse suuri teemasid: vaata wikipediast [https://en.wikipedia.org/wiki/Consensus_(computer_science) consensus]. Illustreerimiseks kasutatakse tihti bütsantsi kindralite probleemi, mille lihtsaim juhtum [https://en.wikipedia.org/wiki/Two_Generals%27_Problem kahe kindrali probleem] on üldjuhul põhimõtteliselt mittelahenduv: ehk, garantiid konsensuseks ei saagi olla. Teisalt, kui nõudeid veidi lõdvendada ja kindraleid on rohkem, saame ehitada erinevaid algoritme (vaata [https://en.wikipedia.org/wiki/Byzantine_fault bütsantsliku vea wikit], mis annavad küllalt OK tõenäosusega garantiid sünkroonsuseks.
Kogu see sünkroniseerimise probleem on üks suuri arvutiteaduse ja praktilise tarkvara-ehituse suuri teemasid: vaata wikipediast [https://en.wikipedia.org/wiki/Consensus_(computer_science) consensus]. Illustreerimiseks kasutatakse tihti bütsantsi kindralite probleemi, mille lihtsaim juhtum [https://en.wikipedia.org/wiki/Two_Generals%27_Problem kahe kindrali probleem] <font color="red">E2</font> on üldjuhul põhimõtteliselt mittelahenduv: ehk, garantiid konsensuseks ei saagi olla. Teisalt, kui nõudeid veidi lõdvendada ja kindraleid on rohkem, saame ehitada erinevaid algoritme (vaata [https://en.wikipedia.org/wiki/Byzantine_fault bütsantsliku vea wikit], mis annavad küllalt OK tõenäosusega garantiid sünkroonsuseks.
Huvi korral vaata [https://people.eecs.berkeley.edu/~luca/cs174/byzantine.pdf klassikalist artiklit] sellel teemal.
Huvi korral vaata [https://people.eecs.berkeley.edu/~luca/cs174/byzantine.pdf klassikalist artiklit] sellel teemal.



Viimane redaktsioon: 13. mai 2025, kell 12:20

Ehk, kui

  • mitmel eri arvutil peab olema kõigil ühesugune andmehulk (failide, andmebaasi vms kujul)
  • seda andmehulka pidevalt muudetakse (lisatakse midagi, muudetakse olemasolevat jms)

siis kuidas tagada, et muutused

  • üldse jõuavad kõikidesse arvutitesse,
  • jõuavad sinna üheaegselt?

Selle probleemi teevad keeruliseks mitu asja:

  • Andmete edasisaatmise kanal võib vahel rikki minna.
  • Andmed võivad edasisaatmisel kanalis saada kogemata või meelega muudetud.
  • Mõnes arvutis võib olla vigane programm, mis ei suuda teiste arvutitega adekvaatselt infot vahetada.
  • Mõnes arvutis võib olla pahatahtlik programm, mis saadab meelega eksitavat infot.
  • jne.

Kogu see sünkroniseerimise probleem on üks suuri arvutiteaduse ja praktilise tarkvara-ehituse suuri teemasid: vaata wikipediast consensus. Illustreerimiseks kasutatakse tihti bütsantsi kindralite probleemi, mille lihtsaim juhtum kahe kindrali probleem E2 on üldjuhul põhimõtteliselt mittelahenduv: ehk, garantiid konsensuseks ei saagi olla. Teisalt, kui nõudeid veidi lõdvendada ja kindraleid on rohkem, saame ehitada erinevaid algoritme (vaata bütsantsliku vea wikit, mis annavad küllalt OK tõenäosusega garantiid sünkroonsuseks. Huvi korral vaata klassikalist artiklit sellel teemal.


Erinevad rakenduse tüübid fokuseeruvad eri stsenaariumitele / eri osadele probleemist.Näiteks,

  • P2P süsteemid ja spetsiifiliselt sh DHT (distributed hash tables) jaotab andmehulga mitme eri masina vahel: igaühel on mõni tükk. Põhiküsimiseks on, et kuidas leida, mis masinas on vajalik tükk?
  • Bittorrent fokuseerub küsimusele, et kui algul on andmehulk ainult ühes masinas, siis kuidas ta efektiivselt kopeerida paljudesse teistesse masinatesse.
  • Distributed ledger ja spetsiifiliselt näiteks Bitcoin fokuseerub küsimusele, et kui igas masinas on kõik andmed, aga tehakse sagedasi täiendusi andmehulka, siis kuidas need täiendused jõuaksid kõigi masinateni ja kuidas masinate vahel hoida konsensust, et andmehulk on tõesti kõigil sama.
  • Hajutatud andmebaasid tegelevad nii P2P tüüpi kui Distributed ledgeri tüüpi probleemidega: andmed tuleb mitme masina vahel ära jagada, aga kuidas jagada ja kuidas neid süngis hoida?