PDS P PDF
Document Details

Uploaded by BoundlessTourmaline
Tags
Summary
This document discusses concurrent programming, including the differences between concurrent and parallel execution, definitions of distributed systems (DS) and their properties, various concurrency problems, and examples of mutex implementations.
Full Transcript
Uvod 1. Koja je razlika izmedju konkurentnog i paralelnog izvrsavanja programa? Paralelno izvrsavanje predstavlja istovremeno izvrsavanje vise racunarskih operacija, programa ili delova programa. Konkuretno izvrsavanje predstavlja izvrsavanje vise programskih tokova jednog programa tako da oni...
Uvod 1. Koja je razlika izmedju konkurentnog i paralelnog izvrsavanja programa? Paralelno izvrsavanje predstavlja istovremeno izvrsavanje vise racunarskih operacija, programa ili delova programa. Konkuretno izvrsavanje predstavlja izvrsavanje vise programskih tokova jednog programa tako da oni napreduju u vremenu, ali se oni ne moraju obavezno izvrsavati istovremeno. 2. Dati jednu od definicija DS DS cine hardverske ili softverske komponente smestene na umrezenim racunarima i koje komuniciraju i koordiniraju svoje akcije samo prenosenjem poruka. 3. Koji su razlozi za razvoj DS? Povecanje dostupnosti i pouzdanosti,bolje performanse, lakse skaliranje resursa sistema i resavanje zahtevnih problema. 4. Koji problemi postoje kod projektovanja DS? Komunikacija moze da otkaze, procesi mogu neocekivano da se zaustave, diskovi i drugi hardverski uredjaji mogu da otkazi, fault tolerance - otpornost na otkaze i svaki kvar se desava nepredvidivo. 5. Koje su sve osobine DS? a) Vise racunara - cvorovima (konkurentno izvrsavanje, nezavisni kvarovi, automatizovana administracija, veliki broj cvorova b) Mrezna komunikacija (asinhrona, nebezbednost, nepouzdanost) c) Cilj (konzistencija, transparentnost) 6. Koji sve tipovi transparetnosti postoje kod DS? Pristup, lokacija, migracija,replikacija, konkurentnost i otkazi. Konkurentnost 1. Koje su razlike izmedju procesa i niti? Procesi su instance programa koje se izvrsavaju. Poseduju virtualni adresni prostor i jednu ili vise niti. Niti su entiteti kojima upravlja scheduler. Izvrsavaju se u adresnom prostoru svog procesa kome pripadaju. 2. Koje resurse niti imaju same, a koje resurse dele sa ostalim nitima unutar procesa? Svaka nit ima svoj stek, programski brojac i registar. Resurse koje niti dele su: heap, segment podatka, kod segmenta, signali i obrada signalaā¦ 3. Koje su prednosti konkurentnog izvrsavanja programa? Omogucava da se preklopi racunanje i I/O pristup na jednom racunaru. Moze da pojednostavi strukturu koda i/ili da poboljsa odziv. Omogucava laksu upotrebu vise CPU-ova. 4. Kako se manifestuje problem utrkivanja odnosno race conditions kod pristupa deljenom resursu? Pr ,,roditelji kupuju mleko deciā -> ,,ostaviti nalepnicuā => uglavnom ispravan kod. Dve ili vise niti pristupaju istovremeno jednom deljenom resursu, moze dovesti do veoma neocekivanih rezultata. 5. Sta je kriticna sekcija i sta je uzejamno iskljucivanje i kako se ostvaruje? Kriticna sekcija je deo koda koji ne sme da se izvrsi konkurentno od strane vise od jedne niti. Uzejamno iskljucivanje: ako se jedna nit izvrsava u kriticnoj sekciji, svim ostalim nitima je zabranjeno da udju u kriticnu sekciju. Ostvarivanje: jedna nit uvek ima dozvoljen pristup kriticnoj sekciji. 6. Sta je atomska operacija? Atomska operacija je nedeljiva; ona se ili u potpunosti ili se uopste ne izvrsava. 7. Kako se implementira kriticna sekcija putem mutex-a? Dati primer Dodaljivanjem katanca za uzejamno iskljucivanje. (thread 2 je isti kao i thread 1). // thread 1 LOCK(frižiderLock); mleko = vidiFrižider(); if(!mleko) kupiMleko(); UNLOCK(frižiderLock); Koriscenjem mutex-a (friziderLock) obezbedjuje samo jednu nit u isto vreme moze pristupiti i azurirati zajednicki resurs (frizider). Ovo sprecava utrkivanje i osigurava da se mleko kupuje samo jednom 8. Koje su osobine deadlock-a, livelock-a i starvation-a kod konkurentnog izvrsavanja niti? DeadLock - stanje kada se procesi/niti uzejamno blokiraju. LiveLock - procesi/niti se ne blokiraju, nema napretka u izvrsavanju. Starvation - proces koji zeli da udje u kriticnu sekciju ce uci, ali nece biti efekta. 9. Pr. uzejamnog iskljucenja preko LockOne class LockOne implements Lock { private boolean[] flag = new boolean; public void lock() { int i = ThreadID.get(); // niti imaju id-jeve 0 i 1 int j = 1 - i; flag[i] = true; while (flag[j]) {} // wait } public void unlock() { int i = ThreadID.get(); flag[i] = false; } } Polje zastavica (flag) ima dve vrednosti, po jednu za svaku nit, koje oznaÄavaju da li nit želi uÄi u kritiÄni sekciju.U metodi lock, trenutna nit postavlja svoju zastavicu na true i Äeka dok druga nit takoÄe želi uÄi u kritiÄni sekciju.U metodi unlock, trenutna nit postavlja svoju zastavicu na false, signalizirajuÄi da je zavrÅ”ila sa kritiÄnim sekcijom. 10. Pr. uzejamnog iskljucenja preko LockTwo class LockTwo implements Lock { private volatile int victim; public void lock() { int i = ThreadID.get(); victim = i; // prepuÅ”tanje da druga nit ide prva while (victim == i) {} // wait } public void unlock() {} } Polje victim je varijabla koja oznaÄava koja nit mora Äekati, deklarirana kao volatile radi vidljivosti promena svim nitima.U metodi lock, trenutna nit dobija svoj ID i postavlja victim na svoj ID, signalizirajuÄi da daje prednost drugoj niti, te Äeka dok je victim jednak njenom ID-u. Metoda unlock je prazna jer kontrolu redosleda niti upravlja varijabla victim. 11. Pr. Petersenovog algoritma (LockOne i Lock Two) Process P (1) loop non-critical section flag[P] = true victim = P while(flag[Q] && victim == P); critical section flag[P] = false Process Q (2) loop non-critical section flag[Q] = true victim = Q while(flag[P] && victim == Q); critical section flag[Q] = false IzvrÅ”ava ne-kritiÄnu sekciju. Postavlja flag[P] na true kako bi oznaÄio da želi uÄi u kritiÄnu sekciju.Postavlja victim na P, dajuÄi prednost drugoj niti. Äeka dok flag[Q] nije false i victim nije P.Ulazi u kritiÄnu sekciju. Postavlja flag[P] na false nakon izlaska iz kritiÄne sekcije. Isto tako i proces Q. 12. Pr. filter algoritma int[] level(#threads), int[] victim(#threads) lock(me) { for (int i=1; i= i && victim[i] == me) {}; } } unlock(me) { level[me] = 0; } Ovaj algoritam koristi niz level za oznaÄavanje nivoa na kojem se nalaze niti u procesu zakljuÄavanja i niz victim za odluÄivanje koja nit treba Äekati. Algoritam osigurava meÄusobno iskljuÄivanje i praviÄnost u pristupu kritiÄnoj sekciji za viÅ”e niti, omoguÄavajuÄi da niti postepeno prolaze kroz nivoe pre nego Å”to uÄu u kritiÄu sekciju. 13. Pr. Ticket algoritma int number = 1, next = 1, turn[1:n] = ([n] 0); process CS[i = 1 to n] { while (true) { critical section; noncritical section } } Ovaj algoritam koristi promenljive number, next, i niz turn kako bi osigurao da niti ulaze u kritiÄnu sekciju redosledom koji je definisan redosledom dodeljenih brojeva. Algoritam osigurava meÄusobno iskljuÄivanje i praviÄnost, jer svaka nit mora Äekati svoj red da uÄe u kritiÄnu sekciju. 14. Pr. Pekarskog algoritma Process P loop non-critical section np = nq + 1 while (nq != 0 && nq < np); critical section np = 0 Process Q loop non-critical section nq = np + 1 while (np != 0 && np 0 || writersWaiting>0) try { wait(); } catch (InterruptedException e){} readers++; } synchronized void release_read() { readers--; notifyAll(); } synchronized void acquire_write() { writersWaiting++; while (writers > 0 || readers > 0) try { wait(); } catch (InterruptedException e) {} writersWaiting--; writers++; } synchronized void release_write() { writers--; notifyAll(); } } 12. Osobine asinhronog i sinhronog prosleÄivanja poruka. Asinhrono: ne blokira slanje poruka i blokira primanje Sinhrono: blokira oba 14. NaÄin sinhronizacije koriÅ”Äenjem wait(), notify(), notifyAll(). U Javi postoji mehanizam za uslovni red za Äekanje ā skup ÄekajuÄih niti (wait set), koje Äekaju da se ispuni neki uslov. Svaki objekat u Javi ima metode za uslovni red za Äekanje i to: wait(), notify(), notifyAll(). Jedna nit može pozvati ove metode na nekom objektu, samo ako je zakljuÄala dati objekat, tj. ima lock nad njim. while(!preduslov){ wait() //otkljucaj objekat i cekaj dok te ne probude eventualno se moze desiti tajmaut ili da je niti prekinuta ponogo dobijanje lock-a nad objektom } wait() ā nit oslobadja lock na objektu i blokira se/Äeka. Druge niti mogu da dobiju lock na objektu i promene njegovo stanje, neki uslov... notify() ā metoda budi jednu nit koja Äeka u redu na ovom objektu, ali ta nit nakon budjenja mora da saÄeka da se oslobodi lock notifyAll() ā metoda budi sve niti koje Äekaju na ovom objektu ā koje su izvrÅ”ile wait() Nakon notifyAll, probudjene niti Äekaju prvo da se oslobodi lock nad objektom, pa onda jedna po jedna dobija lock i mogu da nastave dalje ako je uslov ispunjen!. Probudjene niti proveravaju uslov u while petlji i može se desiti da se opet blokiraju, ako uslov nije ispunjen ā možda ima viÅ”e uslova za razne niti! 15. Primeri i zadaci implementacije proizvoÄaÄa-potroÅ”aÄa u Javi koriÅ”Äenjem uslovnih redova za Äekanje. public class Consumer extends Thread{ private final UnboundedBuffer buffer; ā¦ public void run(){ long prime; while(true){ synchronize (buffer){ while(buffer.isEmpty()) buffer.wait(); prime buffer.take(); } computation(prime); }}} public class Producer extends Thread{ private final UnboundedBuffer buffer; ā¦ public void run(){ ā¦ while (true){ prime = computerNextPrime(prime); synchronize(buffer){ buffer.put(prime); buffer.notifyAll(); } }}} 16. Primeri i zadaci implementacije proizvoÄaÄa-potroÅ”aÄa u Javi koriÅ”Äenjem implementacija Condition i Lock interfejsa U Javi se sa synchronized koriste unutraÅ”nji, tzv. intrinsic lock-ovi.Postoje i eksterni lock-ovi u paketu java.util.concurrent.locks. Fleksibilniji su za upotrebu za neke klase problema.MoguÄnost pokuÅ”aja da se dobije lock, vreme isteka, moguÄnost prekidanja(interrupted). public interface Lock{ void lock(); void lockInterruptibly() throws InterruptedExteption; boolean tryLock(); boolean tryLock(long timeout, TimeUnit unit) throws InterruptedExeption; void unlock(); Condition newCondition(); } Kada se Lock koristi kao zamena za synchronized, tada je Condition zamena za Object metode wait, notify i notifyAll. Nudi moguÄnost viÅ”e redova za Äekanje na jednom Lock-u!Condition omoguÄuje da se neka nit suspenduje, dok je neka druga nit ne probudi ako je promenila neki uslov. Condition condition = lock.newCondition(); //Kreiranje novog uslova condition.await() ā ekvivalent Object.wait(); condition.signal() ā ekvivavelnt Object.notify(); condition.signalAll() ā ekv. Object.notifyAll(); public class ConditionBoundedBuffer{ protected final Lock lock = new ReentrantLock(); // CONDITION PREDICATE: notFull (count < items.length) private final Condition notFull = lock.newCondition(); // CONDITION PREDICATE: notEmpty (count > 0) private final Condition notEmpty = lock.newCondition(); private final T[] items = (T[]) new Object[BUFFER_SIZE]; private int tail, head, count; 17. Primeri i zadaci implementacije proizvoÄaÄa-potroÅ”aÄa u Javi koriÅ”Äenjem BlockingQueue-a. KoriÅ”Äenje uslovnih redova za Äekanje preko Object metoda ili Condition može da bude izazovno za pisanje korektnih programa. Sinhronizacija izmedju proizvodjaÄa i potroÅ”aÄa se može postiÄi lakÅ”e sa nekom od implementacijom BlockingQueue intefejsa.BlokirajuÄe metode take i put za uzimanje i smeÅ”tanje objekata u red, ako je red prazan ili pun respektivno.NeblokirajuÄe metode sa tajmaoutom: boolean offer(E e) ili offer(e, timeoutMs, timeUnit) E poll(long timeout, TimeUnit unit) ā vraÄa null ako je prazan red FIFO implementacije ArrayBlockingQueue i LinkedBlockingQueue. Preko reda: PriorityBlockingQueue 18. Realizacija problema Äitaoca i pisaca preko ReadWriteLock-a. Ne postoji problem kod Äitanja deljene promenljive izmedju viÅ”e niti.Postoji problem kod upisa u deljenu promenljivu izmedju viÅ”e niti.Postoji problem kod upisa i Äitanja deljene promenljive izmedju viÅ”e niti. Äitaoci ā samo Äitaju; Pisci ā Äitaju i piÅ”u. Ideja: pustiti viÅ”e Äitaoca da konkurentno pristupa deljenim promenljivama, bez medjusobnog iskljuÄivanja, ako nema pisaca. Samo prvi Äitalac zahteva medjusobno iskljuÄivanje. Ako naidju drugi Äitaoci, nije potrebno medjusobno iskljuÄivanje. Ako naidje jedan pisac, on Äe Äekati dok svi Äitaoci ne izadju iz kritiÄne sekcije. Ako je jedan pisac u kritiÄnoj sekciji, Äitaoci moraju da saÄekaju. Ima dosta primera kada je operacija Äitanja ÄeÅ”Äa od upisa podataka ā primer lookup operacije.Implementacija preko Read-Write lock-a! public class ReadWriteMap { private final Map map; private final ReadWriteLock lock = new ReentrantReadWriteLock(); private final Lock r = lock.readLock(); private final Lock w = lock.writeLock(); public ReadWritemap(Map map){ this.map = map; } } 19. Osobine StampedLock-a i njegova primena StampedLock je kreiran da bi se joÅ” viÅ”e poboljÅ”ale performanse. Prilikom poziva writeLock() i readLock() vraÄa se kao rezultat vremenski trenutak (stamp) kada je dobijen lock i sa tom vrednoÅ”Äu se poziva unlockWrite(long stamp) odn. unlockRead(long stamp). Takodje, nudi moguÄnost nadogradnje sa read na write lock, ako druge niti ne drže read lock istovremeno OptimistiÄko Äitanje: Pozivom tryOptimisticRead() pokuÅ”ava se dobiti dozvola za Äitanje ako nema aktivnog write lock-a, kao rezultat se dobija vremenski stamp.Nakon toga se Äitaju promenljive i pozivom validate(stamp) proverava se da li je u medjuvremenu bio write lock. 20. Primeri i zadaci sa StampedLock-om public class OptimisticLocking{ private final StampedLock sl = new StampedLock(); public double optimisticRead(){ long stamp = sl.tryOptimisticRead(); // dobijen vremenski trenutak double currentState1 = state1, currecntState2 = state2. ā¦ etc.; // citanje promenjljivih u lokane prom. if(!sl.validate(stamp)){ // da li je bilo write-locka u medjuvremenu? Stamp = sl.readLock(); // ako je bio, onda moramo pesimisticki try{ currentState1 = state1; currentState2 = state2, ā¦ etc.; } finally{ sl.unlockRead(stamp); }} return calculateSomething(state1, state2); } public class OptimisticLocking{ private final StampedLock sl = new StampedLock(); public double distanceFromOrigin(){ long stamp = sl.tryOptimisticRead(); double currentX = x, currentY = y; if(!sl.validate(stamp)){ stamp = sl.readLock(); try{ currentX = x; currentY = y; } finally { sl.unlockRead(stamp); }} return Math.sqrt(currentX * currentX + currentY * currentY); }} 21. Primer particionisanja lock-a (StripedLock) kod struktura podataka sa velikim brojem elemenata Ako imamo neku kolekciju sa veÄim brojem objekata, poželjno je da podelimo lock u odredjeni broj lock-ova, kako bismo zakljuÄavali samo delove te kolekcije.Ova tehnika se zove lock stripping.Na taj naÄin možemo imati isti broj konkurentnih niti pisaca, kao Å”to smo kreirali lock-ova. Svaki takav lock se odnosi na deo kolekcije i time izbegavamo da zakljuÄamo celu kolekciju, jer tipiÄno se pristupa samo jednom elementu ili manjem broju elemenata. Primer implementacije: ConcurrentHashMap sa nizom od 16 lokova. public class StripedLock{ private static final int N_LOCKS = 16; private final Node[] buckets; private final Object[] locks; private static class Node { ā¦ } public StripedMap(int numBuckets){ buckets = new Node[numBuckets]; locks = new Object[N_LOCKS]; for (int i = 0; i < N_LOCKS; I++) locks[i] = new Object(); } Primer sa velikim brojem elemenata public class StripedLock{ public void clear(){ for(int i = 0; i < buckets.length; i++){ synchronized (locks[i % N_LOCKS]){ buckets[i] = null; }}}} private final int hash(Object key) { int hash = hash(key); synchronized (locks[hash % N_LOCKS]){ for(Node m = buckets[hash]; m != null; m = m.next) if(m.key.equals(ke)) return m.value; return null; 22. Primeri i zadaci sa implementacijom barijere preko CountDownLatch u Javi. public static void main(String[] args){ BlockingQueue transactionsQueue = new LinkedBlockingQueue(BOUND); CountDownLatch synchronizer = new CountDownLatch(NUM_PAYMENT_CLIENTS); ConcurrentHashMap bankAccounts = initAccounts(MAX_ACCOUNT_ID); for(int i = 0; i < NUM_PAYMENT_CLIENTS; i++){ Thread t = new Thread(new PaymentClient(transactionsQueue, synchronizer, MAC_ACCOUNT_ID, MAX_AMOUNT, MAX_PAYMENTS)); ā¦} Thread[] tWorkers = new Thread[N_WORKERS]; for (int i = 0; ireceive(m) 12. Opisati algoritam rada Lamportovog logiÄkog Äasovnika na nekom procesu i koja su osnovna svojstva tog vremena. Algoritam izvrsavanja: a) inicijalizacija logickog casovnika procesa Pi, Li = 0 b) inkrementiranje Li, pre izvrsavanja nekog dogadjaja Pi c) dodavanje t=Li prilikom svakog slanja poruke m kod Pi d) kod prijema poruke m sa vremenom t, setuje Li = max (t, Li), zatim inkrementira Li pre dodeljivanja vremenskog ziga dogadjaju receive(m) Svojstva: monotonost, konzistentnost, totalno uredjenje, brojanje dogadjaja. 13. Opisati algoritam rada vektorskog Äasovnika na nekom procesu i koja su osnovna svojstva tog vremena. a) Inicijalizacija Vi[j]=0 za i,j =1,2,3,..,N b) pre dodeljivanja vremenskog ziga nekom dogadjaju,Pi inkrementira Vi[i] c) Pi ukljucuje t = Vi prilikom slanja svake poruke d) po dobijanju poruke sa vektorskim casovnikom V, postavlja Vi[j] = max(Vi[j],V[j]) za svako j = 1,2,3ā¦N Svojstva: parcijalno uredjenje, tacnost, monotonostā¦ 14. Kako se vrÅ”i poreÄenje vektorskih vremenskih žigova? V=Vā akko V[j] = Vā[j] za j=1, 2, ā¦, N Vā¤Vā akko V[j] ā¤ Vā[j] za j=1, 2, ā¦, N V multicast(m2). Kauzalni multicast - ako multicast(m1) -> multicast(m2) onda m1 mora da bude isporucen pre m2. Multicast sa totalnim redosledom - ako je m1 isporucen prvi na jedan cvor, onda mora i na ostalim cvorovima da bude prvi isporucen. Multicast sa FIFO- totalnim rasporedom - kombinacija FIFA i totalnog rasporeda. 6. Dati dijagram i opis FIFO broadcast-a. Poruke poslate sa istog Ävora moraju biti isporuÄene po redu kako su poslate. Poruke poslate sa razliÄitih Ävorova mogu biti isporuÄene u bilo kom redosledu 7. Dati dijagram i opis kauzalnog broadcast-a. Kauzalno ureÄene poruke moraju biti isporuÄene u kauzalnom redosledu. Konkurentne poruke mogu biti isporuÄene u bilo kom redosledu. 8. Dati dijagram i opis broadcast-a sa totalnim redosledom/FIFO-totalnim rasporedom Primenjuje se konzistencija na Ävorovima. Mora biti isti redosled isporuke poruka na svim Ävorovima. Ovo ukljuÄuje i isporuku sopstvenih poruka Ävorova Ovde je ispunjen i multikast sa FIFO-totalnim redosledom poÅ”to je m1 isporuÄen pre m3 9. Dati opis jednostavnog broadcast algoritma. Koji problem može nastati i kako se on reÅ”ava sa željno pouzdanim broadcast algoritmom? Cvor koji multikastuje salje poruku direktno svakom cvoru. Problem: ako se poruka izgubi, a cvor padne pre nego sto je posalje ponovo, neki cvor moze da nikada ne primi poruku. Resenje: prvi put kada cvor primi poruku, on je multikastuje ka svakom drugom cvoru. 10. Koje su osobine i naÄin funkcionisanja epidemijskog (gossip) broadcast algoritma? Osobine: optimizovan za toleranciju na otkaze, efikasan u smislu vremena, koristi mali propusni opseg, visoka verovatnoca da ce poruka biti isporucena na svim cvorovima. Funkcionisanje: a) cvor koji multikastuje salje poruke slucajno odabranim cvorovima iz fiksnog skupa,b) algoritam ne garantuje strogu isporuku svih cvorovima, ali pazljivim izborom parametra, velika je verovatnoca da ce se poruka isporuciti svim cvorovima. 11. Kako se može realizovati broadcast sa totalnim redosledom? Pristup sa jednim liderom: jednostavnost, sistem sa malim brojem cvorova i aplikacije gde je potrebna visoka konzistentnost. Pristup sa Lamportovim casovnikom: velike DS gde otpornost na otkaze i decentralizaciju imaju prednost i aplikacije koje zahtevaju visoku toleranciju. Distribuirano uzajamno iskljuÄivanje 1. Kada je neophodno primeniti distribuirano uzajamno iskljuÄivanje i koja postoje ograniÄenja? Da bi se sprecilo da resurs bude ostecen tj. Da dodje do nekonzistentnosti stanja, potrebno je procesima odobriti uzejamno iskljuciv pristup ka resursu. 2. Koje zahteve treba da ispune algoritmi distribuiranog uzajamnog iskljuÄivanja? Koji su od tih zahteva obavezni, a koji poželjni? Potrebno je obezbediti da samo jedna nit/proces izvrsava odredjeni deo koda koji se naziva kriticna sekcija. Bezbednost (neophodna), napredak (neophodan) i fer izvrsavanje-redosled (pozeljno). 3. Koji su parametri za evaluaciju performansi algoritama distribuiranog uzajamnog iskljuÄivanja? Kompleksnost poruka, kasnjenje sinhronizacije, vreme odziva i sistem propusnog opsega. 4. Opisati algoritam za distribuirano uzajamno iskljuÄivanje sa centralnim serverom, koje zahteve ispunjava i koje su njegove performanse. Server: primanje zahteva za ulazak u KS od procesa Pi i primanje tokena od procesa Pi. Zahtevi: bezbednost i napredak. Performanse: ogranicenja, kompleksnost poruka, kasnjenje sinhronizacije i vreme odziva. 5. Opisati algoritam za distribuirano uzajamno iskljuÄivanje na bazi prstena, koje zahteve ispunjava i koje su njegove performanse. Procesi su uredjeni u logicki prsten: svaki proces Pi ima komunikacioni kanal ka sledecem procesu P(i + 1) mod N. Zahtevi: bezbednost i napredak. Performanse: kompleksnost poruka, vreme odziva i kasnjenje sinhronizacije. 6. Opisati Ricart-Agrawala algoritam za distribuirano uzajamno iskljuÄivanje, koje zahteve ispunjava i koje su njegove performanse. Opis: stanje algoritma (released, wanted, held), ulazak u KS, izlazak iz KS, obrada podataka. Zahtevi: bezbednost, napredak i redosled. Performanse: kompleksnost poruke, vreme odziva, kasnjenje sinhronizacije i propusni opseg. 7. Opisati Maekawa algoritam za distribuirano uzajamno iskljuÄivanje, koje zahteve ispunjava i koje su njegove performanse. Zahteva se dozvola (replay) poruka samo od nekih procesa u grupi (skup glasaca). Zahtev: bezbednost. Performanse: propusni opseg, vreme odziva i sinhronizacija kasnjenja. Replikacija 1. Å ta je replikacija i koji su sve razlozi za njeno koriÅ”Äenje? Koje zahteve treba da ispuni replikacija? Replikacija - odrzavanje kopije istog podatka na vise cvorova. Razlozi: poboljasnje performansi, uvecana dostupnost, smanjena osetljivost na otkaze. Zahtevi: transparentnost i konzistencija. 2. Koji postoje naÄini za otklanjanje duplih zahteva za promenu podataka? Zahtevi se pamte u stabilnom skladistu podataka, pa se dupli zahtevi mogu detektovati cak i nakon oporavka. Drugi nacin: radi otklanjanja duplikata je da zahtevi budu idempotentni. 3. Å ta su idempotentni zahtevi za promenu podataka? Koja su ograniÄenja idempotentnosti? Oni se mogu ponoviti bez pojave duplikata, ogranicenje na vise update-a u toku i dodavanje/ uklanjanje replika 4. Objasniti princip rada anti-entropije kod distribuiranih sistema sa replikacijom (obratiti pažnju na vremenske žigove i markere). U mnogim sistemima sa replikacijom, replike izvrsavaju protokol za detekciju i poravnanje razlika, tako da na kraju imaju konzistentne kopije podataka. Na osnovu markera moze se napraviti razlika izmedju obrisanih i podataka koji nisu kreirani. Na osnovu vremenskih zigova, mozemo reci koja verzija podataka je novija. 5. Dati formulu verovatnoÄe kvara kod Ävorova i dostupnost Ävorova u sistemu sa replikacijom. Verovatnoca da sve otkazu je p^n. Verovatnoca da jedan ili vise otkaze 1 -(1-p)^n. Dostpunost: 1 -p, a dostupnost za jednog ili vise 1 - p^n. 6. Koje uslove treba ispuniti radi postojanja konzistencije replika kod upisa i Äitanja podataka? Da bi se obezbedila konzisentna replika, neophodno je da se operacije cuvaju u linearnom i hronoloskom redosledu, sto osigurava da svaka operacija citanja vidi najnoviju upisanu vrednost. 7. Koji modeli replikacije postoje? Pasivna - koristi se primarna replika. Aktivna - sve replike se tretiraju identicno. 8. Dati opis pasivne replikacije. Poseduje: primarnu replikaciju (lidera), sekundarne replikacije, komunikaciju i otkaz lidera. Primena:transakcije se izvrsavaju na lideru u totalnom rasporedu i promene se brodcastuju pratiocima koji ih primenjuju po redosledu. 9. Dati opis aktivne replikacije. Osigurava da sve aplikacije obradjuju zahteve identicno i u istom redosledu, sto obezbedjuje konzistentnost podataka i otpornost na otkaze pojedinacnih replika. 10. Opisati problem konzistencije Äitanje-posle-upisa i kako se on reÅ”ava kod distribuiranog sistema sa viÅ”e replika. Klijent izvrsi operaciju upisa na replici. Odmah nakon toga isti klijent pokusava da procita podatke sa druge replike koja mozda nije jos azurirana sa novim podacima. Ove stvari narusavaju konzistentnost. Resenje: read-one/ write-all, sinhronizovana replikacija, operacije citanja i mehanizam potvrde. 11. Opisati uslove za kvorum konsenzus protokol. Osigurava konzistentnost i integritet podataka u DS kroz definisanje minimalnog broja replika potrebnih za operaciju citanja i upisa. Uslov: Qr + Qw>S i 2*Qw>S. 12. Opisati tehniku oporavak Äitanja(read recovery) za sinhronizaciju replika. Obezbediti da sve replikacije budu sinhronizovane sa najnovijim podacima, cime se poboljsava konzistentnost i pouzdanost DS. Klijent obavlja ovu tehniku nakon svakog zahteva za citanje ako primeti nesuglasenost odgovora ili nedostatak odgovora od nekih replika. 13. Opisati postupak replikacije maÅ”ine stanja. Obezbedjuje da sve replike u sistemu ostanu sinhronizove i konzistentne tako sto se operacije izvrsavaju u istom redosledu i na isti nacin na svim replikama. Visoka pouzdanost i otpornost na greske u DS. Konsenzus 1. ZaÅ”to su neophodni konsenzus algoritmi u sistemu sa replikovanim serverima? Pouzdanost i dostupnost, doslednost podataka, rukovanje otkazima, detekcija i oporavak od gresaka. 2. Opisati Paxos konsenzus algoritam ā uloge i koraci. Uloga: predlagac - predlaze vrednosti ka prihvatacima, prihvatac - prihvata/ odbija predlozene vrednosti i ucenici - uce vrednosti. Koraci: 1 izbor replike koja ce biti lider, 2 lider uzima vrednost i brodkastuje je ka svim replikama u accept poruci, 3 ako vecina replika potvrdi lideru, postignut je konzensus. 3. Opisati faze Prepare, Accept i Commit Paxos protokola. Prepare: predlagac salje prihvatacima vrednost. Accept: prihvataju prihvatace. Commit: vrednost postoje odlucena kad vecina prihvati. 4. Koje su uloge Ävorova u Raft protokolu i kako se vrÅ”i tranzicija? Uloge: lider - upravlja operacijama, kandidat - hoce da postane lider i pratilac - odgovor na njihove zahteve. Tranzicija: pratioca -> kandidat po isteku tajmaouta bez cuvanja kontakta sa liderom, kandidat->lider ako dobije vecinu glasova, kandidat -> pratioc ako dobije RPC poziv od novog lidera sa vecim term-om 5. Koja je uloga terma kod Raft protokola? ID terma, azuriranje informacija i jedinstven lider. 6. Å ta sadrži jedan ulaz u logu kod Raft protokola? Index - poziciju, term i komandu - operaciju koju izvrsava. 7. Koje su normalne operacije kod Raft protokola? Lider dodaje unose na log pratioca, request vote RPC kandidat trazi glasove. 8. Koje osobine poseduju log-ovi na razliÄitim Ävorovima u Raft prokotolu? Identicnost i konzistentnost. 9. Navesti bezbedonosne zahteve za konsenzus logova u Raft prokokolu. Jedinstven lider po term-u. Unosi commit-ovani od strane lidera ce ostati commit-ovan. Logovi moraju biti identicni na svim cvorovima za commit-ovane unose. 10. Kako se vrÅ”i izbor najboljeg lidera u Raft protokolu? Kompletnost loga i vecina glasova. 11. Koje pravilo postoji kod Raft protokola da bi neki ulaz u logu bio komitovan? Mora biti sacuvan na vecini cvorova. Mora biti novi unos iz trenutnog term-a lidera koji je sacuvan na vecini cvorova. Konzistencija replika 1. Koja je osobina linearizabilnosti kod sistema sa replikovanim Ävorovima i koje su prednosti i nedostaci? Operacija ima trenutak u vrednosti kada se cini da je izvrsena automatski. Prednosti: jednostavnost za programiranje i debagovanje. Mane: visoka cena performansi, ogranicena skalabilnost i dostupnost. 2. Opisati ABD algoritam za linearizabilnost kvoruma Äitanja i upisa koriÅ”Äenjem oporavka Äitanjem. Citanje: klijent salje zahtev za citanje kvoruma replika. Ako dobije neusaglasen odgovor ili neke replike - ne odgovaraju koristi najnoviju vrednost. Upis: klijent salje zahtev za upis oporavak citanjem; ako klijent dobije neusaglasene/ nedovoljnoe onda ponovlja upis sa najnovijim vrednostima svim replikama. 3. Å ta tvrdi SAR teorema? Dati primer aplikacije koja to ilustruje. SAR teorema tvrdi: Da je nemoguÄe da distribuirani sistem istovremeno obezbedi sve tri od sledeÄih osobina: konzistentnost, dostupnost i tolerancija na mrezne particije. 4. Å ta karakteriÅ”e sistem sa konaÄnom konzistentnoÅ”Äu (eventual consistency) i sa jakom konaÄnom konzistentnoÅ”Äu? KonaÄna Konzistentnost (Eventual Consistency): Osobine: Sistem osigurava da Äe sve replike na kraju konvergirati ka istom stanju ako ne postoje novi upisi.Primer: Sistemi za replikaciju podataka koji omoguÄavaju brzu dostupnost, ali mogu vratiti zastarele podatke.Jaka KonaÄna Konzistentnost:Osobine: Garantuje da Äe svaka ispravna replika obraditi svaki update i da Äe bilo koje dve replike koje su obradile isti set update-a biti u istom stanju.Primer: Sistemi koji koriste mehanizme kao Å”to je kauzalni brodkast da bi osigurali da se svaki update na kraju primeni na sve replike. Transakcije 1. Opisati dvofazni protokol komitovanja (two-phase commit protocol) uz dijagrame. Faza 1: Priprema (Prepare Phase) Koordinator: Å”alje PREPARE poruku svim Ävorovima (uÄesnicima). UÄesnici: svi Ävorovi zapisuju transakciju i Å”alju odgovor VOTE_COMMIT ili VOTE_ABORT koordinatoru. Faza 2: Komitovanje (Commit Phase) Koordinator: ako su svi uÄesnici glasali VOTE_COMMIT, Å”alje COMMIT poruku svima; ako je neki uÄesnik glasao VOTE_ABORT, Å”alje ABORT poruku. UÄesnici: izvrÅ”avaju komit ili prekid (abort) u zavisnosti od primljene poruke i potvrÄuju koordinatoru. 2. Koje su ACID osobine transakcija? Atomicnost, konzistentnost, izolacija i trajnost. 3. Å ta je serijalizabilno izvrÅ”avanje transakcija? Serijalizabilnost: IzvrÅ”avanje transakcija je serijalizabilno ako rezultat izvrÅ”avanja transakija odgovara nekom serisjkom redosledu transakcija, tj. kao da su se izvrÅ”avale jedna po jedna. 4. Koji su efekti loÅ”ih rasporeda izvrÅ”avanja transakcija? Izgubljeni upisi, prljavo citanje i neusaglaseno citanje. 5. Koji su naÄini izolacije transakcija? Dvofazno zakljucavanje, redosled preko vremenskih zigova, optimisticka kontrola konkurentnosti. 6. Opisati izvrÅ”avanje transakcija sa dvofaznim zakljuÄavanjem (2PL) i koji su potencijalni problemi. Faza Å”irenja: Transakcija zakljuÄava resurse (objekte).Faza skupljanja: Transakcija otkljuÄava resurse nakon zavrÅ”etka.Problem: Deadlock: Dve ili viÅ”e transakcija Äekaju na resurse koje su zakljuÄale druge transakcije. 7. Opisati poboljÅ”anje kod striktnog (strožijeg) 2PL protokola. ZakljuÄavanje: ZakljuÄavanje resursa kao i u 2PL.OtkljuÄavanje: Svi zakljuÄani resursi ostaju zakljuÄani do kraja transakcije (komitovanja ili prekida). 8. Opisati izvrÅ”avanje transakcija sa redosledom preko vremenskih žigova (Time Stamp Ordering) TSO. Dodela vremenskih žigova: Svaka transakcija dobija vremenski žig pri poÄetku.Provera vremenskih žigova: Transakcije se izvrÅ”avaju u skladu sa redosledom vremenskih žigova. Ako transakcija pokuÅ”a da pristupi resursu sa starijim žigom, ona se prekida. 9. Opisati izvrÅ”avanje transakcija sa optimistiÄkom kontrolom konkurentnosti (Optimistic Concurrency Control) OCC. Faza izvrÅ”avanja: Transakcije izvrÅ”avaju na kopijama podataka. Faza validacije: Proverava se da li su promene u skladu sa ostalim transakcijama. Faza komitovanja: Ako validacija proÄe, promene se primenjuju; inaÄe se transakcija ponavlja. 10. Kako se ostvaruju ACID osobine kod distribuiranih transakcija? Atomicnost, konzistentnost, izolacija i trajnost. 11. Opisati kljuÄne osobine Google Spanner distribuiranih transakcija: read-only transakcije, MVCC tehniku redosleda izvrÅ”avanja transakcija, TrueTime tehniku za vremenske žigove sa intervalom neizvesnosti fiziÄkog Äasovnika. Read-Only Transakcije: Koriste MVCC i Äitaju iz konzistentnog snimka (snapshot).MVCC (Multi-Version Concurrency Control): Äuvanje viÅ”e verzija podataka sa vremenskim žigovima. TrueTime: Koristi vremenske žigove sa intervalom neizvesnosti za sinhronizaciju transakcija. 12. Koje su osobine dugih poslovnih transakcija i kako se kod njih primenjuje Saga patern? Duge poslovne transakcije: Traju duže i ukljuÄuju viÅ”e koraka. KoriÅ”Äenje Saga paterna za upravljanje kompleksnim transakcijama. Saga patern: Sekvenca lokalnih transakcija sa kompenzacionim koracima za otkaz. 13. Opisati Saga patern baziran na koreografiji. Lokalne transakcije publikuju domenske dogaÄaje. Druge transakcije sluÅ”aju i reaguju na te dogaÄaje. 14. Opisati Saga patern baziran na orkestraciji. Centralni orkestrator upravlja tokom transakcija. Orkestrator odreÄuje redosled i upravlja kompenzacijom u sluÄaju otkaza. Peer-to-Peer sistemi 1. Opisati princip konzistentnog heÅ”iranja i gde se primenjuje. Princip: Objekti (fajlovi) i Ävorovi se heÅ”iraju u istom prostoru i mapiraju na krug sa vrednostima od 0 do 2^m ā1, gde je m broj bitova u heÅ” vrednosti. Objekat se mapira na prvi Ävor u pravcu kazaljke na satu Äija heÅ” vrednost je jednaka ili veÄa od heÅ” vrednosti objekta. Primena: Konzistentno heÅ”iranje se koristi u Peer-to-Peer (P2P) sistemima i distribuiranim keÅ” sistemima kao Å”to su Chord, Amazon DynamoDB, i Cassandra za balansiranje optereÄenja i upravljanje skladiÅ”tenjem podataka. 2. Kako se smanjuje varijansa optereÄenosti Ävorova kod konzistentnog heÅ”iranja? Virtuelni Ävorovi: Svaki fiziÄki Ävor se mapira na viÅ”e virtuelnih Ävorova u heÅ” prostoru. Ovo smanjuje varijansu optereÄenja jer svaki fiziÄki Ävor ima viÅ”e Å”ansi da dobije ravnomerniji deo ukupnog optereÄenja 3. Å ta su to peer-to-peer (P2P) sistemi i koje su njihove osobine? Decentralizovana arhitektura,svaki Ävor deluje i kao klijent i kao server,skalabilnost,otpornost na otkaze,dinamiÄko dodavanje i uklanjanje Ävorova. 4. Koje postoje generacije peer-to-peer sistema i koje su njihove osobine? I generacija (Napster): Centralizovani server za indeksiranje fajlova. II generacija (Gnutella, Kazaa, BitTorrent): Potpuno decentralizovani, koriste Å”irokopojasni protok za pretragu i preuzimanje. III generacija (Chord, Pastry, Tapestry, Kademlia): KoriÅ”Äenje strukturiranog pristupa sa distribuiranim heÅ” tablama (DHT) za efikasno rutiranje i pretragu. 5. Koje su osobine Napster P2P sistema? Centralizovan server, pretraga i preuzimanje. 6. Opisati Gnutella P2P sistem. Potpuno decentralizovan: Nema centralnog servera. Tipovi poruka: Ping (pitanje), Pong (odgovor na pitanje), Query (upit za pretragu), QueryHit (odgovor na upit).Plavanje (Flooding): Upiti se Å”alju svim susednim Ävorovima koristeÄi ograniÄenje TTL (time-to-live). 7. Kako se vrÅ”i mapiranje objekata-fajlova na Ävorove kod Chord peer-to-peer sistema? Chord: Koristi SHA-1 heÅ” funkciju za mapiranje i Ävorova i kljuÄeva u isti heÅ” prostor. KljuÄ se mapira na prvi Ävor Äija heÅ” vrednost je veÄa ili jednaka heÅ” vrednosti kljuÄa (successor). 8. Primer: Na koje Ävorove Äe se mapirati fajlovi sa vrednoÅ”Äu kljuÄa HH i YY, ako postoje Ävorovi kao na slici kod Chord P2P sistema. Ako imamo Ävorove sa ID vrednostima 0, 1, 3, 5 i 6: KljuÄ XX: Ako je heÅ” XX 4, on Äe biti mapiran na Ävor 5 (successor 4). KljuÄ YY: Ako je heÅ” YY 2, on Äe biti mapiran na Ävor 3 (successor 2). 9. Opisati pretragu kod Chord P2P sistema preko finger tabela. Finger tabele: Svaki Ävor održava finger tabelu sa m unosa koji pomažu u brzom pronalaženju successora za zadati kljuÄ. Pretraga poÄinje od trenutnog Ävora i Å”alje zahtev najdaljem Ävoru u finger tabeli koji ne prelazi traženu vrednost, ponavljajuÄi proces sve dok se ne naÄe traženi kljuÄ. 10. Kako se vrÅ”i pretraga kljuÄeva u uslovima otkaza Ävorova kod Chord P2P sistema? Replikacija: Kopije kljuÄeva se Äuvaju na viÅ”e Ävorova (npr. r prethodnika i r sledbenika). ViÅ”estruki unosi u finger tabelama: Održavanje viÅ”e unosa za svaki Ävor, omoguÄavajuÄi koriÅ”Äenje sledeÄeg u sluÄaju otkaza. 11. Dati primer pridruživanja novog Ävora kod Chord P2P sistema. Pridruživanje Ävora: Novi Ävor kontaktira postojeÄi Ävor, inicira stabilizacioni proces da ažurira finger tabele i preuzme odgovarajuÄe kljuÄeve. Primer: Novi Ävor N40 kontaktira Ävor N46. N46 ažurira svoj successora na N40. N40 inicijalizuje svoju finger tabelu i preuzima kljuÄeve od N46. Svi Ävorovi ažuriraju svoje finger tabele da ukljuÄe N40 Key-Value skladiÅ”ta i NoSQL sistemi 1. Koje su osobine key-value skladiÅ”ta? Princip rada: SkladiÅ”tenje podataka u formatu parova kljuÄ-vrednost. Struktura: PodseÄa na reÄnik ili heÅ” tabelu, gde se vrednost pristupa preko jedinstvenog kljuÄa. Operacije: Osnovne operacije su get(key), put(key, value), i delete(key). Skalabilnost: Lako se skaliraju horizontalno (scale out) dodavanjem novih Ävorova. Fleksibilnost: Ne zahtevaju fiksnu Å”emu (schema-less), mogu skladiÅ”titi bilo koji tip podataka. Primena: KoriÅ”Äenje u sistemima gde su brzina i jednostavnost pristupa podacima kljuÄni, npr. keÅ”iranje, sesije, inventari. 2. Koji su tipovi NoSQL reÅ”enja? KljuÄ-vrednost skladiÅ”ta: Amazon DynamoDB, Redis, Riak. Kolumnska skladiÅ”ta: Google BigTable, Cassandra, HBase. SkladiÅ”ta dokumenata: MongoDB, CouchDB. Grafovske baze podataka: Neo4J, Amazon Neptune. 3. Opisati Bloom filter, njegove osobine i primenu. Struktura: Sastoji se od velikog bit-vektora i nekoliko heÅ” funkcija. Operacije: Insert: Za svaki element koji se dodaje, primenjuje se nekoliko heÅ” funkcija koje odreÄuju pozicije u bit-vektoru koje se postavljaju na 1.Check: Za proveru prisustva elementa, heÅ” funkcije se primenjuju na element, i ako su sve odgovarajuÄe pozicije u bit-vektoru 1, element je verovatno prisutan; u suprotnom, sigurno nije prisutan. Osobine: lazni pozitivni, lazni negativni i efikasnost. Primena: kesiranje, detekcija spama, sistem za preporuke, NoSQL baze. Procesiranje velike koliÄine podataka u klasteru 1. Å ta karakteriÅ”e Big Data ? Volume, Velocity, variety i veracity. 2. Å ta karakteriÅ”e MapReduce paradigmu obrade podataka? Map (Map): Funkcija koja obraÄuje ulazne podatke i proizvodi skup kljuÄ-vrednost parova. Smanji (Reduce): Funkcija koja agregira i obraÄuje skup parova koje je proizvela map funkcija. Tok podataka: Ulazni podaci se Äitaju iz distribuiranog skladiÅ”ta, meÄurezultati se Äuvaju na lokalnim diskovima, a finalni rezultati se smeÅ”taju u distribuirano skladiÅ”te. 3. Koji je tok podataka tokom izvrÅ”avanje MapReduce poslova kod Hadoop platforme? (Odakle se Äitaju, gde se smeÅ”taju meÄurezultati, gde se smeÅ”tati finalni rezultati). Äitanje podataka: Ulazni podaci se Äitaju iz Hadoop Distributed File System (HDFS). Map: Obrada podataka kroz map zadatke, meÄurezultati se Äuvaju na lokalnim diskovima. Smanji: Map zadaci Å”alju podatke smanji zadacima koji agregiraju i obraÄuju rezultate. Finalni rezultati: Finalni rezultati se Äuvaju u HDFS ili drugom stabilnom skladiÅ”tu. 4. Opisati arhitekturu Apache Spark platforme za procesiranje u klasteru ili cloud-u. Driver program: Glavni program koji koordinira izvrÅ”avanje zadataka. SparkContext: Komunicira sa klaster menadžerom (YARN, Mesos, Kubernetes). Executors: IzvrÅ”avaju zadatke na Ävorovima u klasteru. Cluster Manager: Upravlja resursima u klasteru. 5. Kako se vrÅ”i paralelno procesiranje podataka u Apache Spark-u? Particionisanje: RDDs se dele na particije koje se obraÄuju paralelno na razliÄitim Ävorovima. Transformacije: Primena lentivnih transformacija (map, filter, join) kreira nove RDDs. Akcije: Akcije kao Å”to su count, collect, save iniciraju izvrÅ”enje transformacija. 6. Koje su prednosti Apache Spark platforme u odnosu na Hadoop platformu? Brzina, interaktivna analiza, jednostavnost i fleksibilnost. 7. Koje su kljuÄne apstrakcije podataka kod Apache Spark platoforme? RDD (Resilient Distributed Dataset): Kolekcija ne-promenljivih objekata. DataFrame: Kolekcija podataka sa poznatom Å”emom, sliÄno tabeli u relacionoj bazi. Dataset: Apstrakcija sliÄna RDD-u, ali sa boljom optimizacijom i integracijom sa DataFrame-om. 8. Opisati koji sve tipovi operacija postoje kod Apache Spark platforme nad DataSet/RDD kolekcijama i u Äemu je razlika izmeÄu tih operacija? Transformacije i akcije. 9. Å ta oznaÄava tzv. lineage nekog Dataset/RDD-a? Lineage oznaÄava istoriju transformacija koje su primenjene na Dataset/RDD. Ovo omoguÄava rekonstrukciju RDD u sluÄaju otkaza Ävora. 10. ŠŠ°Š²ŠµŃŃŠø Š½ŠµŠŗŠµ Apache Spark Š¾ŠæŠµŃŠ°ŃŠøŃŠµ. map: Primena funkcije na svaki element RDD-a. filter: Filtriranje elemenata RDD-a na osnovu uslova. reduce: Agregacija elemenata RDD-a koriÅ”Äenjem binarne funkcije. 11. Kako se ostvaruje otpornost na otkaze kod Apache Spark platforme? Spark koristi lineage informacije kako bi rekonstruisao izgubljene particije RDD-a ponovnim izvrÅ”avanjem transformacija. 12. Koji sve programski modeli postoje u Apache Spark-u i koja je njihova namena? Spark SQL: Rad sa strukturiranim podacima i SQL upitima. Spark Streaming: Obrada strimova podataka u realnom vremenu. GraphX: Analiza i obrada grafova. MLlib: Biblioteka za maÅ”insko uÄenje. 13. Koja je prednost jedinstvene platforme za Big Data obradu kao Å”to je Apache Spark u odnosu na specijalizovane platforme za odreÄene vrste podataka? Unificiranje obrade: Kombinacija razliÄitih tipova obrade podataka (SQL, striming, grafovi, maÅ”insko uÄenje) u jednoj platformi. Efikasnost: Izbegavanje troÅ”kova prenosa podataka izmeÄu razliÄitih specijalizovanih platformi. Jednostavnost razvoja: Razvoj aplikacija je lakÅ”i jer sve komponente koriste istu infrastrukturu i programski model.