Features83
PostgreSQL 8.3 Feature List
Tento seznam obsahuje popis většiny, nikoliv všech, nových funkcí verze 8.3. Pro přehlednost je tento popis rozčleněn do několika skupin podle účelu. Podrobnější informace jsou v dokumentaci PostgreSQL a v poznámkách k verzi (Release Notes). Skutečně kompaktní informace najdete v tabulce podporovaných funkcí (feature matrix), která je ovšem pouze v anglickém jazyce.
Výkon
Konzistentní výkon
Tyto funkce zvyšují schopnost PostgreSQL dodržet konzistentní časy odezvy bez ohledu na zatížení serveru.
- HOT
 - Heap Only Tuple (HOT) dramaticky snižuje problémy s údržbou databáze spojené s častými změnami dat, snižuje nutnost spouštění VACUUM a poskytuje znatelně vyšší výkon některých aplikací.
 - Asynchronní potvrzování
 - V tomto režimu COMMIT nečeká na potvrzení fyzického zápisu na disk. Za cenu rizika potenciální ztráty posledních transakcí, v případě výpadku systému, získáme lepší dobu odezvy. Přesto je jištěna integrita dat. Tento režim je určen pro operace, které lze bezpečně opakovat .. např. import databáze, import dat a je lokální (vztahuje se pouze na ty uživatele, kteří se do tohoto režimu přepnou).
 - Vyrovnání zátěže způsobené checkpointy
 - V případě, že je server silně vytížen, dojde k pozdržení checkpointů a k utlumení jejich frekvence. Tím se snižuje negativní vliv checkpointů na dobu odezvy.
 - Strategie Just-in-time zápisu na disk
 - Na základě statistik a aktuální aktivity je dynamicky odhadnuto, kolik čistých paměťových stránek bude potřeba a kolik jich bude nutné vyčistit (zapsat na disk).
 
Zrychlení
Díky řadě úprav se dosáhlo citelného zrychlení některých operací.
- Zkrácení času obnovy
 - Nutný čas pro obnovu databáze z Write Ahead logu se zkrátil redukcí počtu nutných I/O operací.
 - Cyklický buffer v meziúložišti řádků
 - Dramaticky urychluje menší spojení tabulek typu merge join tím, že lépe využívá paměť a nedochází tak k zápisům na disk.
 - Rychlejší porovnávání v LIKE/ILIKE
 - Zrychlila se operace částečného porovnání (partial match) zejména v případech, kdy se používá vícebajtové kódování.
 - Top-N řazení
 - Dramaticky zrychluje řazení v případě, že výsledek dotazu je omezen klauzulí LIMIT.
 - Opožděné přidělování XID (Lazy XID Assignment)
 - Znatelně zvyšuje výkon těch databází, kde výrazně převažuje čtení nad zápisem (případně vůbec nedochází k zápisu) a to tak, že identifikační číslo transakce přiřadí pouze v případě potřeby (dojde k změně dat).
 - Možnost určení ceny funkce
 - Nám dovolí připojit ke každé funkci odhad náročnosti funkce (cena) a počtu vrácených řádků, což v důsledku znamená reálnější (lepší) prováděcí plán.
 
