Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

SQL Server 2017 na Linuksa

Najciekawszą nowością w Microsoft SQL Server 2017 jest oficjalne wsparcie dystrybucji Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) oraz Ubuntu. Oprogramowanie działa również w kontenerach Dockera i chmurze Microsoft Azure.

SQL Server na Linuksie może być zarządzany zdalnie z komputera z systemem Windows i graficznego programu SQL Server Management Studio (SSMS).

Więcej niż połowa maszyn wirtualnych (VM) w chmurze Azure działa dzisiaj pod kontrolą Linuksa, podczas gdy jeszcze trzy lata wcześniej takich instancji było tylko 25%. Co więcej, wybrane natywne usługi chmury Azure, w tym Software Defined Network (SDN), dostarczane są na bazie otwartych rozwiązań. To efekt otwarcia się Microsoftu na środowisko open source, którego kolejnym mocnym akcentem jest wydanie serwera baz danych SQL Server 2017 na Linuksa.

Wersja na Linuksa

Wydanie Microsoft SQL Server 2017 na Linuksa obejmuje mechanizmy silnika bazodanowego z funkcją przechowywania, przetwarzania i zabezpieczania danych (Database Engine, Integration Services), w tym silnik przetwarzania transakcyjnego w pamięci In-Memory OLTP, oraz narzędzia do zarządzania danymi. Oprogramowanie wspiera funkcje wyszukiwania pełnotekstowego (full-text search). Serwer usługi może być konfigurowany w scenariuszach wysokiej dostępności. Natomiast dzięki obsłudze takich funkcji, jak partycjonowanie, kompresja czy indeksy kolumnowe (columnstore), wydanie serwera na Linuksa pozwala na tworzenie wysoce wydajnych hurtowni danych, w tym łączenie operacji transakcyjnych i analitycznych w ramach jednej bazy danych. Wersja na Linuksa zawiera wiele nowych funkcji wprowadzonych w wydaniu SQL Server 2017. Mowa tutaj o adaptacyjnym przetwarzaniu zapytań (Adaptive Query Processing), mechanizmach automatycznego dostrajania usługi baz danych (Automatic plan correction), możliwości wznawiania operacji przebudowywania indeksów (Resumable Online Index Rebuild) po obsługę zapytań grafowych (Graph processing). Microsoft SQL Server 2017 nie zawiera natomiast funkcji analitycznych dostarczanych w ramach usług Analysis Services i Reporting Ser­vices, narzędzi do zarządzania danymi podstawowymi Master Data Services oraz zapewnienia jakości danych w organizacji Data Quality Services.

Mimo niezmienionej architektury oprogramowania lista brakujących funkcji jest nieco dłuższa. To wydanie serwera nie obsługuje mechanizmu FileTables, a więc możliwości przechowywania danych binarnych np. dokumentów lub zdjęć w systemie plików. Microsoft SQL Server 2017 nie wspiera również funkcji PolyBase, która pozwala na pracę z danymi zapisanymi w serwerach Hadoop, oraz zaawansowanych mechanizmów transformacji danych Fuzzy Grouping oraz Fuzzy Lookups. Wsparcie dla usług uczenia się maszynowego, wraz z obsługą języków R, StreamInsight i Python, ma pojawić się w wersji serwera oznaczonej jako 2019. Listę różnic w porównaniu z wydaniem serwera dla systemu Windows zamyka brak funkcji Stretch Database, która pozwala na migrację rzadko używanych (tzw. zimnych) danych do chmury Azure. Microsoft deklaruje, że następne funkcje i usługi będą włączane w kolejnych aktualizacjach i głównych wydaniach SQL Server na Linuksa.

Architektura rozwiązania

Punktem wyjścia dla zrozumienia architektury omawianego rozwiązania powinno być stwierdzenie, że Microsoft SQL Server na Linuksa nie jest portem ani forkiem oprogramowania znanego z systemu Windows. Innymi słowy: kod źródłowy wersji dla Windows nie został w żaden sposób zmieniony, aby mógł być uruchamiany w Linuksie. Wdrożenie tych założeń wymagało od Microsoftu zaprojektowania dodatkowej warstwy abstrakcji nazwanej tutaj Platform Abstraction Layer (SQLPAL). Warstwa ta odpowiada za obsługę wywołań i komunikację między SQL Serverem, a systemem operacyjnym hosta. Model ten wywodzi się z projektu Drawbridge, którego głównym założeniem była możliwość uruchamiania aplikacji w izolowanych kontenerach – piaskowicy (sandboxing). Mostem (pośrednikiem) między stronami jest tutaj natywna aplikacja na Linuksa o nazwie Linux Host extension. Pełni ona rolę pewnego kontenera izolującego oba środowiska, a przy tym zapewnia komunikację między warstwą SQLPAL a systemem operacyjnym hosta.

