světNotes.cz

UNK table - po druhé.
Novinky
19.11.2002 - Miroslav Uhlár

Zjednodušene sa na UNK tabuľku dá pozerať ako na zoznam všetkých polí, ktoré v databáze vznikli. Dokonca sa v nej zaznamenajú aj polia, ktoré vznikli dočasne pri kopírovaní polí. Ak teda vývojár skopíruje vo formulári pole Name do poľa Name_1 a následne ho premenuje na LastName, v tabuľke sa zaznamenajú všetky tri polia. Teraz je už jasnejšie, prečo v prípade rozsiahlejších aplikácií môže veľkosť tabuľky dramaticky vzrásť....
Vývojárovi sa UNK tabuľka zobrazuje v Domino Designer pod tlačítkom Fields, napríklad pri tvorbe @Formula sekvencií, návrhu pohľadov. UNK tabuľku však vidí aj používateľ, ak si napríklad tvorí vlastné pohľady alebo vytvára full-text podmienky. Ak teda zistíte, že UNK tabuľka je nadštandardne veľká, odporúčam nasledovné kroky:

/1/ Skrátiť názvy polí
Ak je to možné, skrátiť názvy polí vo formulároch a následne vo vytvorených dokumentoch (vhodným agentom).

/2/ Vymazať nepoužívané polia
Ak je to možné, vymazať nepoužívané polia z formulárov, pričom odporúčam použiť mazanie tlačítkom BackSpace, nie Delete, čo súvisí s nedokumentovaným trikom na UNK tabuľku. Samozrejme, nepoužívané polia je potrebné vymazať aj z dokumentov (agentom, využívajúcim @DeleteField).

/3/ Zjednotiť názvoslovie polí
Ak je to možné, použiť v jednotlivých formulároch rovnaké názvy polí. V prípade, že je definícia polí totožná, je vhodné použiť Shared Fields.

/4/ Kompaktovať databázu bez Full-text indexu
Pri kompaktovaní databázy dochádza k odstráneniu nepoužívaných polí z UNK tabuľky databázy. Ak má však databáza vytvorený FT index, tak k odstráneniu nepoužívaných polí nedôjde. Z tohto dôvodu je potrebné najskôr FT index vymazať a až následne skompaktovať databázu.

Po tomto procese je možné skontrolovať veľkosť UNK tabuľky (spôsobom popísaným v predchádzajúcom článku), alebo priamo jej zobrazením - napríklad pri tvorbe full-text podmienky. Ak k zmene veľkosti UNK tabuľky nedošlo, odporúčam:

/5/ Pridať a odstrániť nepotrebné pole
Na ľubovoľný formulár pridať pole s názvom "nepotrebného" poľa, kurzorom sa nastaviť za pole a použitím BackSpace pole vymazať. Dôležité je, že pri tomto postupe sa zobrazí potvrdzujúce dialógové okno "Do you want really delete field XXX?", čo je signál pre UNK tabuľku na "refresh".

/6/ Vytvoriť a zmazať FT index
Za istých okolností je nastavený interný príznak FTIndex na hodnotu True aj napriek tomu, že neexistuje FT index. Vytvorením FT indexu a jeho následným vymazaním dôjde k jeho prestaveniu na hodnotu Flase, čo umožní kompaktovaniu aktualizovať UNK tabuľku.

/7/ Skompaktovať databázu
Po tomto postupe by už malo dôjsť k zníženiu veľkosti UNK tabuľky. Len pre zaujímavosť: Limit 64 kB zodpovedá asi 3000-3200 poliam s priemernou dĺžkou 10-12 znakov. Vo väčšine aplikácií je tento problém skôr teoretický, no práve výnimky potvrdzujú pravidlo. O postupe a dôsledkoch zvýšenia UNK limitu už v nasledujúcej časti...