Firebird SQL 1.5 za dveřmi

16. 9. 2003
Doba čtení: 5 minut

Sdílet

V roce 2000 firma Borland dala komunitě zdarma k dispozici zdrojové kódy populárního serveru InterBase 6.0 beta pod licencí IPL. Krátce nato byl založen projekt Firebird, který pokračuje ve vývoji databáze. Firebird dospěl a před prahem nám stojí finální verze 1.5, na kterou se nyní podíváme.

Firma Borland dál pokračovala ve vývoji své databáze Interbase a představovala novinky verzí 6.5 a 7.0, ale komunita kolem projektu Firebird se teprve jakoby rozkoukávala z šoku, který jim firma vydáním zdrojových kódů pod IPL (obdoba Mozilla licence) připravila. Dlouhou dobu se téměř nic nedělo, vývojáři studovali zdrojové kódy, pak byla vydána verze 1.0. Nyní však světlo světa spatřila verze 1.5.

Jedná se o první milník na cestě k verzi 2.0. Byla provedena kompletní refaktorizace zdrojových kódů (přechod z C na C++), protože server Interbase byl stavěn spíše pro systémy Windows (kde je dodnes nesmírně populární). Vývojáři přidali několik vlastností, vytvořili zbrusu nové sestavovací skripty na bázi autoconf a samozřejmě se roztočil nekonečný kolotoč odstraňování chyb, přičemž byla zachována 100% kompatibilita s Interbase 6.0. Z vlastností, které oproti systému Interbase 6.0 přibyly, jsou pro uživatele nejzajímavější ty­to:

  • vylepšení optimalizátoru dotazů
  • podpora databázových aliasů
  • názvy programů byly konečně přejmenovány
  • přípony souborů přejmenovány z gdb na fdb
  • řazení NULL záznamů nyní podle specifikace SQL92
  • SELECT FOR UPDATE WITH LOCK
  • EXECUTE STATEMENT
  • nové aliasy BOLEAN a BIGINT
  • savepointy u transakcí
  • drobná vylepšení u jazyka uložených procedur
  • a mnoho dalších (Firebird_v15_Re­leaseNotes.pdf)

Firebird se dá stáhnout ze stránek projektu, kde naleznete také ODBC/JDBC/OLEDB (.NET) ovladače. Dokumentace prozatím neexistuje, ovšem naštěstí firma Borland dává k dispozici zdarma kompletní dokumentační set pro Interbase 6.0, který je použitelný i pro Firebird, jen některé názvy se liší (místo ibsever zkrátka platí fbserver a podobně). Odkaz naleznete na stránkách projektu.

Firebird je víceuživatelská relační databáze pro systémy UNIX a Windows kompatibilní se standardem SQL92 s podporou transakcí, uložených procedur a triggerů. Firebird nejenže plně vyhovuje ANSI specifikaci, ale přidává řadu vylepšení navíc tak, jak je tomu u konkurenčních systémů (Oracle, Sybase). Firebird pochopitelně využívá technologii server/klient.

Instalace Firebirdu patří k těm jednodušším. Možná je to velikostí distribuce, která čítá jen asi 2 MB. Stačí rozbalit binární instalační balíček, editovat konfigurační soubor (především pokud chcete používat server přes síť) a spustit démona fbmgr. Pro vytvoření nové databáze je nutno znát superuživatelské konto. To se od systému Interbase neliší a název má „SYSDBA“ s heslem standardně nastaveným na „masterkey“. K interakci se serverem se používá konzole isql, ovšem existuje mnoho okenních programů, které nabízejí vyšší komfort. Ovládání konzole je naprosto intuitivní (CONNECT, CREATE DATABASE, SHOW TABLES, HELP a podobně). Také je zde možnost instalovat ze zdrojových kódů, ale popisovat na rootu autoconf kompilaci a instalaci, to je házením hrachu o zeď.

Databáze jsou ukládány do jediného souboru s příponou fdb, což je velice praktické. V tomto souboru je uloženo všechno včetně vlastních dat, definicí tabulek, indexů a transakčních záznamů. Při vytvoření je nutno nastavit velikost (počet stránek), kterou má server alokovat. Pokud by byly diskové nároky vyšší, server umí velikost souboru automaticky navýšit. Databázi je také možno distribuovat do více takových souborů (např. na více disků), nečekejte však, že by toho server zatím nějak využil. V dokumentaci stojí, že server bude používat první soubor, dokud se celý nezaplní, a poté přejde na druhý. Při vytváření databáze nezapomeňte specifikovat správnou znakovou sadu a při vytváření tabulek pak řazení znaků (collation order). Pro češtinu a systém Linux je vhodná tato kombinace:
Znaková sada:ISO8859_2
Řazení znaků: CS_CZ

