Úvod k Azure Database for PostgreSQL

Dokončeno

Azure Database for PostgreSQL je k dispozici ve víceserverových verzích.

Jako vývojář databáze s mnoha lety zkušeností se spouštěním a správou místních instalací PostgreSQL chcete prozkoumat, jak Azure Database for PostgreSQL podporuje a škáluje její funkce.

V této lekci prozkoumáte ceny, podporu verzí, replikaci a možnosti škálování služby Azure Database for PostgreSQL.

Azure Database for PostgreSQL

Služba Azure Database for PostgreSQL je implementace komunitní verze PostgreSQL. Služba poskytuje běžné funkce používané typickými systémy PostgreSQL, včetně geoprostorové podpory a fulltextového vyhledávání.

Microsoft přizpůsobil PostgreSQL pro platformu Azure a je úzce integrovaný s mnoha službami Azure. Služba Azure Database for PostgreSQL je plně spravovaná Microsoftem. Microsoft zpracovává aktualizace a opravy softwaru a poskytuje smlouvu SLA s 99,99% dostupností. To znamená, že se můžete soustředit jenom na databáze a aplikace spuštěné pomocí této služby.

V každé instanci této služby můžete nasadit více databází.

Cenové úrovně

Při vytváření instance služby Azure Database for PostgreSQL zadáte výpočetní prostředky a prostředky úložiště, které chcete přidělit, výběrem cenové úrovně. Cenová úroveň kombinuje počet jader virtuálních procesorů, množství dostupného úložiště a různé možnosti zálohování. Čím více prostředků přidělíte, tím vyšší jsou náklady.

Služba Azure Database for PostgreSQL používá úložiště k ukládání databázových souborů, dočasných souborů, transakčních protokolů a protokolů serveru. Volitelně můžete určit, že chcete, aby bylo úložiště dostupné, aby se zvýšilo, když se blížíte aktuální kapacitě. Pokud tuto možnost nevyberete, servery, na kterých dochází úložiště, budou dál spuštěné, ale budou fungovat jen pro čtení.

Cenové úrovně webu Azure Portal seskupují do tří širokých rozsahů:

  • Basic, který je vhodný pro malé systémy a vývojová prostředí, ale má proměnlivý vstupně-výstupní výkon.
  • Pro obecné účely, který poskytuje předvídatelný výkon až 6 000 IOPS v závislosti na počtu procesorových jader a dostupném prostoru úložiště.
  • Optimalizováno pro paměť, které využívá až 32 jader virtuálních procesorů optimalizovaných pro paměť a také poskytuje předvídatelný výkon až 6 000 IOPS.

Microsoft má také možnost Velké úložiště ve verzi Preview, která může zřídit až 16 TB úložiště a podporovat až 20 000 IOPS.

Můžete doladit počet jader procesoru a úložiště, které potřebujete. Po vytvoření databází můžete vertikálně navýšit a snížit kapacitu výpočetních prostředků – nemůžete vertikálně snížit kapacitu úložiště, pouze nahoru– a podle potřeby přepínat mezi cenovými úrovněmi Pro obecné účely a Optimalizováno pro paměť. Platíte jen za to, co potřebujete.

Image showing the pricing tiers in the Azure portal

Poznámka:

Pokud změníte počet jader procesoru, Azure vytvoří nový server s tímto přidělením výpočetních prostředků. Když je server spuštěný, klientská připojení se přepnou na nový server. Tento přepínač může trvat až minutu. Během tohoto intervalu není možné provádět žádná nová připojení a všechny transakce v letu budou vráceny zpět.

Pokud změníte velikost úložiště jenom možností zálohování, nedojde k přerušení služby.

Cenová úroveň a prostředky zpracování přidělené určují maximální počet souběžných připojení, která bude služba podporovat. Pokud například vyberete cenovou úroveň pro obecné účely a přidělíte 64 virtuálních jader, služba podporuje 1900 souběžných připojení. Úroveň Basic se dvěma virtuálními jádry zpracovává až 100 souběžných připojení. Samotný Azure vyžaduje k monitorování serveru pět těchto připojení. Pokud překročíte počet dostupných připojení, zobrazí se klientům chyba ZÁVAŽNÁ CHYBA : Omlouváme se, ale příliš mnoho klientů už.

Ceny se můžou změnit. Nejnovější informace najdete na stránce s cenami služby Azure Database for PostgreSQL.

Parametry serveru

V místní instalaci PostgreSQL nastavíte parametry konfigurace serveru v souboru postgresql.conf . Pomocí Azure Database for PostgreSQL můžete upravit parametry konfigurace prostřednictvím stránky Parametry serveru. Ne všechny parametry pro místní instalaci PostgreSQL jsou relevantní pro Službu Azure Database for PostgreSQL, takže stránka parametrů serveru obsahuje jenom parametry vhodné pro Azure.

Image showing the Server parameters page in the Azure portal

Změny parametrů označených jako dynamické se projeví okamžitě. Statické parametry vyžadují restartování serveru. Server restartujete pomocí tlačítka Restartovat na stránce Přehled na portálu:

Image showing the Overview page in the Azure portal with the Restart button highlighted

Vysoká dostupnost

Azure Database for PostgreSQL je služba s vysokou dostupností. Obsahuje integrované mechanismy pro detekci chyb a převzetí služeb při selhání. Pokud se uzel zpracování zastaví kvůli problému s hardwarem nebo softwarem, přepne se nový uzel, aby ho nahradil. Všechna připojení, která tento uzel aktuálně používají, se zahodí, ale automaticky se otevřou proti novému uzlu. Všechny transakce prováděné uzlem, které selhávají, se vrátí zpět. Z tohoto důvodu byste měli vždy zajistit, aby klienti byli nakonfigurováni na zjišťování a opakování neúspěšných operací.

Podporované verze PostgreSQL

Služba Azure Database for PostgreSQL aktuálně podporuje PostgreSQL verze 11, a to zpět na verzi 9.5. Určíte, jakou verzi PostgreSQL se má použít při vytváření instance služby. Microsoft se snaží aktualizovat službu, jakmile budou k dispozici nové verze PostgreSQL, a zajistí kompatibilitu s předchozími dvěma hlavními verzemi.

Azure automaticky spravuje upgrady na vaše databáze mezi podverzemi PostgreSQL , ale ne hlavní verze. Pokud máte například databázi, která používá PostgreSQL verze 10, Azure může databázi automaticky upgradovat na verzi 10.1. Pokud chcete přejít na verzi 11, musíte exportovat data z databází v aktuální instanci služby, vytvořit novou instanci služby Azure Database for PostgreSQL a importovat data do této nové instance.

Koordinační a pracovní uzly

Data se horizontálně rozdělují a distribuují mezi pracovní uzly. Dotazovací modul v koordinátoru může paralelizovat složité dotazy a směrovat zpracování na příslušné pracovní uzly. Pracovní uzly jsou vybrány podle toho, podle kterých horizontální oddíly uchovávají zpracovávaná data. Koordinátor pak před odesláním zpět klientovi nashromáždí výsledky z pracovních uzlů. Jednodušší dotazy můžou být prováděny pouze pomocí jednoho pracovního uzlu. Klienti se také připojují k koordinátorovi a nikdy nekomunikují přímo s pracovním uzlem.

Podle potřeby můžete vertikálně navýšit nebo snížit počet pracovních uzlů ve vaší službě.

Distribuce dat

Data distribuujete mezi pracovní uzly vytvořením distribuovaných tabulek. Distribuovaná tabulka je rozdělená na horizontální oddíly a každý horizontální oddíl je přidělen k úložišti na pracovním uzlu. Určíte, jak rozdělit data definováním sloupce jako distribučního sloupce. Data se horizontálně dělí na základě hodnot dat v tomto sloupci. Při návrhu distribuované tabulky je důležité pečlivě vybrat distribuční sloupec; Měli byste použít sloupec s velkým počtem jedinečných hodnot, které by se obvykle používaly k seskupení souvisejících řádků. Například v tabulce pro systém elektronického obchodování, který ukládá informace o objednávkách zákazníků, může být ID zákazníka přiměřeným distribučním sloupcem. Všechny objednávky pro daného zákazníka se budou uchovávat ve stejném horizontálním oddílu, ale objednávky pro všechny zákazníky budou rozloženy mezi horizontální oddíly.

Můžete také vytvořit referenční tabulky. Tyto tabulky obsahují vyhledávací data, například názvy měst nebo stavových kódů. Referenční tabulka se replikuje celý do každého pracovního uzlu. Data v referenční tabulce by měla být relativně statická; každá změna vyžaduje aktualizaci každé kopie tabulky.

Nakonec můžete vytvořit místní tabulky. Místní tabulka není horizontálně dělená, ale je uložená na koordinačním uzlu. Používejte místní tabulky pro uchovávání malých tabulek s daty, která pravděpodobně nebudou vyžadovat spojení. Příklady zahrnují jména uživatelů a jejich přihlašovací údaje.

Replikace dat ve službě Azure Database for PostgreSQL

Repliky jen pro čtení jsou užitečné pro zpracování úloh náročných na čtení. Klientská připojení se dají rozprostřet mezi repliky a zmírnit zatížení jedné instance služby. Pokud jsou klienti umístěni v různých oblastech světa, pomocí replikace mezi oblastmi umístíte data blízko každé sady klientů a snížíte latenci.

