Hosting w Polsce i na świecie od wielu lat bazuje na dyskach HDD i SSD, dlatego znamy już ich wady i zalety. Kolejnym krokiem na drodze rozwoju rynku hostingowego stały się dyski Intel Optane, które obecnie są dostępne w Polsce tylko na serwerach nazwa.pl. Wielokrotne zwiększenie wydajności serwisów obsługiwanych przez nazwa.pl jest niezaprzeczalne. Czy można jednak przyspieszyć swoją stronę jeszcze bardziej? To możliwe, jeśli zaprojektujemy ją tak, by opierała się na nierelacyjnych bazach MongoDB. Zapraszam do artykułu, z którego dowiesz się, co można zyskać w przypadku połączenia Intel Optane z MongoDB.
Czym się różni relacyjna baza danych od nierelacyjnej?
Dla przypomnienia i utrwalenia warto zacząć od określenia różnic między bazami relacyjnymi a nierelacyjnymi (NoSQL).
Jak działają relacyjne bazy danych?
Bazy relacyjne, takie jak MariaDB, stosują dobrze znane podejście do magazynowania informacji. Jak widać na rysunku 1, dane są budowane i przetrzymywane w z góry założonym schemacie, stanowiącym ściśle określoną relację między obiektami. Budowę rozbudowanej relacyjnej bazy danych można porównać do drzewa, którego tabele to liście, a relacje między nimi przypominają gałęzie.
Rysunek 1. Przykład budowy relacyjnej bazy danych.
Jak działają nierelacyjne bazy danych?
Z drugiej strony rysunek 2 prezentuje bazy nierelacyjne, czyli np. wspomnianą już wcześniej MongoDB. Zauważyć można podstawową zmianę w postaci braku gałęzi między obiektami zawierającymi dane, czyli braku „sztywno” zadeklarowanych relacji między danymi. Warto zauważyć, że gdy mówi się o bazach nierelacyjnych, stosowane jest już określenie obiekty, zamiast tabele i wynika to z zupełnie innej charakterystyki budowy tych baz. NoSQL nie opierają się o tabele czy kolumny, ale – w przypadku MongoDB – o dokumenty. Na rysunku 2 dokument o nazwie “POSTY” zawiera wszystkie obiekty.
Rysunek 2. Przykład budowy nierelacyjnej bazy danych.
Bazy NoSQL mogą korzystać z różnych modeli (klucz-wartość, dokument, graf etc.). Spośród nich najczęściej stosowanymi są dokumenty. Każdy taki dokument zawiera obiekty opisane i zapisane za pomocą języka JSON, a za przeprowadzanie na nich operacji odpowiedzialny jest silnik bazy. Jest to możliwe dzięki przetrzymywaniu dokumentów w bazie, a co za tym idzie, adresowaniu ich przy użyciu unikatowego klucza.
Dzięki takiemu podejściu bazy nierelacyjne, niezależnie od swojej wielkości, doskonale się skalują i zachowują praktycznie taki sam czas dostępu. Są również lepiej dostosowane do przerw podczas transmisji. Przykładowo, przy relacyjnych bazach danych, w razie przerwy w wykonywaniu zapytania, dane są odrzucane w całości. W przypadku baz nierelacyjnych dane znajdują się w niej do momentu przerwy. Takie podejście oczywiście może nieść ze sobą problemy, ale dobrze zaplanowane i przewidziane procedury pozwalają ten fakt wykorzystać i zminimalizować downtime. Jeśli dodać do tego jeszcze łatwość zmiany konstrukcji bazy, wynikającą z budowy NoSQL, otrzymany produkt ucieszy każdego developera.
Kolejnym ważnym aspektem jest silnik używany przez MongoDB, jednak na nim skupimy się po przedstawieniu dysków Intel Optane i omówieniu ich pozycji w hierarchii dysków.
Jakie dyski są stosowane na hostingach?
Dyski półprzewodnikowe SSD, dzięki szybkości zapisu i odczytu, zrewolucjonizowały sposób przechowywania danych. Ponieważ ich cena ciągle spada, stały się powszechnie dostępne. Obecnie dość częstym podejściem jest stosowanie dysków SSD jako systemowych lub bazodanowych, podczas gdy talerzowych HDD używa się jako magazynów backupów, multimediów itp. Takie działanie sprawdza się, ale tylko w przypadkach zastosowań domowych lub w małych biznesach.
Według powiedzenia „kto się nie rozwija, ten się cofa”, firmy hostingowe są tymi, które wyznaczają kierunki rozwoju branży. Doskonałym przykładem jest nazwa.pl, która niezmiennie od lat kładzie ogromny nacisk, aby stosowana przez nią technologia wyprzedzała konkurencyjne rozwiązania.
Rysunek 3. Piramida pamięci według szybkości i wielkości.
Rysunek 3 prezentuje piramidę rodzajów pamięci według ich szybkości i wielkości. Najniżej znajdują się dyski HDD i taśmy magnetyczne, które charakteryzują się największymi pojemnościami, ale są najwolniejsze. Nad nimi znajduje się pozbawione mechanicznych talerzy SSD ze znacznie lepszymi czasami zapisu i odczytu. Problematyczne jest jednak pogorszenie wspomnianych parametrów przy dużym obciążeniu. Na kolejnej pozycji są dyski Intel Optane wykonane w technologii 3D XPoint. Na samej górze jest dynamiczna pamięć DRAM, o której w skrócie można powiedzieć, że jest najszybsza, ale dane są ulotne i bez napięcia traci się je bezpowrotnie.
Intel Optane z innowacyjną technologią 3D XPoint
Nazwa technologii 3D XPoint wynika z budowy komórki pamięci, która przypomina trójwymiarową szachownicę (rysunek 4). W porównaniu do DRAM takie podejście pozwoliło nawet 10x zwiększyć gęstość danych, a to z kolei oznacza możliwość przetrzymywania większej ilości danych i mniejszy koszt produkcji.
Rysunek 4. Budowa 3D XPoint (https://upload.wikimedia.org/wikipedia/commons/2/2b/3D_XPoint.png)
Warto zaznaczyć, że spośród, tak zwanych, nieulotnych pamięci, znajduje się ona na szczycie piramidy (rysunek 3). Pamięć Intel Optane w realnym zastosowaniu może pochwalić się odczytem na poziomie 2,5 GB/s i zapisem 2,2 GB/s, podczas gdy SSD w technologii NAND notuje odczyt na poziomie 1,8 GB/s, ale zapis już tylko na poziomie 0,56 GB/s. Dodając do tego liczbę operacji wejścia/wyjścia na sekundę (IOPS) na poziomie 550 000 przy odczycie i 500 000 przy zapisie bloku wielkości 4K, dyski Intel Optane okazują się wprost stworzone na potrzeby baz danych.
Z tabeli 1 jasno wynika, że technologia 3D XPoint zastosowana w Intel Optane charakteryzuje się takim samym rozmiarem danych jak SSD, ale z opóźnieniem w dostępie do nich tylko 10x większym od DRAM. Z kolei SSD może notować opóźnienie nawet 10000x większe niż ulotna pamięć DRAM. Takimi wartościami dyski Intel Optane mogą się poszczycić dzięki wspomnianej już budowie (rysunek 4) i zaawansowanemu kontrolerowi do ich obsługi.
Tabela 1. Wielkość i opóźnienie pamięci w odniesieniu do DRAM.
MongoDB na dyskach Intel Optane
Problemy z przesiadką na nową technologię pojawiają się w momencie, w którym okazuje się, że oprogramowanie nie jest na nią gotowe lub jego optymalizacja pozostawia wiele do życzenia. Ponieważ obecnie systemy operacyjne, na których znajdują się bazy danych, mocno obciążają dyski, w MongoDB zastosowano pliki mapujące pamięć (memory-mapped files).
Rysunek 5. Sposób działania plików mapujących (MMAP).
Na rysunku 5 został zaprezentowany sposób działania plików MMAP. W pierwszym etapie dla pliku mapującego zostaje zarezerwowany obszar pamięci wirtualnej. Następnym krokiem jest umieszczenie w tabeli stron translacji adresu wirtualnego na fizyczny. Ostatnią czynnością jest buforowanie tłumaczenia w buforze translacji (TLB). Dzięki zastosowaniu plików MMAP i dysków Intel Optane o bardzo dużej liczbie operacji odczytu i zapisu na sekundę, udaje się osiągnąć odczyty większe nawet o 63% niż w konkurencyjnych rozwiązaniach i silnikach bazodanowych. Dane te pochodzą bezpośrednio od twórców MongoDB, którzy przeprowadzali testy w środowisku laboratoryjnym.
Ogromna przewaga dysków Intel Optane uwidacznia się nie w zastosowaniach domowych, ale w przypadku Data Center. Połączenie tej technologii z systemem bazodanowym MongoDB dostarcza rozwiązanie charakteryzujące się bardzo szybkim czasem dostępu i elastycznością podczas skalowania, co dla szybkości i możliwości swobodnego rozbudowywania naszej aplikacji, strony czy systemu, będzie kluczowe!
KONIECZNIE PRZECZYTAJ NA BLOGU:
- Node.js i MongoDB od dziś na hostingu w nazwa.pl!
- Nowe serwery nazwa.pl z Intel Xeon E-2388G szybsze o 44%
- Nowe technologie w nazwa.pl wypierają stare usługi
WIĘCEJ INFORMACJI Z CENTRUM POMOCY:
Michał Zbyl
Fan dobrej zabawy podczas rozwiązywania programistycznych problemów. Na co dzień pracownik WSzW w Gorzowie Wlkp., w którym stara się rozwijać i wdrażać nowinki technologiczne. Fan kultury Kraju Kwitnącej Wiśni i posiadacz certyfikatów językowych poświadczających znajomość japońskiego.