Principy architektury PostgreSQL
PostgreSQL je systém pro správu relačních databází klienta/serveru (RDMS). PostgreSQL také podporuje širokou škálu rozšíření, například rozšíření Citus v možnosti Azure Cosmos DB for PostgreSQL. Po načtení rozšíření do databáze funguje stejně jako jakákoli integrovaná funkce.
PostgreSQL má také vlastní dotazovací jazyk s názvem pgsql. Kromě toho PostgreSQL podporuje procedurální jazyky, jako je Ruby on Rails.
Architektura klienta/serveru
PostgreSQL je založená na architektuře klienta/serveru. Server ukládá, spravuje a vrací data klientským programům. Klientské programy požadují data pomocí pgSQL nebo některého z procedurálních jazyků, které PostgreSQL podporuje, například PL/pgSQL.
Relace PostgreSQL se skládá ze tří částí:
- Postmaster
- Klientská aplikace
- Server
Poštmistr
Postmaster je proces démon dohledu, který spravuje server PostgreSQL. Proces démon postmaster spravuje komunikaci mezi různými procesy serveru, včetně inicializace serveru, vypnutí serveru, zpracování požadavků na připojení a provádění dalších procesů na pozadí. Ve službě Azure Database for PostgreSQL nemáte přístup k systému souborů ani k procesu Postmaster.
Klientské aplikace
Klienti spouštějí dotazy a komunikují s databázemi na serveru Azure Database for PostgreSQL. Ke spouštění dotazů potřebujete klientský nástroj, jako je Azure Data Studio, DBeaver, pgAdmin nebo psql. O klientských nástrojích se dozvíte v dalším modulu.
Procesy serveru
Cluster – jeden server PostgreSQL může hostovat více uživatelských databází. PostgreSQL odkazuje na tuto kolekci databází jako na cluster. Každá databáze je oddělená od ostatních a uživatelé a aplikace komunikují s jednou databází. Uživatelé se vytvářejí na úrovni clusteru nebo serveru.
Data pro tyto databáze jsou uložená v datovém adresáři clusteru s názvem PGDATA. Datový adresář PGDATA obsahuje soubor obsahující verzi spuštění PostgreSQL, pg_tblspc obsahující odkazy na tabulkové prostory a pg_xlog , který obsahuje soubory protokolů pro zápis.
Poznámka:
Azure Database for PostgreSQL je služba, která spravuje úložiště a základní systém souborů. Jako uživatel tohoto serveru nemáte přímý přístup k adresáři PGDATA ani k žádnému z jeho podadresářů.
Kromě databází, které vytvoříte, existují tři systémové databáze:
- postgres – výchozí databáze. Po vytvoření serveru se připojíte k databázi postgres.
- azure_maintenance – databáze, která spravuje procesy služby. K této databázi nemáte přímý přístup.
- azure_sys – databáze úložiště dotazů. Nesmíte upravovat azure_sys databázi ani její schémata. Změna čehokoli v azure_sys zabrání správnému fungování úložiště dotazů a dalších funkcí výkonu.
Schémata – Schéma je pojmenované seskupení databázových objektů. Velké databáze s mnoha objekty využívají výhod uspořádání objektů do schémat. Například vytvoření schématu pro objekty související s prodejem a schéma pro objekty související s klientem usnadňuje nalezení správného objektu.
Parametry serveru – PostgreSQL má několik konfiguračních souborů, které určují, jak má databázový stroj fungovat. Hlavní konfigurační soubor PostgreSQL se nazývá postgresql.conf.
Azure Database for PostgreSQL nahradil tyto konfigurační soubory parametry serveru, ke kterým je možné přistupovat prostřednictvím webu Azure Portal nebo pomocí Azure CLI.
Zobrazení nebo změna parametrů serveru na webu Azure Portal:
- Přejděte na server Azure Database for PostgreSQL.
- V nabídce vlevo v části Nastavení vyberte Parametry serveru.
- Pomocí panelu hledání můžete filtrovat seznam parametrů nebo vybrat číslo stránky, které potřebujete.
Úložiště – Azure Database for PostgreSQL spravuje úložiště dat za vás a zřizuje se na úrovni serveru. Bez ohledu na to, jestli vyberete úroveň výpočetních prostředků optimalizované pro obecné účely nebo optimalizováno pro paměť, můžete použít až 32 TB úložiště. Pokud chcete zřídit úložiště, přejděte na server Azure Database for PostgreSQL a v části Přehled vyberte konfiguraci. Zobrazí se oddíl Compute + Storage . V části Úložiště a velikost úložiště (v GB) pomocí posuvníku vyberte velikost úložiště, které chcete zřídit.
Velikost zřízeného úložiště definuje kapacitu vstupně-výstupních operací dostupnou pro váš server Azure Database for PostgreSQL. Spotřebu vstupně-výstupních operací můžete monitorovat na webu Azure Portal nebo pomocí příkazů Azure CLI. Relevantní metriky pro monitorování jsou limit úložiště, procento úložiště, využité úložiště a procento vstupně-výstupních operací.
Poznámka:
Po vytvoření serveru Azure Database for PostgreSQL můžete zvýšit velikost úložiště, ale nemůžete snížit velikost úložiště.
Tablespaces – S místní implementací PostgreSQL můžete vytvořit tabulkové prostory , které jsou propojené s hlavní oblastí úložiště s názvem PGDATA, pomocí podadresáře pg_tblspc . Azure Database for PostgreSQL nepodporuje tabulkové prostory: všechny tabulky se vytvářejí v hlavní oblasti úložiště.
Systémové katalogy – PostgreSQL obsahuje mnoho systémových tabulek a zobrazení, které ukládají informace o databázových objektech. Například pg_database vrátí všechny databáze na serveru a pg_class ukládá statistiky o tabulkách.
Poznámka:
Azure Database for PostgreSQL umožňuje přístup k některým, ale ne ke všem systémovým katalogům.
Rozšíření – PostgreSQL podporuje řadu rozšíření, která rozšiřují základní funkce databázového stroje. Tato rozšíření jsou dostupná v úložišti s názvem PostgreSQL Extensions Network (PGXN).
Pokud chcete použít rozšíření PostgreSQL, musí být nainstalované ve vaší databázi. Pokud chcete nainstalovat rozšíření, spusťte příkaz CREATE EXTENSION z nástroje psql a načtěte rozšíření do databáze. Příklad:
SELECT create_extension('postgis');
Pokud chcete zjistit, která rozšíření podporují Službu Azure Database for PostgreSQL, spusťte následující dotaz:
SELECT * FROM pg_available_extensions;
Všechny servery Azure Database for PostgreSQL zahrnují rozšíření pg_stat_statements. Toto rozšíření je již nainstalované, aby poskytovalo funkce pro sledování statistik provádění příkazů SQL. Parametr serveru pg_stat_statements.track definuje, jaké příkazy se počítají rozšířením. Možnosti jsou následující:
- Top – sleduje všechny příkazy vydané přímo klienty (výchozí).
- Žádné – nesledují se žádné příkazy.
- All – sleduje všechny příkazy včetně vnořených příkazů a příkazů vyvolaných funkcemi.
Poznámka:
Na serveru jsou režijní náklady na výkon pro protokolování jednotlivých příkazů SQL. Pokud aktivně nepoužíváte pg_stat_statements, nastavte tento parametr na žádné. Upozorňujeme také, že některé monitorovací služby třetích stran můžou záviset na pg_stat_statements.
Optimalizátor dotazů – PostgreSQL používá metodu optimalizace dotazů založenou na nákladech. Analyzátor zkontroluje syntaxi dotazu a rozdělí dotaz do různých částí. Analyzátor vytvoří strom analýzy a předá dotaz autorovi, který použije pravidla pro dotaz. Plánovač zjistí nejlepší způsob provedení dotazu před provedením dotazu.
Back-endové procesy – proces PostgreSQL – model jednotlivých transakcí Když se nový uživatel připojí, PostgreSQL ověří uživatele a vytvoří proces back-endového serveru pro zpracování připojení. Klient komunikuje pouze s procesem serveru při odesílání dotazů a příjmu výsledků dotazů.