© 2012 ET NETERA a.s. PostgreSQL – využíváme sílu nástroje Martin Strejc 12. 11. 2012

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

Databázové systémy 2 Cvičení č. 8
Produkce odpadů 2002 – 2007 obce ORP Šumperk
KIV/ZIS Cvičení 6 SQL - SELECT.
2 3 Lokalita Pod Javornic kou silnicí 4 směr Solnice směr Javornice směr Vamberk CENTRUM 10min. směr Častolovice.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Základy jazyka SQL Jan Tichava
Ladislav Hofman, Jan Slavík TUL Předmět databázové systémy
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
SEO pro novou firmu Bartošová Lenka 3MA
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Fakulta elektrotechniky a informatiky
SAS Jan Blaťák Laboratoř vyhledávání znalostí Fakulta informatiky Masarykova Univerzita, Brno
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Realizace sběru dat v rámci realizovaných úloh.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Školení zaměstnanců web + intranet v Praze.
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Uživatelé, Role, Schémata
Úvod do databází Databáze.
Prezentace nového SQL modulu Mzdy a personalistika Pavel Pitaš Miloš Jirčík.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Projekt PŘEDPOVĚĎ POČASÍ. projekt PŘEDPOVĚĎ POČASÍ.
M O R A V S K O S L E Z S K Ý K R A J 1 Vedení správních řízení ve spisové službě a statistika vyřizování dokumentů.
Projekt PŘEDPOVĚĎ POČASÍ. Předpověď počasí na
Popis systému DBMAN. Obecná charakteristika Systém DBMAN vychází ze snahy maximálně zobecnit přístup k datům v jednoduchých databázích. Původním záměrem.
Execution plans Lubomír Andrle 6. přednáška
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
DbLink Ing. Jan Ptáček tel.:
Projekt PŘEDPOVĚĎ POČASÍ. projekt PŘEDPOVĚĎ POČASÍ.
Databázové systémy teorie a návrh relačních databázových systémů část II.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
1 © Mediaresearch, a.s., 2008 NetMonitor a AdMonitoring Výsledky za říjen 2008.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Navrhované předměty pro OI a další zimní semestr.
Novinky v SQL 2008 Piotr Grodzicki. Microsoft SQL Server Management Studio o Barevná indikace, volba databáze o Dedikované připojení pro administrátora.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
uložené procedury (stored procedures) triggery, sekvence, pohledy, funkce, parametrické dotazy (prepared statements) komplexní agregace a SQL dotazy jiné.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Databázové systémy Zabezpečení DBS. Cíle, které je třeba vzít v úvahu při návrhu databázové aplikace z pohledu bezpečnosti: Důvěrnost - informace by neměly.
Analýza možností SŘBD PostgreSQL / PostGIS pro vytvoření datového skladu v prostředí GIS Jaromír Kamler Vedoucí: Antonín Orlík.
Úvod do PostGIS Jan Ježek.
David Gešvindr MCT | MSP | MCITP | MCPD. Jak se zpracovává dotaz? Když norma nestačila Práce s XML Geografická data CTE Zpracování hierarchií a grafů.
Databázové systémy přednáška 6 – Indexy
Dobývání znalostí z databází fulltext
Unix a Internet 9. SQL server
Roman Danel Institut ekonomiky a systémů řízení 2016
Databázové systémy a SQL
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Přednáška 9 Triggery.
Databázové systémy a SQL
Transkript prezentace:

© 2012 ET NETERA a.s. PostgreSQL – využíváme sílu nástroje Martin Strejc

© 2012 ET NETERA a.s. Harmonogram 16:00 – 16:40 chápání DB, nové možnosti 16:40 – 16:50 pauza na kafe 16:50 – 17:20 ukázky funkcionalit PostgreSQL 17:20 – 17:30 volná diskuze

© 2012 ET NETERA a.s. Co je pokrok? Thinking out of the box :-) Joe Coelko: za 50 let byly hlavní milníky děrnoštítková páska, harrdisk, SSD

© 2012 ET NETERA a.s. Využívám PostgreSQL přechod z MySQL na PostgreSQL 2.MySQL spíše minoritně 3.řada úspěšných aplikací

© 2012 ET NETERA a.s. Rozdíl mezi DPL a JPA 1.JPA / Hibernate není všeobjímající 2.JPA nevyužívá všechny fce aplikace 3.JPA netuší nic o návrhu, náročnosti, neumí predikovat (ORM vs. JPA)

© 2012 ET NETERA a.s. Rozdíl mezi DPL a JPA 1.DPL řeší problémy, konzultuje návrh struktury DB 2.Architekt umí rozkládat aplikaci, navrhnout DB 3.Architekt a administrátor musí komunikovat...

© 2012 ET NETERA a.s. Proč raději PostgreSQL než MySQL? 1.nesmyslná otázka... 2.vlastně je to jedno, závisí na účelu 3.stanovím si při návrhu aplikace 4.vím funkce, které a proč chci využívat 5.dohodnu se s DPL 6.momentálně v pilotním režimu Srovnání Postgres a MySQL 1WDlsTlVSUEl4NHlEY040cnNaaUE#gid=0

© 2012 ET NETERA a.s. Jak to v PostgreSQL funguje? 1.PostgreSQL je platforma 2.funkce, typy, indexy, rozšíření mají handler 3.PostgreSQL se zaměřuje na fukcionalitu (MySQL se zaměřuje spíše na engine)

© 2012 ET NETERA a.s. Zajímavé funkcionality PostgreSQL 1.plná podpora SQL standardu včetne všech relačních dotazů 2.bezpečnost - rozsáhly systém ACL 3.jazyky PL/PgSQL a další (včetně Java, PHP, Perl, Python nebo C pro rychlé zpracování dat přímo na serveru) 1.Vnitřní clusterování tabulky (např. archiv a ostrá data) 2.Externí zdroje dat (např. dokonce jiné typy DB) 3.Vlastní funkce a triggery (trigger je také funkce) 4.Řada dalších datových typu, včetne atypických datových typu + práce s nimi (BLOB, pole, XML) 5.Datový typ RANGE a práce s ním (porovnávání, průniky apod.)

© 2012 ET NETERA a.s. Zajímavé funkcionality PostgreSQL 9.Oborově zaměřené - JSON, GIS, BIS (JavaScript, geometrická data, biometrická data) 10.Podpora XSLT přímo nad daty - většina programátorů často nemumí používat (XML, XSLT, XPath) 11.Různé další speciální funkce přímo na serveru, např. kryptování 12.Rozsáhlá podpora indexů, odložené kontroly, selektivní indexy a regulárními výrazy, vlastní indexy 13.Common Table Expression (CTE), obsahuje i rekurzivní výrazy 14.Návratové hodnoty po UPDATE a INSERT 15.Sekvence 16.Fulltext search a TSINDEX

© 2012 ET NETERA a.s. Zajímavé funkcionality PostgreSQL 17.Více schemat v rámci jedné databáze (tedy 1 server - N databazi - M schémat) za současné kontroly referenční integrity dat 17.Fuzzy porovnáváni textových řetězců - vhodné pro velké texty 18.Client side data listener/notifications 19.Řada nástrojů na debugování SQL dotazů 20.Debugování/EXPLAIN Prepared Statement 21.TLS/SSL na úrovni connection 22.Velká řada rozšíření z pgFoundary (tam je skoro cokoliv, ale stabilita je dost různá, udávám spíše na okraj)

© 2012 ET NETERA a.s. Mimo standard SQL'92 !?! 1.Databáze je málokdy zcela vyměnitelná 2.JPA neřeší práva 3.Další DB klienti mimo hlavní aplikaci 4.Změna návrhu aplikace – co je logika, co data 5.Proč bych měl navrhnout aplikaci jinak?

© 2012 ET NETERA a.s. Praktické ukázky 1.Indexy 2.Common Tables Expression 3.Full Text Search a Indexy 4.Pl / PgSQL 5.COPY & CSV

© 2012 ET NETERA a.s. Indexy 1.-- CREATE INDEX user_nick_profi 2.-- ON user_profile (nick ASC NULLS LAST) 3.-- WHERE profi; 4.SELECT count(*) FROM user_profile; rows 6.SELECT * FROM user_profile where profi; rows 8.SELECT * FROM user_profile where profi and nick ilike 'd%'; rows 10.EXPLAIN ANALYZE SELECT * FROM user_profile where profi and nick ilike 'd%'; 11.CREATE INDEX user_nick_profi 12. ON user_profile (nick ASC NULLS LAST) 13. WHERE profi; 14.SELECT * FROM user_profile where profi and nick ilike 'd%'; 15.EXPLAIN ANALYZE SELECT * FROM user_profile where profi and nick ilike 'd%'; 16.DROP INDEX user_nick_profi;

