Omówienie architektury bazy danych PostgreSQL

Ukończone

PostgreSQL to system zarządzania relacyjnymi bazami danych klienta/serwera (RDMS). Baza danych PostgreSQL obsługuje również szeroką gamę rozszerzeń, takich jak rozszerzenie Citus w opcji Azure Cosmos DB for PostgreSQL. Po załadowaniu rozszerzenia do bazy danych działa jak każda wbudowana funkcja.

Usługa PostgreSQL ma również własny język zapytań o nazwie pgsql. Ponadto baza danych PostgreSQL obsługuje języki proceduralne, takie jak Ruby on Rails.

Zrzut ekranu przedstawiający rozszerzenia i języki postgreSQL.

Architektura klienta/serwera

Usługa PostgreSQL jest oparta na architekturze klienta/serwera. Serwer przechowuje, zarządza i zwraca dane do programów klienckich. Programy klienckie żądają danych przy użyciu narzędzia pgSQL lub jednego z języków proceduralnych obsługiwanych przez usługę PostgreSQL, takich jak PL/pgSQL.

Sesja postgreSQL składa się z trzech części:

  • Postmaster
  • Aplikacja kliencka
  • Serwer

Postmaster

Postmaster to proces demona nadzoru, który zarządza serwerem PostgreSQL. Demon postmaster zarządza komunikacją między różnymi procesami serwera, w tym inicjowaniem serwera, zamykaniem serwera, obsługą żądań połączeń i wykonywaniem innych procesów w tle. W usłudze Azure Database for PostgreSQL nie masz dostępu do systemu plików ani do procesu Postmaster.

Aplikacje klienckie

Klienci uruchamiają zapytania i wchodzą w interakcje z bazami danych na serwerze usługi Azure Database for PostgreSQL. Do uruchamiania zapytań potrzebne jest narzędzie klienckie, takie jak Azure Data Studio, DBeaver, pg Administracja lub psql. W następnym module poznasz narzędzia klienckie.

Procesy serwera

Klaster — pojedynczy serwer PostgreSQL może hostować wiele baz danych użytkowników. Baza danych PostgreSQL odnosi się do tej kolekcji baz danych jako klastra. Każda baza danych jest oddzielona od innych, a użytkownicy i aplikacje współdziałają z pojedynczą bazą danych. Użytkownicy są tworzeni na poziomie klastra lub serwera.

Dane dla tych baz danych są przechowywane w katalogu danych klastra o nazwie PGDATA. Katalog danych PGDATA zawiera plik zawierający uruchamianą wersję bazy danych PostgreSQL, pg_tblspc zawierającą linki do przestrzeni tabel i pg_xlog, który zawiera pliki dziennika z wyprzedzeniem zapisu.

Uwaga

Azure Databases for PostgreSQL to usługa, która zarządza magazynem i bazowym systemem plików. Jako użytkownik tego serwera nie masz bezpośredniego dostępu do katalogu PGDATA ani żadnego z jego podkatalogów.

Oprócz tworzonych baz danych istnieją trzy systemowe bazy danych:

  • postgres — domyślna baza danych. Po utworzeniu serwera nawiąż połączenie z bazą danych postgres.
  • azure_maintenance — baza danych, która zarządza procesami usług. Nie masz bezpośredniego dostępu do tej bazy danych.
  • azure_sys — baza danych magazynu zapytań. Nie można modyfikować bazy danych azure_sys ani jej schematów. Zmiana wszystkich elementów w azure_sys uniemożliwia prawidłowe działanie magazynu zapytań i innych funkcji wydajności.

Schematy — schemat jest nazwanym grupowaniem obiektów bazy danych. Duże bazy danych z wieloma obiektami korzystają z organizowania obiektów w schematy. Na przykład utworzenie schematu dla obiektów powiązanych ze sprzedażą i schemat dla obiektów powiązanych z klientem ułatwia znalezienie poprawnego obiektu.

Parametry serwera — baza danych PostgreSQL ma kilka plików konfiguracji, które określają, jak powinien działać aparat bazy danych. Główny plik konfiguracji postgreSQL nosi nazwę postgresql.conf.

Usługa Azure Database for PostgreSQL zastąpiła te pliki konfiguracji parametrami serwera, do których można uzyskać dostęp za pośrednictwem poczty platformy Azure lub przy użyciu interfejsu wiersza polecenia platformy Azure.

Aby wyświetlić lub zmienić parametry serwera w witrynie Azure Portal:

  1. Przejdź do serwera usługi Azure Database for PostgreSQL.
  2. W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Parametry serwera.
  3. Użyj paska wyszukiwania, aby przefiltrować listę parametrów lub wybrać wymagany numer strony.

