PostgreSQL 8.3. požadavky na odezvu atd. Zatím nedostižnou metou je implementace celého standardu ANSI
|
|
- Jindřich Beránek
- před 6 lety
- Počet zobrazení:
Transkript
1 Pavel Stěhule Department of Mapping and Cartography, Faculty of Civil Engineering Czech Technical University in Prague stehule kix.fsv.cvut.cz Klíčová slova: Database systems, Open Source Abstrakt Práce na Open Source databázích pokračují nezadržitelným tempem. Vývojáři se musí vyrovnat s rostoucími požadavky uživatelů na objem dat ukládaných do databází, na náročnější požadavky na odezvu atd. Zatím nedostižnou metou je implementace celého standardu ANSI SQL 200x. Všechny databáze z velké trojky (Firebird, MySQL a PostgreSQL) používají multigenerační architekturu, cenově orientované hledání optimálního prováděcího plánu, write ahead log atd. MySQL se profiluje jako SQL databáze schopná používat specializované databázové backendy schopné maximální efektivity pro určité konkrétní prostředí. PostgreSQL je široce použitelná databáze, těžící z vynikající stability, s perfektní rozšiřitelností a komfortním prostředím. Konečně Firebird je vynikající embeded databáze, která se osvědčuje v tisících instalacích na desktopech. Podle původního plánu mělo dojít k uvolnění verze 8.3 koncem léta mělo jít o verzi obsahující patche dokončené pro 8.2, ale v té době nedostatečně otestované. Nakonec se ukázalo, že ty nejdůležitější patche je třeba dopracovat. Jednalo se o tak atraktivní vlastnosti, že se rozhodlo s vydáním nové verze počkat. 8.3 obsahuje integrovaný fulltext, podporu opožděného potvrzování (asynchronní commit), synchronizované sekvenční čtení datových souborů, úspornější ukládání dynamických datových typů (kratších 256byte), HOT updates a sofistikovanější aktualizaci indexů (hot indexes). Z patchů připravených pro 8.2 se v 8.3 neobjeví podpora bitmapových indexů a podpora aktualizovatelných pohledů. Původní řešení založené na pravidlech (rules) bylo příliš komplikované. 8.3 obsahuje podporu aktualizovatelných kurzorů, a je docela dobře možné, že aktualizovatelné pohledy budou ve verzi 8.4 implementovány právě s pomocí této třídy kurzorů. Vývoj pokračuje implementací dalších modulů SQL. Ve verzi 8.3 je to konkrétně SQL/XML (rozšíření ANSI SQL), která umožňuje operace s XML dokumenty přímo v databázi a zjednodušuje generování XML dokumentů. Zásadní (interní) změnou je zkrácení hlavičky řádku z 28 bajtů na 24 bajtů. Další změnou, která by měla vést k minimalizaci velikosti uložených dat je diverzifikace typu varlena. Tento typ se v PostgreSQL používá pro serializaci hodnot všech typů s variabilní délkou. Trochu připomíná string v Pascalu. První byty nesou informaci o délce, další nesou obsah. Starší verze PostgreSQL znaly jen typ varlena s 4byte informací o Geinformatics FCE CTU
2 délce. 8.3 podporuje také typ varlena s 1byte záhlavím. Úspora by se měla projevit hlavně u typu NUMERIC a krátkých řetězců. K překladu PostgreSQL lze počínaje touto verzí použít jak gcc, MINGW tak Microsoft Visual C++ (na platformě Microsoft Windows). Integrace TSearch2 Integrace TSearch2 do jádra PostgreSQL je výsledkem dlouholetého úsilí Olega Bartunova a Teodora Sigaeva. Díky integraci se zjednoduší konfigurace fulltextu a pro určité jazyky (pro které existuje podpora v projektu Snowball) lze fulltext používat hned po instalaci databáze. Čeština bohužel mezi tyto jazyky nepatří je potřeba provést několik dalších operací. Předně převést Open Office slovníky do kódování UTF8 a zkopírovat je do příslušného podadresáře PostgreSQL. Dále zaregistrovat slovník a provést tzv. konfiguraci. Kromě konfigurace jsou rozdíly mezi integrovaným fulltextem a TSearch2 (z verze 8.2) spíše kosmetické. CREATE TEXT SEARCH DICTIONARY cspell1( template=ispell, dictfile = czech, afffile=czech, stopwords=czech); CREATE TEXT SEARCH CONFIGURATION cs (copy=english); ALTER TEXT SEARCH CONFIGURATION cs ALTER MAPPING FOR word, lword WITH cspell, simple; postgres=# select * from ts_debug( cs, Příliš žlut oučký kůň se napil žluté vody ); Alias Description Token Dictionaries Lexized token word Word Příliš {cspell,simple} cspell: {příliš} word Word žlut oučký {cspell,simple} cspell: {žlut oučký} word Word kůň {cspell,simple} cspell: {kůň} lword Latin word se {cspell,simple} cspell: {} lword Latin word napil {cspell,simple} cspell: {napít} word Word žluté {cspell,simple} cspell: {žlutý} lword Latin word vody {cspell,simple} cspell: {voda} (13 rows) Podporu fulltextu nad konkrétním sloupcem můžeme aktivovat např. vytvořením funkcionálního GIN indexu. CREATE INDEX data_poznamka_ftx ON data USING gin(to_tsvector( cs, poznamka)) a vyhledávat (fulltextové vyhledávání) SELECT * FROM data WHERE to_tsvector( to_tsquery( žlutá & voda ) Podpora SQL/XML Zásadně se změnila podpora XML. To co v předchozích verzích se neohrabaně řešilo přes doplňky se nyní dostalo přímo do jádra. Jednak jsou k dispozici funkce generující XML (xmlelement, xmlforest,...) jednak jsou tu funkce mapující obsah tabulky do XML. Výsledkem může být XML schéma (použitelné pro validaci nebo pro přenos definice tabulky), XML dokument s integrovaným schématem, nebo samotný XML dokument. Jelikož je výstupní Geinformatics FCE CTU
3 formát standardizován v SQL/XML, neměl by být přenos těchto tabulek problémem (mezi těmi databázemi, které SQL/XML podporují). pavel=# create table a(a date, b varchar(10)); CREATE TABLE pavel=# insert into a values(current_date, něco ),(current_date+1, NULL); INSERT 0 2 pavel=# select table_to_xml_and_xmlschema( a, true, false, ); table_to_xml_and_xmlschema <a xmlns:xsi=" xsi:nonamespaceschemalocation="#"> <xsd:schema xmlns:xsd=" <xsd:simpletype name="date"> <xsd:restriction base="xsd:date"> <xsd:pattern value="\p{nd}{4}-\p{nd}{2}-\p{nd}{2}"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="varchar"> </xsd:simpletype> <xsd:complextype name="rowtype.root.public.a"> <xsd:sequence> <xsd:element name="a" type="date" nillable="true"></xsd:element> <xsd:element name="b" type="varchar" nillable="true"></xsd:element> </xsd:sequence> </xsd:complextype> <xsd:complextype name="tabletype.root.public.a"> <xsd:sequence> <xsd:element name="row" type="rowtype.root.public.a" minoccurs="0" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> <xsd:element name="a" type="tabletype.root.public.a"/> </xsd:schema> <row> <a> </a> <b>něco</b> </row> <row> <a> </a> <b xsi:nil= true /> </row> </a> Stejného výsledku dosáhneme pomocí funkcí generujících XML. Jejich použití je univerzálnější, a o trochu komplikovanější: pavel=# SELECT xmlelement(name a, xmlagg( xmlelement(name row, xmlforest(a,b)))) FROM a; xmlelement <a><row><a> </a><b>něco</b></row><row><a> </a></row></a> (1 řádka) V PostgreSQL stále chybí COLLATE. Podařilo se alespoň rozšířit klauzuli ORDER a to Geinformatics FCE CTU
4 v pozicování řádků s hodnotou NULL (ORDER BY.. NULLS FIRST/LAST). Adekvátně tomu se rozšířili parametry u btree indexů. Refaktorizací kódu se docílila podpora NULL v indexech. Starší verze nedokázaly indexovat hodnotu NULL. postgres=# explain SELECT count(*) FROM fx WHERE a IS NULL; QUERY PLAN Aggregate (cost= rows=1 width=0) -> Index Scan using bb on fx (cost= rows=1 width=0) Index Cond: (a IS NULL) (3 rows) Nové datové typy a rozšíření možností stávajících datových typů Ve verzi 8.2 PostgreSQL podporuje několik nových datových typů: XML zajišt ující validitu obsahu, UUID (universal unique identifier) dle RFC Vlastní generátor je v contribu uuid-ossp (je potřeba doinstalovat package uuid a uuid-devel). K dispozici je deset různých způsobů generování jednoznačných univerzálních identifikátorů. Dále je tu možnost používat vlastní výčtové typy (zjevně inspirováno MySQL). Na rozdíl od MySQL v PostgreSQL je nutné před použitím vytvořit pro určitý seznam hodnot vlastní typ. Jeho použití je ovšem podstatně širší než v MySQL. -- klasické řešení výčtu CREATE TABLE foo(varianta char(2) CHECK (varianta IN ( a1, a2, a3 ))); -- pouziti typu enum CREATE TYPE vycet_variant AS ENUM( a1, a2, a3, a4, a5 ); CREATE TABLE foo(varianta vycet_variant); -- enum lze pouzit i v poli SELECT {a1,a3} ::vycet_variant[] as pripustne_varianty; Rozsah hodnot získáme voláním funkce enum range. Pokud funkci předáme parametr NULL, získáme úplný výčet hodnot. postgres=# SELECT enum_range( a2 ::va, a4 ::vycet_variant); enum_range {a2,a3,a4} (1 row) postgres=# SELECT enum_range(null::vycet_variant); enum_range {a1,a2,a3,a4,a5} (1 row) Kromě opravy několika chyb v PL/pgSQL (chyběla kontrola NOT NULL domén), došlo již k níže zmíněnému rozšíření příkazu RETURN o tabulkový výraz, a konečně lze i v PL/pgSQL používat scrollable kurzory. Ty PostgreSQL podporuje delší dobu, z PL/pgSQL je však nebylo možné používat. Kromě scrollable kurzorů lze v PL/pgSQL (ale i vně) používat updatable kurzory podle ANSI SQL 92 (oproti ANSI SQL 2003 přísnější omezení). U SRF funkcí můžeme upřesnit jejich náročnost a předpoklad počtu vrácených řádků (atributy COST a ROWS). V předchozích verzích se při hledání optimálního prováděcího plánu předpokládalo, že SRF funkce vrátí vždy 1000 řádků, což nebyla pokaždé být pravda (výsledkem byl neoptimální prováděcí plán). Vedlejším efektem implementace subsystému pro kešování prováděcích plánů bylo odstranění problémů s neplatnými prováděcími plány v PL/pgSQL. Tyto problémy se projevovaly hlavně při použití dočasných tabulek, které se nesměly odstraňovat. Jinak docházelo, při použití SQL Geinformatics FCE CTU
5 příkazu vázaného na zrušenou a opětovně vytvořenou tabulku, k chybě. Nyní se cache čistí v závislosti na rušení databázových objektů. Samozřejmě, že funkce volané v cyklu budou prováděny efektivně jen tehdy, pokud nebude docházet k regenerování prováděcích plánů. V 8.3 můžeme pole vytvářet i ze složených typů v podstatě můžeme uložit tabulku jako jednu hodnotu). Stále však chybí podpora domén (a vkládaný záznam je nutné explicitně typovat): postgres=# CREATE TYPE at AS (a integer, b integer); CREATE TYPE postgres=# CREATE TABLE foo(a at[]); CREATE TABLE postgres=# INSERT INTO foo VALUES(ARRAY[(10,20)::at]); INSERT 0 1 postgres=# INSERT INTO foo VALUES(ARRAY[(10,20)::at, (20,30)::at]); INSERT 0 1 postgres=# SELECT * FROM foo; a {"(10,20)"} {"(10,20)","(20,30)"} (2 rows) postgres=# SELECT a[1] FROM foo; a (10,20) (10,20) (2 rows) postgres=# SELECT a[1].a FROM foo; a (2 rows) Optimalizace Ve verzi 8.3 došlo k celé řada změn a úprav, které by měly vést k rychlejšímu zpracování SQL příkazů. Zrychlit by mělo načítání dat příkazem COPY. U tohoto příkazu není žádný důvod, proč by mělo docházet k zápisu do write ahead logu (ten je základem procesu obnovy po pádu PostgreSQL) a tato verze dokáže u tohoto příkazu obcházet zápis so WAL (COPY musí být v transakci). Nově PostgreSQL efektivněji provádí dotazy s ORDER BY c LIMIT n, kdy znatelně zrychlí výběr prvních n řádků řazených podle sloupce c, pokud nad sloupcem c není index (nedochází k seřazení celé tabulky). Příkaz EXPLAIN ANALYZE nyní poskytuje další informace o řazení (typ, spotřeba paměti): t=# explain analyze SELECT * FROM foo ORDER BY a LIMIT 12; QUERY PLAN Limit (cost= rows=12 width=4) (actual time= rows=12 loops=1) -> Sort (cost= rows= width=4) (actual time= rows=12 loops=1) Sort Key: a Sort Method: top-n heapsort Memory: 17kB -> Seq Scan on foo (cost= rows= width=4) (actual time= rows= loops=1) Total runtime: ms (6 rows) t=# explain analyze SELECT * from foo order by a; Geinformatics FCE CTU
6 QUERY PLAN Sort (cost= rows= width=4) (actual time= rows= loops=1) Sort Key: a Sort Method: external merge Disk: 1552kB -> Seq Scan on foo (cost= rows= width=4) (actual time= rows= loops=1) Total runtime: ms (5 rows) V předchozích verzích neexistovala hash funkce pro typ NUMERIC. Proto se pro spojování tabulek skrz sloupce typu NUMERIC nedala použít metoda HASHJOIN, která patří k nejrychlejším. Zrychlit by měla i operace LIKE, zvlášt když se použije více bajtové kódování použil se jiný algoritmus na porovnání řetězců. Nyní se již neporovnávají znaky, ale bajty, což ušetří jednu konverzi z UTF8 do UTF16. Na zkušební tabulce o sta tisících žlutých koních sekvenční čtení tabulky se zrychlilo z 169ms na 105ms. Pokud se zjistí, že dochází k souběžnému sekvenčnímu čtení jedné tabulky z více obslužných procesů, tak se systém pokusí tyto procesy sesynchronizovat (pokud dojde k sekvenčnímu čtení, tak se ve velké většině případů čte celý datový soubor). Sekvenční čtení všech procesů je přibližně stejně rychlé, a tak je šance, že všechny procesy budou chtít v jednu chvíli stejnou datovou stránku, a je mnohem vyšší pravděpodobnost, že ji najdou ve vyrovnávací paměti. Pokud nedochází k synchronizaci procesu, tak pravděpodobnost, že požadovaná stránka je ve vyrovnávací paměti je mnohem menší, čímž se zvyšuje pravděpodobnost požadavku na fyzické čtení datové stránky se souboru. Tato optimalizace má smysl při větším počtu současně pracujících uživatelů, kdy je vyšší pravděpodobnost, že dojde k synchronizaci, a také kdy je větší tlak na vyrovnávací pamět. Podpora asynchronního commitu je méně nebezpečnou obdobou nedoporučované konfigurace fsync=off. Při asynchronním commitu je zaručena konzistence databáze, nicméně při havárii hrozí riziko ztráty několika posledních transakcí. Parametr synchronous commit je vázán na session, takže vývojář může na základě své úvahy zvolit méně bezpečný, nicméně rychlejší způsob řešení transakcí. Testy ukazují, že má smysl uvažovat o tomto parametru v případě málo zatížené databáze, kdy nedochází ke sdílení zápisu do transakčního logu typicky při administraci databáze, kdy ostatní uživatelé nemají přístup k databázi a s databází pracuje pouze DBA. 8.3 obsahuje sofistikovanější metodu pro vytváření nových verzí označovanou jako HOT (Heap Only Tuples). Starší verze při jakékoliv operaci UPDATE modifikovaly relevantní indexy, a to i přesto, že nedošlo k modifikaci oindexovaných sloupců. Tzv. horký UPDATE je podmíněný dostatkem volného prostoru na datové stránce a změnou pouze neoindexovaných sloupců. Pokud tyto podmínky nejsou splněny, provede se klasický studený UPDATE. HOT UPDATE je vůči klasické implementaci operace mnohem úspornější a tudíž i rychlejší. Navíc tato nová metoda dokáže využít prostor na datové stránce obsazený nedostupnými verzemi (které byly vytvořeny také touto metodou) bez potřeby spuštění operace VACUUM. Geinformatics FCE CTU
7 Spuštění operace VACUUM ve více procesech V 8.3 je automatické vacuování implementováno s podporou více procesů, tj. pokud trvá vacuum jedné databáze příliš dlouho, vytvoří se nový pracovní proces (worker), který zajišt uje vacuování dalších databází (smyslem není urychlit díky paralelizaci operaci VACUUM, ale zajistit, že v daném časovém okně se provede spravedlivě VACUUM všech databází). Úkolem pracovního procesu je projet provozní statistiky všech tabulek v databázi a vybrat tabulky určené k vacuování. Pracovní proces je na úrovni databáze sekvenční, paralelizace je na úrovni clusteru. Nově vacuum také zajišt uje samočinné volání VACUUM FREEZE coby ochrany před přetečením rozsahu identifikátorů verzí řádků. Rozšíření PL/pgSQL RETURN QUERY, lokální systémové proměnné Předchozí verze neumožňovaly vrátit množinu záznamů jako výsledek SRF funkce. Jediným řešením bylo volání příkazu RETURN NEXT pro každý řádek výsledku dotazu. V podstatě totéž (ale na nižší úrovni, tudíž efektivněji) provádí příkaz RETURN QUERY. Jeho parametrem je SQL dotaz, jehož výsledek se připojí k výstupu. Podobně jako RETURN NEXT neukončuje provádění funkce. CREATE OR REPLACE FUNCTION dirty_series(m integer, n integer) RETURNS SETOF integer AS $$ BEGIN RETURN QUERY SELECT * FROM generate_series(1,m) g(i) WHERE i % n = 0; RETURN; END; $$ LANGUAGE plpgsq; Další novou vlastností je možnost modifikovat systémové proměnné lokálně pro určitou funkci. Podobně se chová T-SQL nebo MySQL, kde se ukládá aktuální nastavení systémových proměnných v čase registrace funkce. V PostgreSQL žádný podobný mechanismus nebyl. Tato vlastnost řeší zabezpečení SECURITY DEFINER funkcí, kterým bylo možné podvrhnout útočníkův kód změnou systémové proměnné search path. Zápis je zřejmý z následujícího příkladu: CREATE FUNCTION report_guc(text) RETURNS TEXT AS $$ SELECT current_setting($1) $$ LANGUAGE sql SET regex_flavor = basic; ALTER FUNCTION report_guc(text) RESET search_path SET regex_flavor = extended; Podpora režimu Warm Standby, prototyp replikace založené na transakčním logu umožňuje nakonfigurovat a používat dva PostgreSQL servery tak, že první slouží jako výkonný server a druhý jako záložní, kdy změny v datech na prvním serveru jsou na druhý server replikovány exportem transakčního logu. Tato konfigurace se používá pouze v náročných aplikací, kde časté klasické zálohování z důvodu objemu není možné a kde ztráta dat není akceptovatelná kde zákazník vyžaduje průběžné zálohování. Nejde o multi-master replikaci jako v případě MySQL. Druhý systém je až do signálu nedostupný, tudíž tímto způsobem replikace nelze rozložit zátěž serveru. Pro usnadnění konfigurace verze 8.3 obsahuje příkaz pg standby (ve stejnojmenném contrib adresáři), který zajistí udržení druhé instance PostgreSQL v režimu Warm Standby. Geinformatics FCE CTU
8 Master (postgresql.conf): archive_command = cp %p../archive/%f archive_timeout = 20 Warm Standby (recovery.conf) restore_command = pg_standby -l -d -k 255 -r 2 -s 2 -w 0 -t /tmp/stop /usr/local/pgsql/archive %f %p \ 2>> standby.log Po modifikaci konfiguračních souborů stačí spustit oba servery. Záložní server zůstane v recovery režimu, kdy pg standby postupně podvrhuje segmenty transakčního logu (sleduje exportované segmenty) a nedovolí dokončit obnovu záložní databáze. Teprve po signalizaci, pg standby (existencí předem určeného souboru (v příkladu /tmp/stop)) oznámí serveru, že se jednalo o poslední segment transakčního logu a dovolí dokončení obnovy a tím i přepnutí do stavu, kdy záložní server je schopen přijímat požadavky. Signální soubor musí vygenerovat uživatel postgres, tak aby jej pg standby mohlo odstranit. Pokud tento soubor nelze odstranit, replikace zhavaruje. V praxi toto řešení není příliš použitelné, nebot pg standby nedokáže zachytit výjimku a tudíž ji ani nedokáže korektně obsloužit (aniž by nebyl nevratně přerušen proces replikace spojený se ztrátou dat na záložním serveru). 4916? S 0:00 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql2/data 4918? Ss 0:00 postgres: startup process 5226? S 0:00 sh -c pg_standby -l -d -t /tmp/aaa /usr/local/pgsql/archive pg_xlog/recoveryxlog 2>> standby.log 5227? S 0:00 pg_standby -l -d -t /tmp/aaa /usr/local/pgsql/archive pg_xlog/recoveryxlog Záložní cluster musí být klonem zálohovaného clusteru. Musí být vytvořen zkopírováním adresáře databázového clusteru nevytváří se příkazem initdb. Regulární výrazy Podpora reg. výrazů není v PostgreSQL novinkou. V 8.3 se objevily nové funkce regexp matches a dvojice regexp split to array a regexp split to table. Pro řadu úloh nyní nemusíme používat plperl. V následujícím příkladu je z XML dokumentu separován seznam identifikačních čísel, který je následně indexován a použit k vyhledávání. Ke stejnému účelu by bylo možné použít i funkce podporující XPath výrazy. Toto řešení je řádově rychlejší než intuitivní (a velice pomalé) řešení s LIKE. objednava_v_xml LIKE %<id>hledane_id</id>% Pole NEW.objednavka id produktu je aktualizované v triggeru: NEW.objednavka_id_produktu := ARRAY(SELECT i[1] FROM regexp_matches(new.objednavka_v_xml, <id>(\\d+)</id>, g r(i)); Funkčně srovnatelný predikát výše uvedenému LIKE je: ARRAY[hledane_id] Ostatní změny Nezanedbatelného rozšíření se dočkalo prostředí ecpg. Vylepšuje podporu prepared statements, nabízí auto prepare mód, pozicované proměnné. Jedná o zásadní změny došlo ke změně verze z 4.4 na 6.0. Jednou z prvních backportů z EnterpriseDB je debugger a profiler PL/pgSQL. Nová verze pgadminiii obsahuje grafické rozhraní debuggeru, které je zpřístupněno, pokud je v PostgreSQL nainstalován plugin s debuggerem (ke stažení na pgfoundry). Ve srovnání s moderními debuggery obsahuje PL/pgSQL pouze základní funkce. Geinformatics FCE CTU
9 pavel=# LOAD $libdir/plugins/plugin_profiler ; LOAD pavel=# SET plpgsql.profiler_tablename = profilerstats ; SET pavel=# SELECT line_number, sourcecode, time_total, exec_count, func_oid::regproc FROM profilerstats ORDER BY 1; line_number sourcecode time_total exec_count func_oid x 1 begin 0 0 x 2 for i in 1..4 loop x 3 return next i; 9.8e-05 4 x 4 end loop; 0 0 x 5 return; 3e-06 1 x (6 rows) Index advisor Index advisor je plugin plánovače dotazů. Jedná se o prototyp navržený Tomem Lanem za účelem demonstrace monitorovacího rozhraní návrhu a optimalizace prováděcích plánů. Pokud se aktivuje, tak optimalizátor bere v úvahu, kromě existujících indexů, hypotetické indexy vytvořené nad každým sloupcem: regression=# load /home/tgl/pgsql/advisor ; LOAD regression=# explain select * from fooey order by unique2,unique1; QUERY PLAN Sort (cost= rows=10000 width=8) Sort Key: unique2, unique1 -> Seq Scan on fooey (cost= rows=10000 width=8) Plan with hypothetical indexes: Index Scan using <hypothetical index> on fooey (6 rows) (cost= rows=10000 width=8) regression=# explain select * from fooey where unique2 in (1,2,3); QUERY PLAN Seq Scan on fooey (cost= rows=3 width=8) Filter: (unique2 = ANY ( {1,2,3} ::integer[])) Plan with hypothetical indexes: Bitmap Heap Scan on fooey (cost= rows=3 width=8) Recheck Cond: (unique2 = ANY ( {1,2,3} ::integer[])) -> Bitmap Index Scan on <hypothetical index> (cost= rows=3 width=0) Index Cond: (unique2 = ANY ( {1,2,3} ::integer[])) (8 rows) Vývoj v následujících letech Největší slabinou PostgreSQL je chybějící podpora replikaci. V této oblasti nikoliv nezaslouženě dominují komerční systémy. Dále PostgreSQL nemá dořešenou internacionalizaci, tzv. COLLATES, které nabízí jak MySQL, tak Firebird. Konečně třetí oblastí, kterou je nyní třeba intenzivně se zabývat je podpora OLAP databází. Nelze předpokládat, že by Postgre- SQL v brzké době podporoval OLAP databáze, nicméně existují určité indicie, že hlavním tématem následující verze (8.4) bude podpora analytických a rekurzivních dotazů. V delším Geinformatics FCE CTU
10 časovém horizontu je možné očekávat zařazení podpory zpracování tzv. proudových dat, jelikož platforma PostgreSQL byla použita k vytvoření experimentálních prototypů proudových databází a kromě toho, část týmu vývojářů se touto problematikou aktivně zabývá. Odkazy 1. Přehled vlastností jednotlivých verzí 1 2. Přehled plánovaných rozšíření v příští verzi Matrix 2 Geinformatics FCE CTU
INDEXY JSOU GRUNT. Pavel Stěhule
INDEXY JSOU GRUNT Pavel Stěhule Indexy bez indexu čteme vše a zahazujeme nechtěné s indexem čteme pouze to co nás zajímá POZOR - indexy vedou k random IO, navíc se čtou dvě databázové relace (index a heap)
PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře
PostgreSQL Vzniká jako akademický projekt Experimentální vlastnosti Podpora dědičnosti Rozšiřitelnost vlastní datové typy Univerzální nasazení ve vědecké sféře Obsahuje podporu polí (časové řady) Geotypy
TimescaleDB. Pavel Stěhule 2018
TimescaleDB Pavel Stěhule 2018 O výkonu rozhodují Algoritmy Datové struktury 80-90 léta - vize univerzálních SQL databází Po roce 2000 - specializované databáze Relační SQL databáze Běžně optimalizována
Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant
Novinky v PostgreSQL 9.4 Tomáš Vondra, 2ndQuadrant (tomas@2ndquadrant.com) http://blog.pgaddict.com (tomas@pgaddict.com) vývojáři JSONB aggregate expressions (FILTER) SELECT a, SUM(CASE WHEN b < 10 THEN
zobrazení délky ve výpisu v psql
zobrazení délky ve výpisu v psql postgres=# \dt+ codebooks.* List of relations Schema Name Type Owner Size Description -----------+----------+-------+-------+------------+------------- codebooks lau1 table
Čteme EXPLAIN. CSPUG, Praha. Tomáš Vondra (tv@fuzzy.cz) 21.6.2011. Czech and Slovak PostgreSQL Users Group
Čteme EXPLAIN CSPUG, Praha Tomáš Vondra (tv@fuzzy.cz) Czech and Slovak PostgreSQL Users Group 21.6.2011 Agenda K čemu slouží EXPLAIN a EXPLAIN ANALYZE? Jak funguje plánování, jak se vybírá optimální plán?
Návrh a tvorba WWW stránek 1/14. PHP a databáze
Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované
SQL injection princip a ochrana
SQL injection princip a ochrana Základ injektáže Základní ochrana Proces zpracování SQL dotazu Prepared statements Minimalizace dopadu průniku nastavením práv Detekce průniku Kladení pastí 1 Cíle SQL injektáže
Optimalizace dotazů a databázové transakce v Oracle
Optimalizace dotazů a databázové transakce v Oracle Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 22. dubna 2015 Marek Rychlý
O Apache Derby detailněji. Hynek Mlnařík
O Apache Derby detailněji Hynek Mlnařík Agenda Historie Vlastnosti Architektura Budoucnost Historie 1997 Cloudscape Inc. - JBMS 1999 Informix Software, Inc. odkoupila Cloudscape, Inc. 2001 IBM odkoupila
Michal Krátký, Miroslav Beneš
Databázové a informační systémy Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava 5.12.2005 2005 Michal Krátký, Miroslav Beneš Databázové a informační systémy 1/24 Obsah
PG 9.5 novinky ve vývoji aplikací
PG 9.5 novinky ve vývoji aplikací P2D2 2016 Antonín Houska 18. února 2016 Část I GROUPING SETS, ROLLUP, CUBE Agregace Seskupení řádků tabulky (joinu) do podmnožin podle určitého kĺıče. Za každou podmnožinu
Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz
Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem
Paralelní dotazy v PostgreSQL 9.6 (a 10.0)
Paralelní dotazy v PostgreSQL 9.6 (a 10.0) Tomáš Vondra tomas.vondra@2ndquadrant.com Prague PostgreSQL Developer Day 16. února, 2017 Agenda spojení vs. procesy v PostgreSQL využití zdrojů výhody, nevýhody,
Databázové systémy Cvičení 5.2
Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako
Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz
Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty
Databáze I. 5. přednáška. Helena Palovská
Databáze I 5. přednáška Helena Palovská palovska@vse.cz SQL jazyk definice dat - - DDL (data definition language) Základní databáze, schemata, tabulky, indexy, constraints, views DATA Databáze/schéma
Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML
10 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Export a import dat Formát XML a SQL server Zálohování a obnova
Oracle XML DB. Tomáš Nykodým
Oracle XML DB Tomáš Nykodým xnykodym@fi.muni.cz Osnova Oracle XML DB Architektura Oracle XML DB Hlavní rysy Oracle XML DB Hlavní rysy Oracle XML DB - pokračování XMLType XML Repository Využívání databázových
Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava
Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_038.ICT.34 Tvorba webových stránek SQL stručné minimum OA a JŠ Jihlava, VY_32_INOVACE_038.ICT.34 Číslo
Použití databází na Webu
4IZ228 tvorba webových stránek a aplikací Jirka Kosek Poslední modifikace: $Date: 2010/11/18 11:33:52 $ Obsah Co nás čeká... 3 Architektura webových databázových aplikací... 4 K čemu se používají databázové
B Organizace databáze na fyzické úrovni u serveru Oracle
B Organizace databáze na fyzické úrovni u serveru Oracle B.1. Základní koncepty... 2 B.2. Možnosti rozšíření prostoru databáze... 9 B.3. Indexování a shlukování... 12 Literatura... 16 J. Zendulka: Databázové
1. Webový server, instalace PHP a MySQL 13
Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského
Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal
Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE
Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23
Stručný obsah 1. Stručný úvod do relačních databází 13 2. Platforma 10g 23 3. Instalace, první přihlášení, start a zastavení databázového serveru 33 4. Nástroje pro administraci a práci s daty 69 5. Úvod
IDS optimalizátor. Ing. Jan Musil, IBM ČR Community of Practice for
IDS optimalizátor Ing. Jan Musil, IBM ČR Community of Practice for CEEMEA Agenda Optimalizační plán dotazu Typy přístupových plánů Metody pro spojení tabulek Určení optimalizačního plánu Vyhodnocení přístupových
Tabulka fotbalové ligy
Semestrální práce na X36DB2 Michal Rezler Jan Zmátlík Tabulka fotbalové ligy a tabulka střelců 8. prosinec 2011 Obsah 1 Zadání....................................................... 3 1.1 Stručný popis.............................................
Virtual Private Database (VPD) Jaroslav Kotrč
Virtual Private Database (VPD) Jaroslav Kotrč Co je VPD Bezpečnostní politika pro přístup k databázi na úrovni řádků a sloupců. Bezpečnost přímo nad tabulkami. Není způsob, jak to obejít. SQL dotaz upraven
Full-textové vyhledávání. Július Štroffek Revenue Product Engineer Sun Microsystems
Full-textové vyhledávání v PostgreSQL Július Štroffek Revenue Product Engineer Sun Microsystems 1 Agenda Historie Cíle full-textového vyhledávání Databázové objekty pro Full-Text Search (FTS) > Datové
Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.
1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace
Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav
Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Číslo: Anotace: Inovace a zkvalitnění výuky prostřednictvím ICT Databáze Základní seznámení s MySQL
1 Webový server, instalace PHP a MySQL 13
Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského
Verzování a publikace dat na webu za pomoci PostgreSQL
Prague PostgreSQL Developers' Day 2013 Verzování a publikace dat na webu za pomoci PostgreSQL Jan Pěček Kdo jsem? Jan Pěček Programátor PostgreSQL Jyxo, s.r.o. (Blog.cz) MAFRA, a.s. - Internet Trading
InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou
MySQL Typy tabulek Storage Engines MyISAM defaultní, neumí transakce, umí fulltext InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) MEMORY (HEAP) v paměti; neumí transakce ARCHIVE velké množství
7. Integrita a bezpečnost dat v DBS
7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13
7. Integrita a bezpečnost dat v DBS
7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13
PostgreSQL 9.4 - Novinky (a JSONB) Tomáš Vondra, GoodData (tomas.vondra@gooddata.com) http://blog.pgaddict.com (tomas@pgaddict.
PostgreSQL 9.4 - Novinky (a JSONB) Tomáš Vondra, GoodData (tomas.vondra@gooddata.com) http://blog.pgaddict.com (tomas@pgaddict.com) 9.4 release notes http://www.postgresql.org/docs/9.4/static/release-9-4.html
Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata
Databáze Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu Bedřich Košata K čemu jsou databáze Ukládání dat ve strukturované podobě Možnost ukládat velké množství dat
Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT
Novinky v Microsoft SQL Serveru 2016 RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT david@wug.cz @gesvindr Přehled hlavních novinek Výkon Query Store Temporal Tables
RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague
seminář: Administrace Oracle (NDBI013) LS2017/18 RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague Zvyšuje výkon databáze
SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:
SII - Informatika Způsob vyhodnocení: Při vyhodnocení budou za nesprávné odpovědi strhnuty body. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: a) sekundární klíč b)
CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz
GridSQL a pg-pool II Vratislav Beneš benes@optisolutions.cz Agenda 1. Datové sklady a datová tržiště 2. pg-pool II 1. Infrastrukutra 2. Využití pro datové sklady 3. GridSQL 1. Infrastuktura 2. Vytvoření
Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky
Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci
Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports
, Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 9. dubna 2014 Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení
FIREBIRD relační databázový systém. Tomáš Svoboda
FIREBIRD relační databázový systém Tomáš Svoboda xsvobo13@fi.muni.cz Firebird historie 80. léta - Jim Starkey (DEC) InterBase 1994 - odkoupila firma Borland 2000 - Borland uvolnil zdrojové texty InterBase
Databáze I. Přednáška 4
Databáze I Přednáška 4 Definice dat v SQL Definice tabulek CREATE TABLE jméno_tab (jm_atributu typ [integr. omez.], jm_atributu typ [integr. omez.], ); integritní omezení lze dodefinovat později Definice
Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy
Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy Konvence Další prvky Požadavky na systém Ukázkové databáze Ukázky kódu Použití ukázek kódu Další
Databázové a informační systémy
Databázové a informační systémy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Jak ukládat a efektivně zpracovávat
POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE
POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE Upozornění: Pro práci s RDF Oracle daty je třeba mít nainstalován Oracle Spatial Resource Description Framework (RDF). 1. Vytvoření tabulkového
FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz> 13. 2. 2008 http://www.nic.cz/ http://fred.nic.cz
FRED & PostgreSQL CZ.NIC, z.s.p.o. Jaromír Talíř 13. 2. 2008 http://www.nic.cz/ http://fred.nic.cz 1 Obsah FRED co to je? Architektura systému, datový model, transakční model Komunikace
Jazyk SQL databáze SQLite. připravil ing. petr polách
Jazyk SQL databáze SQLite připravil ing. petr polách SQL - úvod Structured Query Language (strukturovaný dotazovací jazyk 70. léta min. století) Standardizovaný dotazovací jazyk používaný pro práci s daty
Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou
Administrace Oracle Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou zachyceny a uloženy lokálně před posláním
Stěhování aplikací. Michal Tomek, Sales Manager
Stěhování aplikací Michal Tomek, Sales Manager Agenda Co míníme stěhováním Typické situace Role InterSystems Příležitosti Migrace Stěhování informačního systému Nová budova. HW a OS Získáme nové vlastnosti
Implementace funkce XMLTABLE v PostgreSQL. Pavel
Implementace funkce XMLTABLE v PostgreSQL Pavel Stěhule @2017 Motivace Aktuálně chybí jednoduchý způsob, jak parsovat XML dokumenty v PostgreSQL S použitím untrusted funkcí (XML reader API) - pracné, a
Maturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
PL/pgSQL. Pavel
PL/pgSQL Pavel Stěhule @2017 Ukázka 1 CREATE OR REPLACE FUNCTION german_date(d date) RETURNS text AS $$ SELECT to_char($1, 'DD.MM.YYYY'); $$ LANGUAGE sql; postgres=# SELECT german_date(current_date); german_date
Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce
Databázové systémy 2 Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: čtvrtek, 4 5 Obor: ININ SWIN E-mail: jtichava@students.zcu.cz Databázové systémy II. KIV/DB2 LS 2007/2008 Zadání semestrální
Ukládání a vyhledávání XML dat
XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2014/12/04 19:41:24 $ Obsah Ukládání XML dokumentů... 3 Ukládání XML do souborů... 4 Nativní XML databáze... 5 Ukládání
Databázové a informační systémy Jana Šarmanová
Databázové a informační systémy Jana Šarmanová Obsah Úloha evidence údajů, způsoby evidování Databázové technologie datové modely, dotazovací jazyky. Informační systémy Datové sklady Metody analýzy dat
Programování a implementace Microsoft SQL Server 2014 databází
M20464 Programování a implementace Microsoft SQL Server 2014 databází Popis: Pětidenní kurz určený všem databázovým specialistům, kteří jsou odpovědni za implementaci databázových objektů a programování
Databázové systémy. Cvičení 6: SQL
Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi
8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1
8. Zpracování dotazu 8.1. Podstata optimalizace zpracování dotazu... 2 8.2. Postup optimalizace zpracování dotazu... 3 8.2.1. Implementace spojení... 5 8.2.2. Využití statistik databáze k odhadu ceny dotazu...11
Administrace Oracle. Práva a role, audit
Administrace Oracle Práva a role, audit Filip Řepka 2010 Práva (privileges) Objekty (tabulky, pohledy, procedury,...) jsou v databázi logicky rozděleny do schémat. Každý uživatel má přiděleno svoje schéma
Implementace dávkových operací
Implementace dávkových operací Petr Steckovič 12. 5. 2011 Hradec Králové 1 Dávkové zpracování dat Procesy běžící na pozadí Spouštěné Časem Stavem (např. dochází místo) Ručně Obvykle se jedná o podpůrné
Návrh a prototypová implementace databáze pro
Návrh a prototypová implementace databáze pro snadnější práci se strukturami nukleových kyselin Bc. Ondřej Čečák Fakulta elektrotechnická České vysoké učení technické v Praze 10. června 2011 10. června
Základy informatiky. 08 Databázové systémy. Daniela Szturcová
Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,
Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant
Základy informatiky 06 Databázové systémy Kačmařík/Szturcová/Děrgel/Rapant Problém zpracování dat důvodem je potřeba zpracovat velké množství dat, evidovat údaje o nějaké skutečnosti: o skupině lidí (zaměstnanců,
Microsoft SharePoint Portal Server 2003. Zvýšená týmová produktivita a úspora času při správě dokumentů ve společnosti Makro Cash & Carry ČR
Microsoft SharePoint Portal Server 2003 Zvýšená týmová produktivita a úspora času při správě dokumentů ve společnosti Makro Cash & Carry ČR Přehled Země: Česká republika Odvětví: Velkoobchod Profil zákazníka
KAPITOLA 1 Představení platformy Microsoft SQL Server 2008
KAPITOLA 1 Představení platformy Microsoft SQL Server 2008 Krátký pohled do historie SQL Serveru Souhrnný přehled novinek, které přináší verze SQL Server 2008 Optimalizovaná instalace a konfigurace Vynucení
DUM 12 téma: Příkazy pro tvorbu databáze
DUM 12 téma: Příkazy pro tvorbu databáze ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací
Administrace, Monitoring. Pavel Stěhule P2D2, Praha 2016
Administrace, Monitoring Pavel Stěhule P2D2, Praha 2016 Úkoly SQL databáze Optimalizace a vyhodnocení dotazů - programátor nemusí řešit způsob přístupu k datům: index scan, seq scan, nested loop, merge
Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz
Databáze II 1. přednáška Helena Palovská palovska@vse.cz Program přednášky Úvod Třívrstvá architektura a O-R mapování Zabezpečení dat Role a přístupová práva Úvod Co je databáze Mnoho dat Organizovaných
J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu
8. Zpracování dotazu 8.1. Podstata optimalizace zpracování dotazu... 2 8.2. Postup optimalizace zpracování dotazu... 3 8.2.1. Implementace spojení... 5 8.2.2. Využití statistik databáze k odhadu ceny dotazu...11
SQL - trigger, Databázové modelování
6. přednáška z předmětu Datové struktury a databáze (DSD) Ústav nových technologií a aplikované informatiky Fakulta mechatroniky, informatiky a mezioborových studií Technická univerzita v Liberci jan.lisal@tul.cz
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
Operátory ROLLUP a CUBE
Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor
Základní přehled SQL příkazů
Základní přehled SQL příkazů SELECT Základní použití Příkaz SELECT slouží k získání dat z tabulky nebo pohledu v požadované podobě. Získání všech řádků a sloupců z tabulky SELECT * FROM Person.Contact
37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody
37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody Využití databázových indexů Databázové indexy slouží ke zrychlení přístupu k datům a měly by se používat
8.2 Používání a tvorba databází
8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam
PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk
ČÁST 1. Základy 32bitového programování ve Windows
Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25
Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12
Jazyk SQL 1 Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT
Databáze I. Přednáška 7
Databáze I Přednáška 7 Objektové rozšíření SQL Objektově relační databáze SQL:1999 objektové rozšíření SQL vztahuje se k objektově relačním databázovým systémům ukládají objekty do relační databáze umožňují
PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK
PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK listopad 2009 souhrn v1 Červené dobře (nejspíš), modré možná Oracle Internet Directory OID: Databáze nemůže z OID přebírat seznam uživatelů *Databáze může získat z OID seznam
Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19
3 Obsah Novinky v tomto vydání 10 Význam základních principů 11 Výuka principů nezávisle na databázových produktech 12 Klíčové pojmy, kontrolní otázky, cvičení, případové studie a projekty 12 Software,
Rozšiřování a upravování stávající funkcionality PLToolbox, Orafce
Účel modulů v jazyku C: Rozšiřování a upravování stávající funkcionality PLToolbox, Orafce Vlastní datové typy PostGIS Hstore Citext Zpřístupnění funkcionality z knihoven PL/R PL/Perl, PL/Python xml2 -
Semestrální práce z DAS2 a WWW
Univerzita Pardubice Fakulta elektrotechniky a informatiky Semestrální práce z DAS2 a WWW Databázová část Matěj Trakal 8.12.2009 Kapitola 1: Obsah KAPITOLA 1: OBSAH 2 KAPITOLA 2: ZÁKLADNÍ CHARAKTERISTIKA
Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů
- 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa
Databáze pro evidenci výrobků
Databáze pro evidenci výrobků Databáze ve formátu Microsoft Access je součástí systému, který řídí automatizovanou výrobní linku. Tabulka tblcharge obsahuje data o výrobcích a je plněna automaticky řídicím
Databázové systémy úvod
Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16 https://edux.fit.cvut.cz/courses/bi-dbs/
Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL
4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená
Struktura pamětí a procesů v DB Oracle. Radek Strnad
Struktura pamětí a procesů v DB Oracle Radek Strnad radek.strnad@gmail.com 1 Základní rozdělení paměti Software codes area Chráněná část spustitelného kódu samotné DB. System global area (SGA) Sdílená
Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů
Tvorba informačních systémů 1/18 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/18 Úvod
MBI - technologická realizace modelu
MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,
2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE
2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy
EPLAN Electric P8 2.7 s databázemi na SQL serveru
EPLAN Electric P8 2.7 s databázemi na SQL serveru EPLAN Electric P8 2.7 k dispozici pouze ve verzi 64bit. EPLAN Electric P8 využívá k ukládání některých dat databáze. Artikly, překladový slovník 1 ) a
Vstupní požadavky, doporučení a metodické pokyny
Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem
GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím
GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz
XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky
XMW4 / IW4 Pokročilé SELECT dotazy Štefan Pataky TOP, OFFSET-FETCH Konverze datových typů Logické funkce Práce s řetězci Poddotazy a množinové dotazy SQL Windowing Agenda TOP TOP omezení počtu vrácených
Optimalizace SQL dotazů
Optimalizace SQL dotazů Michal Kopecký Výběr ze slajdů k 2. přednášce předmětu Databázové Aplikace (DBI26) na MFF UK Indexy Plány provedení dotazu Ovlivnění optimalizátoru Optimalizace SQL dotazů Indexy