Seriál Lotus Notes: Databáze a aplikace

V předchozích dvou dílech jsme několikrát použili slova aplikace či databáze. Tato část seriálu o Lotus Notes podrobněji osvětlí, co to "notesové databáze" jsou a z čeho se skládají.

Kam se ukládají data?

Lotus Notes mají vlastní způsob ukládání dat. Na rozdíl od některých ostatních systémů (například relačních databází) nepracují s jedním velkým úložištěm, nýbrž pro každou databázi vytváří separátní soubor v souborovém systému serveru. Do tohoto souboru se ukládá vše, co potřebuje databáze ke svému běhu - tj. vlastní data, návrh databáze (vzhled formulářů, dialogů, pohledů…), aplikační logika i zabezpečení (jak celé databáze, tak jednotlivých dokumentů).
Jaké toto uspořádání přináší výhody?

  • Snadná manipulace s databázemi - Přesun z jednoho serveru na druhý je jednoduchý, spočívá hlavně v překopírování souboru databáze.
  • Zálohování - Stejně, jako jsou databáze odděleny na serveru, jsou odděleny i při zálohování. Je-li třeba obnovit některou databázi ze zálohy, stačí ze záložního média vytáhnout pouze jeden konkrétní soubor a nahradit jím ten poškozený. To vše za běhu Domina, k ostatním databázím lze stále přistupovat.
  • Archivace - Přestala být databáze používána? Potom ji jednoduše přesuňte z hlavního serveru na archivační médium; v případě potřeby ji můžete kdykoliv rychle vrátit k používání.
  • Oddělení dat - Uživatelská data jsou v databázi oddělena od designu a aplikační logiky. To znamená, že v případě změny designu (vzhled či logika)y zůstanou uložené údaje nedotčeny. Nový design zvládne pracovat i s daty vytvořenými v předchozích verzích databáze.

Soubory, do kterých Lotus Notes ukládají své databáze, mají příponu .NSF (Notes Storage Facility). Během 20 let vývoje Lotus Notes se systém, jakým se ukládají data do NSF souborů, neustále zdokonaloval. Přinášel vylepšení v bezpečnosti, rychlosti přístupu k dokumentům, spouštění plánovaných akcí, komprimaci uložených dat a podobně. Po celou dobu však Lotus Notes zajišťovaly a zajišťují zpětnou kompatibilitu s databázemi, které byly vytvořeny v předchozích verzích Lotus Notes, a umí s nimi pracovat i v novější verzi.
Poznámka: Pokud byste chtěli přenášet databáze opačným směrem, tedy z vyšší verze do nižší, i to je možné. Stačí databázi jedním příkazem překonvertovat tak, aby odpovídala staršímu způsobu uložení dat.

Způsob, jakým jsou data ukládána, neboli organizována uvnitř NSF soboru, se označuje termínem On Disk Structure (ODS). Databáze se ukládají do datového adresáře Lotus Domina, v našem příkladu to bylo C:\Lotus\Domino\Data. Od tohoto adresáře se také určuje relativní cesta, přes kterou Domino přistupuje k databázi. Tedy na soubor pošty uložený v C:\Lotus\Domino\Data\mail\sadmin.nsf přistupuje Domino jako na mail\sadmin.nsf.

Databáze či aplikace?

Aplikace, databáze, soubor NSF - jaký je v tom rozdíl? Popravdě, často to splývá a lidé pojmy zaměňují jako synonyma. Já používám následující rozlišení: Každá databáze je uložena v jednom NSF souboru. Aplikace se skládá z jedné nebo několika databází. Databáze, přestože se jedná o samostatné entity, se mohou propojovat do větších celků, odkazovat se vzájemně na sebe. Skupina databází, které k sobě logicky patří, tvoří notesovou aplikaci.

V těch jednodušších případech platí: jedna aplikace = jedna databáze. Příklady složitějších aplikací, např. zákaznické agendy: v jedné databázi máte seznam zákazníků, na který se můžete odkazovat z jiných databází typu plánování aktivit, přijaté objednávky či helpdesk. Nebo příklad firemní infrastruktury: v jedné databázi je kompletní seznam zaměstnanců včetně jejich funkcí, příslušnosti k oddělení a zastupitelnosti a k ní se potom připojují databáze, které vyžadují aktuální firemní hierarchii (úkolovník, spisová služba, plánování prací atd.).
Poznámka: Od verze Lotus Notes 8 bylo v uživatelském rozhraní nahrazeno slovo "databáze" slovem "aplikace" - pro koncové uživatele je toto slovo více vypovídající.

Formuláře

