Wprowadzenie do skalowalnej, odpornej na awarie architektury baz danych Credit Suisse, Bartosz Jankiewicz 2012-12-12.

Slides:



Advertisements
Podobne prezentacje
Migrating Desktop Podsumowanie projektu
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Rafał Hryniów Tomasz Pieciukiewicz
SQL – Strukturalny język zapytań
System cloud'owy Amazon EC2
Decyzje projektowe w .NET Framework
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
PHP + MySQL część II.
Microsoft Professional Developer Days 2004
Uwierzytelnianie i autoryzacja dostępu do portali
Projektowanie Aplikacji Komputerowych
25/08/2001 Bazy danych II 1 Piotr Górczyński Wstęp do SQL.
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
BIRT.
POZNAŃ SUPERCOMPUTING AND NETWORKING CENTER 1 Stan oraz koncepcje zadań realizowanych przez PCSS w ramach projektu LDAP PCSS, Lipiec 2002.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Wykład 5 Wojciech Pieprzyca
Information Bridge Framework platforma integracji Microsoft Office 2003 z aplikacjami Line of Business Krzysztof Michalski10/01/2005.
Rozproszone bazy danych
Systemy zarządzania treścią CMS
Rynek tłumaczeń i lokalizacji w Polsce, Wrocław marca 2009r. Zarządzanie serwerem SDL Trados Server Autor: Wojciech Olejniczak LSP Software
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
Modele baz danych - spojrzenie na poziom fizyczny
Dziennik do bilingu energii Domyślne wielkości co 15 min przez 12 dni kWh pobierana kWh całk kVARh pobierana kVARh całk kVAh całk PF całk 3-P Moc czynna.
1/18 LOGO Profil zespołu. 2/18 O nas Produkcja autorskich rozwiązań informatycznych dla małych i średnich firm w zakresie systemów: Baz danych Aplikacji.
Bezpieczeństwo baz danych
Architektura systemów wykorzystujących bazy danych (systemów bazodanowych) Wykład S. Kozielski.
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Lider rynku Źródło: The OLAP Report Źródło: Gartner Group
T 3 Konfiguracja Unisys ES7000 Enterprise Servers OLAP Server 16 CPU Data Warehouse 8 CPU Web Server 8 CPU Terminal Server 4 CPU cLAN Backbone.
Autor: Maciej Piwowarczyk
Autor: Maciej Piwowarczyk
Platforma udostępniająca skalowalną komunikację w środowisku rozproszonym Tomasz Hankus Jarosław Janik Konrad Tendera Opiekun: dr inż. Tomasz Szydło Prowadzący:
Prezętacja pokazująca możliwości i sam język MySQL
InfinitERP prezentacja systemu.
Licencjonowanie Lync 2013 Poziom 200.
TBD - P ERFORMANCE W BAZACH M ICROSOFT SQL S ERVER, CZYLI O CO W TYM W OGÓLE CHODZI Michał Grodzicki MCTS SQL SERVER lipca 2012.
* HTML5 i CSS3 w nowoczesnych serwisach internetowych
Node.js – Serverside Javascript
Władcy Danych Wykorzystanie Master Data Services do zapanowania nad wszechobecnym chaosem Paweł Potasiński.
Wirtualna baza SQL zgodna z SQL Server SQL as a Service
N OWOŚCI W SQL S ERVER 2008 Z PUNKTU WIDZENIA ZESPOŁÓW PROJEKTUJĄCYCH W.NET Oskar Jarczyk.
Zarządzanie danymi biznesowymi za pomocą usług EIM serwera SQL 2012, czyli jak SSIS, MDM i DQS rozwiązują problem błędnych danych Marcin Szeliga
W praktyce Prelegent: Michał Cywiński
Ogólne informacje licencyjne Kluczowe funkcjonalności Dostępne wersje i porównanie Zasady licencjonowania Downgrade, SA Licencjonowanie w środowisku chmury.
Co nowego w klastrach Windows Server 8
Konsultant w ABC Data Centrum Edukacyjne Microsoft Certified Trainer od 2004 roku Microsoft Most Valuable Professional od 2008 roku Autor dwóch książek.
SQL - Structured Query Language
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Specjalizacja "Dziennikarstwo On-line„ asynchroniczny JavaScript i XML – AJAX Część 6 Prowadzący: Dariusz Jaruga
dr Łukasz Murowaniecki T-109
Cacti Krzysztof Goławski.
Skalowanie aplikacji JPA na przykładzie Oracle TopLink Grid
DynamoDB w pigułce.
systemy zarządzania bazami danych
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Mapy i dane Open Street Map Technogie map cyfrowych Andrzej Chybicki.
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
.NET i Bazy Danych Projekt: Wadim Grasza.
Cloud Computing wg Amazona Robert Fryga I SMU Informatyka.
Wdrożenie Foglight w Urzędzie Dozoru Technicznego
Przetłumacz podane w nawiasach fragmenty zdań na j. angielski.
Opracowanie: Katarzyna Gagan, Anna Krawczuk
OPTIMIZING PERFORMANCE OF MAGENTO
A prototype of distributed modelling environment
Managed Service Identity dla zasobów w Microsoft Azure
Technologie Informacyjne Bazy danych
Zapis prezentacji:

Wprowadzenie do skalowalnej, odpornej na awarie architektury baz danych Credit Suisse, Bartosz Jankiewicz 2012-12-12

Plan wykładu Wyjasnienie podstawowych pojęć CAP Theorem Przykładowe wzorce projektowe Przykłady nowoczesnych rozwiązań Najczęsciej spotykane architektury baz danych CAP Theorem Wyjasnienie podstawowych pojęć Bartosz Jankiewicz, Credit Suisse 2012-12-12

Wymagania wobec kluczowych systemów Wydajność Czas potrzebny na uzyskanie odpowiedzi z serwera Często mierzona jako "time to last byte" (TTLB) Skalowalność Zdolność systemu do zachowania wydajności kiedy wzrasta obciążenie Dostępność Udział czasu, kiedy aplikacja nie działa z punktu widzenia użytkownika Bartosz Jankiewicz, Credit Suisse 2012-12-12

Latency Distance Computation Location Execution time (ms) Average latency (ms) Local host 20 0.067 VM running on the local host 0.335 Same LAN 0.924 Server in London, UK 126.005 Server in Moscow, Russia 181.855 Server in Tokyo, Japan 245.684 Bartosz Jankiewicz, Credit Suisse 2012-12-12

Dostępność A1 A2 A3 A4 An A B2 Dostępność systemu jest iloczynem dostępności jego komponentów: A = A1 * A2 * A3 * An Redundancja A = A1 * (1 – (1-A2)*(1-B2))*A3*A4*...*An Bartosz Jankiewicz, Credit Suisse 2012-12-12

Replikacja Każdy zapis zostaję automatycznie przeniesiony na pozostałe serwery bazy danych w klastrze Zwykle jeden serwer służy tylko do zapisu - Master Pozsostałe serwery służą do odczytu - Slave Powstaje problem Replication Lag QUORUM Source: http://en.wikipedia.org/wiki/Replication_%28computing%29 Bartosz Jankiewicz, Credit Suisse 2012-12-12

ACID Atomicity - transakcja zakończy się w całości albo wcale Consistency - stan bazy danych jest spójny przed jak i po zakończeniu transakcji Isolation - transakcje są niezależne wobec siebie Durability - po zakończeniu transakcji zmiany zostaną utrwalone Bartosz Jankiewicz, Credit Suisse 2012-12-12

CAP Theorem //a.k.a. Brewer's theorem Availability Partition Tolerrance Consistency MySQL Postgres Oracle Casandra SimpleDB Riak, Dynamo MongoDB, Hbase, Redis Bartosz Jankiewicz, Credit Suisse 2012-12-12

Rosnące wymagania Data Growth Trends (Chute, Manfrediz, Minton, Reinsel, Schlichting, & Toncheva, 2008) Bartosz Jankiewicz, Credit Suisse 2012-12-12

Skalowalność Skalowanie poziome Skalowanie pionowe Skalowanie pionowe: Coraz silniejszy sprzęt, rozszerzanie pamięci, co powyżej pewnej granicy przestaje opłacać Proste w realizacji i nie wymaga zmian w aplikacji Skalowanie poziome Rozdzielenie obciążenia na wiele serwerów Tańsze i bardziej efektywne na dłuższą metę Wyzwania: wąskie gardła, serwisy bezstanowe Jak można uzyskać skalowanie poziome z transakcyjnością? Bartosz Jankiewicz, Credit Suisse 2012-12-12

Skalowanie poziome: Master-Slave Master przyjmuje zapisy, slave odczyty Klienci odczytują ze slave'ow łącząc się zwykle przez round-robin Problemy: Replication lag Master jest wąskim gardłem Bartosz Jankiewicz, Credit Suisse 2012-12-12

Skalowanie poziome: Clustering Wiele baz danych wykorzustuje współdzieloną macierz dyskową Każy serwer zarówno zapisuje jak i odczytuje Problemy: Zapisy wymagają blokowania rekordów w całym klastrze To może negatywnie wpływać na skalowalność: dodawanie większej liczby serwerów pogarsza wydajność Bartosz Jankiewicz, Credit Suisse 2012-12-12

Skalowanie poziome: Sharding Podzielenie dużych baz danych lub tabel na mniejsze Zasoby nie są współdzielone Podzielenie bazy na shardy przed jej optymalizacją powoduje przedwczesny przyrost złożoności. Pownno być używane, kiedy inne opcje optymalizacji są niewystarczające. Dodatkowa złożoność bazy danych powoduje następujące problemy: Brak możliwości lub trudność w realizacji złączeń w SQL Złożoność logiki biznesowej aplikacji Procedury failover są bardziej złożone Bardziej skomplikowane procedury backup Bartosz Jankiewicz, Credit Suisse 2012-12-12