Rozsáhlé databáze
Nasledující funkce dovolí uživatelům provozovat i poměrně velké datové sklady v PostgreSQL.
- Synchronizované čtení
 - V originále tzv. piggybacking table scan, je synchronizované souběžné čtení jedné tabulky více uživateli (jeden přečtený blok se pošle více uživatelům). Tato technika významně redukuje celkovou potřebu IO operací (pozn. překladatele - piggyback se používá spolu se slovem jízda ve smyslu jízdy na nárazníku, rámu (přeneseně jízdy načerno nebo zadarmo). V tomto případě se data načítají z disku pro jednoho uživatele a okamžitě distribuují všem dalším uživatelům, kteří je v tu chvíli také potřebují.
 - Ochrana L2 Cache
 - Nově optimalizovaný kód snižuje četnost zahození obsahu cache CPU, které způsobuje zpomalení současně zpracovávaných dotazů.
 - Zkrácení délky hlavičky typu Varlena
 - Úpravou formátu datového typu Varlena, který se v PostgreSQL používá pro uložení všech hodnot s proměnnou velikostí, dochází ke snížení velikosti databáze zhruba o 20%.
 
Výkon ve Windows
Nemůžeme zapomenout na naše uživatele, kteří používají Windows. PostgreSQL 8.3 posouvá Windows do první ligy podporovaných platforem.
- Podpora MS Visual C++
 - PostgreSQL lze přeložit nejen v MinGW (vývojové prostředí umožňující snažší portování aplikací z OS typu Unix), ale i v Microsoft Visual C++. Použití překladače fy. Microsoft by mělo zvýšit výkon a stabilitu na platformách této firmy.
 - Přepracování startovního kódu serveru
 - Drasticky snižuje spotřebu paměti procesu postmaster, což umožňuje paralelní běh více obslužných procesů (kteří obslouží více klientů).
 
Administrace
Administrace PostgreSQL je jednodušší než u proprietárních databází, nicméně vždy je další prostor pro zlepšení. PostgreSQL obsahuje řadu nových funkcí zjednodušujících správu a poskytujících administrátorovi databáze podrobnější a obsáhlejší diagnostiku.
- CSV Log Output
 
Volitelně lze zapisovat do logu v CSV formátu, což zjednodušuje tvorbu nástrojů na analýzu výkonu a ad-hoc auditů.
- Podpora SSPI GSSAPI
 - Podpora autentifikačního systému Kerberos v PostgreSQL byla rozšířena o možnost použít bezpečnostní API: SSPI je průmyslový standard na platformě Windows a GSSAPI je průmyslový standard v prostředí Unix a Linux. Podpora těchto API by měla zjednodušit integraci uvnitř velkých vnitropodnikových sítí.
 - Lokální nastavení systémových proměnných
 - Pro každou uživatelskou funkci lze určit specifické nastavení systémových proměnných. Kromě jiného se tím řeší bezpečnostní problém s přenastavením systémové proměnné search_path.
 - Více procesové autovacuum
 - Umožňuje paralelní běh servisního procesu, díky čemuž je autovacuum použitelné i v aplikacích s tisíci tabulkami.
 - pgStandby
 - Administrativní rutina zjednodušující provoz serveru ve Warm Standby režimu.
 - ORDER BY Nulls First/Last
 - Umožňuje vytvářet indexy, kde jsou řádky obsahující NULL umístěny na začátek nebo na konec indexu.
 
Vývoj
Vývoj aplikací
Díky celé řady úprav se PostgreSQL 8.3 může měřit s nejlepšími proprietárními databázemi v podpoře komplexních více vrstvých databázových aplikací.
- Fulltextové vyhledávání
 - TSearch2 byl plně integrován do kódu jádra. Také došlo k pročištění API. Díky tomu se fulltext jednodušeji používá a snáze rozšiřuje o podporu nových jazyků, slovníků a systémů určujících relevanci.
 - Odstranění neplatných plánů
 - Uložené prováděcí plány mohou být odstraněny jak samotnou aplikací, tak automaticky, když jsou tabulky aktualizovány.
 - Editovatelné kurzory (Updatable Cursors)
 - Kurzory nyní podporují WHERE CURRENT OF, což umožňuje flexibilnější návrh aplikací postavených na použití kurzorů.
 
Nové datové typy
- Typ XML
 - Typ XML plně podporuje standard SQL/XML, který je součástí ANSI SQL:2003 včetně kontroly zápisu, typově bezpečných operací, funkcí generujících XML a XPath dotazů. Verze 8.3 obsahuje ještě další funkce umožňující export v XML.
 - Typ UUID
 - Typ UUID nese 128 bitovou unifikovaný (globální) jednoznačný identifikátor, který se uplatní zejména v distribuovaných aplikacích.
 - Pole hodnot kompozitního typu
 - Pole nyní může být vytvořeno pro kompozitní (složené typy), které obsahují více sloupců v jedné hodnotě, jako je typ tabulka nebo zákaznický typ.
 - Výčtový typ
 - Výčtový typ je určen seřazeným seznamem alternativních hodnot. Díky tomuto typu bude snažší migrace z MySQL do PostgreSQL.
 
Uložené procedury
Tyto dvě nové funkce zvyšují použitelnost PL/pgSQL, což je náš nejpopulárnější jazyk pro tvorbu uložených procedur v PostgreSQL.
- RETURN QUERY
 - Nyní lze v PL/pgSQL ještě jednodušeji vrátit výsledek dotazu v SRF funkci.
 - Posuvné kurzory (Scrollable Cursors)
 - PL/pgSQL nyní také podporuje posuvné kurzory, umožňující v PL/pgSQL procedurách dynamický pohyb kurzoru (vpřed i vzad).
 
Příslušenství
Řada důležitých funkcí není podporována v základním kódu. Důvodem je snaha o udržení co nejmenšího jádra databáze, které se snáze udržuje. Existuje několik stovek volitelných doplňků, s kterými PostgreSQL umožňuje replikace, podporuje vysokou dostupnost, použití dalších programovacích jazyků, integraci aplikací a získává i některé další experimentální možnosti. Většina těchto doplňků je volně ke stažení z archivu pgFoundry. Část aplikací(modulů) z následujícího seznamu je již přepravena pro 8.3. Část modulů s 8.3 spolupracuje, ale ještě nevyužívá všechny možnosti, které jsou v 8.3. Tyto moduly se budou v následujícím období aktualizovat.
- pgBouncer
 - Tento více vláknový connection pooler umožňuje jedné PostgreSQL databázi udržovat až 100,000 spojení mezi aplikacemi a serverem.
 - PL/Proxy
 - Interface pro distribuované horizontálně separované tabulky.
 - pgSNMP
 - Standardní SNMP ovladač pro PostgreSQL zjednodušující monitorování serverů v síti.
 - SEpgsql
 - Bezpečnostní doplněk postavený nad modelem a metodikou SELinuxu, který dovoluje aplikovat unifikovaný postup SELinuxu jak na OS tak na DBMS.
 - PL/pgSQL Debugger
 - Nový grafický nástroj podporující interaktivní ladění a krokování PL/pgSQL procedur.
 - pgPoolII
 - PgPoolII staví na úspěchu předchozí verze. Pomocí inteligentní replikace dotazů umožňuje datový partitioning.
 - Bucardo
 - V případě PostgreSQL první dostupný systém podporující multi-master asynchronní replikaci.
 - CyberCluster
 - Nově otevřený open-source projekt integrující a rozšiřující několik stávajících nástrojů pro clustering, jako je pgCluster nebo pgPool.
 - Slony-I
 - Druhá verze Slony-I, našeho nejpopulárnějšího replikačního systému, nyní používá nové replikační API v PostgreSQL 8.3.