Zadaniem procesu Linux Host extension jest obsługa wywołań na poziomie systemu operacyjnego, aby optymalnie wykorzystywać dostępne zasoby procesora, pamięci oraz dysku (operacje we-wy). Z drugiej strony proces ten odpowiada za załadowanie i inicjalizację warstwy SQLPAL, która później uruchamia i obsługuje procesy aplikacji SQL Server. SQLPAL zapewnia funkcjonalność API/ABI (Application Binary Interface). Dzięki niej kod binarny SQL Servera w formacie Windows PE staje się zrozumiały dla Linuksa, czyli, inaczej mówiąc, jest tłumaczony na format plików wykonywalnych ELF obsługiwanych przez jądro Linuksa. Warto w tym miejscu odnotować, że wydajność serwera uruchomionego w systemie Linux jest taka sama, a czasem nawet lepsza, w porównaniu ze środowiskiem Windows. Takie wnioski płyną z oficjalnej dokumentacji projektu. Microsoft wskazuje nawet konkretny przykład testu wydajnościowego wykonanego benchmarkiem TPC-H, w którym oprogramowanie SQL Server 2017, uruchomione w systemie RHEL 7.3, zanotowało o 6% wyższą wydajność i 5% lepszy stosunek ceny do wydajności w porównaniu z aplikacją SQL Server 2016 wdrożoną na platformie Windows Server 2012 R2.

Wymagania serwera

Minimalne wymagania sprzętowe dla SQL Server 2017 w Linuksie to dwa rdzenie 64-bitowego procesora taktowane zegarem 2 GHz, 2 GB pamięci RAM oraz 6 GB miejsca na dysku. Serwer może być instalowany wyłącznie w systemie plikowym XFS lub ext4. Inne systemy, w tym zyskujący na popularności Btrfs, nie są obsługiwane. W przypadku wdrażania klastrów niezawodnościowych Always On FCI wymagane jest zapewnienie pamięci współdzielonej. W wersji na Linuksa SQL Server obsługuje udziały plikowe NFS w wersji 4.2 lub wyższej oraz blokowe iSCSI. Udziały SMB, w odróżnieniu od środowiska Windows Server, nie są tutaj dopuszczone do użycia.

Na liście oficjalnie wspieranych dystrybucji znajdujemy Red Hat Enterprise Linux 7.3+ (RHEL), SUSE Linux Enterprise Server v12 SP2+ (SLES) oraz Ubuntu 16.04+. Microsoft nie wprowadza własnego instalatora, ale korzysta z repozytoriów i narzędzi specyficznych dla dystrybucji opartych na Fedorze (yum) oraz Debianie (apt-get). Również aktualizacje oprogramowania dostarczane są za pośrednictwem standardowego mechanizmu update/upgrade menedżera pakietów danej dystrybucji. W praktyce SQL Server 2017 na Linuksa może być też z powodzeniem instalowany w CentOS czy Debianie. Istotnym wymaganiem jest, aby dystrybucja, w której uruchamiany jest serwer baz danych, korzystała z menedżera startu i usług systemd. Dodajmy, że SQL Server 2017 na Linuksa obsługuje ścieżki systemu plikowego Linux w wyrażeniach T-SQL oraz skryptach backupu. Mechanizmy wysokiej dostępności serwera wdrażane są tutaj przy użyciu otwartego oprogramowania Pacemaker i Corosync. Microsoft SQL Server 2017 może być dostarczany w formie obrazów Dockera do uruchamiania w środowisku kontenerów w Linuksie, Windows lub macOS. Microsoft zapewnia wsparcie dla wdrażania kontenerów w środowiskach OpenShift i Kubernetes. Oczywiście, maszyny wirtualne z SQL Serverem na Linuksie są również dostępne w chmurze Microsoft Azure.

Replikacja i wysoka dostępność

Microsoft SQL Server 2017 nie obsługuje mechanizmów replikacji w sposób inny niż na potrzeby zapewnienia wysokiej dostępności serwera. Mechanizmy replikacji pojawiły się w wydaniu preview systemu oznaczonego jako SQL Server 2019, przy czym funkcje replikacji mogą być konfigurowane za pomocą narzędzia SSMS lub języka T-SQL. W procesie replikacji SQL Server 2019 na Linuksa obsługuje dowolny typ replikacji (Transactional, Merge, Snapshot) oraz trzy role replikacji (Publisher, Distributor, Subscriber). We wdrażanych rozwiązaniach istnieje możliwość mieszania środowisk Windows i Linux uczestniczących w procesach replikacji. Ochrona oraz zapewnienie ciągłości działania serwera może być realizowana na wielu płaszczyznach – od funkcji backupu i replikacji na poziomie maszyn wirtualnych po wdrażanie scenariuszy wysokiej dostępności w oparciu o mechanizmy wbudowane w SQL Server.

[...]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej