SlideShare a Scribd company logo
1 of 20
Download to read offline
Szkolimy team leaderów i zespoły programistyczne
Projektowanie
wysokowydajnych
i skalowalnych serwisów www
Część druga - Warstwa danych
Antoni Orfin <aorfin@imagin.pl>
octivi.com
.com
1. Przypomnienie części pierwszej
2. Skalowanie warstwy danych
◦ Problemy związane z warstwą danych
◦ Replikacja
◦ Partycjonowanie
3. Wydajne przechowywanie danych
◦ Agregacja
◦ Denormalizacja
4. Konkluzje
Agenda
2
.com
1st Tier Cache
(np. Varnish)
Rozdzielanie ruchu (np. HAProxy)
Replikacja,
Sharding
2nd Tier Cache
(np. Redis, Memcache)
3
Stopnie rozwoju architektury serwisów webowych
Skalowanie serwisu
.com
 Problemy związane z warstwą danych
◦ Jak zapewnić wysoką wydajność?
Statystyki serwera bazodanowego pokazują 90%
wykorzystania procesora
◦ Jak zapewnić wysoką dostępność?
Nastąpiła awaria serwera bazodanowego – serwis nie był
dostępny przez 2 godziny
◦ Jak rozkładać dane na wielu węzłach?
Na serwerze bazodanowym kończy się przestrzeń
dyskowa/pamięć RAM
4
Skalowanie warstwy danych
.com
Skalowalna
warstwa danych
Replikacja
Partycjonowanie
Wydajne
przechowywanie
danych
5
Skalowanie warstwy danych
.com
 Odpowiada na pytania
◦ Jak zapewnić wysoką wydajność?
◦ Jak zapewnić wysoką dostępność?
 Rodzaje
◦ Master/Master – oba serwery równoważne
◦ Master/Slave – jeden z serwerów jest „podrzędnym”
 Problemy
◦ Każdy z serwerów powinien posiadać identyczne zasoby
pamięciowe
Skalowanie warstwy danych
Replikacja
6
.com
 Master/Master
◦ Każdy z serwerów synchronizuje dane z drugim
◦ Odczyty i zapisy możliwe do każdego z serwerów
 Zalety
◦ Wysoka wydajność dla zapisów i odczytów
◦ Wysoka dostępność
 Problemy
◦ Generowanie identyfikatorów – GUID, Primary Key
◦ Zachowanie spójności danych – DATE()
◦ Gdy jeden serwer ulega awarii drugi dostaje 2x większy ruch
◦ Konieczne mechanizmy do automatycznego przełączania
serwerów
Skalowanie warstwy danych
Replikacja
7
.com
 Master/Slave
◦ Slave „pobiera” dane z Mastera
◦ Zapisy kierowane wyłącznie do Mastera
◦ Odczyty ze Slave’ów lub Mastera
 Zalety
◦ Wysoka wydajność dla odczytów
◦ Wysoka dostępność - slave na „backup danych”
◦ Prostsze w realizacji od Master/Master
 Problemy
◦ Nie rozwiązuje problemów z zapisami
◦ Konieczne mechanizmy do automatycznego przełączania
serwerów
Skalowanie warstwy danych
Replikacja
8
.com
 W praktyce
Skalowanie warstwy danych
Replikacja
9
.com
 Odpowiada na pytania
◦ Jak rozkładać dane na wielu węzłach?
 Partycjonowanie (sharding) na podstawie
◦ Położenia geograficznego użytkownika
◦ Klientów
◦ Rodzaju danych
◦ Losowe
 Problemy
◦ JOIN przez Shardy
◦ Każda partycja powinna realizować replikację
Skalowanie warstwy danych
Partycjonowanie
10
Multi-Tenant
Fizyczny rozdział danych klientów
Podsystemy
Podział wg typu danych
11
Skalowanie warstwy danych
Partycjonowanie
.com
 Baza danych jest wąskim gardłem większości
aplikacji webowych
 Większość ruchu w aplikacjach webowych to
odczyty
 Warstwa danych powinna być nastawiona na
skuteczne pobieranie danych
12
Wydajne przechowywanie danych
.com
 Użytkownicy mają dodane produkty:
 Jak pobrać liczbę produktów użytkownika?
◦ SELECT COUNT(*) FROM product WHERE user_id = 1;
Wydajne przechowywanie danych
Agregacja
13
.com
 VS.
◦ SELECT products_count FROM user WHERE id = 1;
14
Wydajne przechowywanie danych
Agregacja
.com
 Cechy
◦ Zakładamy, że liczba wyświetleń, miejsc, w których
wykorzystamy liczbę produktów jest większa od liczby
INSERTów produktów
◦ Operacje bazodanowe SUM, COUNT, AVG są wolne
◦ Należy pamiętać o spójności – np. zawsze przy usuwaniu
produktu należy zmniejszać licznik przy użytkowniku
15
Wydajne przechowywanie danych
Agregacja
.com
 Użytkownicy mają dane osobowe:
 Jak pobrać wiadomości wraz z danymi
użytkownika?
◦ SELECT * FROM message
JOIN user ON user.id = user_id;
16
Wydajne przechowywanie danych
Denormalizacja
.com
 VS.
◦ SELECT * FROM message;
17
Wydajne przechowywanie danych
Denormalizacja
.com
 Cechy
◦ Optymalizacja bazy tak, aby była nastawiona na prezentację
danych
◦ Projektujemy strukturę bazy z myślą o późniejszym
odczycie
◦ JOINy są wolne
◦ Dla danych które nie będą zmieniane - sytuacja w której
użytkownik zmienia imię/nazwisko jest rzadka lub może
zostać zupełnie zablokowana w serwisie
18
Wydajne przechowywanie danych
Denormalizacja
.com
 Baza danych jest przeważnie wąskim gardłem – należy
zaplanować jak skutecznie pobierać z niej dane
 Projektując strukturę bazy danych należy pomyśleć kiedy
i gdzie będą prezentowane dane
 Użytkownik nie wie „co stoi” za serwisem – ważne jest dla
niego co i jak szybko dostanie
Konkluzje
19
.com 20
 Pytania, uwagi?
 Zobacz również:
◦ octivi.com
◦ whoisusing.it
Zapraszam na warsztaty
Projektujemy nasz własny, skalowalny serwis
1. Wylosowanie opisu serwisu, określenie budżetu
2. Zaprojektowanie architektury
3. Prezentacja i omówienie pomysłów uczestników
Dziękuję za uwagę

More Related Content

What's hot

PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...PROIDEA
 
Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...
Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...
Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...Webhosting.pl
 
TV i video w Internecie
TV i video w InternecieTV i video w Internecie
TV i video w InternecieDivante
 
Architektura serwisow webowych
Architektura serwisow webowychArchitektura serwisow webowych
Architektura serwisow webowychRobert Janeczek
 
Architektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnieArchitektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnie3camp
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PROIDEA
 

What's hot (7)

PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
PLNOG 3: Krzysztof Góźdź - Petabajtowe systemy przechowywania danych dla dost...
 
Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...
Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...
Jarosław Ślęzak, Hosting specjalizowany dla aplikacji opartych na technologii...
 
TV i video w Internecie
TV i video w InternecieTV i video w Internecie
TV i video w Internecie
 
W 3 sekundy do setki
W 3 sekundy do setkiW 3 sekundy do setki
W 3 sekundy do setki
 
Architektura serwisow webowych
Architektura serwisow webowychArchitektura serwisow webowych
Architektura serwisow webowych
 
Architektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnieArchitektura serwisów webowych - szybko i boleśnie
Architektura serwisów webowych - szybko i boleśnie
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 

Viewers also liked

Performance Testing - Apache Benchmark, JMeter
Performance Testing  - Apache Benchmark, JMeterPerformance Testing  - Apache Benchmark, JMeter
Performance Testing - Apache Benchmark, JMeterAntoni Orfin
 
Elasticsearch - Guide to Search
Elasticsearch - Guide to SearchElasticsearch - Guide to Search
Elasticsearch - Guide to SearchAntoni Orfin
 
Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008
Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008
Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008martin.zawisza
 
RSIM - konferencja - 2009-05-28
RSIM - konferencja  - 2009-05-28RSIM - konferencja  - 2009-05-28
RSIM - konferencja - 2009-05-28martin.zawisza
 
Architektura Skalowalnych Serwisow Internetowych
Architektura Skalowalnych Serwisow InternetowychArchitektura Skalowalnych Serwisow Internetowych
Architektura Skalowalnych Serwisow InternetowychMichał Gruchała
 

Viewers also liked (6)

