Spis treści
- Co to jest baza danych?
- Co to jest Cloud SQL?
- Ile kosztuje Cloud SQL?
- Jak uruchomić i skonfigurować usługę Cloud SQL? Tutorial
Baza danych jest nieodłącznym elementem każdej aplikacji czy systemu informatycznego. Zachowuje nowe informacje oraz zmiany wprowadzone przez użytkowników, inne urządzenia czy procesy (np. na platformach internetu rzeczy).
To dzięki (w dużej mierze) bazom danych, po wejściu na Facebooka czy inny portal społecznościowy, nie musimy od nowa uzupełniać naszego profilu – ponieważ raz wprowadzone informacje o imieniu, nazwisku, ukończonej szkole wyższej, a również nasze posty, zostały zapisane w bazie danych i są dostępne za każdym razem, gdy logujemy się na portal.
Bazy danych umożliwiają też m.in.:
- robienie zakupów w e-commerce,
- dokonanie wpłat i wypłat w bankach,
- prowadzenie działań księgowych w firmach,
- kontrolowanie poziomu asortymentu w sklepach (zobacz: 6 kluczowych obszarów branży retail, które wspiera GCP),
- zarządzanie informacjami pochodzącymi z linii produkcyjnych (zobacz: GCP a Przemysł 4.0).
Co to jest baza danych?
Zacznijmy od tego, czym są dane. Dane to zbiory liczb i tekstów o różnych formach; w informatyce dane to obiekty, na których operują programy. Przykładowo, danymi jest Twoje imię, nazwisko i numer telefonu, a przetwarzającym “programem” jest książka telefoniczna (klasyczny przykład bazy danych).
Baza danych to uporządkowany system przechowywania informacji. Dane są usystematyzowane, dzięki czemu łatwiej jest nimi zarządzać.
Dane zbierane i przetwarzane w systemach informatycznych czy aplikacjach często są bardziej złożone niż lista nazwisk z przypisanym numerem telefonu. Ich rozmiary mogą sięgać setek terabajtów, a do zebrania i obsługi rekordów powstało wiele rodzajów baz danych. Obecnie systemy bazodanowe można podzielić ze względu na sposoby organizacji danych:
- bazy kartotekowe – w bazie kartotekowej każda tablica jest samodzielnym dokumentem i nie może współpracować z innymi tablicami, ale dane w bazie kartotekowej można sortować i filtrować; przykładem kartotekowej bazy danych jest arkusz kalkulacyjny zawierający listę tytułów książek z przypisaniem nazwiska autora i roku publikacji;
- bazy hierarchiczne – dane są przechowywane na zasadzie rekordów nadrzędne-podrzędne, a struktura hierarchicznej bazy danych przypomina drzewo z rozgałęzieniami;
- bazy relacyjne – w bazach relacyjnych tabele są między sobą powiązane i mogą ze sobą współpracować, a uzyskanie potrzebnych informacji nie jest skomplikowane; do operowania na danych w bazach relacyjnych wykorzystuje się język SQL;
- bazy obiektowe – ich system jest zbliżony do programowania obiektowego, a dane są określane i przechowywane zgodnie z obiektowym modelem;
- bazy strumieniowe – operują na strumieniach danych, a implementowane są w nich języki ciągłych zapytań oparte o SQL;
- bazy temporalne – bazy posiadające informacje o czasie wprowadzenia i czasie ważności danych; często są administrowane automatycznie przez usuwanie lub archiwizowanie nieaktualnych danych;
- bazy grafowe – wykorzystujące struktury grafów z węzłami, krawędziami i własnościami do przedstawiania i przechowywania danych i obsług zapytań semantycznych; bazy grafowe najczęściej są wykorzystywane w przypadku modeli i sieci, gdzie nie da się łatwo zaprezentować związków za pomocą tabel – np. w mediach społecznośiowych;
- bazy nierelacyjne – bazy NoSQL, w których nie występują tabele i relacje, a dane nie muszą być jednorodne pod względem struktury.
Najczęściej używanymi bazami danych w programowaniu są bazy relacyjne. Bazy relacyjne posiadają wewnętrzne języki programowania, wykorzystujące SQL (Structured Query Language, strukturalny język zapytań) do operowania na danych i tworzenia zaawansowanych funkcji obsługi. Najpopularniejsze relacyjne bazy danych to MySQL, PostgreSQL i SQL Server.
Co to jest Cloud SQL?
Cloud SQL to usługa chmury Google. To usługa bazy danych w chmurze, czyli database-as-a-service (DBaaS). Dane w bazie danych są przechowywane i przetwarzane w chmurze, na infrastrukturze usługodawcy chmurowego, a dostęp jest zapewniany z poziomu konsoli Google Cloud Platform lub wiersza poleceń. To oznacza, że właściciel aplikacji może korzystać z mocy obliczeniowej Google Cloud, nie tracić czasu na utrzymanie własnej infrastruktury oraz łatwo łączyć usługę bazy danych w chmurze z innymi usługami GCP – na przykład maszynami wirtualnymi czy usługą zarządzania kontenerami Kubernetes.
Obecnie (listopad 2020) Cloud SQL obsługuje trzy popularne systemy bazodanowe:
- MySQL 5.6, 5.7 i 8.0,
- PostgreSQL 9.6, 10, 11, 12 i 13,
- SQL Server w wersji 2017.
Baza danych w chmurze Google
Cloud SQL jest częścią infrastruktury chmurowej Google Cloud Platform. GCP to skalowalne i elastyczne rozwiązanie, o dużej wydajności i wysokiej dostępności usług.
Wszystkie maszyny Google Cloud są zarządzane przez usługodawcę. To oznacza, że, korzystając z chmury, nie musisz tracić czasu na konserwację czy aktualizację sprzętu, a możesz korzystać z usług bezserwerowych, dostępnych w wielu regionach i lokalizacjach.
Google Cloud tworzy własną sieć połączeń światłowodowych pomiędzy centrami danych, co może być istotne zwłaszcza dla właścicieli aplikacji o globalnym zasięgu. Prędkość przesyłu przez sieć Google sięga nawet 10Tbs, co pozwala zwiększyć wydajność przy zachowaniu takiej samej ceny za usługę. Ponadto Google Cloud gwarantuje dostępność usług na poziomie 99,95-99,99%, co stanowi najwyższe SLA spośród popularnych dostawców usług chmurowych.
To oznacza, że Cloud SQL, jako jedna z usług GCP, jest usługą bezserwerową, skalowalną, zapewniającą wysoką dostępność i wydajność. Oraz elastyczność kosztów, ponieważ zużycie mocy obliczeniowej Google Cloud jest liczone w ujęciu sekundowym (o czym za chwilę przeczytasz).
Więcej o GCP przeczytasz w artykułach:
- Co to jest Google Cloud Platform i w jaki sposób wspiera biznes
- 20 powodów, by wybrać infrastrukturę chmurową GCP
Szerokie możliwości konfiguracji instancji
W Cloud SQL mamy możliwość szczegółowej konfiguracji instancji dla każdego systemu bazodanowego. Konfiguracja usługi do wymagań aplikacji będzie miała przełożenie na wydajność, ale też na cenę.
Tworząc instancję, możemy wybrać:
- region i lokalizację nowej instancji,
- rodzaj maszyny wirtualnej, jej pamięć i CPU; do wyboru mamy maszyny ze współdzielonym rdzeniem (shared-core machines), maszyny standardowe oraz maszyny o dużej ilości pamięci;
- dysk – SSD, o większej prędkości i wyższym QPS (query per second) lub HDD, o niższej cenie;
- pojemność (miejsce na dane) w przedziale od 10 do 30720 GB; można ustawić też automatyczne (stałe) zwiększanie przestrzeni w sytuacjach, gdy będzie taka potrzeba.
Skalowalność usługi i elastyczność kosztów
Ponieważ Cloud SQL korzysta z mocy obliczeniowej Google Cloud, koszt jest uzależniony od wykorzystanej przestrzeni dyskowej i zużycia w ujęciu sekundowym. Jeśli zapytań do bazy danych będzie niewiele i zużycie nie będzie wysokie, koszt usługi będzie niższy. W momencie, gdy aplikacja będzie obciążona (np. będzie z niej korzystało kilkakrotnie więcej użytkowników niż zwykle), usługa zeskaluje się w górę, a Cloud SQL bez problemu obsłuży wszystkie zapytania. Wykorzystanie mocy obliczeniowej będzie wyższe, a koszt usługi proporcjonalny do zużycia.
Cena usługi jest też uzależniona od posiadanego systemu bazodanowego, konfiguracji instancji czy regionu. Jednak w każdym przypadku koszt naliczany jest za rzeczywiste zużycie, a nie za “wynajęte na zaś” zasoby.
Zmniejszenie kosztów utrzymania dzięki automatyzacjom
Jak wspomniałam, usługi Google Cloud Platform są w pełni zarządzane – Cloud SQL również. O stan fizycznej infrastruktury dba zespół Google, co pozwala użytkownikowi przenieść koszty utrzymania w strefę rozwoju (w przypadku Arena.pl przejście na Google Cloud Platform pozwoliło zredukować wewnętrzne koszty utrzymania infrastruktury o 20-30% – zobacz case study). Automatyzacje usług pozwalają nie tylko zmniejszyć koszty wewnętrzne, ale chronią też przed popełnieniem błędu.
W usłudze Cloud SQL można wprowadzić wiele automatyzacji odciążających zespół techniczny. Zautomatyzować można między innymi:
- administrację bazą danych,
- zarządzanie pojemnością bazy danych i optymalizację zajmowanej przestrzeni dyskowej,
- wykonywanie kopii zapasowej i odzyskiwanie danych.
Automatyczne tworzenie kopii zapasowej
Już na etapie konfiguracji instancji, GCP daje możliwość wskazania okna czasowego, w którym będzie wykonywana automatyczna kopia zapasowa. Drugą zalecaną opcją jest odzyskiwanie danych z dokładnością do ułamka sekundy dzięki dziennikom logów binarnych. Kopię zapasową można przechować w innym regionie niż znajduje się instancja. Koszt przechowywania kopii zapasowej jest naliczany za gigabajt danych w skali miesiąca; wysokość jest uzależniona od systemu bazodanowego, regionu i konfiguracji instancji.
Bezpieczeństwo danych w Cloud SQL
Usługa Cloud SQL jest zgodna ze standardami bezpieczeństwa SSAE 16, ISO 27001, PCI DSS i HIPAA. Dane są szyfrowane w spoczynku (encryption at rest) i podczas przesyłania (encryption in transit). Cloud SQL obsługuje łączność z Virtual Private Cloud, a każda instancja posiada zaporę sieciową (firewall), która pozwala kontrolować dostęp sieci publicznej. Baza danych w chmurze z siecią publiczną może połączyć się jedynie za pośrednictwem SSL lub Cloud SQL Proxy.
Łatwa integracja z innymi usługami GCP
Z Cloud SQL można połączyć aplikacje znajdujące się poza środowiskiem Google Cloud. Jednak mając całą aplikację lub sporą jej część w chmurze Google, można osiągnąć więcej, chociażby dzięki połączeniom między usługami.
Cloud SQL będzie bez problemu działało z innymi usługami z wachlarza Google Cloud Platform, między innymi z grupy Compute & Serverless: Compute Engine, App Engine, Kubernetes Engine, Cloud Run czy Cloud Functions. Do szybkiego odpytania bazy danych i prowadzenia natychmiastowej analityki można zaangażować BigQuery (usługę hurtowni danych) wraz z rozwiązaniami takimi jak:
- BigQuery ML – umożliwiające tworzenie i uruchamianie modeli uczenia maszynowego w hurtowni danych,
- BigQuery GIS – poddający analizie dane geoprzestrzenne (GIS – Geographic Information Systems),
- czy BigQuery BI Engine – zintegrowana z Google Data Studio usługa prowadzenia natychmiastowej analizy in-memory.
Więcej o łączeniu Cloud SQL z usługą BigQuery przeczytasz na stronie Google Cloud: Cloud SQL federated queries.
Szybkie uruchomienie i łatwa migracja
Instancję usługi Cloud SQL można łatwo stworzyć i skonfigurować z poziomu konsoli Google Cloud. Cały proces składa się z paru kliknięć i uzupełnienia kilku pól. O tym, jak proste jest założenie instancji Cloud SQL, dowiesz się z tutorialu niżej.
Po konfiguracji i uruchomieniu usługi możesz przenieść swoją bazę danych do Cloud SQL. Proces jest czytelnie opisany w konsoli, a usługa posiada wbudowane narzędzia do przeprowadzenia migracji. Przeprowadzenie migracji nie jest uciążliwe (w wielu przypadkach nie trzeba nawet wprowadzać zmian w kodzie aplikacji), jedynie sam import bazy danych może zająć trochę czasu.
Ile kosztuje Cloud SQL?
Płatności za usługę Cloud SQL są uzależnione od zużycia oraz zajętej przestrzeni. Na cenę końcową składa się kilka czynników, m.in.:
- używany system bazodanowy – opłaty są inne dla MySQL, dla PostgreSQL i inne dla SQL Server,
- region i lokalizacja instancji,
- CPU i pamięć maszyny wirtualnej,
- rodzaj dysku i używana przestrzeń,
- opcja wysokiej dostępności (high availability),
- sieć i sposób przesyłu danych,
- posiadane licencje.
Końcowy koszt usługi możesz obliczyć w kalkulatorze Google Cloud lub zgłosić się do FOTC po estymację.
Dowiedz się więcej o Google Cloud Platform
Jak uruchomić i skonfigurować usługę Cloud SQL? Tutorial
Konfiguracja i uruchomienie usługi trwa kilka minut, a najwięcej czasu zajmuje tworzenie instancji przez Google Cloud Platform na podstawie podanych informacji. Czyli – kilka kliknięć i krótka przerwa na kawę lub herbatę!
Żeby uruchomić usługę Cloud SQL, musisz posiadać aktywne konto w Google Cloud Platform. Tutaj przeczytasz, jak utworzyć i skonfigurować konto w GCP.
Wejdź do konsoli Google pod adresem https://console.cloud.google.com/.
Z menu po lewej stronie wybierz SQL.
Następnie wybierz system bazodanowy. Niezależnie od wybranej bazy danych, kolejne kroki konfiguracji będą takie same.
Uzupełnij nazwę instancji i hasło.
Wskaż region. Strefę możesz zostawić do automatycznego uzupełnienia przez Google – nie będzie miało to wpływu na koszt czy wydajność usługi.
Wybierz wersję bazy danych, którą posiadasz.
Rozwiń “Pokaż opcje konfiguracyjne”. Będziesz mógł skonfigurować tam sieci, wybrać typ maszyn wirtualnych, rodzaj dysku i przestrzeń czy ustawić automatyczne wykonywanie kopii zapasowych.
Pierwsze na liście są ustawienia połączeń.
W opcji “Połączenie” ustawisz sposób łączenia z instancją bazy danych – przez prywatne IP lub publiczny adres. Po połączenia przez prywatny adres IP konieczne jest korzystanie m.in. z Compute Engine API czy Service Networking API. Przy wyborze opcji “Publiczny adres IP” powinieneś dodać sieci, które będą się łączyły z instancją przez Cloud SQL Proxy.
Następnie przejdź do “Typ maszyny i pamięć”.
Wybierzesz tutaj rodzaj maszyny wirtualnej. Możesz wybierać spośród maszyn ze współdzielonym rdzeniem, maszyn standardowych czy maszyn o dużej ilości pamięci.
Następnie wybierz rodzaj dysku – SSD dla wysokiej prędkość i większej liczby zapytań na sekundę lub bardziej optymalną kosztowo opcję HDD.
Wskaż, ile miejsca na dane potrzebujesz (przedział od 10 do 30720 GB). Im wyższa wartość wskażesz, tym większa będzie wydajność instancji Cloud SQL. Możesz włączyć opcję automatycznego (trwałego) zwiększania pamięci w celu zachowania wysokiej wydajności.
Wybierz sposób szyfrowania danych – za pomocą klucza Google lub własnego klucza Google Cloud Key Management Service.
Przejdź do “Kopie zapasowe, odzyskiwanie i wysoka dostępność”.
Jeśli chcesz korzystać z opcji automatycznej kopii zapasowej (co jest gorąco zalecane – więcej na ten temat przeczytasz w artykułach o MySQL backup oraz Cloud SQL Backup), wybierz okno czasowe na wykonywanie backupu. Możesz wybrać region, w którym ma być zapisana kopia zapasowa.
Domyślnie zaznaczona jest też opcja odzyskiwania danych, która włącza dziennik zapisu logów binarnych.
Jeśli zależy Ci na wysokiej dostępności usługi, zaznacz opcję “Wysoka dostępność (w regionie)”. W sytuacji awaryjnej usługa zostanie przełączona do innej instancji, a wysoka dostępność zachowana. Uwaga – to łączy się z dodatkowymi kosztami.
Po zakończeniu konfiguracji kliknij “Utwórz”. Tworzenie instancji może zająć kilka minut.
Ukaże Ci się panel instancji Cloud SQL, gdzie znajdują się informacje o usłudze, możliwość edycji konfiguracji, zapis operacji i logów czy ustawienia konserwacji. Na wykresie u góry możesz monitorować poziom wykorzystania procesora (CPU), wykorzystanie dysku czy pamięci, bajty przychodzące i wychodzące czy liczbę zapytań na sekundę.
I to wszystko z Cloud SQL. W razie trudności skontaktuj się z nami – chętnie pomożemy!