Bazy NoSQL Nazywane także Key/Value lub CoSQL Charakteryzują się: Brak zunifikowanego API lub języka zapytań podobnego do SQL Dostęp do danych odbywa się za pomocą klucza (hash) Dostępne operacje to zwykle GET, PUT, REMOVE Niektóre bazy oferują mechanizm PUBLISH/SUBSCRIBE Brak rygorystycznego schematu danych Nie wymuszają relacji między danymi Brak pełnej transakcyjności Bardzo duża dostępność i odporność na awarie Niemalże nieograniczona skalowalność Nazywane także Key/Value lub CoSQL Charakteryzują się: Brak zunifikowanego API lub języka zapytań podobnego do SQL Dostęp do danych odbywa się za pomocą klucza (hash) Dostępne operacje to zwykle GET, PUT, REMOVE Niektóre bazy oferują mechanizm PUBLISH/SUBSCRIBE Brak rygorystycznego schematu danych Nie wymuszają relacji między danymi Brak pełnej transakcyjności Bardzo duża dostępność i odporność na awarie Niemalże nieograniczona skalowalność Bartosz Jankiewicz, Credit Suisse 2012-12-12

Przykładowe rozwiązania NoSQL Base: Apache Cassandra Riak Dynamo Mongo Couchbase Server - unikać! Gata grid stores: Oracle Coherence Redis Hazelcast Jako usługi: DynamoDB Google App Engine Bartosz Jankiewicz, Credit Suisse 2012-12-12

Wydajność NoSQL Operation time get O(1) put remove search O(n) lub O(log n) Ponieważ struktury bazy NoSQL opierają się na mechaniźmie podobnym do HashMap czasy dostepu do danych są stałe HashMapa nie dostarcza jednak narzędzi typu wyszukanie obiektów po określonej wartości atrybutu co oferują bazy relacyjne. Dlatego tego typu operacje na bazach K/V mają koszt O(n) zaś w przypadku baz relacyjnych O(log n) Niektóre bazy oferują indeksowanie wartości co skraca czas wyszukiwania Bartosz Jankiewicz, Credit Suisse 2012-12-12

Skalowalność Redis Bartosz Jankiewicz, Credit Suisse 2012-12-12

Wzorce użycia bazy K/V SQL NoSQL Parent Parent Child Child parent.id = child.parent_id parent.child_id Child Child Obiekty nie posiadają pola klucza Referencje między wartościami w bazie (parent-child) przechowywane są w osobnym obiekcie Nadmierne rozdrobnienie wartości np. ulica, numer domu, telefon jako osobne klucze powoduje dużo większy narzut na zużycie pamięci Zbyt mała ziarnistość powoduje konieczność przerzucania dużej ilości danych przy prostych operacjach np. wszystkie dane użytkownika w jednym obiekcie Bartosz Jankiewicz, Credit Suisse 2012-12-12

CAP Theorem and NoSQL “The issue for devs is pretty simple: NoSQL helps solve scaling problems, but throws another monkey on your back - writing code without the guarantees of transactions... If you can solve both problems, it's a real win,” David Rosenthal FoundationDB Co-Founder Bartosz Jankiewicz, Credit Suisse 2012-12-12

BASE Basically Available Soft-state Eventual Consistency Założenie polega na tym aby poluzować pewne wymagania związane ze spójnością aby znacząco podnieść dostępność systemów oraz ich skalowalność. Basically Available, Soft-state, Eventual consistency. Bartosz Jankiewicz, Credit Suisse 2012-12-12

Przykład użycia user_{uid} user_{uid}_job_{jobid} user_{uid}_jobs key value user_1 Bartosz user_1_job_1 Forsight Publications user_1_job_2 Credit Suisse user_1_jobs user_1_job_1,user_1_job_2 Bartosz Jankiewicz, Credit Suisse 2012-12-12

Przykład użycia cz. 2 Scala: case class User( name: String, friends: List[Job]) redis> set user_1 Bartosz OK redis> set user_1_job_1 "SevDotCom" redis> set user_1_job_2 "Credit Suisse" redis> SADD user_1_jobs user_1_job_1 (integer) 1 redis> SADD user_1_jobs user_1_job_2 redis> SMEMBERS user_1_jobs 1) "user_1_job_2" 2) "user_1_job_1" Bartosz Jankiewicz, Credit Suisse 2012-12-12

Bartosz Jankiewicz, Credit Suisse 2012-12-12

Brak aktualizacji set user_1_jobs Problem braku ACID Set user_1_job_3 Awaria Brak aktualizacji set user_1_jobs Niespójny stan Bartosz Jankiewicz, Credit Suisse 2012-12-12

LEGAL ENTITY, department or author (Click Insert | Header & Footer) Month Day, Year

Sources http://www.julianbrowne.com/article/viewer/brewers-cap-theorem http://nathanmarz.com/blog/how-to-beat-the-cap-theorem.html http://www.theregister.co.uk/2012/11/22/foundationdb_fear_of_cap_theorem/ http://queue.acm.org/detail.cfm?id=1961297 http://www.linuxjournal.com/article/10770 http://redis.io/commands http://talenticaservices.blogspot.ch/2012/07/cap-theorem_04.html http://techielicous.com/2011/11/02/nosql-in-the-real-world/ Bartosz Jankiewicz, Credit Suisse 2012-12-12