Lotus Notes jsou dokumentový systém. Hlavním účelem databází je uchovávat a zprostředkovávat přístup k dokumentům. Na rozdíl od relačních databází zde není žádné striktní omezení - dokument v notesové databázi je více flexibilnější než řádek v tabulce relační databáze. Není zde žádná povinnost určovat předem maximální délky textových polí, dokumenty mohou naprosto plynule měnit počet svých polí, přidávat je či mazat. Vše je řízeno tzv. formuláři (anglicky Folders). Můžete si je představit jako klasické papírové formuláře, do jejichž políček uživatel zadává údaje.

Formulář slouží nejen k zápisu, ale i ke zobrazení dat, které se pomocí něj zadaly. Navíc formulář se může chovat jinak v editačním režimu a jinak v zobrazovacím režimu. Při editaci (tj. zadávání či upravování údajů) můžete zadat hodnoty do více polí, než se nakonec zobrazí. Nebo naopak, při zobrazení dokumentu se ukáže více polí, než jste do něj zadali - mohou to být například automaticky generovaná pole jako jméno autora, datum nebo čas poslední úpravy.

Databaze v Lotus Notes
 

Vyzkoušejte si to na své poštovní databázi. Otevřete libovolný přijatý mail - dokument se zobrazí v zobrazovacím režimu. Stisknete-li nyní CTRL + E nebo kdekoliv v dokumentu uděláte dvojklik, přepnete jej do editačního režimu (toto platí pro všechny databáze a všechny dokumenty). Někdy dokument do editačního režimu přepnout nelze - v takovém případě nemáte právo dokument editovat, ale pouze si jej zobrazit.

Databaze v Lotus Notes
 

Formuláře bývají nezřídka opatřeny řadou akcí, které lze s nimi provádět. Graficky jsou akce reprezentovány tlačítky v horní části formuláře nebo v horním menu Actions.

Databaze v Lotus Notes
 

Příklady akcí: Ulož dokument, Edituj dokument, Přepošli ke schválení, Schval dokument, Vytvoř novou verzi dokumentu, Archivuj dokument, Odešli dokument mailem, Najdi k danému dokumentu všechny související dokumenty (např. k dokumentu o objednávce najdi dokument objednávající firmy i všechny další objednávky dané firmy).

Databaze v Lotus Notes
 

Pohledy a složky

Dokumenty uložené v databázi je třeba uživatelům prezentovat v konkrétní formě, zobrazit je. V Lotus Notes tuto funkci plní pohledy a složky (anglicky Views a Folders). Při otevření databáze jsou pohledy a složky zpravidla zobrazeny v levé části okna. Po kliknutí na jméno pohledu nebo složky se jeho obsah objeví v pravé, větší části. Obsahem jsou dokumenty vybrané a setříděné podle daných pravidel (například Přijatá pošta, Faktury k vyřízení, Moje úkoly). Přestože navenek mohou pohledy a složky splývat, uvnitř pracují odlišně.

Pohled umožňuje vybrat dokumenty z databáze na základě zadaného filtru (zobrazovací formule - "view formula") a zobrazit je seřazené vzestupně nebo sestupně podle určitých sloupců. Jeden dokument může být zobrazen v několika pohledech, pokud splňuje jejich zobrazovací podmínku. Avšak to, že dokument vidíte ve více pohledech, neznamená, že existuje v databázi ve více kopiích. Pokud se rozhodnete smazat dokument v jednom pohledu, logicky se "smaže" (tj. přestane být vidět) i v ostatních pohledech. Je smazán z databáze. To, co pohled zobrazuje, je tedy dáno tím, co nastavil vývojář v kódu.

Složka naproti tomu zobrazuje nejčastěji to, co do ní založí sám uživatel. Dokument se do složky dostane tak, že jej tam uživatel doslovně vloží: například tažením dokumentu myší (drag and drop) nad jméno složky nebo stisknutím tlačítka, které tuto akci vyvolá.

Databaze v Lotus Notes
 

Nejpoužívanější příklad je samozřejmě poštovní databáze a třídění příchozích mailů do složek, které si uživatel sám vytvoří. Každý nový mail je doručen do složky Inbox (Doručená pošta). Odsud může být přesunut do jiné složky (například "Vyřízeno") přetažením myší nebo vyvoláním akce z menu Actions - Folder - Move to folder...

Pokud při tažení dokumentu myší z jedné složky do druhé budete držet CTRL, nedojde k přesunu dokumentu, ale ke kopírování. Je-li dokument ve více složkách, opět to neznamená, že by byl fyzicky přítomen v databázi vícekrát. Složka si pouze drží interní odkazy na dokumenty, které jsou "uvnitř" ní. Pokud dokument ve složce mažete, můžete si vybrat, zda chcete dokument úplně smazat ze databáze (Delete) nebo zda jej chcete pouze odstranit z aktuální složky a v ostatních jej nechat (Remove).

Databaze v Lotus Notes
 

Řazení

Pohledy a složky zobrazují každý dokument jako řádek, reprezentovaný několika jeho poli uspořádanými do sloupců. Nemusejí být zobrazena všechna pole a jejich pořadí zleva doprava určuje vývojář aplikace.