Storage — usługa Azure Database for PostgreSQL zarządza magazynem danych i jest aprowizowana na poziomie serwera. Niezależnie od tego, czy wybrano warstwę obliczeniową z możliwością serii, ogólnego przeznaczenia, czy zoptymalizowaną pod kątem pamięci, możesz użyć między 32 GB a 16 TB miejsca do magazynowania. Aby aprowizować więcej magazynu, przejdź do serwera usługi Azure Database for PostgreSQL, a następnie w sekcji Przegląd wybierz konfigurację. Zostanie wyświetlona sekcja Obliczenia i magazyn . W obszarze Magazyn i Rozmiar magazynu (w GB) użyj suwaka, aby wybrać ilość miejsca do aprowizacji.

Ilość miejsca do magazynowania, który aprowizujesz, definiuje pojemność we/wy dostępną dla serwera usługi Azure Database for PostgreSQL. Użycie operacji we/wy można monitorować w witrynie Azure Portal lub za pomocą poleceń interfejsu wiersza polecenia platformy Azure. Odpowiednie metryki do monitorowania to limit magazynu, procent magazynu, używany magazyn i procent operacji we/wy.

Uwaga

Ilość miejsca do magazynowania można zwiększyć po utworzeniu serwera usługi Azure Database for PostgreSQL, ale nie można zmniejszyć ilości miejsca do magazynowania.

Tablespaces — za pomocą lokalnej implementacji bazy danych PostgreSQL można tworzyć przestrzenie tabel połączone z głównym obszarem magazynu o nazwie PGDATA przy użyciu podkatalogu pg_tblspc . Usługa Azure Database for PostgreSQL nie obsługuje przestrzeni tabel: wszystkie tabele są tworzone w głównym obszarze magazynu.

Katalogi systemowe — Baza danych PostgreSQL zawiera wiele tabel systemowych i widoków, które przechowują informacje o obiektach bazy danych. Na przykład pg_database zwraca wszystkie bazy danych na serwerze i pg_class przechowuje statystyki dotyczące tabel.

Uwaga

Usługa Azure Database for PostgreSQL umożliwia dostęp do niektórych, ale nie wszystkich katalogów systemowych.

Rozszerzenia — baza danych PostgreSQL obsługuje szereg rozszerzeń, które rozszerzają podstawowe funkcje aparatu bazy danych. Te rozszerzenia są udostępniane w repozytorium o nazwie PostgreSQL Extensions Network (PGXN).

Aby użyć rozszerzenia PostgreSQL, należy go zainstalować w bazie danych. Aby zainstalować rozszerzenie, uruchom polecenie CREATE EXTENSION z narzędzia psql, aby załadować rozszerzenie do bazy danych. Na przykład:

SELECT create_extension('postgis');

Aby dowiedzieć się, które rozszerzenia obsługują usługę Azure Database for PostgreSQL, uruchom następujące zapytanie:

SELECT * FROM pg_available_extensions;

Wszystkie serwery usługi Azure Database for PostgreSQL obejmują rozszerzenie pg_stat_statements. To rozszerzenie jest już zainstalowane w celu zapewnienia funkcjonalności śledzenia statystyk wykonywania instrukcji SQL. Parametr serwera pg_stat_statements.track definiuje instrukcje, które są liczone przez rozszerzenie. Dostępne opcje:

  • Top — śledzi wszystkie instrukcje wydane bezpośrednio przez klientów (ustawienie domyślne).
  • Brak — żadne instrukcje nie są śledzone.
  • Wszystkie — śledzi wszystkie instrukcje, w tym zagnieżdżone instrukcje i instrukcje wywoływane przez funkcje.

Uwaga

Na serwerze występuje obciążenie związane z wydajnością w celu rejestrowania każdej instrukcji SQL. Jeśli nie używasz aktywnie pg_stat_statements, ustaw ten parametr na wartość none. Należy również pamiętać, że niektóre usługi monitorowania innych firm mogą polegać na pg_stat_statements.

Optymalizator zapytań — usługa PostgreSQL używa metody optymalizacji zapytań opartej na kosztach. Analizator sprawdza składnię zapytania i oddziela zapytanie do różnych części. Analizator tworzy drzewo analizy i przekazuje zapytanie do ponownej maszyny, która stosuje reguły do zapytania. Planista określa najlepszy sposób wykonywania zapytania przed wykonaniem zapytania.

Procesy zaplecza — proces PostgreSQL — model transakcji. Gdy nowy użytkownik nawiązuje połączenie, usługa PostgreSQL uwierzytelnia użytkownika i tworzy proces serwera zaplecza w celu obsługi połączenia. Klient wchodzi w interakcję tylko z procesem serwera podczas przesyłania zapytań i odbierania wyników zapytań.