memsql - in memory alternative mysql-u

24
1 Bojan Vitnik in memory alternativa MySQL-u MemSQL

Upload: bojan-vitnik

Post on 22-Jan-2018

97 views

Category:

Software


1 download

TRANSCRIPT

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

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...

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