Pro některé sloupce bývá zpravidla nastaveno řazení (vzestupné či sestupné), podle nějž se potom seřadí a zobrazí všechny dokumenty v pohledu. Řadit lze i podle více sloupců, v případě shody hodnot v prvním sloupci rozhodují ty další.

Toto řazení nemusí být jediné, které pohled umožní zobrazit. Vývojář může dát uživateli možnost seřadit řádky s dokumenty podle libovolných sloupců, a to vzestupně i sestupně. Sloupce, které to umožňují, poznáte snadno - mají v záhlaví vedle popisu sloupce také dvě malé šipky ukazující nahoru či dolů. Klikáním na toto záhlaví přepínáte mezi různými módy: bez řazení, řazení vzestupně, řazení sestupně. Poté se ihned překreslí obsah pohledu podle aktuálního řazení.

Databaze v Lotus Notes
 

Indexy pohledu

Jedna databáze rovná se jednomu souboru NSF. Velikost tohoto souboru je přímo úměrná objemu dat, která do databáze vložíte. Ovšem dokumenty samotné nejsou to jediné, co zvětšuje velikost databáze. Každý pohled, aby mohl v případě potřeby rychle zobrazit správná data i je správně seřadit, má svůj tzv. index, do kterého si ukládájí ve formě binárního stromu odkazy na dokumenty, které by zobrazil.

Čím je pohled složitější, tj. čím má více sloupců, podle kterých se dá řadit, tím více nabývá index pohledu na objemu. Při malém počtu dokumentů (tisíce) to není ani tak znát, ovšem při počtech dokumentů o několik řádů vyšších už mohou velikosti indexů pohledu dosahovat i několika stovek MB. Z databáze, která má například 2 GB, tak mohou 10 procent zabírat indexy pohledů.

Velikost databáze

Jak poznáte, kolik z celkového objemu databáze zabírají samotné dokumenty a kolik padne na "režii"? Jste-li administrátoři, můžete si na konzoli serveru vyvolat příkaz show database jmeno_databaze, tedy například show database mail/sadmin.nsf. Stejné údaje (i když nebudou čerstvé, aktualizují se vždy v 5 hodin ráno) najdou všichni uživatelé i v logovací databázi log.nsf, pohled Usage - By Database.

Databaze v Lotus Notes
 

V obou případech uvidíte:

  • Počet aktivních dokumentů
  • Počet smazaných dokumentů
  • Velikosti jednotlivých pohledů
Databaze v Lotus Notes
 

S tím, jak se s databází pracuje, dokumenty přibývají a ubývají. Lotus Notes postupně zaplňují uvolněné místo uvnitř souboru NSF novými dokumenty. Je-li volného místa uvnitř databázového souboru příliš, nemusíte čekat na jeho postupné zaplnění, ale můžete provést tzv. kompaktování databáze ručně (anglicky "compact", česky "optimalizace"). Je to vlastně obdoba defragmentace z operačního systému Windows.

Otevřete databázi a z menu vyberte File - Application - Properties. Otevře se malé okno, ve kterém se přepínáte pomocí záložek nahoře. Na první záložce si přečtete jméno databáze a cestu k souboru (zde se mění jméno databáze, pokud ji chcete přejmenovat).

Databaze v Lotus Notes
 

Na druhé záložce (s popiskem "i") vidíte velikost souboru databáze, kterou zabírá na disku, i počet dokumentů v databázi. Tlačítko % used spočítá, kolik z uvedeného objemu je využito, zbytek do 100 % je tedy volné místo. Je-li využití malé, řekněme pod 70 % (toto se může lišit databázi od databáze, navíc každý administrátor má jiné zvyklosti a zkušenosti), můžete tlačítkem Compact zahájit kompaktaci databáze. Počítejte však s tím, že v závislosti na nastavení může být databáze po tuto dobu nepřístupná uživatelům nebo přístupná pouze pro čtení.

Databaze v Lotus Notes
 

Závěr

Aplikace Lotus Notes se skládá z jedné nebo několika databází navzájem na sebe odkazujících. Každá databáze je reprezentována souborem NSF v datovém adresáři Domino serveru.

Dokumenty v databázi se vytvářejí i zobrazují pomocí formulářů. O výpisy dokumentů se starají pohledy (definované vývojářem) a složky (zpravidla vytvářené a plněné samotnými uživateli). Čím je více dokumentů v databázi, tím roste i režie - indexy pohledů. Jejich aktuální velikost lze zjistit a dle potřeby například snížit počet nebo složitost pohledů. Při mazání dokumentů v databázi se vytváří volné místo, které lze buď zaplnit novými dokumenty nebo se databáze zkompaktuje a tím zmenší svůj objem na disku.

Předchozí: Jednotné přihlášení do Portalu a Domina
Následující: DominoDefrag