Repliky můžete také použít jako součást plánu nepředvídaných událostí pro zotavení po havárii. Pokud hlavní server přestane být dostupný, možná se budete moct připojit k replice.

Poznámka:

Pokud dojde ke ztrátě nebo odstranění hlavního serveru, všechny repliky jen pro čtení se místo toho stanou servery pro čtení i zápis. Tyto servery však budou nezávislé na sobě, takže všechny změny dat na jednom serveru se nezkopírují na zbývající servery.

Vytvoření repliky

Replika jen pro čtení obsahuje kopii databází uložených na původním serveru – označované jako hlavní server. K vytvoření repliky hlavního serveru použijete Azure Portal nebo rozhraní příkazového řádku.

Image showing the Replication page for the Azure Database for PostgreSQL service

Když vytvoříte repliku jen pro čtení, Azure vytvoří novou instanci služby Azure Database for PostgreSQL a pak zkopíruje databáze z hlavního serveru na nový server. Replika běží v režimu jen pro čtení. Všechny pokusy o změnu dat selžou.

Prodleva repliky

Replikace není synchronní a změny dat na hlavním serveru můžou chvíli trvat, než se v replikách objeví. Klientské aplikace, které se připojují k replikám, musí být schopny zvládnout tuto úroveň konečné konzistence. Azure Monitor umožňuje sledovat časovou prodlevu v replikaci pomocí metrik Max Lag Across Replicas a Replica Lag .

Správa a monitorování

Ke správě a monitorování databází můžete použít známé nástroje, jako je pg Správa. Některé funkce zaměřené na server, jako je třeba zálohování a obnovení serveru, však nejsou k dispozici, protože je server spravován a udržován společností Microsoft.

Image showing the pgAdmin tool connected to Azure Database for PostgreSQL

Nástroje Azure pro monitorování služby Azure Database for PostgreSQL

Azure poskytuje rozsáhlou sadu služeb, které používáte k monitorování výkonu serveru a databáze a řešení potíží. Tyto služby umožňují zobrazit, jak PostgreSQL využívá prostředky Azure, které jste přidělili. Tyto informace slouží k vyhodnocení, jestli potřebujete škálovat systém, upravit strukturu tabulek a indexů v databázích a vizualizovat statistiky modulu runtime a další události. Mezi dostupné služby patří:

  • Azure Monitor Azure Database for PostgreSQL poskytuje metriky, které umožňují sledovat položky, jako je využití procesoru a úložiště, V/V frekvence, obsazenost paměti, počet aktivních připojení a prodleva replikace:

    Image showing the Azure Monitor with metrics for Azure Database for PostgreSQL

  • Protokoly serveru. Azure zpřístupní protokoly pro každý server PostgreSQL. Stáhnete je z webu Azure Portal:

    Image showing the server logs for an instance of the Azure Database for PostgreSQL service

  • Úložiště dotazů a Přehledy výkonu dotazů. Azure Database for PostgreSQL ukládá informace o dotazech spuštěných proti databázím na serveru a uloží je do databáze s názvem azure_sys ve schématu query_store . Dotazem na zobrazení query_store.qs_view zobrazíte tyto informace. Azure Database for PostgreSQL ve výchozím nastavení nezachytává žádné informace o dotazu, protože představuje malou režii, ale sledování můžete povolit nastavením vlastnosti serveru pg_qs.query_capture_mode na ALL nebo TOP.

    Image showing the server server parameters page for Azure Database for PostgreSQL

    Úložiště dotazů také nakonfigurujete tak, aby zachytilo informace o dotazech, které tráví čas čekáním. Dotaz může čekat, než jiný dotaz uvolní zámek v tabulce, nebo protože dotaz provádí velké množství vstupně-výstupních operací nebo protože paměť běží krátce. Tyto informace se zobrazí v zobrazení query_store.runtime_stats_view .

    Pokud raději chcete tyto statistiky vizualizovat místo spouštění příkazů SQL, použijte query Performance Insight na webu Azure Portal:

    Image showing Query Performance Insight

  • Doporučení k výkonu. Nástroj Doporučení k výkonu, který je k dispozici také na webu Azure Portal, zkoumá dotazy, které vaše aplikace běží. Podívá se také na struktury v databázi a doporučí, jak uspořádat data – a jestli byste měli zvážit přidání nebo odebrání indexů.

Možnosti připojení klienta

Azure Database for PostgreSQL běží za bránou firewall. Pokud chcete získat přístup ke službě a databázi, musíte přidat pravidlo brány firewall pro rozsahy IP adres, ze kterých se vaši klienti připojují. Pokud potřebujete přistupovat ke službě z Azure , jako je aplikace spuštěná pomocí Aplikace Azure Services, musíte také povolit přístup ke službám Azure.

