Prokletí jménem FirebirdSQL a .NET

Již delší dobou se potýkám s databází FirebirdSQL ve spojení s platformou .NET (někteří programátoři se ošklíbnou, ale konkrétně VisualBasic.NET). Ani jedna z jmenovaných komponent není špatná, ale jako celek to občas velmi hodně bolí.

FirebirdSQL je vynikající nástroj, de-fakto nástupce Interbase od Borlandu, a jak jsem četl v učebnici Pavla Císaře, je to nejlépe ukrytý poklad Borlandu. Rychlá a malá databáze s obrovskými možnostmi, která v pohodě běží na MS Woknouz, *BSD i GNU/Linuxu(teda pod Linuxem bylo na jakémkoliv jiném hardware než i386/x86-64 zprovoznění naprosto netriviální operací). Líbí se mi existence klasického serveru (ve dvou architekturách classic server a superserver) a malé vestavné, avšak naprosto plně funkční, vestavné verze.

Doplnění (25. 9. 2007): Zapomeňte, že program se embeded verzí dáte na síťový disk. Embedded FbSQL knihovna se pokusí připojit na plný server, přemýšlí za Vás a pokud tam ten server nainstalovaný není, máte smůlu. Jsem si vědom možnosti poškození dat, ale pro testování bych problém neviděl, připojoval by se jediný člověk, jen mi vadí, že FirebirdSQL přemýšlí za mě.

No FirebirdSQL se mi líbí, je fantasticky rychlý (ve srovnání s mým oblíbeným PostgreSQL) a na rozdíl od jakoby databáze MySQL jde o plnohodnostný nástroj, který umí transakce, stored procedury triggery (vím, že MySQL to umí také, ale jak :-(). Jsem z těch, co PostgreSQL popisují slovy „open source Oracle“, ale pro vlastnosti a schopnosti FirebirdSQL rozumné přirovnání nemám.

Nejsem zastánce Microsoftu, ale jejich koncept .NETu považuji za dost povedený, až na to, že z proklamované multiplatformnosti je multiplatformnost pouze mezi několika verzemi MS Windows, autoři projektu Mono se sice snaží, ale, bohužel, MS jim tu práci docela znesnadňuje. Bytecode, který získáte po překladu programů nad .NETem je mnohem čistší, než ten, který vznikne po překladu pro JVM. Mimochodem, VisualStudio.NET je excelentní nástroj, ale i na něm jsem našel mouchy. Na straně druhé je ještě stále vidět relativní mládí této platformy, což je vidět na zatím relativní chudobě informací na fórech.

Přiznávám, že Java mi přijde mnohem vyzrálejší a profesionálněji pojatá, než-li je tomu u .NET (mládí platformy je mimo jiné vidět i na rychlém vydávání nových verzí, které přidávají další a další vlastnosti). Java ve spojení s databázovým serverem PostgreSQL by byla excelentní kombinace. MŇAM!

Proč to celé píšu? U firmy C.A.C spol. s r. o., pro níž pracuji (přiznávám že velmi rád), dělám na platformě .NET ve spojení s FirebirdSQL. Oba nástroje jsou fajn, ale…

  • Pro FirebirdSQL existuje jedna špičková učebnice, ale tím jaksi informační zdroje končí. Navíc je tato učebnice psána v době FirebirdSQL 1.0 a nepokrývá dnešní možnosti, hlavně v oblasti stored procedur.
  • FirebirdSQL nefunguje v Embedded verzi na sdíleném síťovém disku. Ale opravdu to nefunguje.
  • Přinutit VisualStudio.NET korektně spolupracovat se Subversionem (nástroj pro správu verzí software) není moc pěkný úkol. No zrovna v tomto případě zlaté Delphi, protože ty s klientem TortoiseSVN spolupracují nádherně.
  • Zatím jsem nenašel příjemná rozšíření, jako JediVCL (pro Borlandí produkty), jenž by mi tak citelně vylepšili práci. Podobná rozšíření znám i pro své oblíbené prostředí NetBeans, ale připadá mi, že to pro VisualStudio.NET je v ilegalitě.

Když vezmu pro a proti, ano dělám se zajímavou architekturou a dokážu dotáhnout software do konce, co mě štve je tápání po střípcích informací, které neuvěřitelně zdržuje. Připadám si jako pitomec, jenž pořád dělá miniprojektíky a maže je, protože potřebuje přijít na to, jak co funguje. Jeden příklad za všechny: combobox, ve kterém mám programově předdefinované hodnoty a zároveň má další hodnoty navázány z databáze.