© 2012 ET NETERA a.s. Common Table Expressions 1.WITH u AS ( 2.SELECT up.id as user_id, up.nick as nick, f.nick as friend_nick FROM user_profile up 3.LEFT JOIN (SELECT * FROM user_profile, user_friend WHERE user_friend.friend_id = user_profile.id) f 4. ON (up.id = f.user_id ) 5.) 6.SELECT shop.id, shop.name, 'shop' as shop_type, u.* FROM shop 7. LEFT JOIN u ON (shop.user_id = u.user_id) 8.UNION ALL 9.SELECT eshop.id, eshop.name, 'e-shop' as shop_type, u.* FROM eshop 10. LEFT JOIN u ON (eshop.user_id = u.user_id); 11.WITH RECURSIVE t(n) AS ( 12. SELECT UNION ALL 14. SELECT n+1 FROM t 15.) 16.SELECT n FROM t LIMIT 100; 17.WITH RECURSIVE fact(i, f) AS ( 18. VALUES (2, 1) 19. UNION ALL 20. SELECT i + 1, i * f FROM fact 21.) 22.SELECT f FROM fact LIMIT 10;

© 2012 ET NETERA a.s. Full Text Search 1.SELECT count(*) FROM shop; SELECT * FROM shop WHERE (to_tsvector(srch) to_tsquery(lower('(oc|obchod)&!mexx'))); rows, 897 ms 5.EXPLAIN ANALYZE SELECT * FROM shop WHERE (to_tsvector(srch) to_tsquery(lower('(oc|obchod)&!mexx'))); 6.ALTER TABLE shop ADD COLUMN ts_vec tsvector; 7.UPDATE shop SET ts_vec = to_tsvector(srch); 8.CREATE INDEX shop_ts_idex ON shop USING gist(ts_vec); 9.SELECT * FROM shop WHERE (ts_vec to_tsquery(lower('(oc|obchod)&!mexx'))); rows, 55 ms, cca 1:50 11.EXPLAIN ANALYZE SELECT * FROM shop WHERE (ts_vec to_tsquery(lower('(oc|obchod)&!mexx'))); 12.DROP INDEX shop_ts_idex; 13.ALTER TABLE shop DROP COLUMN ts_vec;

© 2012 ET NETERA a.s. Pl / PgSQL 1.CREATE OR REPLACE FUNCTION shop_srch_trig() 2. RETURNS trigger AS 3.$BODY$BEGIN 4.NEW.srch = lower(coalesce(NEW.name, ''::text) 5.|| (' '::text) 6.|| coalesce(NEW.street, ''::text) 7.|| (' '::text) 8.|| coalesce(NEW. , ''::text) 9.|| (' '::text) 10.|| coalesce(NEW.url, ''::text) 11.|| (' '::text) 12.|| coalesce(NEW.description, ''::text)); NEW.ts_vec = to_tsvector(NEW.srch) 14.RETURN NEW; 15.END;$BODY$ 16. LANGUAGE plpgsql VOLATILE 17. COST 100; 18.CREATE TRIGGER shop_srch_trig 19. BEFORE INSERT OR UPDATE 20. ON shop 21. FOR EACH ROW 22. EXECUTE PROCEDURE shop_srch_trig();

© 2012 ET NETERA a.s. COPY & CSV 1.COPY user_profile TO '/var/lib/pgsql/user-profiles.csv' DELIMITERS '' CSV HEADER; 2.-- vim /var/lib/pgsql/user-profiles.csv 3.CREATE TABLE user_profile_backup (LIKE user_profile); 4.COPY user_profile_backup FROM '/var/lib/pgsql/user-profiles.csv' DELIMITERS '' CSV HEADER; 5.-- rm /var/lib/pgsql/user-profiles.csv 6.SELECT * FROM user_profile_backup; 7.DROP TABLE user_profile_backup;

© 2012 ET NETERA a.s. Osnova přednášky 1.Deploy a konfigurace 2.Základ aplikace 3.Konfigurace aplikace 4.Typy Wicket aplikací 5.Spojení se Spring

© 2012 ET NETERA a.s. Success Stories 1.Odklepnuto.cz 2.Foxter.cz

© 2012 ET NETERA a.s. Odklepnuto.cz 1.Aukční portál 2.Vývoj aplikace, konzultace při vývoji 3.Správa serverů 4.Velký nárůst návštěvnosti v roce >1000 registrací denně, UIP 6.Jeden server DB + App, cca 40 GB dat Postgres 7.Pět serverů během 2 měsíců, 200 GB dat 8.Optimalizace výkonu PostgreSQL na nevýkonném hardware

© 2012 ET NETERA a.s. Foxter.cz 1.Portál o nakupování 2.Velká roztříštěnost dat 3.Fulltext tis. UIP měsíčně, extrém 8 tis. UIP denně 1.Data 500 MB v DB (obrázky jsou mimo) 2.Selecty přes hodně tabulek 3.Min. HW konfigurace, snadná optimalizace, hlavně indexy a vacuum

© 2012 ET NETERA a.s. Dotazy ? ? ? Děkuji za pozornost :-)