Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Na prácu s aplikačnými databázami slúži proces D2000 DBManager. Tento proces pristupuje do SQL databáz a vykonáva všetky potrebné akcie. Požiadavky na DbManager DBManager prichádzajú z procesov D2000 Event Handler (skripty vykonávané na serveri) a z procesov D2000 HI (priamy prístup užívateľov do databáz cez zobrazovač Browser + aktívne schémy so skriptami).

Proces D2000 DbManager DBManager dokáže pristupovať k databázam dvoma rôznymi spôsobmi:

  • Cez ODBC rozhranie k ľubovolnej databáze, pre ktorú je nainštalovaný v systéme ODBC ovládač a vytvorené ODBC DSN (Data Source Name). Bežne pracujeme s databázami PostgreSQL, MySql, MariaDB, Sybase SQL Anywhere, Microsoft SQL Server, Informix, Firebird a inými.
  • Cez OCI rozhranie (Oracle Client Interface) k Oracle databáze. V minulosti bola Oracle databáza široko používaná vo veľkých D2000 aplikáciách a preto bola vytvorená špecializovaná verzia DbManager DBManager procesu využívajúca pokročilé vlastnosti OCI. 

...

V rámci DODM modelu je proces DbManager DBManager rodičom objektov typu Databáza a tie sú rodičmi objektov typu Tabuľka.

...

Objekt Databáza reprezentuje SQL databázu spolu s prístupovými právami do nej, keďže obsahuje aj konfiguráciu užívateľského mena a hesla. Preto je potrebné vytvoriť niekoľko objektov typu Databáza, pokiaľ potrebujeme pristupovať do SQL databázy s rôznymi prístupovými právami (napr. na prístup k rôznym schémam).
Proces D2000 DbManager DBManager má optimalizáciu na paralelnú prácu viacerých užívateľov objektom typu Databáza. Preto je schopný vytvoriť viacero spojení s jednou SQL databázou. Každé takéto spojenie je obsluhované vlastným taskom a môže pracovať v transakčnom režime (rezervované pre konkrétny ESL skript, ktorý transakciu vytvoril) alebo v netransakčnom režime (zdieľané viacerými skriptami alebo procesmi D2000 HI, pričom po každej operácii sa automaticky vykonáva COMMIT, preto takéto spojenie voláme aj automatické). V konfiguračnom dialógu objektu Databáza sa dá nastaviť počet predpripravených spojení (vznikajú po štarte procesu DbManagerDBManager), obmedziť maximálny počet spojení, maximálny počet netransakčných (automatických) spojení a dokonca rezervovať automatické spojenia pre zobrazovač Browser.

...

Dá sa tiež špecifikovať, po akom čase sa majú zatvárať už nepoužívané spojenia (vytvorené nad rámec predpripravených spojení). DbManager DBManager umožňuje vytvorené spojenia recyklovať – keďže vytvorenie spojenia môže predstavovať pre niektoré SQL databázy pomerne náročnú operáciu s vysokou réžiou (napr. pre Oracle).

Pokiaľ sa nachádza na sieti medzi procesom DbManager DBManager a SQL databázou firewall, môže byť užitočné špecifikovať prázdne operácie po nejakej dobe nečinnosti – niekedy sa stáva, že firewall dlhšie nepoužívané TCP spojenie „zruší“ a keď ho chce DbManager DBManager znovu použiť, dôjde k chybe. Prázdne operácie umožňujú priebežne kontrolovať stav spojenia s SQL databázou a v prípade rozpadu ho znovu vytvoriť.

Dôležitá je aj možnosť nastavenia interpretácie časových údajov v databáze – časy môžu byť v lokálnom čase (podľa pásmového času servera, na ktorom je spustený DbManagerDBManager), prípadne v monotónnom čase so špecifikovaným offsetom od UTC.

Hodnota objektu typu Databáza je rovná aktuálnemu počtu spojení, ktoré má proces DbManager DBManager pre tento objekt vytvorené.

...

