SlideShare a Scribd company logo
1
Bojan Vitnik
in memory alternativa MySQL-u
MemSQL
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
WRIT
E
REPLICATION
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 grad
01 Klijent 1 Beograd
02 Klijent 2 Beograd
id klijent grad
03 Klijent 3 Novi Sad
04 Klijent 4 Novi Sad
id klijent grad
05 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
WRIT
E
REPLICATION
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 u
real-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...
17
Kako izgleda MemSQL klaster?
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.
23
MemSQL Ops
24
Demo

More Related Content

PPTX
Development pro forma(3)
PDF
Future Net Marketing plan english
PPTX
Trabajo tecnología educativa
PDF
Manual de identidade visual
PPTX
Green pop earring kit
PPTX
L inked in slideshare
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
Development pro forma(3)
Future Net Marketing plan english
Trabajo tecnología educativa
Manual de identidade visual
Green pop earring kit
L inked in slideshare
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Ad

MemSQL - in memory alternative MySQL-u

  • 1. 1 Bojan Vitnik in memory alternativa MySQL-u MemSQL
  • 2. 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. 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. 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. 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 WRIT E REPLICATION
  • 6. 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. 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 grad 01 Klijent 1 Beograd 02 Klijent 2 Beograd id klijent grad 03 Klijent 3 Novi Sad 04 Klijent 4 Novi Sad id klijent grad 05 Klijent 5 Niš 06 Klijent 6 Niš 07 Klijent 7 Niš DB1 DB2 DB3
  • 8. 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 WRIT E REPLICATION SHARDING
  • 9. 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 u real-time-u. ● Tabele u memoriji se drže u tzv. rowstore obliku: – Pogodan za kratke insert, update i delete upite. Šta nudi MemSQL?
  • 10. 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. 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. 12 Da li je zadovoljen ACID? ● Autori tvrde da su ACID zahtevi u potpunosti zadovoljeni: – Atomicity ✓ – Consistency ✓ – Isolation ✓ – Durability ?
  • 13. 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. 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. 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. 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. 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. 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. 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. 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. 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.