Key-value baze podataka Flashcards

1
Q

Zašto se za ključ ne preporučuje da bude kompleksna struktura?

A

Zato što to izaziva neke druge probleme, donosi dodatni overhead prilikom pretrage. Što je ključ veći, to više poređenja imamo prilikom pretrage po ključu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Šta je glavna razlika u odnosu na relacione baze podataka?

A

Glavna razlika je to što se pretraživanje vrši isključivo na osnovu vrednosti ključa, u najvećem broju slučajeva nije moguće vršiti pretraživanje po sadržaju podatka. Baza podataka nije svesna strukture podataka, odnosno formata, već je sama aplikacija zadužena za interpretiranje te vrednosti. Kod relacionih baza podataka deo obrade može da se prebaci na samu bazu, dok je ovde situacija takva da baza samo pribavlja vrednosti, a za sve ostalo je zadužena sama aplikacija, što ima svojih i prednosti i nedostataka.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Zašto je ovde efikasna pretraga podataka po ključu?

A

Zato što su performanse predvidive. Kolika god da je količina podataka, trebalo bi da imamo otprilike uniformne performanse, nema velikih odstupanja.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Zašto postoji mogućnost jednostavne distribucije podataka po klasteru?

A

Ovde ima smisla primeniti horizontalno skaliranje, pa da podskupovi podataka budu na različitim nodovima. Jednostavno je, zato što možemo da definišemo koji opseg ključeva se nalazi na kom čvoru.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Zašto je ovde fleksibilna šema?

A

U value možemo da sačuvamo šta god. Na osnovu ključa pristupamo vrednosti, a za interpretaciju te vrednosti je zadužena sama aplikacija.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Zašto je prednost memorijska efikasnost?

A

Zato što podaci koji nisu poznati, kolone koje nemaju vrednost se jednostavno ne čuvaju, za razliku od relacionih baza podataka gde te vrednosti moramo da čuvamo kao null.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Zašto se prevazilazi problem object relational impendence mismatch?

A

Zato što čuvamo podatke u onom formatu koji nam najviše odgovara.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Zašto kod Redis-a ne postoji garancija trajnosti podataka?

A

Iako se periodično sadržaj memorije snima na disk, može se desiti da se podaci izgube, zato što se može desiti otkaz pre nego što je obavljena sinhronizacija sa diskom. U tom slučaju će deo podataka nakon poslednje sinhronizacije biti izgubljen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Šta kod Redis-a znači da je implementiran kao single-threaded proces?

A

Single-threaded je u smislu obrađivanja zahteva korisnika, npr. postoje posebne niti za sinhronizaciju sa diskom. Zahtev stiže do Redis-a i on ih obrađuje po FIFO principu, onim redosledom kojim su pristigli, strogo sekvencijalno, jedan za drugim. Ako ima mnogo zahteva, oni se baferuju i redom se obrađuju, zahtev po zahtev. Time se postiže da nema paralelizacije operacija i nema potrebe za bilo kakvim zaključavanjem. Kod relacionih baza podataka, korisnici mogu paralelno da zahtevaju podatke, pa uvodimo mehanizam zaključavanja, što rešava problem, ali donosi dodatni overhead.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kakve ključeve koristi Redis?

A

Koristi binary safe ključeve, odnosno za ključeve se može koristiti bilo koja sekvenca. Treba izbegavati i kratke ključeve, kako bi se povećala čitljivost podataka.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Kako se izvršava replikacija podataka u Redis-u?

A

Imamo jednu master instancu i više slave-ova. Master instance vrše čitanje i modifikaciju podataka, zatim se nakon toga svim slave-ovima prosleđuje skup operacija koji treba da se izvrši tako da se podaci u suštini sinhronizuju sa master čvorom. Ukratko, ne prenose se podaci, već logg-ovi, odnosno operacije.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Šta se može uraditi ukoliko dođe do pada master čvora?

A

Neki od slave čvorova se može proglasiti masterom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Zašto je Redis eventually consistent?

A

Kako se modifikacija podataka vrši samo na master čvoru, slave čvorovi treba da se sinhronizuju sa master instancom, a ta sinhronizacija zahteva neko konačno vreme. Ako bi se konzistentnost zadovoljila, onda bi svaka operacija ažuriranja na masteru trajala dok se ne ažurira na masteru i na svim slave-ovima.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Šta se dodatno postiže replikacijom, osim postojanja backup kopija?

A

Svaki od slave-ova može da se koristi kao read kopija, odnosno možemo da skaliramo operaciju čitanja. Umesto čitanja samo sa master čvora, podatke možemo da čitamo i sa slave čvorova, što praktično znači da možemo da opslužimo više korisničkih zahteva. Replika može da se iskoristi i za modifikaciju podataka, međutim nisu razvijeni mehanizmi za sinhronizaciju slave čvorova sa master čvorom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Šta je Redis Cluster?

A

Redis Cluster se koristi za veliku količinu podataka, pri čemu samo jedna instanca nije dovoljna, već radimo particionisanje podataka na više instanci. Particionisanje se vrši po ključu. On obezbeđuje određeni nivo dostupnosti kada neki od servera u klasteru otkaže. Neki podaci će biti nedostupni, ali će sistem nastaviti da radi. U slučaju otkaza većeg broja čvorova klaster prestaje sa radom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Šta je Redis Sentinel?

A

Osnovna razlika između klastera i Sentinel-a je ta da kod klastera imamo particionisanje podataka jer imamo previše podataka da jedna instanca Redis-a nije dovoljna, dok kod Sentinel-a nemamo previše podataka, dovoljna je jedna instanca, ali želimo pouzdano rešenje. Ta instanca sa podacima će imati replike (kao slave replike) i spremne su da ukoliko master otkaže neka od tih replika preuzme ulogu mastera.
Monitoring - da li su master i slave instance dostupne - detektuje da je master otkazao i jedan slave proglasi za novi master, da minimizuje downtime
Notifikacija - obaveštava administratore sistema da neki čvor nije dostupan
Treba da ima barem jedan master i 2 slave-a, jer ako master otkaže, jedan od slave-ova treba da se postavi za novi master, a da on takođe ima svog slave-a

17
Q

Dynamo - write operacija

A

Kada radimo write, mi se obraćamo nekom čvoru u sistemu. To može da bude geografski najbliži čvor, najmanje opterećeni čvor i taj čvor postaje koordinator operacije. Koordinator generiše novu verziju podatka i vector clock-a, šalje taj zahtev u N čvorova(N kopija tog podataka postoji u sistemu) koji trebaju da obave tu write operaciju. Kada većina tih čvorova odgovori, operacija je uspešna.

18
Q

Dynamo - read operacija

A

Koordinator šalje zahtev za čitanjem u N čvorova koji sadrže repliku podatka. Čvorovi šalju nazad koordinatoru hash podatka. Ako ne postoji razlika u verzijama podatka, onda je to to i podatak se čita. Dovoljno je da je većina čvorova odgovorila. Ako postoji razlika u verzijama podatka, u tom slučaju se konflikti razrešavaju u tom trenutku, definiše se koja je to poslednja verzija podatka i ta verzija se vraća korisniku i upisuje nazad u replike, odnosno radi se read repair.