View
97
Download
1
Category
Preview:
Citation preview
2
Šta je MemSQL?
● Relational Database Management System (RDBMS):– Koristi SQL jezik. ANSI SQL kompatibilan.
● Bazu primarno drži u memoriji.
● Klasterski je orjentisan uz linearnu skalabilnost.● Kompatibilan sa MySQL protokolom:
– Svi MySQL klijenti nativno rade sa njim.
3
Ko stoji iza MemSQL-a?
● Kompanija MemSQL, osnovana 2011. godine.
● Osnivači su dva bivša inženjera iz Facebook-a i Microsoft-a, jedini zaposleni u to vreme.
● Prva verzija MemSQL-a objavljena je aprila 2013. godine.
● Danas kompanija broji preko 100 zaposlenih.● Veliki klijenti: Comcast, Akamai, Pinterest,
Zynga...
4
Problem skalabilnosti baza podataka
● Primer 1: jedan DB server– Vremenom broj upita u bazu
raste.
– Klasične web aplikacije više čitaju iz baze nego što upisuju u nju.
– DB server obično prvo postane usko grlo za čitanje.
– Šta raditi u tom slučaju?
READ
WRITE
5
Problem skalabilnosti baza podataka
● Primer 2: replikacija– Uvesti veći broj slave
servera.
– Mogućnost paralelnog čitanja uz load balancing.
– Upis samo na master server.
– Kako se izboriti sa porastom broja upisa?
READ
WRITE
REPLIC
ATIO
N
6
Sharding?
● Horizontalno particionisanje baze.● Podaci u bazi često ispoljavaju neki oblik lokalnosti.
● Upiti često uzimaju u obzir samo određenu grupu redova u tabeli. Retko sve redove.
● Ideja: razbiti tabele na više kraćih tabela na osnovu nekog kriterijuma.
● Kratke tabele mogu da se smeste u odvojene baze na odvojenim serverima.
7
Primer sharding-a
id klijent grad
01 Klijent 1 Beograd
02 Klijent 2 Beograd
03 Klijent 3 Novi Sad
04 Klijent 4 Novi Sad
05 Klijent 5 Niš
06 Klijent 6 Niš
07 Klijent 7 Niš
id klijent grad01 Klijent 1 Beograd
02 Klijent 2 Beograd
id klijent grad03 Klijent 3 Novi Sad
04 Klijent 4 Novi Sad
id klijent grad05 Klijent 5 Niš
06 Klijent 6 Niš
07 Klijent 7 Niš
DB1
DB2
DB3
8
Problem skalabilnosti baza podataka
● Primer 3: sharding– Razbiti bazu na više
manjih particija.
– Particije rasporediti na više servera.
– Skalabilnost?
– Ogroman broj upisa?
– Real-time analitika?
– MemSQL?READ
WRITE R
EPLIC
ATIO
N
SHARDING
9
● Bazu podataka primarno drži u memoriji:– Brzo izvršavanje upita, nisko vreme odziva.
– Visok nivo paralelizma.
– Pogodno za odradu velike količine podataka ureal-time-u.
● Tabele u memoriji se drže u tzv. rowstore obliku:– Pogodan za kratke insert, update i delete upite.
Šta nudi MemSQL?
10
Šta nudi MemSQL?
● Tabele mogu eksplicitno da se drže i na disku u tzv. columnstore obliku:– Koristi se za tabele koje su prevelike da stanu u
memoriju ili za koje nema smisla da budu u memoriji.
– Pogodan za kompleksne select upite obično vezane za analitičku obradu podataka.
– Pri kreiranju tabele specificira se da tabela treba da bude smeštena na disku (columnstore), inače se tabela smešta u memoriju (rowstore).
11
Perzistencija baze?
● Mada je baza primarno smeštena u memoriji, obezbeđena je perzistencija:– Snapshot baze u memoriji se u regularnim
vremenskim intervalima upisuje na disk.
– Sve transakcije između dva snapshot-a se upisuju u transaction log na disku.
– Nakon restarta servera, baza se u memoriju učitava iz snapshot-a + izvršavaju se transakcije iz transaction log-a.
12
Da li je zadovoljen ACID?
● Autori tvrde da su ACID zahtevi u potpunosti zadovoljeni:– Atomicity ✓– Consistency ✓– Isolation ✓– Durability ?
13
Da li je zadovoljen ACID?
● U opštem slučaju za transakcije koje su commit-ovane u memoriji ne znači automatski da su upisane i na disk.
● MemSQL može da se konfiguriše da u potpunosti zadovolji durability zahtev uz značajno lošije performanse.
14
Šta još nudi MemSQL?
● Automatski sharding uz izbor sharding ključa.● Automatsku redistribuciju particija baze na sve
servere u klasteru.
● Praktično linearnu skalabilnost dodavanjem novih servera u klaster.
● Serveri u klasteru mogu biti skromnih performansi (npr. instance u Cloud-u).
15
Kako MemSQL koristi sharding?
● Nad sharding ključem se primenjuje hash funkcija čime se određuje particija.
● U opštem slučaju se za sharding ključ koristi primarni ključ tabele.
● Korišćenjem primarnog ključa za sharding, obezbeđuje se ravnomerno particionisanje.
● Sharding kjuč može i eksplicitno da se specificira.
16
Šta još nudi MemSQL?
● Lock-free strukture podataka (MVCC).● Upite kompajlira u mašinski kod radi bržeg izvršavanja
(plancache).● Distribuirane JOIN operacije.● Podržava JSON i Geospatial tipove podataka.● Laku integraciju sa Apache Kafka i Apache Spark kroz koncept pipeline-a (CREATE PIPELINE).
● Alat za lak deployment i upravljanje klasterom – MemSQL Ops● Dolazi u Community i Enterprise ediciji...
18
MemSQL čvorovi
● Čvorovi u MemSQL klasteru se dele na:– Agregatore
Prihvataju upite od klijenta i distribuiraju listovima. Prihvataju rezultate upita sa listova i vraćaju klijentu.
– Listove
Drže particije baze i izvršavaju upite. Rezultate upita šalju agregatorima.
19
Agregatori
● Agregatori u MemSQL klasteru mogu da budu:– Master agregator
Jedan agregator se imenuje kao master. Upravlja klasterom. Svi SQL upiti DDL tipa (CREATE/DROP DATABASE, CREATE/DROP/ALTER TABLE itd.) izvršavaju se na njemu.
– Child agregator
Svi ostali agregatori u klasteru su child agregatori. SQL upiti DML tipa (SELECT, UPDATE, INSERT, DELETE itd.) šalju se bilo kom agregatoru u klasteru.
20
Dodatne mogućnosti?
● Samo u komercijalnoj, Enterprise, ediciji:– High availability.
– Replikacija između dva MemSQL klastera za povećanu redundansu.
– Enkripcija saobraćaja između čvorova.
– Role-Based Access Control.
21
High availability
● MemSQL podržava koncept availability grupa koje obezbeđuju redundansu unutar klastera.
● Podržane su do dve availability grupe.● Listovi se dele na dve grupe.● Svaki list ima svog parnjaka u drugoj grupi.● Parovi listova, master i slave, drže istovetnu kopiju
particije baze.● Jedan list u paru može da otkaže.
22
MemSQL Ops
● Deployment klastera, upravljanje klasterom i monitoring.
● Dodatni čvorovi se na trivijalan način dodaju u klaster.
● Web i CLI baziran interfejs.● Podržava i automatizovan deployment Apache
Spark-a i njegovo povezivanje sa MemSQL klasterom.
Recommended