Key-value baze podataka Flashcards
Zašto se za ključ ne preporučuje da bude kompleksna struktura?
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.
Šta je glavna razlika u odnosu na relacione baze podataka?
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.
Zašto je ovde efikasna pretraga podataka po ključu?
Zato što su performanse predvidive. Kolika god da je količina podataka, trebalo bi da imamo otprilike uniformne performanse, nema velikih odstupanja.
Zašto postoji mogućnost jednostavne distribucije podataka po klasteru?
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.
Zašto je ovde fleksibilna šema?
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.
Zašto je prednost memorijska efikasnost?
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.
Zašto se prevazilazi problem object relational impendence mismatch?
Zato što čuvamo podatke u onom formatu koji nam najviše odgovara.
Zašto kod Redis-a ne postoji garancija trajnosti podataka?
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.
Šta kod Redis-a znači da je implementiran kao single-threaded proces?
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.
Kakve ključeve koristi Redis?
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.
Kako se izvršava replikacija podataka u Redis-u?
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.
Šta se može uraditi ukoliko dođe do pada master čvora?
Neki od slave čvorova se može proglasiti masterom.
Zašto je Redis eventually consistent?
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.
Šta se dodatno postiže replikacijom, osim postojanja backup kopija?
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.
Šta je Redis Cluster?
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.