přejít na obsah přejít na navigaci

Linux E X P R E S, Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne

Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne

p2d2.png

Ve čtvrtek 9. 2. 2012 proběhl v Praze v prostorách MFF UK na Malostranském náměstí již pátý ročník jednodenní konference Prague PostgreSQL Developers' Day, která se, jak název napovídá, zabývá databází PostgreSQL a která je určená především vývojářům. Ohlédněte se s námi za dopoledními přednáškami.


Konference Prague PostgreSQL Developers' Day, zkráceně P2D2, poprvé proběhla v roce 2008, letos se konala stejně jako minulý rok pod záštitou občanského sdružení CSPUG (Czech and Slovak PostgreSQL User Group).

Jako již obvykle se do programu kromě zajímavých českých přednášek dostaly i dvě anglické od zahraničních hostů, tentokrát ze Švédska a Velké Británie. Akce se letos zúčastnilo celkem asi sto dvacet lidí, z čehož asi dvacítka patřila k realizačnímu týmu, přednášejícím a sponzorům, což dává ve výsledku okolo stovky běžných návštěvníků. Oproti minulému ročníku, na který přišel srovnatelný počet lidí, se ale výrazně zrychlilo rozebrání míst. Na akci je povinná registrace a loni dle slov organizátora Tomáše Vondry trvalo zaplnění všech míst asi tři týdny, letos jen jeden. Je tedy vidět, že zájem o akci stoupá.

U vstupu dostali návštěvníci tašku s logem PostgreSQL, ve které byl mj. hrnek. Každý host dostal visačku s programem, na které měl kromě jména i QR kód se svou vizitkou. Programu na visačce bych vytkl snad jedině absenci jmen přednášejících.

Návštěvníci dostali na památku hrnek s logem PostgreSQL a visačku s QR vizitkou a programem Návštěvníci dostali na památku hrnek s logem PostgreSQL a visačku s QR vizitkou a programem

Podobně jako v minulých letech začal P2D2 v osm hodin raním workshopem o optimalizaci, ale registrace byla raději zařazena až za něj, tedy na devátou hodinu. Po registraci Tomáš Vondra přivítal návštěvníky a první zahraniční host mohl začít přednášet.

Tuto reportáž napsali dva autoři: Tomáš Crhonek a Miroslav Hrončok. Pro rozlišení autora textu jsou v úvodu každého bloku o přednášce uvedeny iniciály autora. Úvodní text napsal Miroslav Hrončok. Autorem fotografií je Tomáš Crhonek. LinuxEXPRES je mediálním partnerem P2D2.

Simon Riggs: Future of PostgreSQL (keynote)

TC V první přednášce dne (nepočítáme-li ranní workshop Pavla Stěhuleho) nás Simon Riggs informoval o plánech dalšího vývoje PostgreSQL a také novinkách v nejbližší verzi 9.2, která by dle plánu měla být ve stavu beta verze někdy v dubnu tohoto roku.

Přestože tohle má být reportáž a nikoliv recenze produktu, dovolte mi alespoň seznam některých novinek plánovaných pro PostgreSQL 9.2: index only scan (data jsou vrácena z indexu, není třeba další seek do datových souborů, což by mělo vést k významnému zrychlení v případě některých dotazů); podpora formátu JSON; nový typ rozsah (range); lepší podpora pro typ pole (array); podpora cizích klíčů pro pole; nový mód synchronní replikace; další typ indexu pro složité datové typy SP_GIST (který údajně okamžitě převzala také IBM do své DB2).

Dalšími významnými novinkami pro příští verze, se kterými nás Simon ve své nabité přednášce seznámil, jsou: podpora multi master replikace; podpora replikovaných databázových clusterů; podpora pro vnořené transakce; autonomní transakce; podpora pro tabulky pouze pro čtení; materializované pohledy; podpora více dialektů jazyka SQL. PostgreSQL se také snaží držet krok s NoSQL světem, typ HStore (pro hodnoty typu klíč, hodnota a operace s nimi) bude zabudován přímo do Postgresu (dnes se jedná o rozšíření), dále optimalizace pro velmi jednoduché dotazy (PostgreSQL dnes exceluje ve složitých dotazech, má k tomu vynikající optimalizátor, který ovšem znamená netriviální režii pro dotazy jednoduché). Pro další vývoj jsou naplánovány další optimalizace, méně zamykání, omezení kynutí systémových tabulek, automatická reindexace tabulek (další krok po autovacuum a analyze).

Zvýšení výkonu Zvýšení výkonu

PostgreSQL 9.2 má také přinést výrazně lepší škálování na víceprocesorových systémech (více než trojnásobný nárůst výkonu na 32 procesorech, oproti verzi 9.1). Simon také zdůraznil rychlost vývoje Postgresu. V každé další verzi je více změn než v předchozích, daří se také nové verze rychleji dostávat do enterprise distribucí jako RHEL.

Celkově má být 9.2 daleko rychlejší než současná verze, což ostatně platí pro každou novou verzi Postgresu, a přináší skvělé nové vlastnosti. Jako pokaždé se máme na co těšit.

Za zmínku stojí zmínit fakt, že se nejednalo o oficiální roadmapu projektu, ale pouze o osobní vizi budoucnosti jednoho z vývojářů. Je tedy pravděpodobné, že to tak bude, ale jisté to rozhodně není.

Petr Kopecký: Nasazení PostgreSQL v praxi

TC Druhá přednáška dne přinesla náhled do komerčního prostředí, zakázkového vývoje a dalšího zajímavého nasazení PostgreSQL. Společnost LinuxBox (které je také sponzorem konference) vyvíjí systém pro monitoring a řízení hardwarových GSM modulů a mimo jiné také software pro VOIP telefonii Asterisk.

Petr zprvu vysvětlil, proč používají jazyk Python. Důvodem je snadné naučení jazyka novými programátory, bohatý výběr knihoven a také snadné použití ve spojení s PostgreSQL nejen jako úložiště dat, ale také (a zejména) možnost psaní uložených procedur pro Postgres právě v jazyku Python.

Dále zdůraznil výhody ukládání všech dat do databáze, tedy nejen strukturovaných dat, ale dat binárních (binární dump přímo z nějakého hardwarového modulu), která se obvykle ukládají na systém souborů, což s sebou přináší spoustu komplikací. Jednou z nich, kterou Petr Kopecký uvedl, jsou potíže s distribucí na další uzly clusteru (je zbytečné udržovat clusterový systém souborů a vedle toho ještě databázi, když vše snadno může být přímo v databázi). Posluchače také seznámil s vhodnými datovými typy a možnostmi zpracování těchto dat.

Návštěvníci konference Návštěvníci konference

Zajímavé je celkové pojetí, jakým Postgres používají (podobné nasazení popsal i v loňské přednášce Marc Balmer). Na místo „klasického“ třívrstvého modelu databáze – aplikační server – klient v LinuxBoxu spojili databázi a aplikační server do jedné vrstvy a celou tuto činnost obstarává PostgreSQL pomocí uložených procedur, modulů v Pythonu a asynchronního předávání zpráv (LISTEN/NOTIFY). K databázi se tak připojuje velké množství klientů, kteří tak mohou vzájemně komunikovat a lze jim centrálně předávat příkazy. V tomto případě šli ještě dál a tohoto mechanismu využili i pro změnu konfigurace jednotlivých klientů. Postgres a jeho protokol tak plně nahrazuje komunikační sběrnici a není třeba implementovat protokol další.

PostgreSQL se tak, krom skvělého databázového serveru, postupně mění na aplikační platformu, kde lze dělat původně netušené věci a komerčním firmám přináší značnou úsporu nákladů při vývoji softwaru pro takto masivní nasazení a komunikaci jednotlivých částí systému.

Vratislav Beneš: Statistické modely a jazyk R v PostgreSQL

MH Jednou ze stále častěji používaných analýz dat je tzv. prediktivní analytika. Na základě dostatečného množství dat z minulosti se snažíme zjistit, jak se situace bude vyvíjet dále. Jako příklad může posloužit předpověď počasí, situace na burze, kurzy měn... Vratislav předvedl, že prediktivní analýzu můžeme dělat přímo v PostgreSQL databázi a nemusíme tak zatěžovat samotnou aplikaci. Hlavní výhodou tohoto řešení je fakt, že databázový server je jednoduše škálovatelný a vývojáři nemusí přizpůsobovat aplikaci novým požadavkům na výkon.

Vratislav nejdříve předvedl základní statistické příkazy v jazyce SQL. Jsou to například příkazy na průměr, odchylku, trendy... Dále byly předvedeny Window funkce, které umožňují ušetřit přebytečné JOINy, jako příklad bylo předvedeno zjištění klouzavého průměru.

Vratislav Beneš a Tomáš Vondra Vratislav Beneš a Tomáš Vondra

V další části Vratislav představil projekt R, což je open-source implementace statistického jazyka S. Více se o něm můžete dočíst v samostatném článku. Ukázal nám, jak předvídat vývoj dnešní teploty na základě předchozích dat, které získal z meteorologické stanice v pražském Suchdole. Nakonec předvedl také GUI nadstavbu nad R, program RKWard.

V úplném závěru se Vratislav dostal k tomu nejdůležitějšímu, tedy k propojení projektu R s databází PostgreSQL. K tomu je určen procedurální jazyk plr. Podobně jako ve zbytku přednášky, i zde následoval praktický příklad.

Vratislav Beneš nám přislíbil na toto téma článek, takže se můžete těšit na podrobnější návod.

Oběd proběhl formou rautu Oběd proběhl formou rautu

A to je z dopoledne vše. Po přednášce o statistice následoval oběd, který proběhl formou rautu. Na odpolední přednášky se podíváme v pondělí.

Nahoru

(Jako ve škole)
Průměr: 1.50 | Hodnotilo: 4
 

Příspěvky

Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 16. 02. 2012, 08:13:21
Odpovědět  Odkaz 
Srdce mi trha, ze som nemohol prist.
Za postgre viziu sa prihovaram este k externym tabulkam a aby uz konecne spravili multi code page podporu... Nech to uz nemusime scriptovat mimo....
Loader by mohol generovat nejake logy. Bolo by aj vhodne vymysliet dblink na ine typy databaz. Partitioning neviem ci uz je v 9.1 vyrieseny...
A este pgadmin by mohli trosku vylepsit:-)
Inak si myslim ze uz dnes postgre je leader v open source db
Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
Tomáš Vondra 16. 02. 2012, 23:42:23
Odpovědět  Odkaz 
Ale to jdete s křížkem po funuse, protože část těch věcí už je vyřešená (právě od 9.1 která vyšla na podzim).

1) collations jde specifikovat na úrovni databází, tabulek, sloupců nebo dokonce operací (viz. http://www.postgresql.org/docs/9.1/static/collation.html a dokumentace ke CREATE DATABASE/TABLE)

2) externí tabulky - Už dříve to bylo možné např. díky PL/Perl (stačílo napsat funkci která se připojila k jiné databázi a vracela tabulku), nicméně 9.1 podporuje SQL/MED standard který se věnuje právě propojení různých databází. Implementace "foreign data wrapper" modulů není úplně triviální nicméně existuje poměrně pěkná sada - viz. http://wiki.postgresql.org/wiki/Foreign_data_wrappers (mimo jiné pro Oracle, MySQL, twitter, redis, textové soubory, ...

3) dblink na jiný typ databáze - viz. předchozí bod

Akorát to logování u loaderu nevím (předpokládám že byl míněn pg_bulkload). PgAdmin se pořád vylepšuje, ale moc to nesleduji - jsem "konzolově založený."
Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 18. 02. 2012, 08:28:19
Odpovědět  Odkaz 
1) Pri loadovani dat, musim stale strazit, ci mam codepage suboru = ako je nastaven a databaza. Oracle mi to robi automaticky, tu to musim pred importom vzdy osetrit. No a collations som si odskusal v 9.1 a nefunguje to, pokial to neni utf-8, pada to. Suhlasim, moze to byt tym ze to neviem alebo nerobim spravne...

2)externu tabulku mam na mysli to, ze si napr xls alebo txt, csv namapujem (nalinkujem) ako internu tabulku, s ktorou pracujem v ramci databazy. Toto v 9.1 funguje?

3) dblink som zatial dokazal rozbehat len medzi postgres databazamy. Na oracle nikdy, a na db2 som nasiel nejaky kod od madarskeho programatora, napisany v C, ale nie je to nijako optimalizovane, pri > datach je to nepouzitelne