Konfigurace brány firewall

Nejjednodušší způsob, jak nakonfigurovat bránu firewall, je použít nastavení zabezpečení Připojení ion pro vaši službu na webu Azure Portal. Přidejte pravidlo pro každý rozsah IP adres klienta. Tato stránka slouží také k vynucení připojení SSL ke službě.

Image showing the firewall configuration for Azure Database for PostgreSQL

Kliknutím na přidat IP adresu klienta na panelu nástrojů přidáte IP adresu vašeho stolního počítače.

Pokud jste nakonfigurovali repliky jen pro čtení, musíte do každé z nich přidat pravidlo brány firewall, aby byly přístupné klientům.

Klientské knihovny připojení

Pokud píšete vlastní klientské aplikace, musíte použít odpovídající databázový ovladač pro připojení k databázi PostgreSQL. Mnohé z těchto knihoven jsou závislé na programovacím jazyce. Jsou udržovány nezávislými třetími stranami. Azure Database for PostgreSQL podporuje klientské knihovny pro Python, PHP, Node.js, Java, Ruby, Go, C# (.NET), ODBC, C a C++.

Logika opakování klienta

Jak už bylo zmíněno dříve, některé události, jako je převzetí služeb při selhání při obnovování vysoké dostupnosti a vertikální navýšení kapacity prostředků procesoru, můžou způsobit krátkou ztrátu připojení. Všechny probíhající transakce se vrátí zpět. Azure Database for PostgreSQL automaticky přesměruje připojeného klienta na pracovní uzel, ale všechny operace prováděné klientem v tuto chvíli vrátí chybu. Tento výskyt byste měli považovat za přechodnou výjimku. Kód aplikace by měl být připravený na zachycení těchto výjimek a zkuste je zopakovat.

Funkce PostgreSQL podporované ve službě Azure Database for PostgreSQL

Azure Database for PostgreSQL podporuje většinu funkcí běžně používaných databázemi PostgreSQL, ale existují některé výjimky. Pokud potřebujete nepodporovanou funkci, budete muset přepracovat databázi a kód aplikace, abyste tuto závislost odebrali, nebo zvážit spuštění PostgreSQL na virtuálním počítači. V druhém případě budete muset převzít odpovědnost za správu a údržbu serveru.

Podporovaná rozšíření ve službě Azure Database for PostgreSQL

Mnoho funkcí PostgreSQL je zapouzdřeno v rozšířeních. Rozšíření jsou balíčky objektů SQL a kódu, které jsou uložené na serveru – lze je pomocí příkazu načíst do databáze CREATE EXTENSION . Azure Database for PostgreSQL v současné době poskytuje mnoho běžně používaných rozšíření pro:

  • Datové typy
  • Funkce
  • Fulltextové vyhledávání
  • Indexy (bloom, btree_gist a btree_gin)
  • Jazyk plpgsql
  • PostGIS
  • Mnoho funkcí pro správu

Balíčky dblink a postgres_fdw slouží k připojení jednoho serveru PostgreSQL k druhému – to umožňuje kódu na jednom serveru přistupovat k datům uchovávaným v jiném. Ve službě Azure Database for PostgreSQL se můžete připojit pouze mezi servery vytvořenými pomocí Azure Database for PostgreSQL. Odchozí připojení k serverům PostgreSQL hostovaným jinde, například místně nebo na virtuálním počítači, nemůžete vytvářet odchozí připojení.

Poznámka:

Seznam podporovaných rozšíření se průběžně kontroluje a může se měnit. Vygenerujete seznam rozšíření podporovaných následujícím dotazem. Všimněte si, že nemůžete vytvořit vlastní rozšíření a nahrát je do služby Azure Database for PostgreSQL:

SELECT * FROM pg_available_extensions;

Azure Database for PostgreSQL zahrnuje databázi TimescaleDB jako volitelné rozšíření. Tato databáze obsahuje časově orientované analytické funkce a další funkce, které podporují úlohy časových řad. Chcete-li použít tuto databázi, vyberte v parametru serveru shared_preload_libraries možnost TIMESCALEDB a restartujte server.

Podpora jazyka pro uložené procedury a triggery

Podpora jiných jazyků než plpgsql obvykle vyžaduje, abyste zkompilovali uloženou proceduru nebo kód aktivovali samostatně a nahráli kompilovanou knihovnu na server. Hlavně z bezpečnostních důvodů to nejde udělat se službou Azure Database for PostgreSQL. Pokud máte kód napsaný v jiných jazycích, budete ho muset přenést do plpgsql.