Užitočnou vlastnosťou je zadefinovanie časovej hĺbky. DbManager DBManager dokáže automaticky mazať dáta v tabuľke, ktorých definovaný stĺpec (typu Absolútny čas) je starší ako časová hĺbka. Alternatívne je možné definovať rôzne časové hĺbky pre rôzne obdobia pomocou objektu typu Účel údajov.

...

Operácie s databázou

Akcie, ktoré vykonáva DbManagerDBManager, môžeme rozdeliť na niekoľko skupín.

...

  • Akcie na „variabilnú“ prácu s databázou: ak nie je dopredu známe, z akej tabuľky a ktoré stĺpce treba čítať, je možné použiť príkaz SQL_SELECT, ktoré umožňujú špecifikovať celý SQL príkaz. Tento môže byť aj parametrizovaný (SQL_PREPARE a ďalšie s ním spojené). Výhodou parametrizovaných príkazov je možnosť ich recyklácie v DbManageri DBManageri (spustenie viackrát s inými parametrami) aj v SQL databáze (SQL príkaz sa parsuje a vytvára sa preň exekučný plán iba raz). Patria sem aj akcie na vykonanie ľubovolného SQL príkazu a spustenie uloženej procedúry (stored procedure):
    • SQL_CONNECT - „pripojenie sa“ k databáze
    • SQL_DISCONNECT - „odpojenie sa“ od databázy
    • SQL_EXEC_DIRECT – spustenie ľubovolného SQL príkazu (bez vrátenia dát)
    • SQL_EXEC_PROC – vykonanie uloženej procedúry so zoznamom parametrov
    • SQL_SELECT – spustenie ľubovolného SQL SELECT príkazu (bez parametrizácie)
    • SQL_PREPARE – pripravenie ľubovolného SQL SELECT príkazu (s parametrizáciou)
    • SQL_BINDIN – nastavenie hodnôt parametrov pre SQL_PREPARE
    • SQL_FETCH – načítanie 1 alebo viac riadkov vrátených po SQL_PREPARE
    • SQL_FREE – uvoľnenie zdrojov a ukončenie SQL_PREPARE

...

  • Špeciálne akcie: iné špecializované akcie:
    • DB_REFRESH_TABLE – vynútenie obnovy dát zobrazených v Browseri. Štandardne po zmene dát cez konkrétny objekt typu Tabuľka nasleduje obnovenie dát pre Browsery, v ktorých je táto Tabuľka zobrazená (pokiaľ nemajú konfiguračne obnovu dát vypnutú). Môže ale nastať situácia, že sa dáta zmenia iným spôsobom (napr. cez inú Tabuľku alebo akciou SQL_EXEC_DIRECT) a je potrebné obnovu vynútiť zo skriptu.
    • DB_SET_PROCESS_PARAMS – nastavenie alebo zrušenie „kontextu“. Kontext znamená nastaviť pomenované parametre (dvojice meno-hodnota), ktoré sa ukladajú v dočasnej globálnej tabuľke (global temporary table) D2000_PROCESS_PARAMS. Kontext je štandardne spoločný pre jeden D2000 HI alebo D2000 Event Handler proces, prípadne sa dá obmedziť štartovacím parametrom --batch_mode na eventy spustené akciou OPENEVENT s rovnakým číslom inštancie. Kontext je viditeľný nielen v rámci D2000, ale môžu ho využívať aj pohľad a uložené procedúry v SQL databáze. Príkladom môže byť použitie dvoch pomenovaných parametrov na nastavenie obdobia (PERIOD_FROM, PERIOD_TO), pre ktoré sa budú napr. zobrazovať faktúry pomocou databázových pohľadov.
    • ON DB_CHANGE – zaregistrovanie handleru pre zmenu dát. Handler bude volaný, keď nastane zmena obsahu databázovej tabuľky, prípadne bola volaná akcia DB_REFRESH_TABLE, prepla sa aktívna inštancia procesu DbManager DBManager (alebo sa prepol redundantný D2000 Server), prípadne bola tabuľka vymazaná z konfigurácie.

...

Info
titleLadenie a debugovanie

Dokumentácia obsahuje kapitolu DBManager - Ladenie a debugovanie ako aj popis práce s DbManager DBManager Diagnostic Pack.