4) myslel som prikaz copy, co je oficialny loader v postgres, ktory je sice najrychlesi aky som kedy videl, ale len vdaka tomu, ze nerobi logy, ani nic ine.... Cize po loadovani neviem, ci mi vsetko preslo, preto sa neda pouzit. A teda mozeme tvrdit, ze postgre nema loader. Ja osobne pouzivam javu a vlastny loader.

Rad si necham od vas poradit...
Vdaka
Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
Tomas Vondra 18. 02. 2012, 13:48:06
Odpovědět  Odkaz 
1) Osobně dávám přednost konzistentnímu chování před magií která se snaží detekovat kódovou stránku na základě obsahu souboru (a nevím o tom že by to Oracle dělal). Magie vede k tomu že to většinou funguje a pak to najednou spadne když se tam dostane soubor u kterého to není jednoznačné. Ono to ještě nějak jde když si řeknete "jenom české kódové stránky" ale jakmile jich musíte uvažovat víc tak je to konečná. Informace o kódování souboru je nedílnou součástí dat.

1b) Pokud vám collations nefungují nebo dokonce padají tak prosím o bugreport. Klidně to pošlete mně (tv@fuzzy.cz) a já to zareportuji na pgsql-bugs.

2) Ano, můžete použít například file_fdw (viz. linky na wiki stránce z minulého postu)

3) To proto že dblink je určený JENOM pro PostgreSQL databáze. Pro připojení na jiné datové zdroje (ať už jiné RDBMs nebo třeba textové soubory) je určen standard SQL/MED (Managing External Data) založený na foreign data wrappers (FDW). Opět viz. linky na předchozí stránce.

4) Copy buď projde celé nebo vůbec, je to chráněno transakcí. Takže vaše tvrzení "po loadovani neviem, ci mi vsetko preslo" je omyl. Buď prošlo všechno nebo nic. Tohle chování ale také není ideální - bylo by pěkné mít možnost naloadovat co jde a někam uložit problematické řádky.
Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 18. 02. 2012, 21:46:13
Odpovědět  Odkaz 
2 a 3)
tak to idem hned studovat a skusat a dam vediet

Zatial vrela vdaka za pomoc
Re: Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 18. 02. 2012, 22:41:41
Odpovědět  Odkaz 
No tie externe tabulky naozaj funguju :-)
(file_fdw)

No ak by ste mi mohli este pomoct, nikde na webe som to zatial nenasiel:
pgadmin mi tie externe tabulky vobec nezobrazuje... select z nich mi ide,
No nemam teraz ani prehlad ake som uz vytvoril...
Dakujem
Re: Re: Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
Pavel Stěhule 19. 02. 2012, 18:34:01
Odpovědět  Odkaz 
Ověřte si, jestli nemáte starší pgAdmin a případně jej aktualizujte.
Re: Re: Re: Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 19. 02. 2012, 21:11:07
Odpovědět  Odkaz 
Dobry vecer
Ja som stiahol v ten den aktualnu verziu... 9.1.2 a pgadmin 1.14.1
Medzi tabulkami sa nenachadzaju externe tabulky. Netreba doinstalovat nejaky extention alebo nieco?
Ja som vlastne spravil iba toto:
---------------
create extension file_fdw;
CREATE SERVER file_server FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE mena (
meno text,
priezvisko text
) SERVER file_server
OPTIONS (format 'text', filename 'c:\xxx\mena.csv', delimiter ';', null '');


select * from mena (vysledky dostanem pekne...)

no medzi tables sa "mena" nezobrazuje....
----------------
Dakujem
Re: Re: Re: Re: Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
Pavel Stehule 20. 02. 2012, 08:56:01
Odpovědět  Odkaz 
Tahle verze by to umět měla - alespoň podle README. Ověřte si, že skutečně spouštíte tuto novou verzi - a jinak je tam dost možná bug :(
Re: Re: Re: Re: Re: Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 20. 02. 2012, 12:06:29
Odpovědět  Odkaz 
"Ověřeno"
skusal som to aj pod ubuntu aj pod win7
vsetko ciste nove instalacie....

A vam to zobrazuje?
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Reportáž z Prague PostgreSQL Developers' Day 2012: Dopoledne
rr5 20. 02. 2012, 21:43:01
Odpovědět  Odkaz 
Dobry vecer,
tak uz viem v com je problem, az sa hanbim...
foreign tables maju svoj vlastny node, je defaultne skryty. Treba ho v pgadmin /options / browser zaskrtnut....

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz