Úvaha nad rozdělením databázové aplikace (FirebirdSQL + .NET)

Podílím se na vývoji aplikace na platformě .NET v kombinaci s databází FirebirdSQL. Ačkoliv občas utrousím nelichotivá slova především na adresu poměrně slabé dokumentace k FbSQL, tak se mi kombinace líbí. Ne vždy bude potřeba běžící plný server a FirebirdSQL skvěle funguje i v embedded verzi, kde je celá funkčnost zajištěna jedinou .dll knihovnou, včetně podpory stored procedur.

Ačkoliv je moje jméno dohledatelné především ve spojení s operačním systémem GNU/Linux a kombinací PHP[My]SQL[ite], tak musím uznat že platforma .NET je opravdu výborná pro vývoj desktopových aplikací .V dobách dřívějších byl nadšen z Javy, leč to není to úplně pravé pro desktop a Windowsové uživatele. FirebirdSQL, nástupce skrytého pokladu firmy Borland – Interbase, je velmi rychlá databáze, jíž mohu vytknout snad jen ne moc dobrou dokumentaci. Vývojáři se snaží, i přes predikování některých lidí, jde vývoj stále vpřed.

Reklama

Aplikace, jíž vyvíjím, je psána právě v kombinaci .NET (vybrali jsme si ukecanější jazyk VisualBasic.NET, ale je zcela jedno v čem se nad .NETem programuje) a FirebirdSQL. FirebirdSQL není jen úložiště strukturovaných dat, jako SQLite, či MySQL (alespoň přístupem běžných webových vývojářů, využívajících velmi rychlé MyISAM tabulky), ale nabízí i velmi mocný nástroj uložených procedur (Stored Procedures).

Právě díky možnostem uložených procedur, a relativně triviálním nárokům na výpočty, váhám nad dalším směrem aplikace.

Databáze jen na data

Snadnější cestou je použít FirebirdSQL jen pro ukládání dat a veškeré výpočty provádět v aplikaci. Ladění ve VisualStudio/SharpDeveloperu je jednoduché, lze krokovat, používat breakpointy, nebo snadno sledovat stav proměnných.

Tato cesta však obnáší neustálé přenosy dat mezi klientskou aplikací a databází. Pro výpočet jediného konečného výsledku jsou potřeba data z několika tabulek (základní věta, přípočty, odpočty, procentní pásma), několik dalších updatovat a to je spočítán jen jeden výsledek z několika tisíc.

Výpočty realizovat v databázi.

Pro tuto variantu hovoří matematická nenáročnost výpočtů (balík součtů, rozdílů a násobení procenty, vše jen mírně okořeněné podmínkami) a rychlost, jak by byla data zpracována. Databáze má data u sebe, odpadá komunikace mezi aplikací a databásí skrze connector, který musí konvertovat datové tipy.

Jediné výrazné mínus, ale opravdu výrazné, vidím v možnostech ladění uložených procedur. Ano existují placené nástroje (IBExpert, Database Workbench, …), ale žádný zatím nemáme koupený a já používám svou oblíbenou kombinaci konzole s DBeaverem.

Takže?

Nevím, když někdo poradí, budu rád. Osobně jsem nakloněn spíše variantě výpočtů ve stored procedures, ale potřeboval bych najít další argumenty, abych prosadil program v .NETu jen jako uživatelské rozhraní k databázi.