Připojit se k serveru je možno buď lokálně (zřejmě přes unix socket), nebo přes síť pomocí TCP/IP (server podporuje i exotické protokoly NetBEUI či IPX, ale vývojáři je hodlají odstranit). Nedivte se, když budete muset pro připojení uvést úplnou cestu k fdb souboru, a pokud se vám to nelíbí, můžete zavést alias (alias.conf). Po připojení k databázi brzy zjistíte, že datové typy nijak nevybočují ze standardu (BLOB, CHAR, VARCHAR, DATE, DECIMAL, FLOAT, INTEGER, NUMERIC, SMALLINT, TIME, TIMESTAMP plus několik dalších, které přidali vývojáři Firebirdu). Ve srovnání s Postgresem je jich subjektivně málo, jenže Firebird podporuje domény, pomocí nichž si můžete tvořit vlastní datové typy (včetně polí) s kontrolou hodnot (tzv. check constraint). Velmi vhodné je například si vytvořit CS_CHAR a CS_VARCHAR s řazením znaků CS_CZ, abyste toto řazení nemuseli vypisovat v každém sloupci tabulek, což byste jinak museli, protože i kdyby byly výsledky sežazeny správně, české písmeno „ch“ by zcela jistě na svém místě nebylo. Uff.

Pokud jste někdy vytvářeli index v relační databázi, máte to v kapse. Tím chci říct, že práce s indexy je stejná jako u jiných databází. Firebird si poradí i s indexy přes více sloupců. Pohledy (VIEW) jsou plně aktualizovatelné, pokud tedy neobsahují vnořený dotaz nebo neslučují více tabulek. Firebird také obsahuje generátor (GENERATOR), který tvoří po sobě jdoucí posloupnost celých čísel. Na generování složitějších posloupností tu je těžší kalibr, kterému se budeme věnovat v následujícím paragrafu.

Uložené procedury (STORED PROCEDURE) a triggery (TRIGGER – kód, který se spouští při určité akci, např. při vložení nového záznamu) jsou pro Firebird hračkou. K tomuto účelu disponuje vlastním jazykem nazvaným DSQL/PSQL, jehož syntaxe se velmi blíží PL/SQL (Oracle), je však o něco jednodušší. Pomocí uložených procedur (UP) můžete značnou část logiky přenést na server. UP se mohou jednak volat jako běžné funkce programovacího jazyka (např. pro vkládání záznamů do databáze) a jednak používat jako pohledy (např. pro generování tak složitých dotazů, které nelze zapsat do jednoho SQL příkazu). Důvod je zřejmý – uložená procedura, která intenzivně pracuje s daty, je rychlejší, protože přes síť proudí pouze výsledek. Triggery zase pomohou udržovat databázi konzistentní, protože mohou kontrolovat stav dat před určitou akcí nebo po ní (aktualizace záznamu a podobně), což se může hodit v kritických aplikacích. Nutno poznamenat, že použitím UP a triggerů se vaše aplikace prakticky stává nepřenositelnou a je nutno vynaložit vyšší úsilí při přechodu na jiný databázový server.

Interbase 6.0 podporuje uživatelsky definované funkce (UDF), čehož se Firebird nevzdal. Vývojář aplikace má možnost vytvořit so knihovnu a pomocí SQL příkazu navázat určitou funkci jazyka C/C++ na databázovou funkci. Nedovedu si představit, v jakých situacích se tato vlastnost může využít (námět na diskusi pod článkem), ale ta možnost tady je.

To byl souhrn nejdůležitějších vlastností serveru Firebird 1.5, a pokud jsem na něco důležitého zapomněl, doplňte to prosím v diskusi pod článkem. Vůbec jsem se nezmínil o propracovaném zálohování za běhu či o detailních statistikách provozu serveru. Tyto informace si ale zájemci již mohou přečíst v dokumentaci, která čítá přes 1500 stran.

bitcoin školení listopad 24

Firebird 1.5 je bezpečnou, snadno konfigurovatelnou a škálovatelnou relační databází pro systém Linux. Je šířena pod licencí IPL, tedy zdarma a na všech platformách bez omezení (což neplatí např. u MySQL). Myslím, že bude na místě sledovat další vývoj.

Firebird verze 1.5 je na spadnutí a vyjde během několika dnů.

Odkazy

Autor článku