Tradiční konference P2D2
Databázová konference Prague PostgreSQL Developers Day (P2D2) se stala již skutečnou tradicí, letošní ročník byl už jedenáctý. Dříve byla jejím obvyklým dějištěm Matematicko-fyzikální fakulta Univerzity Karlovy, v posledních letech konference „zakotvila“ na Fakultě informačních technologií ČVUT v pražských Dejvicích, kde se konala i letos.
Pokračovalo také rozdělení do dvou dnů, kdy se konala nejprve specializovaná školení a pak následoval vlastní konferenční den. Každý účastník při příchodu obdržel sponzorský balíček, obsahující i konferenční hrnek (tentokrát rekapitulující na uších slona dosavadní ročníky P2D2) a talíř pro frisbee.
Konferenční hrnky pro ročník 2018
V minulém roce na P2D2 chyběla obvyklá přednáška o novinkách v PostgreSQL. Na program se vrátila v roce letošním, kdy tu máme novou verzi 10 z loňského října a zároveň se připravuje verze 11. O novinkách informoval Tomáš Vondra.
Nové číslování verzí
Verze 10 byla vydána 5. října 2017 a kromě technických změn přinesla i změnu v číslování verzí. Dříve to bylo tak, že se verze číslovaly x.y.z, kde „x“ znamenalo zásadní přelomy, „y“ verze s novými funkcemi a „z“ verze opravné. Nově se poslední číslo vynechává a číslování tedy poběží rychleji kupředu – po verzích 10.y bude s novými funkcemi následovat už 11.y.
Novinky ve verzi 10
„První, čeho si všimnete při pokusu upgradovat na PostgreSQL 10, je, že vám to něco může rozbít,“ upozorňuje Tomáš Vondra na zásadní charakter změn v této verzi. I přes obvyklou konzervativnost se tomu zde nedalo vyhnout. Především byla odstraněna verze klientského protokolu 1.0 (používaná někdy před cca 20 lety); nově by se měla používat už jen verze 3.0.
Tomáš Vondra při své přednášce o novinkách v PostgreSQL
Rozbít fungování zálohovacích nástrojů může přejmenování adresářů pg_xlog
a pg_clog
. K němu došlo kvůli tomu, že někteří administrátoři uvolňovali diskový prostor „smazáním logů“, přičemž smazali životně důležité soubory PostgreSQL. Po přejmenování by to k tomu už nemělo svádět.
Kromě přejmenování adresářů byly přejmenovány i funkce, které s nimi pracují.
Logická replikace, deklarativní partitioning, paralelizace dotazů
Nově zavedená logická replikace je podstatně jednodušší než dosavadní řešení pomocí doplňků. Dělení dat je nově možné zajistit již deklarací při vytváření tabulky – není nutno vytvářet nějaké parent-child tabulky a triggery pro dělení, jako tomu bylo dosud. Paralelizace dotazů není v PostgreSQL novou vlastností (byla už ve verzi 9.6), posunula se ale o pořádný kus dál.
Výchozí uživatelské role
Nové výchozí uživatelské role umožňují přidělovat uživatelům práva, která se dosud řešila buď jednotlivým přidělováním (správná, ale složitější cesta) nebo využitím superuživatele (nesprávná, ale mnohem jednodušší a tedy i často používaná cesta). PostgreSQL 10 umožňuje například monitorovacím systémům snadno přidělit jen potřebná práva, aniž by měly práva další.
Účastníci konference P2D2 sledují přednášku
Autentizace SCRAM-SHA-256, připojení k databázi
Novou autentizační metodou v PostgreSQL 10 je mechanismus osoleného challenge-response (SCRAM) s hešovou funkcí SHA-256, specifikovaný v dokumentech RFC 5802 a RFC 7677. Metoda nabízí podstatně vyšší bezpečnost než dosavadní specifické řešení založené na MD5. „Budete muset změnit hesla pro uživatele v databázi,“ vysvětluje Tomáš Vondra. „To ale uděláte až v okamžiku, kdy drivery, které používáte, přidají podporu pro tento mechanismus.“
Další novinkou je možnost specifikovat na klientské straně více serverů pro připojení (např. master a failover stand-by). Klientská aplikace se připojí k prvnímu dostupnému serveru a není potřeba měnit její konfiguraci, pokud hlavní server není dostupný. Lze také určit, že se má klient připojit k serveru umožňujícímu zápis do databáze.
Identitní sloupce – náhrada datového typu (BIG)SERIAL
Dlouhodobě se pro primární klíče v tabulkách používá datový typ SERIAL
(nebo BIGSERIAL
), který se chová jako běžný typ INTEGER
, ale zároveň vytváří sekvenci, která generuje hodnotu pro tento atribut. Má ale nevýhody – například při odvození tabulky od jiné zůstane sekvence společná, což sice zajišťuje unikátnost hodnot, ale jejich obor je sdílený mezi tabulkami.
IDENTITY sloupce (zdroj: prezentace Tomáše Vondry)
Problémy jsou i s právy k sekvencím, nelze také změnit existující sloupec na typ SERIAL
. Nové řešení vypadá tak, že při vytváření tabulky se místo typu SERIAL
použije běžný INTEGER
, ovšem doplní se k němu GENERATED BY DEFAULT AS IDENTITY
.
Novinky ve verzi 11
Na verzi 11 se stále dost intenzivně pracuje, takže sada novinek ještě zdaleka není kompletní. Další balík změn by měl do zdrojových kódů připutovat během března. K už jistým novinkám bude patřit například hash partitioning, chytrá spojení pro tabulky s deklarativním partitioningem nebo řada vylepšení v oblasti paralelizace (např. paralelní tuplesort nebo lokální partitionované indexy).
Z novinek, které se ve verzi 11 objevit mohou, ale také nemusí, zmínil Tomáš Vondra například SERIALIZABLE
s paralelními dotazy, jsonpath, SQL/JSON, sdílené slovníky ispell nebo UPDATE
na klíči partition. Aktuální stav můžete sledovat v commitfestu.