Hlavní navigace

Co nového v PostgreSQL 7.2

Karel Žák 11. 2. 2002

Téměř po roce je zde nový PostgreSQL, nyní ve verzi 7.2. Pojďme se podívat, co nového tato verze přináší a na co je třeba si dát pozor při přechodu na ni.

Tato nová verze PostgreSQL se nezdá být tak zlomovou. jako byla verze předchozí, ale přesto přináší několik zajímavých novinek.

Z jedné z hlavních novinek budou mít radost ti, co provozují PostgreSQL v aplikacích běžících nepřetržitě, neboť tam bylo v předchozích verzích problematické provádět VACUUM (defragmentace a tvorba statistik DB), protože zamykalo tabulky. Nyní je VACUUM, není-li použito VACUUM FULL, bez zámků a umožňuje DB standardně používat. Vhodné je podívat se do dokumentace a překontrolovat funkčnost vašich skriptů, které VACUUM provádějí, protože syntaxe je nyní trošku jiná.

Optimalizací se dočkal optimalizér, který lépe využívá statistik vytvořených během VACUUM ANALYZE. Optimalizaci by také mohlo přinést přidání indexů na některé systémové tabulky a odstranění OID z některých systémových katalogů.

Nemáte-li potřebu používat OID, což jsou interní čísla přidělená řádkům, můžete jejich existenci potlačit při tvorbě tabulky, tedy:

CREATE TABLE mytab (...) WITHOUT OIDS;

Asi každý, kdo byl jen trošku zvědavý a podíval se v předchozích verzích do systémové tabulky pg_shadow (musíte na to mít práva super uživatele), byl překvapen. Našel tu v celé své kráse a nahotě hesla uživatelů. Od verze 7.2 již lze heslo ukládat v MD5 formě. Chcete-li této možnosti využít, musíte při tvorbě uživatele použít příkaz

CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypwd';

nebo v případě používání skriptu createuser použít parametr –encrypted.

S tímto souvisí i další věc, a tou je způsob autentifikace nastavený pro danou DB v souboru pg_hda.conf. Používáte-li běžná nešifrovaná hesla, je nutné mít zde jako metodu autentifikace uvedeno ‚password‘, pro šifrovaná (hashovaná, chcete-li) hesla je nutné použít metodu ‚md5‘. Pokud tuto metodu použijete, bude i přenos hesla po síti od klienta k serveru používat MD5. Pochopitelně pokud si žádáte solidní bezpečnost, je lepší použít SSL, které PostgreSQL taktéž již déle podporuje. Shrneme-li to, lze dnes používat autentifikační metody: trust, password, md5, crypt, ident, krb4, krb5 (krb=kerberos), pam, reject.

Souboru pg_hda.conf se týkají i další dvě změny. Tou první je, že jako další novou metodu autentifikace je možné použít ‚pam‘. Ano, PostgreSQL 7.2 má podporu PAM knihovny, byl-li kompilován s –with-pam. Tou další novinkou ohledně souboru pg_hda.conf je, že je načítán pouze při startu serveru, narozdíl od dřívějších verzí, kde byl čten při každém zahajování spojení s klientem. Snad se tak zrychlí (rychlostí jinak neoplývající) připojení k DB.

K dalším novinkám globálního charakteru patří podpora chybových a jiných hlášek serveru a klientů v národních jazycích, tedy LC_MESSAGES dle nastavení locales. Pro nás Čechy může být radostnou informací, že téměř vše s výjimkou serveru je již přeloženo. Na serveru se pracuje a přibližně ve verzi 7.3.1, půjde-li vše hladce, by měl být kompletně přeložen. S překladem serveru pomáhá Milan Roubal, za což mu děkuji.

Nyní udělám radost všem uživatelům Pythonu, protože PostgreSQL podporuje tento jazyk jako jeden z dalších, ve kterém lze psát interní funkce serveru (procedural language). Celkem jsou dostupné: SQL, PL/pgSQL, PL/Perl, PL/Tcl, PL/Python.

Znatelnou změnou, co se syntaxe týče, je porovnání „= NULL“, které již není funkční (vrací vždy false), a je nutné používat „IS NULL“. V konfiguračním souboru lze tuto vlastnost potlačit.

Velkých změn se dočkala část věnovaná časovým operacím. Slůvko ‚current‘ není již podporováno a je nutné používat již dlouhou dobu existující ‚now‘. Podobně funkci timestamp() nelze volat pro přetypování, ale je nutné používat standardní způsob přetypování, například CAST(data AS timestamp) nebo data::timestamp. Dále vznikl nový datový typ TIMESTAMP WITHOUT TIMEZONE.

V oblasti práv přibyla možnost definovat práva pomocí GRANT/REVOKE pro trigger a REFERENCES.

Zajímavostí pro administrátory nebo ty, kdo vlastní superuživatelská práva, je nový příkaz SET SESSION AUTHORIZATION, kterým lze změnit svou identitu podobně jako třeba pomocí příkazu „su“ v OS.

Obdobně i příkaz SHOW ALL, RESET ALL je cílen do řad administrátorů a ukáže/resetuje aktuální nastavení dané session. Nevíte-li, co vše lze nastavit příkazem SET, pomocí SHOW ALL to snadno zjistíte. Je toho dost.

Novinkou je možnost vytvářet dočasné sequence, a to příkazem CREATE [ TEMPORARY | TEMP ] SEQUENCE. Sequence nyní vnitřně pracují s int8. Sequence nemají daleko k typu serial (v MySQL se tomu říká auto_increment) a i zde je novinkou používat v tabulkách tento typ s přihlédnutím k potřebné velikosti, tedy buď SERIAL4 (4 byte int), nebo SERIAL8 (8 byte int).

Příkaz CREATE FUNCTION byl rozšířen o magické slůvko OR REPLACE, což by mělo vyčarovat úsměv na tvářích všech pisatelů a ladičů funkcí, protože již nemusí volat DROP FUNCTION.

Zamykání tabulek pomocí příkazu LOCK asi není u SQL veřejnosti často používáno, ale těm, co tak činí jistě udělá radost možnost zamknout několik tabulek najednou jedním příkazem.

Co ale velké využití najde, je možnost nastavit oddělovač dat (sloupců) pro příkaz COPY. Pomocí DELIMITERS nyní lze nastavit a používat i něco jiného než jen defaultní tabulátor.

Zvětšilo se množství funkcí umožnujících práci s datovým typem „Bytea“, který primárně slouží k ukládání binárních dat.

Máte-li nějaké tajnosti, podívejte se do contrib stromu PostgreSQL na knihovnu pgcrypto, která umožňuje používat hodně algoritmů z OpenSSL v podobě funkcí použitelných v SQL dotazech.

Novinek je pochopitelně více, ale nejlépe bude, když si je vyzkoušíte sami. Začít můžete třeba zde.

Našli jste v článku chybu?

5. 11. 2002 10:34

Miff (neregistrovaný)

Dobry dem preji:-) Vicemene nedavno jsem se dostal k postgreSQl (vyuzivam spis MySQL) a zjistil jsem, ze nejsou v PHP zadne fce pro vypis dostupnych db, popr. tabulek. Koukal jsem, ze PG nabizi urcita rozhrani napr. pro PYTHON, ale nevim, jestli to bude lepsi. Za posledni dny jsem procetl na muj vkus snad az mnoho dokumentu. Byl bych rad, kdybyste mi nekdo mohl poradit, popr. me navest na spravnou cestu:-)
Dik,M.


12. 2. 2002 17:08

cohen (neregistrovaný)

Skoda, ze stale nelze omezit vytvareni tabulek jednotlivymi uzivateli.

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET