JShards - transparentne wykorzystywanie rozproszonych baz danych zapewniające horyzontalną skalowalność aplikacji
Rozmiar pliku: 2.06 MB
Praca magisterska obroniona w PJWSTK.
Tytuł: JShards - transparentne wykorzystywanie rozproszonych baz danych zapewniające horyzontalną skalowalność aplikacji
Autorzy: Jacek Olszak i Marcin Świerczyński
Promotor: dr inż. Mariusz Trzaska
Streszczenie:
Praca dotyczy istotnego praktycznego problemu zwiększenia przepustowości aplikacji internetowych, poprzez wykorzystanie rozproszonych baz danych w sposób transparentny. Klasyczne podejście zakłada wykorzystanie jednego fizycznego serwera bazodanowego, który przechowuje kompleksowe dane aplikacji. Mając na uwadze fakt, że operacje dyskowe są jednymi z najbardziej pracochłonnych w trakcie wykonywania dowolnych programów komputerowych, łatwo dojść do wniosku, iż serwer bazodanowy stanowi „wąskie gardło” aplikacji webowych. Efekt ten jest potęgowany ze względu na specyfikę tych aplikacji. Oprogramowanie to w sposób naturalny przeznaczone jest do działania w środowisku rozproszonym. Popularne serwisy internetowe muszą często obsługiwać dziesiątki tysięcy zapytań na sekundę, generowanych przez tysiące użytkowników. Oczywistym rozwiązaniem problemu jest rozbudowa i ulepszenie istniejącego serwera, czyli skalowanie wertykalne. Taki zabieg jest jednak nieefektywny ze względów ekonomicznych, ponieważ osiąganie sukcesywnie lepszych wyników wiąże się z koniecznością zakupu najlepszych rozwiązań sprzętowych, które charakteryzują się bardzo wysoką ceną. Rozwiązaniem problemu, które przedstawiono w niniejszej pracy jest skalowanie horyzontalne. Polega ono na rozdzieleniu odpowiedzialności serwera bazodanowego na wiele fizycznych maszyn. Dzięki takiemu podejściu można przygotować aplikacje na ogromne obciążenia, zachowując jednocześnie racjonalizm ekonomiczny. Dzieje się tak, gdyż zakup wielu słabszych serwerów bazodanowych jest zdecydowanie mniejszym wydatkiem, niż zakup jednego „super-komputera”. Dodatkowym atutem jest fakt, że możliwości skalowania horyzontalnego są praktycznie nieograniczone, podczas gdy skalowanie wertykalne jest ograniczone przez rozwój techniki i sprzętu komputerowego. Praktyczną realizację omówionych koncepcji stanowi prototypowa aplikacja, którą zbudowano w ramach tej pracy. Oprogramowanie to ma formę sterownika JDBC na platformę Java. Dzięki niemu programiści nie muszą znać architektury sprzętowej. Prototyp ten umożliwia transparentną obsługę rozproszonych baz danych za pomocą większości dostępnych konstrukcji języka SQL.