Performance Testing - Apache Benchmark, JMeter
Performance Testing  - Apache Benchmark, JMeterPerformance Testing  - Apache Benchmark, JMeter
Performance Testing - Apache Benchmark, JMeter
 
Elasticsearch - Guide to Search
Elasticsearch - Guide to SearchElasticsearch - Guide to Search
Elasticsearch - Guide to Search
 
Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008
Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008
Prezentacja Scsi Regionalny Konwent SpołEczeńStwa Informacyjnego 25 06 2008
 
RSIM - konferencja - 2009-05-28
RSIM - konferencja  - 2009-05-28RSIM - konferencja  - 2009-05-28
RSIM - konferencja - 2009-05-28
 
Architektura Skalowalnych Serwisow Internetowych
Architektura Skalowalnych Serwisow InternetowychArchitektura Skalowalnych Serwisow Internetowych
Architektura Skalowalnych Serwisow Internetowych
 
DevOps in Droplr
DevOps in DroplrDevOps in Droplr
DevOps in Droplr
 

Similar to Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych

Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQLExpert.pl
 
Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości Adm...
Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości   Adm...Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości   Adm...
Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości Adm...Łukasz Grala
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )GOG.com dev team
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )GOG.com dev team
 
Sql Dla Administratora i Dewelopera
Sql Dla Administratora i DeweloperaSql Dla Administratora i Dewelopera
Sql Dla Administratora i Deweloperanexik
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...PROIDEA
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl 3camp
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Timur Kamanin
 
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...Nazar Patrylo
 
Optymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data center
Optymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data centerOptymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data center
Optymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data centerDariusz Sobkowiak
 

Similar to Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych (20)

Provident
ProvidentProvident
Provident
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracji
 
Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości Adm...
Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości   Adm...Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości   Adm...
Łukasz Grala - WSKIZ 2009-04-07 It Academic - SQL Server 2008 - Nowości Adm...
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
Sql Dla Administratora i Dewelopera
Sql Dla Administratora i DeweloperaSql Dla Administratora i Dewelopera
Sql Dla Administratora i Dewelopera
 
O co chodzi z FILESTREAM?
O co chodzi z FILESTREAM?O co chodzi z FILESTREAM?
O co chodzi z FILESTREAM?
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
 
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)
 
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
 
Optymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data center
Optymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data centerOptymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data center
Optymalizacja kosztów przedsiębiorstwa dzięki nowoczesnemu data center
 

Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa danych

  • 1. Szkolimy team leaderów i zespoły programistyczne Projektowanie wysokowydajnych i skalowalnych serwisów www Część druga - Warstwa danych Antoni Orfin <aorfin@imagin.pl> octivi.com
  • 2. .com 1. Przypomnienie części pierwszej 2. Skalowanie warstwy danych ◦ Problemy związane z warstwą danych ◦ Replikacja ◦ Partycjonowanie 3. Wydajne przechowywanie danych ◦ Agregacja ◦ Denormalizacja 4. Konkluzje Agenda 2
  • 3. .com 1st Tier Cache (np. Varnish) Rozdzielanie ruchu (np. HAProxy) Replikacja, Sharding 2nd Tier Cache (np. Redis, Memcache) 3 Stopnie rozwoju architektury serwisów webowych Skalowanie serwisu
  • 4. .com  Problemy związane z warstwą danych ◦ Jak zapewnić wysoką wydajność? Statystyki serwera bazodanowego pokazują 90% wykorzystania procesora ◦ Jak zapewnić wysoką dostępność? Nastąpiła awaria serwera bazodanowego – serwis nie był dostępny przez 2 godziny ◦ Jak rozkładać dane na wielu węzłach? Na serwerze bazodanowym kończy się przestrzeń dyskowa/pamięć RAM 4 Skalowanie warstwy danych
  • 6. .com  Odpowiada na pytania ◦ Jak zapewnić wysoką wydajność? ◦ Jak zapewnić wysoką dostępność?  Rodzaje ◦ Master/Master – oba serwery równoważne ◦ Master/Slave – jeden z serwerów jest „podrzędnym”  Problemy ◦ Każdy z serwerów powinien posiadać identyczne zasoby pamięciowe Skalowanie warstwy danych Replikacja 6
  • 7. .com  Master/Master ◦ Każdy z serwerów synchronizuje dane z drugim ◦ Odczyty i zapisy możliwe do każdego z serwerów  Zalety ◦ Wysoka wydajność dla zapisów i odczytów ◦ Wysoka dostępność  Problemy ◦ Generowanie identyfikatorów – GUID, Primary Key ◦ Zachowanie spójności danych – DATE() ◦ Gdy jeden serwer ulega awarii drugi dostaje 2x większy ruch ◦ Konieczne mechanizmy do automatycznego przełączania serwerów Skalowanie warstwy danych Replikacja 7
  • 8. .com  Master/Slave ◦ Slave „pobiera” dane z Mastera ◦ Zapisy kierowane wyłącznie do Mastera ◦ Odczyty ze Slave’ów lub Mastera  Zalety ◦ Wysoka wydajność dla odczytów ◦ Wysoka dostępność - slave na „backup danych” ◦ Prostsze w realizacji od Master/Master  Problemy ◦ Nie rozwiązuje problemów z zapisami ◦ Konieczne mechanizmy do automatycznego przełączania serwerów Skalowanie warstwy danych Replikacja 8
  • 9. .com  W praktyce Skalowanie warstwy danych Replikacja 9
  • 10. .com  Odpowiada na pytania ◦ Jak rozkładać dane na wielu węzłach?  Partycjonowanie (sharding) na podstawie ◦ Położenia geograficznego użytkownika ◦ Klientów ◦ Rodzaju danych ◦ Losowe  Problemy ◦ JOIN przez Shardy ◦ Każda partycja powinna realizować replikację Skalowanie warstwy danych Partycjonowanie 10
  • 11. Multi-Tenant Fizyczny rozdział danych klientów Podsystemy Podział wg typu danych 11 Skalowanie warstwy danych Partycjonowanie
  • 12. .com  Baza danych jest wąskim gardłem większości aplikacji webowych  Większość ruchu w aplikacjach webowych to odczyty  Warstwa danych powinna być nastawiona na skuteczne pobieranie danych 12 Wydajne przechowywanie danych
  • 13. .com  Użytkownicy mają dodane produkty:  Jak pobrać liczbę produktów użytkownika? ◦ SELECT COUNT(*) FROM product WHERE user_id = 1; Wydajne przechowywanie danych Agregacja 13
  • 14. .com  VS. ◦ SELECT products_count FROM user WHERE id = 1; 14 Wydajne przechowywanie danych Agregacja
  • 15. .com  Cechy ◦ Zakładamy, że liczba wyświetleń, miejsc, w których wykorzystamy liczbę produktów jest większa od liczby INSERTów produktów ◦ Operacje bazodanowe SUM, COUNT, AVG są wolne ◦ Należy pamiętać o spójności – np. zawsze przy usuwaniu produktu należy zmniejszać licznik przy użytkowniku 15 Wydajne przechowywanie danych Agregacja
  • 16. .com  Użytkownicy mają dane osobowe:  Jak pobrać wiadomości wraz z danymi użytkownika? ◦ SELECT * FROM message JOIN user ON user.id = user_id; 16 Wydajne przechowywanie danych Denormalizacja
  • 17. .com  VS. ◦ SELECT * FROM message; 17 Wydajne przechowywanie danych Denormalizacja
  • 18. .com  Cechy ◦ Optymalizacja bazy tak, aby była nastawiona na prezentację danych ◦ Projektujemy strukturę bazy z myślą o późniejszym odczycie ◦ JOINy są wolne ◦ Dla danych które nie będą zmieniane - sytuacja w której użytkownik zmienia imię/nazwisko jest rzadka lub może zostać zupełnie zablokowana w serwisie 18 Wydajne przechowywanie danych Denormalizacja
  • 19. .com  Baza danych jest przeważnie wąskim gardłem – należy zaplanować jak skutecznie pobierać z niej dane  Projektując strukturę bazy danych należy pomyśleć kiedy i gdzie będą prezentowane dane  Użytkownik nie wie „co stoi” za serwisem – ważne jest dla niego co i jak szybko dostanie Konkluzje 19
  • 20. .com 20  Pytania, uwagi?  Zobacz również: ◦ octivi.com ◦ whoisusing.it Zapraszam na warsztaty Projektujemy nasz własny, skalowalny serwis 1. Wylosowanie opisu serwisu, określenie budżetu 2. Zaprojektowanie architektury 3. Prezentacja i omówienie pomysłów uczestników Dziękuję za uwagę