Dnes: 19. srpna 2017    | Registrace | Hledáme | Redakce | Info | Testy | Školení | Ocenění | Nápověda | Čtenář: nepřihlášen

Rychlé odkazy
  • Hlavní stránka
  • Seznam rubrik
  • Ankety
  • Editoriály
  • TOP 15
  • KONFERENCE 2008
  • KONFERENCE 2007
  • KONFERENCE 2006
  • KONFERENCE 2005
  • KONFERENCE 2004
  • Sborník
  • Testy
  • Virtuální školení
  • Personalizace


  • Hledáte práci?
    Hledáme redaktora - pojďte s námi tvořit Databázový svět!

    Vyhledávání

    Hledej
    na Databázovém světě!



    Rozšířené vyhledávání

    Rubriky
    Aktuality
    Bezpečnost
    Business
    Česká scéna
    Datové sklady
    Dokumentace
    Dotazovací jazyky
    Hardware
    Historie
    Komentáře
    Literatura
    Metodologie
    Nondb
    Open Source
    Poradna
    Produkty
    Případové studie
    Redakce
    Rozhovory
    Standardy
    Technologie
    Tipy - triky
    Tiskové zprávy
    Vývoj
    Vývojové nástroje
    Zajímavosti

    Co je to?
    Databázový stroj
    (Database Engine)

    Pod pojmem Database Engine (tedy pod databázovým strojem) se obvykle rozumí jádro databázového serveru a základní obslužné programy tohoto jádra (například zajišťující vzdálené připojení uživatelů). Lze tedy říci, že databázový stroj je podmnožinou databázového serveru, přičemž pod pojmem databázový server je nutné vidět vybavení (typicky softwarové) pracující nad danou databází a zajišťující veškeré činnosti (včetně všech potřebných komunikací), které nad danou databází mají být zajišťovány.

    Akce
    Dynamická Datová Centra
    - na semináři se seznámíte s komplexním řešením a koncepcí Dynamických Datových Center od Fujitsu Siemens Computers se speciálním důrazem na řešení FlexFrame.

    Textová inzerce
    IBPhoenix - Vše o InterBase a Firebirdu.

    Smějete se rádi? - Pak je pro vás Vtipník to pravé!

    Prodejce reklamy - Hledáme schopného prodejce reklamního prostoru, možnost i externí spolupráce.

    Přihlášený čtenář
    Nepřihlášený čtenář

    O portálu
    Databázový svět
    ISSN: 1213-5933

    Web je optimalizován pro rozlišení 1024x768, nicméně kromě větších rozlišení podporujeme i 800x600. Podrobnosti najdete zde.

    Chcete-li mít kdykoliv možnost zkontrolovat obsah našeho portálu, můžete využít podporu rss. Podrobnosti najdete zde.
    Novinky ve Firebirdu 2.1


    [Produkty] - V březnu byla vydána Release Candidate 2 verze Firebirdu 2.1. Neboť se jedná pravděpodobně o poslední RC verzi (pokud nebude objevena závažná chyba, bude vydána "ostrá" verze), podívejme se, jaké novinky můžeme ve "dvajedničce" nalézt.



    Databázové triggery
    Velmi zajímavou novinkou jsou tzv. databázové spouště. Podobně jako spouště definované pro různé akce pro tabulky, jsou databázové triggery definovány pro události související s celou databází. Konkrétně je možné vyvolat PSQL kód při zahájení, respektive ukončení spojení, dále při startu transakce, jejím potvrzení (commit), případně zamítnutí (rollback). Jakákoli výjimka vyhozená ve zpracování spouště znamená ukončení zpracování (například zavření spojení). Pro případ, že by byl trigger špatně napsán, je možné se k databázi připojit bez jejich provádění (pouze jako SYSDBA nebo vlastník databáze) z administrátorských nástrojů (gbak, isql, nbackup).

    Globální dočasné tabulky
    Dočasné tabulky jsou často používaným nástrojem pro ukládání dočasných dat, ať už během vkládání či třeba v rámci mezi-zpracování výsledku. GTT mají dočasná pouze data, metadata jsou permanentní. Syntaxe je CREATE GLOBAL TEMPORARY TABLE … [ON COMMIT <DELETE | PRESERVE> ROWS].

    Klauzule ON COMMIT DELETE ROWS, implicitní, zajistí smazání dat při ukončení transakce. Druhá volba zachová data v rámci daného spojení. Zajímavá jistě je, že na GTT je možné aplikovat další elementy (indexy, triggery, constrainty …) jako na běžné tabulky, pouze s několika málo omezeními (například není možné vytvořit cizí klíče mezi "normální" a dočasnou tabulkou). Řádky z těchto tabulek nejsou mazány klasickým postupem, ale všechny stránky okupované danými daty jsou označeny jako volné, což přináší rychlejší zpracování. Na druhou stranu delete trigger není v tomto případě spuštěn.

    Common table expressions
    O CTE jsme již na Databázovém světě psali. Můžete si v něm přečíst o praktickém využití pro stromy kategorií. Hlavní výhoda spočívá v jednoduché možnosti definovat rekurzivní dotazy, jejichž provádění je rychlejší než ekvivalentní řešení pomocí uložených procedur. Aktuální limit zanoření rekurze ve Firebirdu je 1024 (bez možnosti konfigurace). Samozřejmě je možné CTE využít i pro nerekurzivní dotazy – lze tak dotaz zapsat elegantněji než bez CTE. Protože rekurzivní dotaz je možné si prohlédnout v odkazovaném článku, podíváme se na využití nerekurzivního dotazu. Mějme tabulku produkty(#id, id_kategorie, nazev) a chceme pro každý výrobek vypsat, kolik výrobků v dané kategorii je:

    with kat as (select id_kategorie, count(*) as pocet 
      from produkty group by id_kategorie)
    
    select id, produkty.id_kategorie, nazev, pocet 
      from produkty join kat on produkty.id_kategorie = kat.id_kategorie
      order by produkty.id_kategorie desc;
    

    UPDATE OR INSERT
    Často je třeba zajistit, aby vkládaná data – v případě že daný záznam již existuje – nevyvolala chybu, ale byl proveden update. Pomocí uložené procedury to není těžké, avšak vyžaduje to zbytečné psaní. Právě proto přišel Firebird s UPDATE OR INSERT příkazem, který dělá přesně toto. Specifikujete sloupce, které se mají použít pro porovnání a pokud je stejný řádek nalezen, je proveden jeho update, jinak běžný insert. Samozřejmě je nutné, aby uživatel měl právo jak pro insert, tak pro update.

    Vestavěné funkce
    Ačkoli se s Firebirdem odjakživa dodávaly standardní UDF knihovny obsahující mnoho užitečných funkcí, nebylo to to pravé ořechové – někde nebyly funkce "nainstalovány", jejich přidání vyžadovalo další zásahy pro každou databázi ... Od Firebirdu 2.1 můžete mnoho z těchto funkcí využívat bez dalších obtíží – jsou přímo součástí serveru.

    Stejně tak byly některé existující funkce rozšířeny: extract o parametr week, trunc se specifikací přesnosti apod. Seznam funkcí je možné najít zde.

    Domény pro uložené procedury
    Definice uložené procedury téměř vždy zahrnuje definice proměnných, které musí mít samozřejmě určen datový typ. Pokud procedura pracuje s daty v tabulce, je celkem přirozené požadovat, aby proměnné měly stejný datový typ jako sloupce v tabulce. Nyní je možné v definicích používat domény, takže tato myšlenka nabývá reálných obrysů (nicméně možnost specifikovat "typ jako má sloupec A z tabulky X", například v Oracle pomocí %TYPE, se chystá až do další verze). Na výběr máme pouze z aplikace datového typu domény (TYPE OF) či kompletní definici, včetně CHECK a DEFAULT deklarací.

    Monitorovací tabulky
    Často diskutovaná funkce, na kterou se každý těší, ale uvidíme, jak moc se uchytí a jaký další vývoj přijde. Zkráceně řečeno monitorovací tabulky nabízí možnost "podívat se", co se děje v databázi. Nejedná se o tabulky v pravém slova smyslu – data nejsou nikde ukládána, jsou zjištěna při dotazu a poslána klientovi (metadata jsou stabilní). Informace představují snapshot aktuálního stavu dění v databázi. Jsou získávána při prvním dotazu do tabulky a jsou držena do commitu transakce. Z tohoto také plyne fakt, že pokud chceme získat vždy aktuální data, musíme začít novou transakci (a starou ukončit). Jako v případě databázových spouští, je neomezený přístup k těmto tabulkám vyhrazen pouze pro SYSDBA a vlastníka databáze, běžní uživatelé vidí pouze "svoje" data. V současné době jsou přístupné tyto tabulky:

    • MON$DATABASE: Informace o aktuální databázi (velikost stránky, verze ODS, sweep interval apod.).
    • MON$ATTACHMENTS: Informace o připojeních (jméno uživatele, connection string, adresa klieta apod.).
    • MON$TRANSACTIONS: Informace o běžících transakcích (datum a čas startu transakce, izolační úroveň, stav transakce apod.).
    • MON$STATEMENTS: Informace o připravených příkazech (stav příkazu, text, apod.).
    • MON$CALL_STACK: Informace o zásobníku aktivních PSQL příkazů (řádek, sloupec, jméno objektu, typ objektu, apod.).
    • MON$IO_STATS: Informace o I/O operacích (počet zapsaných a přečtených stránek apod.).
    • MON$RECORD_STATS: Statistiky na úrovni záznamů (počet sekvenčně přečtených záznamů, počet čtení přes index, počet updatovaných záznamů apod.).

    Pravděpodobně nejzajímavější využití je možnost násilně ukončit běžící příkaz. Například ten, který spotřebovává příliš prostředků serveru. Ukončení je třeba udělat ze separátního spojení prostým smazáním daného záznamu z tabulky MON$STATEMENTS. Chceme-li ukončit všechny příkazy (kromě těch z aktuálního spojení), stačí použít:

    delete from mon$statements 
      where mon$attachment_id <> current_connection
    

    Informaci o izolační úrovni aktuální transakce nabídne:

    select mon$isolation_mode 
      from mon$transactions 
      where mon$transaction_id = current_transaction
    

    Ačkoli došlo pouze k malé změně v čísle, novinek je opravdu hodně – a to jsme se zabývali jen malým výběrem těch nejzajímavějších.

    ( Celý článek! | Autor: Jiří Činčura | Počet komentářů: 0 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

    Anketa
    Kolik ročně utratíte za dovolené?

    Nic 
     (1396 hl.)
    Do 1 000,- Kč 
     (982 hl.)
    Do 10 000,- Kč 
     (926 hl.)
    Do 25 000,- Kč 
     (1181 hl.)
    Do 50 000,- Kč 
     (940 hl.)
    Do 75 000,- Kč 
     (1079 hl.)
    Více než 75 000,- Kč 
     (924 hl.)

    Celkem hlasovalo: 7428


    Poslední komentáře
    frontierd@126.com
    frontierd@126.com
    frontierd@126.com
    c
    http://www.coachoutl

    Newsletter
    Přihlaste si nezávazně - i bez registrace - odběr informačního newsletteru. Podrobné informace najdete zde.

    Emailová adresa:


    Kalendář
    <<  Srpen  >>
    PoÚtStČtSoNe
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Redakci připojuje


    Nejčtenější

    Databáze je prázdná!


    Nejvíce komentářů

    Databáze je prázdná!


    Reklama






    Nenechte si ujít články na dalších webech




    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.

    Databázový svět | dfKlub - digitální fotografie | Vtipník - vtipy přímo k Vám | Reminder - přestaňte zapomínat | Databázový svět

    Copyright (c) 2004 AVRE Publishing, spol. s r.o. Všechna práva vyhrazena