pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 1
InterSystems Corporation World Headquarters One Memorial Drive Cambridge, MA 02142-1356 Tel: +1.617.621.0600 Fax: +1.617.494.1631 InterSystems.com
InterSystems B. V. Vlnitá 31 147 00 Praha 4 Česká republika Tel.: +420 244 466 773 Fax: +420 244 468 270 InterSystems.cz
InterSystems Caché je ochranná známka společnosti InterSystems Corporation. Ostatní názvy produktů jsou ochranné známky příslušných dodavatelů. Copyright © 2007 Intersystems Corporation. Všechna práva vyhrazena. 07-07
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 2
Průvodce technologií InterSystems Caché
®
Inovace od InterSystems
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 3
Obsah Úvod
MODELOVÁNÍ DAT – RELAČNÍ, NEBO OBJEKTOVÝ PŘÍSTUP Relační technologie Objektová technologie a objektové databáze Objektový, nebo relační přístup Objektový datový model a objektové programování v systému Caché – přehled Nejdůležitější objektové pojmy Proč zvolit objekty pro datový model? Objektové uložení dat ... plus relační přístup
SERVER VÍCEROZMĚRNÝCH DAT CACHÉ Integrovaný přístup k databázi Vícerozměrný datový model Přístup pomocí SQL Objekty Caché Vyhledávání podle slov (Word-Aware searching) Transakční indexování bitovými mapami Protokol Enterprise Cache Protocol pro distribuované systémy Odolnost proti chybám Bezpečnostní model
APLIKAČNÍ SERVER CACHÉ Virtuální stroj Caché a skriptovací jazyky Jazyk Caché ObjectScript Jazyk Basic Jazyk MVBasic Jazyk C++ Java Caché a Jalapeño Caché a .NET Caché a XML Caché a webové služby Caché a MultiValue
RYCHLÉ VYTVÁŘENÍ RYCHLÝCH WEBOVÝCH APLIKACÍ POMOCÍ TECHNOLOGIE CACHÉ SERVER PAGES Model CSP (Caché Server Page) Architektura tříd webových stránek Příklady strategií vývoje Soubory CSP Události Hyper-Events ZEN a webové stránky s využitím komponent
1
4 5 6 6 6 8 9 9
10 10 11 14 16 18 20 22 24 27
30 30 32 38 40 40 40 42 44 45 46 47
50 52 54 54 55 56 58
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 4
Úvod
ZA HRANICE RELAČNÍCH DATABÁZÍ Před třiceti lety byly relační databáze přivítány jako převratná a skvělá novinka. Namísto nepřístupných prehistorických databází, z nichž každá měla své jedinečné schéma dat, budou data uložena v tabulkovém formátu a přístupná každému, kdo ovládá jazyk SQL. Relační databáze byly velmi úspěšné a jazyk SQL se stal obecným standardem pro přístup do databáze. Ale jako všechny starší technologie mají i relační databáze své meze, které snižují jejich dnešní využitelnost – zejména tam, kde jde o výkon, rozšiřitelnost, snadnost používání a přizpůsobení současným vývojářským technikám a postupům. Využití počítačových aplikací a jejich složitost prudce roste, přičemž současné systémy mají stále větší provozní nároky, přesahující možnosti relační technologie. Mnohé klíčové aplikace, které kladou vysoké nároky na výkon a rozšiřitelnost, nikdy nemohly přejít na relační databáze a v současné době i jednoduché aplikace narážejí na omezení tradiční relační technologie. „Zavlečený nesoulad“ mezi relačními databázemi a současnými vývojovými technikami se stal vážným problémem, který stále více komplikuje vývoj a zvyšuje riziko selhání. Jednoduchost tabulkových struktur sice vyhovuje elegantnímu dotazovacímu jazyku (SQL), avšak rozložit datové struktury popisující reálný svět do tak zjednodušujících řádků a sloupců je obtížné. Výsledkem je ohromné množství tabulek, jejichž vztahy se obtížně pamatují a používají. Řádky a sloupce jsou jednoduché, ale vše prostupující potřeba programovat zbývající vnější spojení, uložené procedury a triggery již jednoduchá není. Moderní aplikace jsou obvykle vytvářeny pomocí objektové technologie, která nabízí rychlejší a intuitivnější způsob popisu informací a jejich použití. Vývoj je rychlejší a spolehlivost roste. Objekty však nejsou kompatibilní s relačními databázemi. Výhody objektové technologie se ztrácejí, když se výsledné databázové objekty musejí vměstnat do dvourozměrného relačního modelu. Současné aplikace transakčního zpracování kladou požadavky, které přesahují možnosti relační technologie. Musejí obsáhnout velké sítě, obsloužit tisíce klientů a přitom zajistit nejvyšší výkon, kompatibilitu s webem a jednoduchý provoz při nízkých nákladech. A musejí být vyvinuty rychle! 1
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 5
Představení systému Caché
Systém Caché® je mimořádně výkonná databázová technologie nové generace. Jako postrelační databáze kombinuje objektovou databázi, vysoce výkonný jazyk SQL a rychlý přístup k vícerozměrným datům. A všemi těmito způsoby lze přistupovat k týmž datům současně. Data jsou popsána pouze jednou v jediném integrovaném slovníku dat a jsou okamžitě dostupná prostřednictvím všech přístupových metod. Systém Caché poskytuje takovou úroveň výkonu, rozšiřitelnosti, rychlého programování a snadného použití, která je relační technologií nedosažitelná. Caché je ale mnohem více než samotná databázová technologie. Zahrnuje aplikační server s progresivními možnostmi objektového programování, schopnost snadné integrace se širokou paletou technologií a mimořádně výkonný databázový stroj s jedinečnou technologií vyrovnávacích pamětí. Systém Caché má několik vestavěných skriptovacích jazyků: Caché ObjectScript – výkonný a snadno zvládnutelný programovací jazyk, Caché Basic – nadstavba běžně používaného programovacího jazyka Basic, jež obsahuje rozšíření pro efektivní přístup k datům a objektovou technologii, a Caché MVBasic – varianta jazyka Basic používaná v MultiValue aplikacích (někdy také označovaných jako Pick aplikace). Další jazyky, jako Java, C# a C++, jsou podporovány pomocí přímého volání a jiných rozhraní, která zahrnují ODBC, JDBC, .NET. Caché překonává tradiční databáze také tím, že zahrnuje bohaté prostředí pro vývoj propracovaných webových aplikací využívajících jako klienta prohlížeč. Technologie CSP (Caché Server Pages) umožňuje rychlé vyvíjení a spouštění dynamicky generovaných webových stránek. Tisíce uživatelů webu mohou současně přistupovat do databázových aplikací, pomocí i poměrně levného hardwaru. U aplikací, které nevyužívají jako klienta prohlížeč, je uživatelské rozhraní většinou naprogramováno s využitím některé z oblíbených technologií pro vývoj uživatelských rozhraní, např. Java, .NET, Delphi, C# nebo C++. Nejlepších výsledků (rychlejší programování, větší výkon a nejnižší cena za údržbu) bývá dosaženo, je-li všechno ostatní naprogramováno v jazycích systému Caché. Technologie Caché také poskytuje mimořádně vysokou úroveň možnosti spolupráce s ostatními technologiemi a podporuje všechny běžně používané vývojové nástroje. K dispozici je široká paleta vývojových metodologií.
2
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 6
3
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 7
Kapitola 1: Modelování dat – relační, nebo objektový přístup V úvodních fázích návrhu nové aplikace musejí vývojáři rozhodnout, jaké pojetí modelování dat zvolí. Většinou se rozhodování redukovalo na volbu mezi tradičním modelováním dat pomocí relačních tabulek a novějším pojetím modelování pomocí objektů. Práce se složitými daty vedla mnoho vývojářů k přesvědčení, že modelování pomocí objektů je efektivnější. Převod existujícího datového modelu je samozřejmě prvním krokem při přenášení existující aplikace do Caché. K dispozici jsou snadné způsoby načtení datových modelů z různých relačních nebo objektových reprezentací, jejichž výsledkem je standardní definice dat Caché. Po migraci dat do Caché je možné k nim přistupovat souběžně jako k objektům, relačním tabulkám či vícerozměrným polím. Caché umožňuje relační (SQL) i objektový přístup k datům, protože každý z nich má své opodstatnění. Kdy použít které pojetí a proč současní vývojáři dávají všeobecně přednost modelování dat pomocí objektů, pomůže objasnit to, jak a kdy tato pojetí vznikla.
4
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 8
RELAČNÍ TECHNOLOGIE V průkopnických dobách se informace zpracovávaly na sálových počítačích (mainframe) a přístup k datům byl omezen ve většině případů na odborníky v oblasti informačních technologií. Databáze byly vytvářeny na koleně a získávání dat vyžadovalo dokonalou znalost příslušné databáze a jejího uspořádání. Pokud uživatel potřeboval nějakou sestavu, musel zadat její vytvoření přetíženým programátorům. Požadovaná sestava pak obvykle stejně nebyla hotová včas, a nemohla tak ovlivnit přijímaná rozhodnutí. I když byla relační technologie původně vyvinuta v 70. letech 20. století na sálových počítačích, zůstávala většinou výzkumným projektem. Změna nastala v 80. letech, kdy se začala objevovat i na minipočítačích. S příchodem osobních počítačů vstoupil svět do epochy softwaru podle hesla „vše pro uživatele“ se snadno použitelnými generátory sestav, které byly založeny na SQL (dotazovací jazyk zavedený v rámci relační technologie). Uživatelé mohli vytvářet vlastní databázové sestavy a jednorázové dotazy. Použití relačních databází zaznamenalo široký rozmach. SQL představuje konzistentní jazyk k zadávání dotazů na mnoho různých druhů dat. Umožňuje nahlížet na data ve velmi jednoduchém standardizovaném formátu tvořeném dvourozměrnými tabulkami s řádky a sloupci. I když tento jednoduchý datový model umožňuje sestrojení elegantního dotazovacího jazyka, má na druhé straně i značné nevýhody. Skutečná složitost vazeb mezi reálnými daty prostě neodpovídá řádkům a sloupcům. Data jsou tudíž často rozdělena do více tabulek, které je i v případě jednoduchých úloh nutno spojovat. To vede ke dvěma problémům: a) Spojování více tabulek značně komplikuje zápis dotazu (často se složitými vnějšími spojeními). b) Při zpracování složitých dat v relačních databázích může docházet k neúměrnému nárůstu režie. Jazyk SQL se stal standardem pro nástroje na vytváření sestav a pro interoperabilitu databází. I když jazyk SQL vznikl pro potřeby relačních databází, je důležité si uvědomit, že se nemusí omezovat pouze na ně. Systém Caché podporuje standardní SQL jako jazyk pro vytváření dotazů a aktualizací, přičemž používá mnohonásobně výkonnější vícerozměrnou databázovou technologii. Je také rozšířen tak, aby zahrnoval možnosti objektů.
5
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 9
OBJEKTOVÁ TECHNOLOGIE A OBJEKTOVÉ DATABÁZE Objektové programování a objektové databáze jsou praktickým výsledkem simulace složité činnosti mozku. Bylo zjištěno, že mozek je schopen ukládat velmi složité a různorodé typy dat, a přesto s tak zdánlivě rozdílnými informacemi pracovat jednotným způsobem. Aby se tato činnost dala napodobit, bylo potřeba implementovat do programů velmi složité chování a přitom tuto složitost skrýt. Tím se podpořila jednodušší, obecnější a pochopitelnější logika s adaptabilními a opakovaně použitelnými funkcemi. Dnes mají tyto vlastnosti všechny špičkové aplikace a technologie. Umožňují vývojářům pracovat přirozeným způsobem, který je podobnější lidskému myšlení, což je jejich nespornou výhodou.
OBJEKTOVÝ, NEBO RELAČNÍ PŘÍSTUP V objektové technologii je složitost dat obsažena v objektu a přístup k datům je realizován prostřednictvím jednoduchého, konzistentního rozhraní. Relační technologie sice rovněž používá jednoduché konzistentní rozhraní, ale protože nijak neřeší složitost skutečných dat, je za řešení problémů se složitostí dat vždy odpovědný uživatel nebo programátor. Protože modelování složitých dat je u objektů jednoduché, je nejvýhodnější programovat složité aplikace pomocí objektů. Objektový přístup je nejvhodnější i při vkládání dat do databáze a jejich aktualizaci (tj. při transakčním zpracování). Caché doplňuje objektový přístup objektově rozšířeným dotazovacím jazykem SQL. SQL je výkonným jazykem pro vyhledávání v databázích a je široce používán nástroji na vytváření sestav. Uvědomujeme si, že jazyk SQL je nejvhodnější pro zadávání dotazů a vytváření sestav, ale že se nehodí pro transakční zpracování (pro ně je těžkopádný a často i neefektivní). Rozšíření jazyka SQL systému Caché o objekty eliminuje většinu těžkopádné syntaxe příkazu join, a usnadňují dokonce i použití jazyka SQL.
OBJEKTOVÝ DATOVÝ MODEL A OBJEKTOVÉ PROGRAMOVÁNÍ V SYSTÉMU CACHÉ – PŘEHLED Objektový model Caché je založen na standardu ODMG (Object Database Management Group) a podporuje mnoho pokročilých funkcí včetně vícenásobné dědičnosti. Objektová technologie se pokouší napodobovat způsob, jakým lidé opravdu přemýšlejí o informacích a jejich použití. Na rozdíl od relačních tabulek spojují objekty dohromady data i kód. Objekt Faktura např. obsahuje data (číslo faktury a celkovou částku) a kód (Tisk()). Na objekt lze nahlížet jako na balíček, který obsahuje zároveň hodnoty dat tohoto objektu (vlastnosti) a kopii veškerého příslušného kódu (metody). Komunikace mezi metodami objektu je zajišťována předáváním zpráv. Objekty téže třídy mohou sdílet společné kopie kódu, a tím snižovat nároky na paměť (bylo by nereálné mít např. pro všechny objekty Faktura vlastní kopii kódu). V systému Caché také volání metod obvykle vede k volání vhodné funkce, ne k přetrvávající režii předávání zpráv. Tyto implementační techniky však zůstávají programátorům skryté, je vždy správné uvažovat o objektech, které si předávají zprávy. 6
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 10
Jaký je rozdíl mezi objektem a třídou? Třída je definiční struktura a kód dodaný programátorem. Třída obsahuje jednak popis povahy dat a způsob jejich uložení, jednak i veškerý kód, ale neobsahuje žádná data. Objekt je konkrétní instance třídy. Objektem třídy Faktura je např. faktura č. 123456. Objektová technologie podporuje přirozený pohled na data tím, že vlastnosti neomezuje na jednoduché počítačově orientované datové typy. Objekty mohou obsahovat jiné objekty nebo odkazy na jiné objekty, což usnadňuje vytváření užitečných a smysluplných datových modelů. Uvádíme jednoduchý příklad objektu Zákazník:
Jméno: Data jsou uložena podle datového typu Jméno.
Rodné číslo: Datový typ může být jednoduchý, např. celé číslo, nebo složitější, definovaný programátorem, např. devítimístné či desetimístné číslo ve tvaru: NNN-NNN-/NNNN.
Kontaktní osoba: KontaktníOsoba je vlastnost, která připojuje Zákazníka k objektu Kontaktní osoba ve vazbě N:1 (mnoho Zákazníků k jedné Kontaktní osobě). Na rozdíl od vloženého objektu má související objekt v databázi svůj vlastní identifikátor a je uložen samostatně s tímto identifikátorem. Identifikátor umožňuje přímý přístup k objektu Kontaktní osoba bez přístupu k objektu Zákazník. Při přístupu k vloženému objektu nebo k souvisejícímu objektu je syntaxe v Caché stejná (např. Zákazník.Adresa.Město a Zákazník.KontaktníOsoba. Jméno používají stejnou syntaxi – oddělování položek tečkou).
Adresa: Toto je příklad, který ukazuje, jak mohou být do objektu vloženy další objekty. Adresa je v tomto příkladu vloženým objektem, který obsahuje vlastnosti Ulice a Město. Faktury: Zákazník má množinu Faktur, z nichž každá je složitý objekt uložený samostatně s vlastním identifikátorem databáze. V tomto příkladu je mezi Zákazníky a Fakturami vazba 1:N (jeden Zákazník s mnoha Fakturami) s využitím vazby nadřazenosti a podřazenosti (Faktura nemůže existovat bez Zákazníka, ale Zákazník může existovat bez Faktur). Lze také vytvořit množinu vložených objektů.
7
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 11
NEJDŮLEŽITĚJŠÍ OBJEKTOVÉ POJMY Dědičnost je schopnost odvodit jednu třídu objektů z jiných tříd. Nová třída (podtřída) obsahuje kromě všech vlastností a metod, které jsou pro ni jedinečné, také všechny vlastnosti a metody příslušných nadtříd. Objekty podtřídy by měly být ke své nadtřídě ve vztahu „je určitý“. Např. pes je určitý savec, proto má smysl, že podtřída Pes zdědí všechny vlastnosti a metody třídy Savec a navíc má další vlastnosti, např. ČísloPsíZnámky. Podtřída může také potlačit zděděnou definici (např. metoda Tisk() u podtřídy třídy Faktura může být odlišná od metody Tisk() třídy Faktura). Dědičnost podporuje opakované využívání kódu a usnadňuje zavedení důležitých zlepšení. Vícenásobná dědičnost znamená, že podtřída může být odvozena z několika nadtříd. Např. pes je určitý savec a zároveň je určité domácí zvíře, takže třída Pes dědí atributy jak třídy Savec, tak třídy Domácí zvíře. Zapouzdření znamená, že na objekty lze pohlížet jako na „černou skřínku“. Veřejné vlastnosti a metody jsou přístupné každou metodou, zatímco soukromé vlastnosti a metody jsou dostupné pouze metodami téže třídy. Aplikace nepotřebuje vědět, jaké vnitřní operace v objektu probíhají, pracuje pouze s veřejnými vlastnostmi a metodami. Výhodou zapouzdření je, že programátoři mohou zdokonalovat vnitřní procesy ve třídě, aniž by ovlivnili zbývající části aplikace. Polymorfismus se týká faktu, že metody použité v několika třídách mohou sdílet společné rozhraní dokonce i tehdy, když vlastní implementace je odlišná. Předpokládejme např., že všechny třídy Dopis, Adresní štítek a Identifikační štítek obsahují metodu s názvem Tisk. Aplikace nepotřebuje vědět, k jakému typu objektu přistupuje, v daném objektu pouze zavolá metodu Tisk.
VÝHODY SYSTÉMU CACHÉ Systém Caché je plně objektově orientovaný a vývojářům, kteří vytvářejí vysoce výkonné aplikace pro zpracování transakcí, poskytuje veškeré výhody objektové technologie
Intuitivní modelování dat Objektová technologie umožňuje vývojářům uvažovat o informacích (dokonce i mimořádně složitých) a používat je jednoduchým a realistickým způsobem, což urychluje proces vývoje aplikací.
Rychlý vývoj aplikací Objektové pojetí zapouzdření, dědičnosti a polymorfismu dovoluje opakované používání tříd, změnu jejich účelu a jejich sdílení mezi aplikacemi. Vývojářům je tak umožněno přenášet výsledky své práce do mnoha dalších projektů.
8
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 12
PROČ ZVOLIT OBJEKTY PRO DATOVÝ MODEL? U nových databázových aplikací dává většina vývojářů přednost objektové technologii, protože vývoj složitých aplikací je mnohem rychlejší a pozdější úpravy jsou mnohem jednodušší. Objektová technologie poskytuje řadu výhod: I Objekty podporují bohatší datové struktury, které mnohem přirozeněji popisují skutečná data. I Programování je jednodušší. Je snazší sledovat, co právě děláte a s čím právě pracujete. I Přizpůsobené verze tříd mohou snadno nahradit standardní třídy, přičemž usnadňují úpravy aplikací. I Pojetí objektu jako „černé skříňky“ se zapouzdřenými prostředky umožňuje programátorům zdokonalovat vnitřní operace v objektu, aniž by přitom ovlivňovali ostatní části aplikace. I Díky objektům lze jednoduchým způsobem propojovat různé technologie a různé aplikace. I Objektová technologie přirozeně odpovídá grafickým uživatelským rozhraním (GUI). I Objektová technologie je použita v mnoha nových nástrojích. I Objekty zajišťují oddělení uživatelského rozhraní od zbytku aplikace. Pokud bude třeba přijmout novou technologii uživatelského rozhraní (možná nějakou ještě neznámou technologii budoucnosti), bude možné použít většinu kódu znovu.
OBJEKTOVÉ ULOŽENÍ DAT ... Současné aplikace, napsané pomocí objektových programovacích jazyků, se při ukládání dat pokoušejí vměstnat objekty do plochých relačních tabulek. Tím se závažně oslabují výhody objektové technologie. Caché používá vícerozměrnou datovou strukturu, která přirozeně ukládá bohatá objektová data. Výsledkem je rychlejší přístup k datům a rychlejší programování.
... PLUS RELAČNÍ PŘÍSTUP Mnoho nástrojů (např. generátory sestav) ještě používá pro přístup k datům jazyk SQL, a nikoli objektovou technologii. Jedinečnou vlastností systému Caché je, že kdykoli je definována třída databázových objektů, Caché automaticky zabezpečuje úplný přístup k těmto datům prostřednictvím jazyka SQL. Nástroje, které používají jazyk SQL, mohou okamžitě pracovat s daty systému Caché bez jakékoli další činnosti, a dokonce mohou využívat vysokou výkonnost serveru vícerozměrných dat Caché. Platí to i naopak. Pokud je z relační databáze importována definice DDL, Caché automaticky vygeneruje objektový popis dat, který umožňuje okamžitý přístup k datům jak jako k objektům, tak i prostřednictvím jazyka SQL. Unifikovaná datová architektura Caché udržuje obě přístupové cesty synchronizované. Upravuje se jen jeden popis dat. 9
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 13
Kapitola 2: Server vícerozměrných dat Caché
Vysoce výkonná databáze Caché používá vícerozměrný datový model, který umožňuje efektivní a komprimované ukládání dat v bohatých datových strukturách. Objekty a jazyk SQL jsou implementovány zadáním unifikovaného slovníku dat, který definuje třídy a tabulky a poskytuje mapování na vícerozměrné struktury. Toto mapování může být generováno automaticky.
Multidimensional Access
INTEGROVANÝ PŘÍSTUP K DATABÁZI Caché poskytuje programátorům volnost při ukládání dat a přístupu k nim prostřednictvím objektů, jazyka SQL nebo přímého přístupu k vícerozměrným strukturám. Všechna data v databázi Caché jsou ukládána ve vícerozměrných polích Caché bez ohledu na metodu přístupu. Jakmile jsou data uložena, lze současně používat všechny tři metody na stejná data při úplném souběžném zpracování. Jedinečnou funkcí Caché je unifikovaná datová architektura. Kdykoli je definována třída datových objektů, Caché automaticky vygeneruje relační popis těchto dat, umožňující použití jazyka SQL. Obdobně, je-li do slovníku dat importován popis definice DDL relační databáze, Caché automaticky vygeneruje relační i objektový popis dat, který umožní okamžitý objektový přístup. Protože Caché tyto popisy koordinuje, stačí upravovat pouze jednu datovou definici. Programátor může upravovat a zobrazovat slovník jak z hlediska objektu, tak z hlediska relační tabulky. Caché automaticky mapuje uložení objektů a tabulek ve vícerozměrných strukturách, nebo může být mapování přímo řízeno programátorem.
VÝHODY SYSTÉMU CACHÉ Flexibilita: Ke stejným datům lze souběžně přistupovat kterýmkoli z režimů přístupu (objektovým, vícerozměrným i pomocí SQL). Tato flexibilita poskytuje programátorům volnost uvažovat o datech způsobem, který pokládají za nejrozumnější, a použít přístupovou metodu, která nejlépe odpovídá potřebám programu.
Méně práce: Pomocí jediné definice popisuje unifikovaná datová architektura Caché automaticky data současně jako objekty i tabulky. Vývoj a údržba aplikací je mnohem snazší, protože nejsou nutné žádné transformace kódu. Využití stávajících postupů a aplikací: Programátoři mohou využívat zavedené postupy z relačního prostředí a možnosti objektů postupně zavádět do existujících aplikací při jejich dalším vývoji.
10
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 14
VÍCEROZMĚRNÝ DATOVÝ MODEL Jádro databáze Caché představuje mimořádně efektivní stroj vícerozměrných dat. Zabudované skriptovací jazyky systému Caché podporují přímý přístup k vícerozměrným strukturám a poskytují nejvyšší výkony a nejlepší možnosti při ukládání. Mnoho aplikací je implementováno výhradně s přímým použitím tohoto databázového stroje. Tento režim (Direct Global Access) se používá zvláště tehdy, jedná-li se o neobvyklé nebo velmi specializované struktury a není k nim nutný objektový přístup nebo přístup pomocí jazyka SQL, nebo je-li požadován nejvyšší možný výkon. Pro stroj vícerozměrných dat neexistuje žádný slovník dat, a tedy žádné definice dat.
Bohatá struktura vícerozměrných dat Vícerozměrná pole systému Caché se nazývají „globály“. Data do globálu mohou být ukládána s libovolným počtem indexů. Indexy navíc nemají definován typ, a mohou tedy obsahovat data libovolného typu. Jeden index může být celé číslo, např. 34, zatímco dalším indexem je smysluplný název, např. PoložkaŘádku. To platí dokonce i na téže úrovni indexu. Aplikace pro inventuru stavu zásob poskytuje např. informace o druhu, velikosti, barvě a vzoru a může mít následující strukturu: ^Zasoba(polozka,velikost,barva,vzor) = množství Příklad dat: ^Zasoba("cvičební úbor",4,"modrá","květinový")=3 Díky přístupu přes datový uzel v této struktuře je velmi jednoduché určit, zda je na skladě cvičební úbor velikosti 4 s květinovým vzorem. Požaduje-li zákazník cvičební úbor velikosti 4 a není si jist barvou či vzorem, je velmi jednoduché zobrazit jejich úplný seznam tak, že cyklicky projdeme všechna data, která jsou uložena v uzlech: ^Zasoba("cvičební úbor",4). Všechny datové uzly v uvedeném příkladu byly stejné povahy (uchovávaly množství) a všechny byly uloženy na stejné úrovni indexování (čtyři indexy) s podobnými indexy (třetí index byl vždy text vyjadřující barvu). Ale nemusí tomu tak být. Datové uzly mohou mít odlišný jak počet, tak typ indexů a mohou obsahovat rozdílné typy dat. Níže je uveden příklad složitějšího globálu s daty faktury, obsahující různé typy dat uložené na různých úrovních indexování: ^Faktura(c ^Faktura(c ^Faktura(c ^Faktura(c ^Faktura(c ^Faktura(c ^Faktura(c atd.
faktury,"Zákazník") = Informace o zákazníkovi faktury,"Datum") = Datum faktury faktury,"Položky") = Počet položek faktury faktury,"Položky",1,"Číslo") = objednací číslo první položky faktury,"Položky",1,"Množství") = množství první položky faktury,"Položky",1,"Cena") = cena první položky faktury,"Položky",2,"Číslo") = objednací číslo druhé položky
11
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 15
Více datových prvků v uzlu Do datového uzlu se často ukládá pouze jeden datový prvek, jako např. datum nebo množství. Někdy je výhodné ukládat více datových prvků společně jako jeden samostatný datový uzel. To je vhodné u sady souvisejících údajů, které se často zpracovávají společně. Snížením počtu přístupů do databáze může dojít ke zlepšení výkonu, zvláště při zpracování v síti. Ve výše uvedené faktuře např. každá položka obsahuje objednací číslo zboží, množství a cenu uložené zvlášť v samostatných uzlech. Tyto údaje ale mohou být také uloženy jako seznam prvků v jednom uzlu: ^Faktura(c faktury,"PoložkyŘádku",cislo polozky). Pro usnadnění nabízí Caché funkci nazvanou $list(). Tato funkce skládá více datových prvků do délkou určovaného binárního řetězce a následně je zase vyjímá zachovávajíc jejich datové typy. Tyto prvky mohou zase obsahovat vnořené prvky atd.
Logické zamykání podporuje vysoký souběh Pro vysokou propustnost systémů s tisíci uživateli je rozhodující omezení počtu konfliktů soupeřících procesů. K největším konfliktům dochází mezi transakcemi, které požadují přístup ke stejným datům. Procesy Caché nezamykají během aktualizace dat celé stránky. Naproti tomu transakce vyžadují časté čtení nebo aktualizaci malých množství dat, a proto stačí zamykání dat na logické úrovni. Možné konflikty v databázi jsou dále snižovány pomocí atomizovaných operací sčítání a odčítání, které nevyžadují zamykání. (Tyto operace se používají především u čítačů, které přiřazují identifikační čísla, a pro modifikaci statistických čítačů.) V Caché probíhají jednotlivé transakce rychleji a současně může být zpracováváno více transakcí.
Proměnlivá délka dat v řídkých polích Protože data v systému Caché mohou mít proměnnou délku a jsou ukládána v řídkých polích, vyžaduje Caché k jejich uložení často méně než polovinu prostoru ve srovnání s relačními databázemi. Vedle snížení nároků na diskový prostor zvyšuje výkon i komprimované uložení dat, protože jednou vstupní nebo výstupní operací lze přečíst nebo zapsat více dat. Data mohou být mnohem efektivněji ukládána do vyrovnávací paměti.
Nejsou třeba deklarace ani definice Data i indexy vícerozměrných polí Caché nemají v podstatě žádný typ. Nejsou třeba žádné deklarace, definice či alokace. Data globálu vznikají jednoduše v okamžiku svého vložení.
Názvový prostor Data a kód jsou v systému Caché ukládány v diskových souborech s názvem CACHE.DAT (v jednom adresáři může být pouze jeden). Každý takový soubor obsahuje množství globálů (vícerozměrných polí). Název globálu musí být v daném souboru jedinečný, ale může se opakovat v jiných souborech. Tyto soubory lze volně považovat za databáze. 12
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 16
Místo udávání určitého databázového souboru používají procesy Caché při přístupu k datům názvový prostor. Je to logická mapa názvů, ve které jsou mapovány názvy vícerozměrných polí globálů a kódu do databáze. Pokud je databáze přesunuta z jedné diskové jednotky na jinou nebo na jiný počítač, je třeba upravit pouze mapu názvového prostoru. Vlastní aplikace se nezmění. Všechna data pro názvový prostor (namespace), kromě některých systémových informací, jsou obvykle uložena v jedné databázi. Názvový prostor však poskytuje pružnou strukturu, která umožňuje libovolné mapování. Není neobvyklé, že názvový prostor mapuje obsah několika databází včetně některých databází umístěných na jiných počítačích.
VÝHODY SYSTÉMU CACHÉ Výkon: Náhrada labyrintu těžkopádných dvourozměrných tabulek efektivním vícerozměrným datovým modelem a technikou ukládání řídkých dat snižuje při přístupu k datům a při jejich aktualizaci nároky na diskové vstupní a výstupní operace. Snížení nároků na vstupní a výstupní operace znamená, že aplikace budou rychlejší.
Rozšiřitelnost: Transakční vícerozměrný datový model dovoluje aplikacím Caché, aby je používaly tisíce klientů, aniž by došlo ke snížení rychlosti zpracování. Přístup k datům uloženým ve vícerozměrném modelu není ovlivněn velikostí či složitostí databáze jako u relačních modelů. Přístup k datům nevyžaduje složitá spojování či přeskakování z tabulky do tabulky. Při aktualizaci dat využívá Caché logické zamykání místo zamykání fyzických stránek. Společně s propracovaným systémem vyrovnávacích pamětí napříč sítěmi to významně přispívá k výkonu při souběžném zpracování.
Rychlý vývoj: Vývoj nových aplikací probíhá v Caché mnohem rychleji, protože datové struktury umožňují přirozené a snadno pochopitelné ukládání složitých dat. Nejsou třeba rozsáhlé ani komplikované deklarace a definice. Přímý přístup ke globálům je velmi jednoduchý. Umožňuje stejnou syntaxi jako při přístupu k polím.
Cenově výhodné: Aplikace v systému Caché potřebují znatelně méně hardwaru než přibližně stejně velké relační aplikace, a navíc se obejdou bez správce databáze. Správa a provoz systému jsou jednoduché.
13
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 17
PŘÍSTUP POMOCÍ SQL SQL je dotazovacím jazykem databáze Caché. Podporuje v plném rozsahu možnosti relační databáze včetně jazyka DDL, transakcí, referenční integrity, triggerů, uložených procedur a dalších funkcí. Systém Caché podporuje přístup prostřednictvím rozhraní ODBC a JDBC (pomocí ovladače založeného čistě na jazyku Java). Součástí kódu jazyka Caché ObjectScript a objektových metod mohou být vložené příkazy a dotazy jazyka SQL. SQL přistupuje k datům, na která pohlížíme jako na tabulky s řádky a sloupci. Protože databáze Caché ukládá data v efektivních, vícerozměrných strukturách, aplikace používající SQL dosahují ve spojení s databází Caché lepšího výkonu, než mají tradiční relační databáze. Kromě standardní syntaxe jazyka SQL podporuje systém Caché mnohá v jiných databázích běžně používaná rozšíření. Mnohé aplikace používající jazyk SQL není třeba pro práci v systému Caché upravovat. To platí zejména o aplikacích vytvořených pomocí nástrojů nezávislých na databázi. Uložené procedury specifické pro daného dodavatele však budou vyžadovat určitou práci. Společnost InterSystems má překladače, které s touto prací pomohou. Jazyk Caché SQL zahrnuje objektově orientovaná vylepšení, která zjednodušují kód jazyka SQL a ve větší míře umožňují jeho intuitivní čtení i zápis.
TRADIČNÍ JAZYK SQL
JAZYK SQL S OBJEKTOVÝMI DOPLŇKY
SELECT SC.FullName, SM.Descr, MS.Value, SI.InvDate, SI.InvNumber
SELECT Customer->FullName, Customer->SalesMarket->Descr, Value, SalesItem->InvDate, SalesItem->InvNumber
FROM MainSales MS, SalesItem SI, SalesProduct SP, SalesCustomer SC, SalesMarket SM WHERE SI.SalesItemID *= MS.SalesItem AND SP.SalesProductID *= MS.Product AND SC.SalesCustomerID *= MS.Customer AND SM.SalesMarketID *= SC.SalesMarket AND SP.Descr = ‘Hammer’
14
FROM MainSales WHERE Product->Descr = ‘Hammer’
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 18
Přístup k relačním databázím pomocí brány Caché Relational Gateway Brána Caché Relational Gateway umožňuje odeslat
Relational Gateway
dotaz SQL vzniklý v Caché ke zpracování v jiné (relační) databázi. Prostřednictvím brány může Caché načíst a aktualizovat data uložená ve většině používaných relačních databázích. Pokud jsou databázové třídy Caché kompilovány s možností CachéSQLStorage, mohou aplikace Caché přes tuto bránu používat relační databáze. Aplikace budou ale rychlejší a rozšiřitelnější, když budou pracovat s postrelační databází Caché.
VÝHODY SYSTÉMU CACHÉ Rychlejší SQL: Relační aplikace mohou při použití jazyka Caché SQL a efektivní postrelační databáze systému Caché dosáhnout významně vyššího výkonu
Rychlejší vývoj: Dotazy jazyka SQL je možné v systému Caché zapisovat intuitivněji a pomocí menšího počtu řádků kódu. Kompatibilita se stávajícími aplikacemi a generátory sestav: Relačním aplikacím a generátorům sestav umožňují rychlý přístup do Caché nativní ovladače ODBC a JDBC. Bránou Caché Relational Gateway lze přistupovat pomocí SQL z aplikací systému Caché do jiných (relačních) databází.
15
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 19
OBJEKTY CACHÉ Objektový model Caché je založen na standardu ODMG. Caché používá celou řadu koncepcí objektového programování, včetně zapouzdření, vkládání objektů, vícenásobné dědičnosti, polymorfismu a kolekcí. Integrované skriptovací jazyky systému Caché pracují přímo s těmito objekty a systém Caché vystavuje třídy Caché jako třídy Java, EJB, COM, .NET a C++. Pouhým klepnutím na tlačítko v nástroji Studio lze pro třídy systému Caché aktivovat automatickou podporu jazyka XML a protokolu SOAP. Objekty Caché jsou tak snadno použitelné pro všechny běžně používané objektové technologie. Existuje několik možností, jak mohou programy mimo aplikační server Caché přistupovat k třídám Caché: 1. Každá třída Caché může být vystavena jako třída v nativním jazyku. Když program v Javě, C++, C# nebo v jiném jazyku přistupuje k objektu Caché, volá šablonu třídy v použitém jazyku. Tato šablona třídy (která je automaticky generována systémem Caché) komunikuje s aplikačním serverem Caché při vyvolávání metod na serveru Caché a při čtení nebo modifikaci vlastností. Stav objektů Caché je udržován v aplikačním serveru Caché. Pro urychlení zpracování a omezení předávání zpráv udržuje Caché kopii dat objektu ve vyrovnávací paměti klienta a využívá aktualizace dalšími zprávami, pokud je to možné. 2. Pro databázové třídy je možné použít „odlehčené“ projekce, při kterých šablona třídy v nativním jazyku přistupuje přímo do databáze a obchází přitom aplikační server. Stav objektu není uchováván na aplikačním serveru, jeho vlastnosti jsou udržovány jen v paměti klienta. Tento způsob přináší výrazně vyšší výkon, ale nižší funkčnost, jelikož metody třídy instance na straně serveru (tj. metody, které potřebují přístup k vlastnostem v paměti) nelze vyvolat. 3. Technologie InterSystems Jalapeño dovoluje vývojářům v jazyce Java vytvořit nejprve databázové třídy v Javě, stejně jako jakoukoli jinou třídu POJO (klasický javovský objekt) v jimi používaném vývojovém prostředí, a pak nechat systém Caché automaticky vygenerovat schéma databáze a příslušnou třídu Caché. Tímto postupem se třída v Javě nezmění a aplikace může nadále přistupovat k jejím vlastnostem a metodám. Caché poskytuje knihovnu tříd („ObjectManager“) s aplikačním rozhraním (API), které se používá pro ukládání a získávání databázových objektů a zadávání dotazů. U každého z těchto tří přístupů se objekty jeví uživatelskému programu jako lokální. Caché obsluhuje veškerou komunikaci transparentně, pomocí přímého volání nebo TCP. Šablona Java a podpůrné knihovny jsou celé založeny na jazyku Java, takže mohou být používány na webu nebo na specializovaných zařízeních Java.
16
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 20
Generátory metod Systém Caché zahrnuje celou řadu jedinečných progresivních objektových
VÝHODY SYSTÉMU CACHÉ
technologií. Jednou z nich jsou generátory metod. Generátor metod je metoda, která se spustí během kompilace a vygeneruje kód, který může být spuštěn při vykonávání programu. Generátor metod má přístup k definicím tříd včetně definic vlastností, metod a parametrů, aby mohl vygenerovat metodu, která je přizpůsobena třídě. Generátory metod jsou zvláště výkonné v kombinaci s vícenásobným
Systém Caché je plně objektově orientovaný a vývojářům, kteří vytvářejí vysoce výkonné aplikace pro zpracování transakcí, poskytuje veškeré výhody objektové technologie.
děděním. Funkčnost může být definována ve vícenásobně děděné třídě a sama se příslušné podtřídě přizpůsobí.
Rychlý vývoj aplikací: Objektová technologie je výkonným nástrojem zvyšujícím produktivitu programování. I v případě mimořádně složitých objektů mohou vývojáři objekty používat a uvažovat o nich jednoduchým způsobem odpovídajícím skutečnosti, což urychluje vývoj aplikací. Vlastní modularita a interoperabilita objektů zjednodušuje údržbu aplikací a umožňuje programátorům přenést výsledky své práce do dalších projektů.
Přirozený vývoj aplikací: Ve vývojovém prostředí se databázové objekty jeví jako přirozené objekty použitého programovacího jazyka. Není potřeba psát zdlouhavě kód pro rozklad objektů do řádků a sloupců a jejich opětovné sestavování.
17
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 21
VYHLEDÁVÁNÍ PODLE SLOV (WORD-AWARE SEARCHING) Caché podporuje prohledávání volného textu. Je možné vyhledávat pomocí dotazů, jež obsahují požadovaná slova, přičemž skutečná slova v textu mohou být variantami hledaných slov. Pro použití funkce vyhledávání slov musí být textové pole příslušně indexováno. Postup indexování je následující: 1. Nejprve jsou v textovém poli identifikována jednotlivá slova. 2. Slova, která jsou tak běžná, že nemá význam podle nich vyhledávat, jsou odstraněna (např. slova jako „the“ nebo „for“). 3. Zbývající slova jsou redukována na kmenová slova (např. „searching“ se změní na „search“ a „flowers“ se změní na „flower“). 4. Výsledná slova jsou indexována. Při vyhledávání podle slov se hledaný text nejprve zpracuje obdobným způsobem a pak se použije index pro hledání shodných výskytů.
Slovní indexování
I am searching for some text
I
am
X X
18
searching
I
am
searching
I
am
search
for
some
text
Rozdělení na slova
for
some
text
Odstranění nevýznamných slov
for
some
text
Redukce na kmen
X X
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 22
Slovní indexy jsou udržovány pomocí objektových a SQL aktualizací. Vyhledávání se provádí obvykle pomocí SQL dotazů, i když procedurální kód může používat indexy také přímo. Pro podrobnější vyhledávání mohou dotazy obsahovat logické podmínky AND/OR. Algoritmy slovního vyhledávání jsou specifické pro jednotlivé použité přirozené jazyky. Vyhledávání podle slov je k dispozici pro řadu přirozených jazyků, zahrnující angličtinu, francouzštinu, němčinu, italštinu, japonštinu, portugalštinu a španělštinu. Postupně jsou přidávány další.
Hledání podle slov
WHERE Description %Contains (‘search’)
Caché najde “search”, “searched”, “searching”, …
WHERE Description %Contains (‘close’)
Caché najde “close”, “closed”, … ale ne “closet” nebo “disclose”.
VÝHODY SYSTÉMU CACHÉ Výkonné prohledávání nestrukturovaného textu: V nestrukturovaném textu, např. v lékařských poznámkách nebo dokumentech, lze snadno vyhledávat klíčová a příbuzná slova.
Velmi rychlé hledání: Spojením vyhledávání podle slov s technologií bitových map Caché umožňuje prohledávat velké množství textu během zlomku sekundy.
19
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 23
TRANSAKČNÍ INDEXOVÁNÍ BITOVÝMI MAPAMI Systém Caché poskytuje jedinečné transakční indexování bitovými mapami, které může výrazně zvýšit rychlost zpracování složitých dotazů, takže rychlé složité dotazy typické pro datové sklady lze zpracovat nad živými daty.
Traditional Index on Property: “Type of Pet” Výkon databáze rozhodujícím způsobem závisí na tom, zda existují indexy podle těch vlastností, které jsou při vyhledávání v databázi často používány. Většina databází používá indexy, které pro každou možnou hodnotu sloupce nebo vlastnosti udržují seznam identifikátorů řádků
Bit-Map Index on Property: “Hair Color”
(objektů) pro řádky či objekty, které mají tuto hodnotu. Index bitovými mapami je jiný typ indexu. Indexy bitovými mapami obsahují samostatnou mapu pro každou možnou hodnotu sloupce či objektu, s jedním bitem
pro každý uložený řádek nebo objekt. Bit s hodnotou 1 znamená, že příslušný řádek či objekt má pro tento sloupec či vlastnost danou hodnotu. Výhodou indexování bitovými mapami je, že složité dotazy je možné zpracovávat pomocí booleovských operací (AND, OR) nad indexy. Výsledkem je efektivní určení výskytů (řádků) odpovídajících podmínkám dotazu bez nutnosti prohledávání celé databáze. Indexování bitovými mapami může u složitých dotazů, které prohledávají velké objemy dat, často zkrátit doby odezvy až více než stokrát. U bitových map se tradičně projevují dva problémy: Za prvé může být aktualizace v relačních databázích velmi pomalá, za druhé mohou obsadit příliš mnoho paměti. Proto se zřídka používají pro aplikace transakčního zpracování s relačními databázemi. Systém Caché představil novou technologii, tzv. transakční bitmapové indexy, která využívá k odstranění těchto dvou problémů struktury vícerozměrných dat. Tyto bitové mapy se aktualizují často rychleji než tradiční indexy a používají výkonné kompresní techniky, které radikálně snižují nároky na místo. Caché také podporuje sofistikované techniky „bitových řezů“ (bit-slicing). Výsledkem jsou zvláště rychlé bitové mapy, pomocí kterých lze ve zlomku sekundy prohledat často i miliony záznamů v online databázích s transakčním zpracováním. Aplikace typu „business intelligence“ a aplikace datových skladů tak mohou pracovat s živými daty. Systém Caché nabízí jak tradiční indexy, tak i transakční indexy bitovými mapami. Podporuje také vícesloupcové indexy. Např. pomocí indexu podle polí Kraj a ModelAuta je možno rychle identifikovat každého, kdo vlastní auto určitého typu, které je registrováno v určitém kraji.
20
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 24
VÝHODY SYSTÉMU CACHÉ Extrémně rychlé dotazy: Uživatelé mohou pomocí technik transakčních bitových map docílit neuvěřitelně rychlého vyhledávání v rozsáhlých databázích (ve zlomku sekundy lze prohledat často i miliony záznamů) v systému, který je primárně používán pro transakční zpracování.
Analýza dat v reálném čase: Transakční indexování bitovými mapami systému Caché umožňuje analýzu dat na aktuálních datech v reálném čase.
Nižší náklady: Není třeba další jednoúčelový počítač určený pro úlohy datového skladu a podpory rozhodování. Není ani nutno přenášet data k dennímu zpracování na jiný výkonem odpovídající systém, a proto ani není nutná podpora správců databáze.
Rozšiřitelnost: Rychlost transakčních bitových map zvyšuje schopnost vytváření systémů, které pracují s mimořádnými objemy dat, která je nutno udržovat a často prohledávat..
21
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:53
Stránka 25
PROTOKOL ENTERPRISE CACHE PROTOCOL PRO DISTRIBUOVANÉ SYSTÉMY Možnosti zvyšování výkonu v distribuovaných systémech Protokol ECP (Enterprise Cache Protocol) společnosti InterSystems je mimořádně výkonná a rozšiřitelná technologie, která umožňuje počítačům v distribuovaném systému vzájemně používat databáze. Použití technologie ECP nevyžaduje žádné změny v aplikacích. Aplikace prostě s databází pracují stejně, jako by byla lokální.
Technologie ECP funguje takto: Každý aplikační server zahrnuje svůj vlastní datový server, který může pracovat nad daty uloženými na jeho vlastních diskových systémech nebo nad bloky dat, které na něj byly přeneseny z jiného datového serveru Caché prostřednictvím protokolu ECP. Když klient požaduje informace, které jsou uchovávány na vzdáleném
Enterprise Cache Protocol
datovém serveru, aplikační server se tento požadavek pokusí uspokojit ze své lokální paměti. Pokud požadavek takto uspokojit nemůže, bude nezbytná data požadovat ze vzdáleného datového serveru. Odpověď obsahuje bloky databáze, kde byla tato data uložena. Tyto bloky jsou uloženy do vyrovnávací paměti na aplikačním serveru, kde jsou k dispozici pro všechny aplikace pracující na tomto serveru. Protokol ECP automaticky zajišťuje konzistenci uložení ve vyrovnávacích pamětech v celé síti a promítá změny zpět na datové servery. Nárůst výkonu a výhody rozšiřitelnosti poskytované technologií ECP jsou velmi výrazné. Klienti se těší z rychlých odezev, protože často používají data uložená lokálně ve vyrovnávacích pamětech. Navíc toto ukládání do vyrovnávacích pamětí podstatně snižuje zatížení sítě mezi databází a aplikačními servery, takže daná síť může podporovat mnohem více serverů a klientů. Většina aplikací bude z ECP profitovat, mohou se však najít i takové, jejichž architektura tuto technologii nepodporuje bez patřičných úprav. Doporučuje se otestovat výkon, v případě potřeby ho lze často zvýšit několika jednoduchými změnami.
22
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 26
VÝHODY SYSTÉMU CACHÉ Rozsáhlá rozšiřitelnost: Enterprise Cache Protocol systému Caché umožňuje při rostoucím využití přidávat aplikační servery. Každý z těchto serverů s databází pracuje tak, jako by se jednalo o lokální databázi. Pokud nastanou problémy s kapacitou disků, je možné přidat další datové servery a databáze se rozdělí do logických oddílů.
Vyšší dostupnost: Vzhledem k tomu, že uživatelé jsou rozptýleni u mnoha počítačů, selhání jednoho aplikačního serveru zasáhne pouze menší část uživatelů. Pokud datový server zhavaruje a bude restartován, nebo pokud dojde k dočasnému výpadku sítě, aplikační servery pokračují ve zpracování pouze s nepatrnou prodlevou. Dostupnost se může významně zvýšit nakonfigurováním datových serverů hardwarového clusteru se záložními
Snadné použití – žádné změny v aplikacích
datovými servery odolného proti
Aplikace je na protokolu ECP zcela nezávislá. Aplikace vytvořené pro zpracování na
výpadkům.
jednom serveru mohou být beze změn spuštěny v prostředí s více servery. Chce-li správce systému použít protokol ECP, identifikuje prostě pro aplikační server jeden
Nižší náklady: Velké počty levných
nebo více datových serverů a potom pomocí mapovaní názvového prostoru určí, že
počítačů je možné kombinovat do
odkazy na některou nebo na všechny globální struktury (nebo části těchto struktur) se
mimořádně výkonných systémů,
vztahují k tomu či onomu vzdálenému datovému serveru.
umožňujících vysoce výkonné zpracování – tzv. „síťové provádění výpočtů“ (grid computing).
Přizpůsobitelnost konfigurace Každý systém Caché může pro jiné systémy zastávat jak funkci aplikačního, tak
Transparentní použití: Aplikace
datového serveru. Protokol ECP podporuje libovolnou kombinaci aplikačních serverů
Caché nemusejí být psány speciálně
a datových serverů a libovolnou topologii typu point-to-point až do 255 systémů.
pro protokol ECP, mohou ho bez jakékoli změny automaticky využívat.
23
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 27
ODOLNOST PROTI CHYBÁM I v těch nejlepších podmínkách může dojít k nečekaným událostem – hardwarová závada, výpadek napájení nebo něco tak hrozného jako povodeň či jiná přírodní katastrofa – jenže nemocnice, telekomunikace a další kritické služby nemohou svou práci přerušit. Systém Caché splňuje takto náročné požadavky, neboť je naprojektován tak, aby se dokázal z výpadků hladce zotavit. Nabízí také řadu možností, jak zvýšit odolnost proti chybám a snížit či odstranit jejich vliv na uživatele. Žurnálování změn (Caché Write-Image Journaling) a další integritní funkce zajišťují integritu databáze při většině typů hardwarových závad, včetně výpadku napájení. Tím dojde k rychlému zotavení systému při minimálním dopadu na uživatele. Caché poskytuje pokročilé možnosti konfigurace, jak zvýšit dostupnost systému a snížit či úplně eliminovat dopad poruchy na uživatele: I Clustery odolné proti výpadkům I Stínové servery I Distribuovaný ECP
Clustery odolné proti výpadkům Při použití hardwarového clusteru sdílejí datové servery stejné disky, ale jen na jednom serveru aktivně běží systém Caché. Pokud aktivní server selže, je systém Caché automaticky spuštěn z jiného serveru, který převezme odpovědnost za zpracování. Uživatelé se mohou ihned znovu přihlásit na novém serveru.
Stínové servery Stínové servery Caché jsou zálohovací servery „volně připojené “ pomocí TCP. Primární server neustále posílá stínovému serveru záznamy aktualizací databáze, takže stínový server má vždy „téměř aktuální“ kopii databáze. Přepnutí na stínový server je automatizováno méně než u hardwarových clusterů, ale větší šance na přežití lze zajistit tím, že hardware není fyzicky propojen – stínový server tak může být umístěn kdekoli. Stínový server je možné kombinovat s clusterem a tím ještě více posílit odolnost proti výpadkům.
Distribuovaný ECP U distribuovaných systémů používajících protokol ECP (Enterprise Cache Protocol) se aplikační servery pokusí o obnovu připojení při dočasném výpadku sítě nebo zhroucení a restartování datového serveru. Pokud se obnova připojení podaří ve stanoveném časovém intervalu, aplikační servery odešlou znovu všechny dosud nevyřízené požadavky a zpracování pokračuje, aniž by si uživatelé kromě mírného zpoždění čehokoli všimli. Pokud selže aplikační server s ECP, bude to mít vliv jen na uživatele připojené k tomuto serveru. Pokud se přihlásí na jiný aplikační server, mohou pokračovat v práci. 24
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 28
Datový server s ECP je často nakonfigurován jako cluster odolný proti výpadkům. Pokud hlavní datový server zhavaruje, převezme jeho funkci záložní datový server. To umožňuje nepřetržitý provoz, při kterém si uživatelé všimnou jen krátkého prodlení.
VÝHODY SYSTÉMU CACHÉ Odolná databáze: Žurnálování změn a další integritní funkce
An ECP Fail-over Cluster
zajišťují integritu databáze u většiny hardwarových závad včetně výpadku napájení.
Konfigurace s vysokou dostupností a odolností proti chybám: Použití stínových serverů či odolných clusterů umožňuje Caché rychlé zotavení při výpadcích a zároveň minimalizuje, v některých případech zcela odstraňuje, jejich vliv na uživatele.
25
pisma zlom 80990.qxd:Caché Tech Guide 05
26
4.6.2008
14:54
Stránka 29
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 30
BEZPEČNOSTNÍ MODEL Systém Caché disponuje certifikací pro Běžná kritéria EAL 3 (Common Criteria EAL 3). Caché má moderní bezpečnostní model podporující tři různé způsoby vývoje aplikací:
Zabezpečením samotného prostředí Caché Usnadněním práce vývojářům při vkládání bezpečnostních funkcí do aplikací Zajištěním efektivní součinnosti Caché s bezpečnostními technologiemi operačního prostředí bez jejich kompromitace.
Systém Caché poskytuje tyto způsoby zabezpečení s minimálním dopadem na výkon aplikace.
Uživatelé, role, zdroje a privilegia Existuje řada zdrojů (např. databáze, aplikace a systémové služby) a uživatelé musejí mít pro jejich použití přidělená práva od bezpečnostního administrátora (např. pro ČTENÍ, ZÁPIS nebo POUŽITÍ). Kromě systémově definovaných zdrojů může bezpečnostní administrátor vytvořit také specifické zdroje a použít stejné mechanizmy pro přidělování a kontrolu práv. Pro zjednodušení je uživatelům obvykle přidělována jedna nebo více „rolí“ (tj. pracovních funkcí, např. „Laboratorní technik“ nebo „Mzdová účetní“) a bezpečnostní administrátor pak přiřazuje práva pro použití určitých zdrojů k těmto rolím, a ne k jednotlivým uživatelům. Uživatel zdědí všechna práva přiřazená rolím. Každý proces má přidělené jméno uživatele, i když je to jen „Neznámý uživatel“. Jméno uživatele se přidělí během ověření identity. Jednoduchým příkladem ověření identity je zadání jména a hesla uživatele. Systém následně zkontroluje, zda bylo zadáno správné heslo. Po ověření je procesu přiřazeno jméno uživatele a přidělena práva spojená s tímto jménem. („Uživatel“ nemusí být nutně člověk. Může to být např. měřicí zařízení generující data nebo aplikace běžící na jiném systému připojeném ke Caché.) Pokud uživatel neprojde ověřením identity, má uživatelské jméno „Neznámý uživatel“. V tom případě má pouze práva, která jsou definována jako výchozí pro všechny uživatele. Připojení k systému Caché je řízeno sadou služeb. Každá služba udává, zda je veřejná (což znamená, že ji může použít každý), nebo zda vyžaduje ověření identity a zda má uživatel podle výsledku ověření identity potřebná práva k jejímu použití. Služby je možné také jednotlivě zablokovat, takže je přístup k nim odmítnut každému. Přiřazování a správa práv se obvykle provádí portálem správy Caché (Caché Management Portal).
27
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 31
Role přiřazované aplikacemi Často je výhodnější, pokud uživatel získá dočasně dodatečná práva, než aby se musela přiřazovat nastálo. Např. místo toho, aby bezpečnostní administrátor přiděloval uživateli širokou sadu práv (např. možnost přístupu do mzdové databáze a provádění změn), může uživatel dostat pouze práva přístupu ke mzdové aplikaci a tato aplikace pak může zvýšit práva uživatele během používání aplikace. Pro zvýšení práv uživatele mohou být aplikacím přiděleny role. Když je taková aplikace vyvolána, uživatel dočasně získá dodatečné role. Dodatečné role mohou být jednoduše přidělovány jako celek každému, kdo má oprávnění použít aplikaci, nebo mohou být více přizpůsobeny podle rolí, které již uživatel má. Tato funkce se zvlášť hodí pro webové aplikace jako např. CSP (Caché Server Pages). U CSP část každé URL adresy udává název aplikace. Po identifikaci a určení, zda je uživatel oprávněn použít tuto CSP aplikaci, získá uživatel dočasně dodatečné role přidělené této aplikaci po dobu vyžádání dané stránky. Bezpečnostní administrátor může také stanovit určité rutiny, které jsou schopné provádět povýšení role pro získání dodatečných rolí určených aplikací poté, co uživatel projde uživatelsky určenými bezpečnostními testy. Tento prostředek je přísně kontrolován a je to mechanizmus, kterým provádějí povýšení role jiné aplikace než CSP.
Ověření identity Systém Caché podporuje různé úrovně ověření identity, od zcela nezabezpečeného přístupu přes použití hesel až po využití protokolu Kerberos pro identity uživatelů. Kerberos zajišťuje velmi silnou identifikaci a jeho výhodami jsou rychlost, rozšiřitelnost a snadnost použití. Při použití protokolu Kerberos se hesla nikdy nepřenáší přes síť a tím je zajištěn mimořádný stupeň zabezpečení. Systém Caché podporuje implementaci jediného přihlášení uživatele (single sign-on).
28
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 32
Šifrování databáze Systém Caché podporuje dvě formy šifrování databáze: I Bezpečnostní administrátor může určit, že jeden nebo více souborů CACHE.DAT (databází) bude na disku šifrováno. Vše v těchto souborech pak bude zašifrováno. I Vývojáři mohou použít funkce systému pro šifrování/dešifrování dat, která mohou být následně uložena do databáze nebo odeslána. Tuto funkci je možno použít pro zašifrování citlivých dat na ochranu před ostatními uživateli, kteří mají právo číst z databáze, ale neznají potřebný klíč. Systém Caché šifruje standardně data pomocí implementace šifrovacího protokolu AES (Advanced Encryption Standard), což je symetrický algoritmus podporující klíče s délkou 128, 192 nebo 256 bitů. Šifrovací klíče jsou uloženy v chráněné oblasti paměti. Systém Caché poskytuje veškeré možnosti pro správu klíčů. Šifrovat lze také žurnál.
Audit Bezpečný audit umožňují mnohé aplikace, zejména ty, které musejí splňovat vládní směrnice jako HIPAA nebo Sarbanes-Oxley. V systému Caché jsou všechny systémové a aplikační události zaznamenávány do protokolu, do něhož lze záznamy pouze přidávat a který je kompatibilní s každým nástrojem pro dotazování a tvorbu sestav pomocí SQL. 29
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 33
Kapitola 3: Aplikační server Caché Aplikační server Caché nabízí vyspělé objektové programování a nabízí sofistikované ukládání dat do vyrovnávacích pamětí. Současně integruje snadný přístup k nejrůznějším technologiím. Aplikační server umožňuje rychlé vytváření náročných databázových aplikací, dosažení vysoké výkonnosti při provozování a jejich snadnou údržbu. Aplikační server Caché poskytuje:: I Virtuální stroj Caché, který spouští tři zabudované skriptovací jazyky – Caché ObjectScript, Caché Basic a Caché MVBasic. I Přístup k serverům vícerozměrných dat Caché jak na tomtéž, tak na jiných počítačích s transparentním směrováním. I Software pro připojení s ukládáním do vyrovnávací paměti na straně klienta umožňující rychlý přístup k objektům Caché pomocí nejrůznějších technologií, jako např. Java, C++, C#, COM, .NET a Delphi. V případě potřeby Caché automaticky zajišťuje síťový provoz mezi klientem a aplikačním serverem. I Kompatibilita s protokolem SOAP a jazykem XML. I Přístup pomocí jazyka SQL přes rozhraní ODBC a JDBC včetně efektivního ukládání dat do vyrovnávacích pamětí klienta a aplikačního serveru pro zvýšení výkonnosti. I Přístup do relačních databází. I Technologie Caché Server Pages pro snadné programování vysoce výkonných aplikací pro webovou síť. I Nástroj Caché Studio – prostředí pro rychlý vývoj a ladění aplikací v systému Caché. I Kód pro skriptovací jazyky je uložen v databázi a je možné provádět jeho změny online. Změny se automaticky promítají do všech aplikačních serverů.
VIRTUÁLNÍ STROJ CACHÉ A SKRIPTOVACÍ JAZYKY Jádrem aplikačního serveru Caché je mimořádně rychlý virtuální stroj Caché, který podporuje skriptovací jazyky Caché. I Caché ObjectScript je výkonný a snadno zvládnutelný objektově orientovaný jazyk s mimořádně pružnými datovými strukturami. I Caché Basic usnadňuje programátorům v jazyce Visual Basic přechod k používání systému Caché. Podporuje objekty podobně jako VBScript a je rozšířen o možnost přímého přístupu do vícerozměrných polí Caché. I Caché MVBasic je variantou programovacího jazyka Basic, používaného v MultiValue (Pick) aplikacích. MVBasic byl rozšířen o podporu objektů a má přímý přístup do vícerozměrných polí Caché.
30
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 34
Přístup do databáze virtuálním strojem Caché je optimalizován. Každý uživatelský proces ve virtuálním stroji Caché má přímý přístup do struktur vícerozměrných dat pomocí volání sdílené paměti, která přistupují do sdílené vyrovnávací paměti databáze. Všechny ostatní technologie (Java, C++, ODBC, JDBC atd.) se pro přístup do databáze připojují prostřednictvím virtuálního stroje Caché.
VÝHODY SYSTÉMU CACHÉ Rychlý vývoj aplikací: Vývoj složitých databázových aplikací pomocí jazyka Caché ObjectScript je
Úplná interoperabilita
mnohem (často desetkrát až stokrát) rychlejší než v kterémkoli z předních jazyků v této oblasti. Rychlejší vývoj
Díky tomu, že jazyky Caché ObjectScript, Basic a MVBasic jsou implementovány na stejném virtuálním stroji Caché, jsou zcela zaměnitelné: I Jakákoli metoda objektu může být zapsána v kterémkoli z jazyků, takže jedna
zvyšuje šance projektu na úspěch (je třeba menší počet programátorů) a umožňuje rychlé přizpůsobení měnícím se požadavkům na aplikaci.
třída může používat všechny tři jazyky. I Každý z jazyků může volat kód napsaný v ostatních jazycích.
Kratší doba na zvládnutí: Basic je
I Jazyky sdílejí proměnné, pole a objekty.
pravděpodobně na celém světě nejznámějším počítačovým jazykem. Vývojáři, kteří znají jazyk Visual
Rychlejší vývoj a pružné zavádění
Basic, mohou okamžitě psát kód v jazyce Basic a snadno se naučí
Aplikace se dá téměř vždy vyvinout rychleji. Tyto aplikace budou také pracovat
objektový model Caché.
mnohem rychleji a budou mít větší možnosti rozšiřitelnosti, jestliže bude co největší část kódu napsána ve skriptovacích jazycích Caché. Navíc takový kód nevyžaduje při
Větší rychlost a rozšiřitelnost:
změně hardwaru nebo operačního systému žádné úpravy. Systém Caché automaticky
Virtuální stroj Caché, se svým
ošetří všechny rozdíly v operačním systému a hardwaru.
přímým přístupem do databáze, poskytuje rychlejší aplikace, které mohou současně využívat až desítky
Scripting Languages
tisíc uživatelů používajících levný hardware.
Flexibilita: Kód, který pracuje ve virtuálním stroji Caché, může bez nutnosti úprav pracovat na různém hardwaru a operačních systémech. Kód je uložen v databázi a promítán automaticky na aplikační servery.
31
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 35
JAZYK CACHÉ OBJECTSCRIPT Caché ObjectScript je výkonný, objektově orientovaný programovací jazyk, který byl vytvořen pro rychlý vývoj databázových aplikací. Uvedeme zde některé jeho základní charakteristické znaky.
Celková struktura Jazyk Caché ObjectScript je příkazově orientovaný. Má tedy např. tuto syntaxi: set x=a+b do rotate(a,3) if (x>3) Obsahuje sadu integrovaných systémových funkcí, které jsou zvláště výkonné při manipulaci s texty. Jejich názvy jsou pro odlišení od proměnných a názvů polí uvozeny jedním symbolem dolaru ($). Např.: $extract(retezec,od,do)
// vrací podmnožinu znaků z řetězce
$length(retezec)
// určí délku řetězce
Ve výrazech platí přednost operátorů zleva doprava, stejně jako u většiny kalkulaček. Kulaté závorky mění pořadí vyhodnocení výrazů.
Flexibilní ukládání dat Jednou z jedinečných vlastností jazyka Caché ObjectScript je vysoce flexibilní a dynamické ukládání dat. Data mohou být uložena ve: I vlastnostech objektu, I proměnných, I řídkých vícerozměrných polích, která připouštějí použití indexů libovolného datového typu, I databázových souborech (globálech), které mají formát řídkých vícerozměrných polí. Až na malé výjimky, kdekoli v kódu jazyka, kde může být použita proměnná, lze rovněž použít pole, vlastnost objektu nebo odkaz na globál. Ve většině programovacích jazyků jsou datové typy rozšířením konceptu hardwarového ukládání dat (integer, float, char atd.). Caché ObjectScript vychází ze základního předpokladu, že lidé neuvažují v těchto kategoriích a že datové typy takto poplatné počítačům brání rychlému vývoji aplikací. Požadování takových deklarací a definování dimenzí způsobuje mnohem více chyb, než kolika pomáhá
32
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 36
předcházet (chyby jako celočíselné přetečení nebo přetečení paměti vyhrazené pro řetězec a přepsání části další paměti). Naproti tomu vytváření typů objektů jako např. osoba, faktura nebo živočich se ukazuje jako velmi užitečné a odpovídající lidskému způsobu uvažování. Vlastnosti objektu jsou v jazyce Caché ObjectScript přesně popsány, ale ostatní tři typy uložení (proměnné, pole a uzly globálu) jsou zcela polymorfní entity nemající žádný typ a není třeba je deklarovat nebo definovat. Data prostě začnou existovat v okamžiku, kdy jsou použita, a zformují se podle toho, co představují a jak budou používána ve výrazech. U polí není nutno zadávat velikost nebo rozměr, typ indexů nebo typ dat. Vývojář může např. vytvořit pole s názvem Osoba prostě tak, že zadá: set Osoba("Novák","Jan")="Jsem dobrý člověk" V tomto příkladu byla data uložena ve dvourozměrném poli používajícím indexy typu řetězec. Jiné datové uzly mohou mít odlišný počet rozměrů a v indexech libovolně kombinovat řetězce, celá čísla a další datové typy. Do téhož pole lze např. vložit veškerá následující data: abc(3) abc(3,-45.6,"Ano") abc("Čítač")
Přímý přístup do databáze Přímý odkaz do databáze (tzv. odkaz na globál) je v podstatě odkazem na vícerozměrné pole, jehož název začíná znakem '^'. Tento znak udává, že se jedná o odkaz na data uložená v databázi, a ne na dočasná (privátní) data dostupná pouze v rámci daného procesu. Každé takové databázové pole je nazýváno „globálem“. Stejně jako u vícerozměrných polí a proměnných nejsou pro přístup nebo uložení dat do databáze požadovány deklarace, definice ani vyhrazení paměti. Data globálu jednoduše vznikají při ukládání dat. Informace do databáze je možno uložit např. tímto zápisem: set ^Osoba("Novák","Jan")="Jsem velmi dobrý člověk" Později mohou být tyto informace načteny pomocí kódu: set x=^Osoba("Novák","Jan") Programátor má naprostou volnost v tom, jak strukturovat tato datová pole globálu. (Viz Vícerozměrný datový model.)
33
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 37
Odkazy na objekty Objekty Caché implementují datový model ODMG s výkonnými rozšířeními. V jazyce Caché ObjectScript se pro přístup k objektům používá tzv. oref (oref je obvykle proměnná, jejíž hodnota určuje, na který objekt v paměti se odkazuje). Za proměnnou oref následuje tečka a za ní název vlastnosti nebo metody. Odkazy na objekty lze použít všude tam, kde lze použít výraz. Např.: set jmeno=osoba.Jmeno
// 'osoba' je proměnná, jejíž hodnota je oref // jméno osoby je vloženo do proměnné 'jmeno'
if (osoba.Vek>x)
// zjišťuje, zda je věk osoby větší než 'x'
set penize=faktura.Celkem() // 'Celkem()' je metoda, která vypočítává součet // všech řádků položek faktury Není-li třeba vracet hodnotu, lze metody spouštět příkazem DO. Např.: do objcis.Prirustek()
// Případná návratová hodnota metody // je ignorována
Oref není totéž co identifikátor databázového objektu. Identifikátor objektu je hodnota, která je databázovému objektu přiřazena natrvalo. Používá se pro jeho načtení a ukládání. Je-li objekt v paměti, je mu přidělena znovu použitelná hodnota oref používaná pro přístup k datům objektu. Bude-li později do paměti načten stejný databázový objekt, bude mu pravděpodobně přiřazena odlišná hodnota oref.
34
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 38
HTML a přístup pomocí SQL Do kódu jazyka Caché ObjectScript je možno vkládat příkazy jazyka HTML, používaného v aplikacích pro webové prostředí, a příkazy jazyka SQL.
Volání kódu V některých objektových jazycích musí být veškerý kód součástí některé z metod. Jazyk Caché ObjectScript nemá takové omezení. Kód může být volán přímo nebo pomocí objektu syntaxe. Kód je často volán příkazem DO. do rotate(a,3) Kód, který vrací hodnotu, se nazývá funkce. Např.: set x=a+$$insert(3,y) volá proceduru nebo subrutinu „insert“ napsanou programátorem. Kód může být také vyvolán jako metoda objektu set penize=faktura.Celkem()
// Celkem() vrací celkovou částku za fakturu
do objcis.Prirustek()
// Případná návratová hodnota metody // je ignorována
Parametry je možno volat jak hodnotou, tak i odkazem.
35
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 39
Rutiny Kód jazyka Caché ObjectScript je uspořádán do sady rutin. Každá z rutin (o velikosti až 32 kB) je samostatnou jednotkou v tom smyslu, že může být nezávisle upravována, uložena a kompilována. Rutiny jsou dynamicky spojovány za běhu programu. Programátor tak nemusí spojování zajišťovat. Kód rutiny je uložen v databázi, rutiny jsou proto dynamicky přístupné v celé síti a není nutno je instalovat na každém počítači. V rutině je kód uspořádán jako sada procedur nebo subrutin. (Metoda objektu je procedura, ale přistupuje se k ní prostřednictvím jiné syntaxe.) Pro vyvolání kódu v rámci téže rutiny stačí název procedury nebo subrutiny. V ostatních případech k němu musí být připojen název rutiny. do prevod()
// volá subrutinu 'prevod' ve stejné rutině
do celkem^faktura() // volá subrutinu 'celkem' v rutině 'faktura' Procedura nebo subrutina, která má významnou návratovou hodnotu, by měla být volána pomocí syntaxe funkce „$$“. set x=$$celkem^faktura()
// volá stejnou proceduru 'celkem' ale používá návratovou hodnotu
Rutiny je možno upravovat a kompilovat pomocí nástroje Caché Studio.
36
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 40
Metody objektů Definice tříd a kód jejich metod jsou uloženy v souborech globálních dat a kompilátor tříd zkompiluje každou třídu do jedné nebo více rutin. Každá metoda je procedurou v nějaké rutině, i když může být vyvolána pouze pomocí objektové syntaxe. Definuje-li např. třída Pacient metodu Prijem a proměnná Pac identifikuje určitý objekt třídy Pacient, pak voláme pro tento objekt metodu Prijem s následující syntaxí: do Prijem()
// volání metody příjmu pro objekt Pacient
set x = Pac.Prijem()
// volá stejnou metodu, ale používá návratovou hodnotu
Procedury a veřejné či privátní proměnné Procedura je blok kódu v rámci rutiny, který je podobný funkci v ostatních jazycích. Procedura obsahuje název, seznam formálních parametrů, seznam veřejných proměnných a blok kódu vymezený znaky “{}”. Např.: Prijem(x,y)[jmeno,cislozaznamu]
{ ...zde následuje kód}
V jazyce Caché ObjectScript jsou některé proměnné veřejné (společné) a jiné soukromé pro určitou proceduru. Každá proměnná, která je použita v rámci procedury, je považována pro tuto proceduru za privátní, pokud není uvedena v seznamu veřejných proměnných. Ve výše uvedeném příkladu 'jmeno' a 'cislozaznamu' přistupují k veřejným proměnným s těmito názvy, zatímco všechny ostatní proměnné existují pouze pro toto volání procedury. Názvy proměnných začínající znakem '%' jsou vždy implicitně veřejné. Procedury nemohou být vnořené, i když procedura může obsahovat subrutiny.
Subrutiny Rutiny mohou také obsahovat subrutiny, což jsou moduly poněkud „lehčího kalibru“ než procedury. Subrutina může obsahovat seznam parametrů a může vracet hodnotu, ale nemá seznam veřejných proměnných ani formální blokovou strukturu. Subrutiny mohou být vloženy do procedur nebo být v rutině na stejné úrovni jako procedura. Subrutiny připouštějí volání kódu, který používá stejné veřejné a privátní proměnné jako volající modul, a mohou být volány rychleji. Subrutina vložená do procedury používá stejný obor platnosti proměnné jako procedura a může být volána pouze z této procedury. Odkazy na proměnné v subrutině, která není součástí procedury, se vždy vztahují k veřejným proměnným.
37
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 41
JAZYK BASIC Jazyk Basic je pravděpodobně nejznámějším aplikačním programovacím jazykem na světě. V systému Caché byl jazyk Basic doplněn o podporu přímého přístupu k datovým strukturám jádra datového serveru (vícerozměrná pole) a o další funkce aplikačního serveru Caché. Použití syntaxe jazyka Visual Basic přímo podporuje objektový model Caché a pracuje ve virtuálním stroji Caché.
Jazyk Basic může být použit pro psaní metod tříd nebo rutin Caché (viz popis rutin jazyka Caché ObjectScript). Kód napsaný v jazyce Basic může volat kód v jazyce Caché ObjectScript a naopak. Oběma jazyky lze přistupovat ke stejným proměnným, polím a objektům v paměti procesu.
Možnosti polí byly rozšířeny, takže pole jsou nyní daleko výkonnějším instrumentem: I Znak “^” před názvem pole označuje odkaz na vícerozměrné pole databáze, což je trvalé pole sdílené s dalšími procesy. I Indexy mohou být libovolného typu: řetězce, celá čísla, desetinná čísla atd. I Data je možné ukládat do téhož pole na více úrovních indexování, např. je možné data uložit do A("barvy") a A("barvy",3). I Pole není nutné deklarovat a jsou vždy řídká, systém Caché rezervuje místo pouze při vkládání uzlů. I Funkce Traverse umožňuje identifikaci dalšího (nebo předchozího) indexu na dané úrovni indexů. Další rozšíření: I Příkazy, které zpracovávají transakce: spuštění transakce, její předání a vrácení transakce zpět (Start, Commit a Rollback) I Funkce atomického přírůstku, kterou lze na databázi použít I Rozšíření, která lépe integrují možnosti aplikačního serveru Caché
38
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 42
Přístup k objektům prostřednictvím jazyka Basic V systému Caché jsou třídy organizovány do balíčků a název třídy zahrnuje název balíčku následovaný tečkou. Příklad: Mzdy.Osoba znamená třídu Osoba balíčku Mzdy. Objekt vytvoříte pomocí příkazu New jazyka Basic. osoba = New Mzdy.Osoba()
// vytvoří nový objekt Osoba
Jazyk Basic byl rozšířen o příkaz OpenID pro přístup k existujícímu objektu: osoba = OpenID Mzdy.Osoba(54)
// otevře objekt Osoba s ID objektu 54
Následují příklady kódu, který přistupuje k vlastnostem objektu Osoba: osoba.Jmeno = "Novák, Jan"
// určuje jméno osoby
osoba.Bydliste.Mesto
// určuje město, kde osoba bydlí
osoba.Zamestnavatel.Jmeno // načte objekt zaměstnavatele osoby // do paměti a přistupuje ke jménu zaměstnavatele Databázové třídy lze uložit na disk pomocí metody Save. Např.: osoba.Save() uloží objekt Osoba, a pokud je objekt ukládán poprvé, vytvoří ID objektu. Pokud byly změněny i související objekty (např. objekt Zamestnavatel), jsou rovněž automaticky uloženy.
39
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 43
JAZYK MVBASIC Jazyk MVBasic je variantou jazyka Basic a je dalším skriptovacím jazykem nabízeným v systému Caché. Je určen pro spouštění aplikací psaných pro MultiValue (Pick) systémy, a proto podporuje další vlastnosti, včetně možností pro zpřístupnění a manipulaci s MultiValue soubory. Jazyk MVBasic může být použit pro psaní metod tříd nebo rutin Caché (viz popis rutin jazyka Caché ObjectScript). Kód napsaný v jazyce MVBasic může volat kód v jazyce Caché ObjectScript a naopak. Všemi třemi jazyky lze přistupovat ke stejným proměnným, polím a objektům v paměti procesu. Caché MVBasic má stejná rozšíření jako Caché Basic, včetně objektového přístupu. Kvůli možné dvojznačnosti je však v odkazech na objekty použita místo oddělovacího znaku tečka ‘.’ dvouznaková posloupnost “->”.
C++ Každou třídu jazyka Caché lze projektovat jako třídu jazyka C++ s metodami, které odpovídají každé vlastnosti a metodě třídy jazyka Caché. Pro programy v jazyce C++ pak tyto třídy vypadají jako všechny ostatní lokální třídy jazyka C++ a systém Caché automaticky zajistí veškerou komunikaci mezi klientem a serverem. Vlastnosti třídy jsou uloženy do vyrovnávací paměti klienta a volání metod jazyka C++ volají odpovídající metody na straně serveru včetně metod pro uložení objektu do databáze a jeho pozdějšího načtení.
JAVA Java patří mezi oblíbené programovací jazyky, ale připojení
Java Supported Several Ways
aplikací vytvořených v jazyce Java k databázi může být často náročné. Připojení k relační databázi vyžaduje rozsáhlé kódování v jazyce SQL, což je časově velice náročné a oslabuje
EJB
mnohé z výhod objektové technologie jazyka Java. Přístup Caché – přímé ukládání objektů bez nutnosti starat se o to, jak budou data uložena, a použití objektové syntaxe pro přístup k persistentním objektům – je jednodušší, a zpravidla preferovaný. Někteří vývojáři chtějí pracovat pouze s „klasickými javovskými objekty“ (POJO), zatímco jiní upřednostňují Enterprise Java Beans (EJB). Jsou i takoví vývojáři, kteří chtějí nejprve nadefinovat schéma databáze a pak pro každou databázovou třídu automaticky vygenerovat odpovídající třídu v jazyce Java, zatímco jiní raději nejprve vytvoří třídy v jazyce Java a nechají systém Caché automaticky vygenerovat schéma databáze. Systém Caché podporuje všechny tyto přístupy:
I Každou třídu Caché lze vystavit jako třídu jazyka Java, takže k vlastnostem a metodám lze přistupovat jako k objektům jazyka Java.
I Třídy Caché lze také vystavit jako kontejnery EJB (Enterprise Java Beans). I Rozhraní JDBC poskytuje vysoce výkonný SQL přístup pomocí ovladače založeného zcela na technologii Java (Typ 4).
I Technologie InterSystems Jalapeño vytváří třídy systému Caché z popisů tříd POJO. 40
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 44
Přístup k objektům prostřednictvím projekcí tříd Každou třídu Caché lze vystavit jako třídu Java (nebo EJB) s metodami, které odpovídají každé vlastnosti a metodě této třídy Caché. V programech Javy tyto třídy vypadají jako všechny ostatní lokální třídy jazyka Java. Generovaná třída jazyka Java používá knihovnu jazyka Java dodávanou společností InterSystems, která zajistí veškerou komunikaci mezi klientem a serverem.
VÝHODY SYSTÉMU CACHÉ Flexibilita: Vývojáři, kteří pracují v jazyce Java, mohou k objektům Caché přistupovat různým způsobem: Buď mohou používat jazyk SQL a rozhraní JDBC, nebo mohou (což je
Stav každého objektu Caché je udržován na aplikačním serveru Caché, i když vlastnosti třídy jsou pro optimalizaci výkonu také ukládány do vyrovnávací paměti klienta. Volání metod jazyka Java vyvolávají odpovídající metody na aplikačním serveru Caché včetně metod pro uložení objektu do databáze a jeho pozdějšího načtení. Klientovi je zřejmé, který datový server Caché obsahuje data, dokonce i tehdy, jsou-li data objektu uložena v relační databázi, ke které se přistupuje prostřednictvím aplikačního serveru Caché.
přirozenější) projektovat objekty jako třídy Java nebo Enterprise Java Beans. Technologie Jalapeño umožňuje vývojářům pracovat v jejich oblíbeném vývojovém prostředí Javy a nechat na systému Caché, aby automaticky zajistil metody pro ukládání a získávání
Metody Caché napsané v Javě
objektů databáze. Bez toho, aby se to nějak dotklo již navržených tříd.
Metody tříd Caché lze napsat v jazyce Java pomocí nástroje Caché Studio. Na rozdíl od jazyků Caché ObjectScript a Basic nejsou však metody jazyka Java prováděny virtuálním strojem Caché. Jsou zahrnuty do vygenerované třídy Java a prováděny v libovolném virtuálním stroji Java. Takový kód je přístupný pouze z metod jazyka Java.
Vysoký výkon: Všechny aplikace vytvořené v jazyce Java, bez ohledu na to, jak jsou k systému Caché připojeny, těží z vynikající výkonnosti a rozšiřitelnosti systému
Poskytování persistence aplikacím J2EE Vývojáři aplikací J2EE, kteří používají architekturu EJB (Enterprise Java Beans), pracují primárně s objekty, dokud nepotřebují přístup k databázi. Potom jsou obvykle donuceni vrátit se k používání jazyka SQL. Systém Caché může takovým aplikacím poskytovat extrémně rychlou odezvu na požadavky SQL prostřednictvím rozhraní JDBC. Přístup pomocí jazyka SQL však není obecně preferovanou metodou.
Caché.
Přirozená kompatibilita s platformou J2EE znamená rychlejší vývoj: Třídy Caché lze snadno projektovat jako EJB, což poskytuje vývojářům v jazyce J2EE jednoduchý způsob připojení
Objektové databáze představují pro programátory pracující s architekturou EJB přirozenější přístupovou techniku. Caché projektuje třídy Caché jako třídy EJB, přičemž automaticky generuje vysoce výkonné persistentní metody pro technologii BMP (Bean-Managed Persistence). Tím zabrání nadměrné režii při použití jazyka SQL a při objektově-relačním mapování. Výsledkem je vyšší rozšiřitelnost pro aplikace J2EE.
k postrelační databázi Caché. Při projektování třídy Caché pomocí technologie Bean-Managed Persistence systém Caché automaticky vygeneruje metodu používanou v architektuře EJB pro přístup k databázi Caché. Protože
Se stejnými výhodami je možné použít v aplikacích J2EE také technologii InterSystems Jalapeño.
vývojáři již nemusejí ručně psát persistentní metody, aplikace mohou být vytvářeny mnohem rychleji.
41
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 45
Jalapeño umožňuje vývoj v Javě Místo aby se začínalo třídami Caché a jejich vystavením jako komponent jazyku Java, pracuje technologie InterSystems Jalapeño naopak. Dovoluje vývojářům pracujícím v jazyce Java, aby nadefinovali třídy objektů ve svém libovolném oblíbeném vývojovém prostředí Javy a automaticky uložili tyto třídy do systému Caché. Třídy vytvořené v Javě se nemění – Caché poskytuje pro tyto třídy knihovnu s aplikačním rozhraním (API), které se používá pro ukládání a získávání objektů a zadávání dotazů.
CACHÉ A JALAPEÑO Vývojáři v Javě, kteří chtějí vytvářet nové databázové aplikace, musejí dnes čelit několika problémům. Obvykle ukládají svoje data do standardní relační databáze pomocí SQL. Při tomto postupu se musejí mapovat objekty v Javě do relačních struktur a psát dlouhé a složité SQL dotazy pro přístup k těmto datům. Tím vším se zvětšuje celkový čas na vývoj aplikace. Místo toho může vývojář použít objektovou databázi, která však často nedokáže podporovat SQL a na SQL založené generátory sestav. A pro práci s ní bývají často také zapotřebí definice schématu databáze. Jalapeño (JAva LAnguage PErsistence with NO mapping) je technologie společnosti InterSystems, která umožňuje vývojářům v Javě zajistit persistenci objektů v robustní objektové databázi Caché pomocí objektového přístupu a současně poskytuje také výkonný SQL přístup k těmto datům. Objekty jsou ukládány do databáze jako skutečné objekty s vlastnostmi, vztahy atd. (tj. nejen jejich serializovaný stav). Přesto není zapotřebí objektově-relační mapování. Pomocí Jalapeña mohou vývojáři v Javě vytvářet databázové třídy stejným způsobem jako libovolné jiné třídy POJO ve svém oblíbeném vývojovém prostředí Javy. Vývojáři pak označí, které třídy má Jalapeño považovat za databázové – obvykle pomocí pluginu do vývojového prostředí, který poskytuje knihovna Jalapeño Persistence Library. Jalapeño zanalyzuje třídy, vytvoří automaticky odpovídající objektové (a SQL) schéma databáze a generuje veškerou provozní podporu pro ukládání a získávání objektů. Vývojářem vytvořená třída POJO se nemění a vývojář ji může dále upravovat. Aplikace za běhu přistupuje obvyklým způsobem k vlastnostem a metodám objektů POJO. Pro ukládání a získávání databázových objektů používá aplikace několik aplikačních rozhraní (API) třídy „ObjectManager“. Třída ObjectManager umožňuje spojení s databází, podporuje SQL dotazy a poskytuje transakční sémantiku, např. spuštění transakce (start), předání (commit) a vrácení zpět (rollback). Jednoduchý popis třídy, obsahující seznam vlastností a jejich typ, není sám o sobě dostatečně bohatý, aby popsal vše, co bychom mohli po databázi chtít. Přinejmenším je zapotřebí specifikovat, jakou vlastnost obsahuje ID objektu, a určit indexy kvůli zvýšení efektivity dotazování. Tyto a další databázové specifikace mohou vývojáři doplnit tak, že přidají standardní anotace Javy ke svým zdrojovým souborům v Javě. Jalapeño podporuje také „evoluci schématu“, při které může vývojář pokračovat ve změnách třídy, včetně přidávání nových vlastností nebo změn definic vlastností. Definice schématu se adaptuje bez jakéhokoli narušení již zadaných dat a výsledkem je přirozený postupný proces vývoje aplikace. 42
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 46
Ačkoli Jalapeño pracuje nejlépe při použití se systémem Caché, může také své databázové schéma exportovat do odpovídajícího relačního schématu pomocí standardního DDL (Data Definition Language). Proto, i když byla aplikace vytvořena pro používání objektového přístupu v systému Caché, může být nasazena i na relační databázi. V takovém případě aplikační rozhraní Jalapeño ObjectManageru použije pro připojení k databázi standardní JDBC volání. Pro připojení k objektové databázi Caché je použit výkonnější objektový protokol. Knihovna Jalapeño je implementována pomocí standardního jazyka Java a poběží v libovolném prostředí Java 1.5 (nebo vyšší) JVM nebo J2EE Application Server. S Jalapeño se mohou vývojáři soustředit na uživatelské rozhraní a business logiku aplikace, vytvářet databázové třídy stejným způsobem jako jiné třídy a nechat na systému Caché, aby se postaral o zbytek. V následujícím příkladu je získán objekt Customer, jeho telefonní číslo je změněno metodou „set“, databáze je aktualizována a objekt v paměti je uzavřen:
Customer customer = (Customer) objectManager.openById(Customer.class, customerId); customer.setPhoneNumber("16176210600"); objectManager.update(customer, true); objectManager.close();
VÝHODY SYSTÉMU CACHÉ Rychlý přirozený vývoj bez objektově-relačního mapování: Jalapeño používá analýzu tříd POJO pro automatické vytvoření objektového databázového schématu. Data jsou uložena jako objekty a automaticky se vytváří také SQL reprezentace těchto dat. Není třeba dělat objektově-relační mapování, což celý vývoj velmi urychluje.
Snadné persistence POJO: V rámci aplikace mohou vývojáři přistupovat k databázovým třídám stejně jako k jakékoli jiné třídě. Jalapeño generuje veškerý kód pro ukládání a získávání objektů z databáze pomocí runtime aplikačního rozhraní (API).
SQL přístup: Všechny objekty v databázi jsou automaticky dostupné pomocí SQL pomocí Jalapeña JDBC API – a to i v případě, že vývojář neprovedl žádné objektově-relační mapování.
Nezávislost na databázi a platformě: Systém Caché je dostupný na každé významnější platformě. Přestože Jalapeño pracuje nejlépe při použití spolu s Caché, může také exportovat svoje databázové schéma do odpovídajícího relačního schématu pomocí standardního DDL. Proto, i když byla aplikace vytvořena pro používání objektového přístupu v systému Caché, může být nasazena i na relační databázi.
43
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 47
CACHÉ A .NET VÝHODY SYSTÉMU CACHÉ Rychlá práce s daty: Webové aplikace, které používají systém Caché jako datový server, těží z vysokého výkonu a široké
Pro svůj otevřený a flexibilní přístup k datům spolupracuje systém Caché bez problémů s platformou .NET. Systém Caché a platformu .NET lze propojit mnoha způsoby, např. pomocí objektů, jazyků SQL a XML či protokolu SOAP. Vývojáři mohou vytvářet aplikace pomocí svých oblíbených technologií, vždy ale budou těžit z vyšší výkonnosti a rozšiřitelnosti systému Caché.
rozšiřitelnosti poskytované strojem vícerozměrných dat Caché.
Rychlejší vývoj na platformě .NET: Vývojáři jsou produktivnější, když pracují se svými obvyklými nástroji ve vývojových prostředích, jež dobře znají. Díky SQL i objektovému datovému přístupu podporuje systém Caché širokou
Technologie ADO.NET Technologie ADO.NET je nová verze technologie ADO optimalizovaná pro použití v jádru .NET framework platformy .NET. Má učinit aplikace pro platformu .NET „nezávislými na databázi“ a s databázemi komunikuje pomocí SQL. Systém Caché poskytuje nativní podporu pro ADO.NET prostřednictvím relačního přístupu k datům. Podporuje také Microsoft ODBC.NET a jen pro čtení určené SOAP připojení zabudované v ADO.NET.
škálu běžně používaných vývojových
Webové služby Webové služby lze na platformě .NET používat dvěma způsoby. První možností je odesílání dokumentů ve formátu XML prostřednictvím protokolu HTTP. Druhou možností je použití protokolu SOAP, které zjednoduší výměnu dokumentů ve formátu XML. Jelikož Caché může vystavovat data oběma způsoby, je její použití s webovými službami v platformě .NET bezproblémová.
Správa objektů v Caché Systém Caché může z tříd Caché automaticky generovat .NET sestavení (nebo zdrojový kód v C#). Plugin pro Visual Studio umožňuje vývojářům preferujícím toto prostředí snadněji přistupovat ke Caché objektům.
44
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 48
CACHÉ A XML Stejně jako je HTML značkovací jazyk pro zobrazování dat ve webovém prohlížeči, je jazyk XML značkovacím jazykem pro výměnu dat mezi aplikacemi. Při využití jazyka XML mohou nesourodé aplikace (v rámci jedné společnosti nebo v různých podnicích) sdílet data prostřednictvím sítě. Struktura dat ve formátu XML je hierarchická a vícerozměrná, čemuž stroj vícerozměrných dat Caché dobře odpovídá.
Exportování XML Jedinou podmínkou pro zajištění kompatibility třídy Caché s dokumentem XML je, že musí být zděděna od třídy %XMLAdaptor, která je součástí systému Caché. To poskytuje všechny metody potřebné pro: I Vytvoření definice DTD (Document Type Definition), nebo schématu XML pro třídu. Systém Caché vygeneruje definice DTD a schémata automaticky, ale vývojář má možnost upravit způsob formátování XML. I Automaticky formátovat data (instance třídy) jako XML, podle definice DTD nebo schématu XML
Import schématu XML Systém Caché nabízí další třídy, které poskytují metody umožňující vývojářům: I Importovat schémata XML a vytvořit automaticky odpovídající třídy Caché. I Importovat data v dokumentech ve formátu XML jako instance (objekty) tříd Caché prostřednictvím jednoduchého rozhraní API. I Analyzovat a ověřovat dokumenty ve formátu XML pomocí integrovaného analyzátoru XML (SAX).
45
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 49
CACHÉ A WEBOVÉ SLUŽBY Webové služby umožňují sdílení funkčnosti aplikace po Internetu, stejně jako v rámci nějaké organizace či systému. Webové služby mají rozhraní popsané v jazyce WSDL (Web Service Definition Language) a vracejí dokument XML formátovaný podle protokolu SOAP. Systém Caché umožňuje automatické vystavení jakékoli metody třídy, uložené procedury SQL a dotazu jako webové služby. Vygeneruje popisovač WSDL pro tuto službu, vyvolaná služba pak odešle vhodně formátovaný XML dokument. Systém Caché také urychluje vývoj aplikace tím, že automaticky vygeneruje webovou stránku, která službu otestuje, aniž by bylo nutné vytvářet klientskou aplikaci.
VÝHODY SYSTÉMU CACHÉ Snadná propojitelnost s formátem XML: Caché využívá své schopnosti vícenásobného dědění a každé třídě Caché poskytuje obousměrné rozhraní na formát XML. Výsledek: Třídy Caché lze snadno a rychle převést na dokumenty a schémata formátu XML. Podobně schémata a dokumenty formátu XML lze převést na definice a objekty tříd Caché.
Rychlý vývoj rychlejších aplikací na bázi XML: Protože přirozené struktury vícerozměrných dat Caché dobře odpovídají dokumentům ve formátu XML, vývojáři nemusejí ručně kódovat „mapu“, která by překládala mezi formátem XML a databází Caché. Tyto aplikace jsou navíc rychlejší díky menší režii zpracování.
Okamžité webové služby: Každou metodu Caché lze publikovat jako webovou službu pouhými několika klepnutími myší. Systém Caché při vyvolání služby automaticky vygeneruje popisovač WSDL a odezvu podle protokolu SOAP.
46
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 50
CACHÉ A MULTIVALUE Caché obsahuje všechny prostředky potřebné pro vývoj a provozování MultiValue aplikací (nazývaných někdy Pick aplikace), zahrnující MultiValue: I jazyk MVBasic I přístup k souborům I dotazovací jazyk I datový slovník I procedury I command shell Funkčnost MultiValue je poskytována jako integrální součást Caché – nikoli jako samostatná implementace MultiValue – využívá výkonný stroj vícerozměrné databáze Caché, běhové funkce a vývojové technologie. To znamená, že uživatelé MultiValue aplikací mohou plně těžit ze všech schopností Caché.
Přístup k MultiValue souboru MultiValue aplikace obvykle zacházejí s databází jako se sadou souborů, ke kterým se přistupuje prostřednictvím záznamových operací Read a Write a pomocí MultiValue dotazů. V systému Caché je každý MultiValue soubor uložen jako vícerozměrná „globální“ struktura, kde je každý záznam jedním globálním uzlem. Tyto funkce využívají schopnosti Caché ukládat více datových prvků do jednoho globálního uzlu. Např. MultiValue soubor, který uchovává faktury, může mít následující strukturu: Č. faktury
ID položky
Zákazník
Atribut 1
Datum vystavení
Atribut 2
Části
Atribut 3 (MultiValue)
Množství
Atribut 4 (MultiValue)
Ceny
Atribut 5 (MultiValue)
…
…
Systém Caché bude interně reprezentovat tento MultiValue soubor jako ekvivalentní vícerozměrnou strukturu globálu: ^Faktura(č. faktury) = Zákazník ^ Datum vystavení ^ Část1 ] Část2 ^ Množství1 ] Množství2 ^ Cena1 ] Cena2 kde ‘^’ indikuje oddělovač normálních atributů (ASCII 254), a ‘]’ indikuje oddělovač subatributů (ASCII 253). MultiValue programy mohou přistupovat k MultiValue souborům prostřednictvím normálních příkazů READ/WRITE a MultiValue dotazů. Tyto soubory jsou přístupné také pomocí jazyka MVBasic a dalších jazyků přes všechny běžné mechanizmy Caché, jež zahrnují objektový přístup, přímý přístup k vícerozměrným polím a SQL. MultiValue soubory mohou být indexovány mnoha typy indexů (včetně indexování bitovými mapami) s různými způsoby řazení. 47
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 51
MultiValue dotazovací jazyk MultiValue dotazovací jazyk poskytuje funkce výběru dat i formátování sestav pro práci se soubory MultiValue. Dotazovací jazyk může být použit v rámci MVBasicu, na příkazové řádce a v procedurách. Systém Caché převádí dotazy MultiValue na dotazy Caché SQL s dodatečným kódem pro podporu korelací, formátování sestav a různých dalších funkcí. Protože tyto dotazy využívají velmi výkonný stroj Caché SQL, zvyšuje se spolehlivost, je optimalizováno zpracování a lze použít sofistikovanou sadu možností indexování. V případě potřeby mohou vývojáři v MultiValue samozřejmě použít také přímo Caché SQL.
MultiValue datový slovník MultiValue soubor může mít příslušný popis souboru v datovém slovníku MultiValue, který je přímo editovatelný pomocí kódu v jazyce MVBasic nebo tradičním editoru MultiValue „ED“. Datový slovník MultiValue je používán dotazovacím jazykem MultiValue. MultiValue soubor může mít také odpovídající definici Caché třídy. Definice třídy je potřebná, pokud mají být data dostupná pro objektový nebo SQL přístup (není však potřebná pro použití MultiValue dotazovacího jazyka). Definice třídy je vyžadována také v případě, je-li soubor indexován. Při importování starších MultiValue aplikací mohou být definice Caché tříd automaticky vytvořeny z MultiValue slovníku. Pokud je požadován SQL nebo objektový přístup, je pro smysluplnější definici potřeba výslednou třídu editovat. Průvodce v Caché Studiu pomáhá automatizovat vytváření tříd z MV slovníků a později zajišťuje také mapování. Implicitně jsou tyto třídy nastaveny jako typ Read-Only (takže data lze jen číst, ale nelze je pomocí objektového nebo SQL přístupu aktualizovat) a editují se odděleně od MV slovníku. Při vytváření nového MultiValue souboru se doporučuje vytvořit nejprve Caché třídu, která dědí ze supertřídy MVAdaptor. To vede k použití MultiValue kompatibilního souborového formátu pro uložení dat a k automatickému vytvoření popisu souboru v MultiValue datovém slovníku. Data souboru pak budou dostupná a aktualizovatelná všemi přístupovými cestami systému Caché, jež zahrnují objektový i SQL přístup a přímý přístup k vícerozměrným globálům. Nadále bude vývojář zpravidla editovat pouze definici třídy, a ne MultiValue slovník, jelikož editace třídy se do tohoto slovníku automaticky promítá.
48
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 52
MultiValue a objekty MVBasic byl rozšířen tak, aby mohl používat objekty stejně jako Basic s výjimkou použití ‘->’ místo tečky pro objektovou syntaxi. Je možné použít každou třídu ve slovníku tříd bez ohledu na použitý jazyk v metodách třídy. Zde je několik ukázek kódu, kde se pracuje s objektem „osoba“: osoba->Jmeno = "Novák, Jan"
// určuje jméno osoby
osoba->Bydliste->Mesto
// určuje město, kde osoba bydlí
osoba->Zamestnavatel->Jmeno
// načte objekt zaměstnavatele osoby // do paměti a přistupuje ke jménu zaměstnavatele
osoba->Save()
// uloží osobu na disk
Příkazová řádka MultiValue Příkazová řádka MultiValue může být spuštěna z terminálového prostředí. Kromě obvyklých možností, které MultiValue shell nabízí, dovoluje systém Caché provádět také příkazy jazyka MVBasic. Např.: :; DIM A(34) :; FOR I = 1 TO 34 ; A(I) = I; NEXT :; FOR I = 1 TO 34 ; CRT A(I):” “: ; NEXT dává výsledek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
VÝHODY SYSTÉMU CACHÉ Nový život pro staré aplikace: Systém Caché usnadňuje modernizaci starších MultiValue aplikací pomocí webového rozhraní, objektového přístupu, robustního SQL a webových služeb. MultiValue aplikace mohou žít dál v prostředí pokročilé databáze, jež se výborně uplatňuje v náročných provozech a neustále se vyvíjí.
Rychlé vytváření nových aplikací: Jelikož je MultiValue technologie implementována jako jazyk a přístup k souborům v systému Caché, je možné využít všechny přirozené schopnosti Caché a rychle vytvářet nové funkce. Programátoři používající MultiValue mohou začít těžit z výhod objektového programování, snadno komunikovat s jinými aplikacemi a přitom stále používat jazyk MVBasic.
Vysoký výkon, rozšiřitelnost a výjimečná spolehlivost pro uživatele MultiValue: Caché poskytuje uživatelům MultiValue výrazně vyšší výkon a rozšiřitelnost. Systém Caché je navíc používán v náročných nepřetržitých provozech, např. v nemocnicích, kde jsou nepřípustné jakékoli výpadky. Caché dále nabízí důmyslné žurnálování, transakční zpracování, odolnou databázi a konfigurace zabezpečené proti výpadkům. 49
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 53
Kapitola 4: Rychlé vytváření rychlých webových aplikací pomocí technologie Caché Server Pages V názvu kapitoly je dvakrát použito slovo rychlé. Technologie CSP totiž umožňuje vytvářet složité databázově orientované webové aplikace mnohem rychleji než tradičními prostředky. Integrovaná databáze Caché je navíc nejrychlejší na světě a umožňuje provozování systémů s desítkami tisíc současných uživatelů. Systém Caché umožňuje psaní webových aplikací mnoha různými způsoby, včetně tradičního přístupu k databázi pomocí jazyka SQL. V této kapitole se seznámíme s jiným, mnohem přímočařejším přístupem, zvaným technologie CSP (Caché Server Pages). Technologie CSP je součástí aplikačního serveru Caché. Představuje nejrychlejší způsob, jakým mohou aplikace založené na databázi Caché spolupracovat s webem, přičemž zajišťuje: I progresivní přístup k objektově orientovanému programování, I mimořádně vysoký výkon a rozšiřitelnost při běhu aplikací, I vývoj s využitím komponent aplikačního rámce ZEN. Technologie CSP podporuje jazyky HTML, XML a ostatní webově orientované jazyky se značkami. Není nástrojem pro návrh webů, i když ji lze ve spojení s těmito nástroji použít. Zatímco nástroje pro návrh webů jsou často zaměřeny pouze na vytváření statického kódu HTML, CSP nezůstává pouze u vzhledu stránek, ale pomáhá i při vývoji logiky aplikace. Poskytuje také provozní prostředí, které umožňuje rychlé provádění kódu aplikačním serverem Caché. Technologie CSP navíc podporuje silné procedurální programování, takže aplikace lze napsat na vyšší úrovni propracovanosti a přesnosti, než jakou lze docílit pomocí technologií pro pouhé generování aplikací. Použitá architektura tříd urychluje vývoj aplikací tím, že vytváří „stavební bloky“ kódu, které je možno kombinovat. Pomocí průvodců je pak možno rychle generovat jednoduché verze přizpůsobitelného kódu. Výsledkem je možnost rychlého vývoje velmi propracovaných webových aplikací.
VÝHODY SYSTÉMU CACHÉ Objektově orientované procedurální programování ve spojení s průvodci Caché umožňuje rychlý vývoj složitých databázových aplikací, které používají jako klienta prohlížeč.
50
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 54
Některé charakteristiky technologie Caché Server Pages: I Dynamické stránky serveru – Protože jsou stránky na aplikačním serveru vytvářeny dynamicky kódem aplikace (a ne tradičním způsobem, kdy webový server vrací statické stránky ve formátu HTML), mohou aplikace rychle odpovídat na nejrůznější požadavky a přizpůsobovat výsledné stránky zasílané zpět do prohlížeče. I Model relace – Veškeré zpracování související se stránkami z jednoho prohlížeče, od prvního požadavku prohlížeče až do ukončení aplikace nebo vypršení časového limitu, je považováno za součást relace. I Uchování stavu serveru – Automatické uchování dat aplikace na serveru (a dokonce celého kontextu aplikace) v rámci relace po celou dobu požadavků prohlížeče usnadňuje vývoj a provozování složitých aplikací. I Objektová architektura – Protože každá stránka odpovídá určité třídě, lze s využitím dědičnosti do stránek snadno začlenit kód a ostatní charakteristiky společné mnoha stránkám. Odkazy na data jsou také řešeny pomocí objektů s využitím všech výhod, které s sebou objektově orientované programování přináší. I XML – Pro vytváření webových stránek je XML výkonnou alternativou k jazyku HTML. CSP pracuje s XML stejně jako s HTML. Programátor tak může zadávat HTML prostřednictvím XML místo metody Page(). I Aplikační značky Caché pro automatické generování kódu serverové aplikace – Tyto rozšířené značky se používají stejně snadno jako tradiční značky jazyka HTML. Jsou-li vloženy do dokumentu ve formátu HTML, generují propracovaný kód aplikace, který zajišťuje širokou škálu funkcí, např. otevírání objektů, spouštění dotazů a řízení běhu programu. Tyto značky jsou rozšiřitelné, čili vývojáři mohou podle potřeby vytvářet značky vlastní. I Vývoj s využitím komponent – S knihovnou ZEN mohou vývojáři vytvářet stránky s využitím komponentového modelu. Ten pro dosažení vyšší interaktivity, vizuální propracovanosti a konzistentnějšího uživatelského rozhraní používá rozsáhlé sady předem sestavených objektových komponent. I Integrace s oblíbenými nástroji pro návrh webů – Technologie CSP spolupracuje s mnoha nástroji, které umožňují snadno navrhnout rozvržení stránky s okamžitou vizuální kontrolou jejího vzhledu. Technologie CSP tento komfort při návrhu stránek ještě dále zvyšuje. Nástrojem Dreamweaver lze jednoduchým způsobem (stačí jen ukázat a klepnout) přidat do kódu aplikační značky Caché. Součástí technologie CSP je i průvodce, který usnadňuje vytváření formulářů pro zobrazování a upravování dat databáze Caché. I Metody serveru, které lze volat z prohlížeče – Technologie CSP umožňuje snadné volání metod na straně serveru a usnadňuje tak vývoj dynamičtějších interaktivních aplikací. Nastane-li v prohlížeči nějaká událost (obvykle proto, že uživatel provedl nějakou akci), může být na serveru spuštěn kód aplikace a vygenerována odpověď na tuto událost, to vše bez režie potřebné k přenášení a zobrazování celé nové stránky. I Šifrování – Systém Caché šifruje automaticky data v adrese URL, což pomáhá při ověřování požadavků a brání nežádoucí manipulaci. Šifrovací klíč je uchováván pouze na serveru a je platný pouze pro danou relaci. Je to sice hodně technologie, ale její použití nemusí být obtížné. Zaměřili jsme se na usnadnění použití technologie CSP, takže většina jejích funkcí je prováděna automaticky. Naším heslem je „jednoduchostí k vyššímu výkonu“, složitost tedy má být v naší implementaci, ne ve vašem programování.
51
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 55
MODEL CSP (CACHÉ SERVER PAGE) Tradiční webové technologie Při použití tradiční webové technologie je na webový server odeslán požadavek a server načte sekvenční soubor v kódu HTML, který odešle zpět prohlížeči. Pokud aplikace pracují s proměnnými daty, stává se vývoj komplikovanějším. Programátoři pak obvykle používají na webovém serveru skripty CGI (např. v jazycích Perl nebo Tcl) a posílají do databáze dotazy a požadavky na uložené procedury v jazyce SQL. Takové programové prostředí má daleko k dokonalosti. Provádění programů (zejména při velkém počtu uživatelů) může být značně neefektivní, protože webový server bývá značně přetížen. Každý požadavek prohlížeče obvykle vytváří při použití skriptů CGI nový proces. Programátoři někdy propojují kód aplikace přímo s webovým serverem, aby předešli zvýšení režie. Nepříjemným vedlejším účinkem pak může být zhroucení celého webového serveru způsobené chybou v tomto kódu.
Dynamické stránky serveru Technologie CSP používá zcela jiný přístup k programovaní a k vykonávání programů, a sice technologii dynamických stránek serveru (Dynamic Server Page). Obsah (soubory ve formátu HTML a XML, šablony stylů, obrázky a další typy) se nenačítá ze sekvenčních souborů, ale generuje se programově během zpracování na aplikačním serveru Caché, což umožňuje daleko větší flexibilitu při odezvách na požadavky stránek. Většina kódu aplikace se provádí v aplikačním serveru Caché, který může, ale nemusí být spuštěn na stejném počítači jako webový server. Některý kód (typickým příkladem je kód v jazycích JavaScript nebo Java) může být spuštěn v prohlížeči. Obvykle se jedná o kód podporující např. operace ověřování dat, formátování nebo spouštění kódu na straně serveru. Při tomto přístupu nemusejí být procesy vytvářeny pro každý požadavek prohlížeče (na rozdíl od tradičního přístupu s využitím skriptů CGI), což výrazně zvyšuje výkonnost. Protože kód aplikace není propojen s webovým serverem, chyba aplikace nemůže způsobit zhroucení webového serveru.
Relace – model zpracování Veškeré zpracování týkající se stránek z jednoho prohlížeče, od prvního požadavku prohlížeče až do ukončení aplikace nebo vypršení časového limitu, je považováno za součást relace. Když webový server dostane požadavek na stránku (adresu URL) s příponou souboru .CSP, je tento požadavek zaslán (tenkou vrstvou kódu systému Caché propojeného s webovým serverem) příslušnému aplikačnímu serveru Caché, který může být spuštěn na jiném počítači. Po přijetí požadavku aplikační server Caché zjistí, zda pro daný prohlížeč již probíhá relace. Pokud ne, automaticky ji spustí. Systém Caché pak provede kód aplikace spojený s touto konkrétní stránkou, přičemž provádí akce požadované uživatelem a programově vytváří soubory ve formátu HTML a XML, obrázky nebo jiný obsah, který je odesílán zpět do prohlížeče. Relace skončí, když je v objektu Session nastavena vlastnost ukončující relaci. Aplikace, které při běhu 52
neuchovávají stavové informace, patrně ukončí relaci na každé stránce.
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 56
Uchování stavu Jedním z problémů, se kterými se musejí vývojáři vyrovnat, je jedna neodmyslitelná vlastnost webu, totiž že obvykle neexistuje jednoduchý způsobu uchování stavových informací na serveru od jednoho požadavku ke druhému. Aplikace většinou pošlou všechny stavové informace, které potřebují uchovat, do prohlížeče buď v adresách URL, nebo skrytých polích formulářů. Tato technika není efektivní pro složitější aplikace, které pak mohou problém řešit dočasným ukládáním dat do souborů nebo databází. To bohužel způsobuje významné zvýšení režie serveru a značně ztěžuje programování.
VÝHODY SYSTÉMU CACHÉ Díky automatickému uchovávání stavových informací na serveru se snižuje provoz v síti i režie serveru, protože aplikace nemusí při každém požadavku na stránku neustále registrovat data a přistupovat k nim. Programování aplikace je také
Model relace systému Caché umožňuje systému Caché automaticky a efektivně uchovat data mezi jednotlivými voláními z prohlížeče. Součástí technologie CSP je objekt Session (relace), který obsahuje obecné informace o relaci včetně vlastností, které programátorovi umožňují ovlivňovat různé charakteristiky relace. Do objektu Session může aplikace uložit svá vlastní data, která jsou automaticky uchována od jednoho požadavku do dalšího.
jednodušší. Použití dynamických stránek serveru a aplikačního serveru Caché má za následek vyšší flexibilitu při odezvách na požadavky, rychlejší běh aplikace bez rizika chyb vedoucích ke
Nastavením vlastnosti Preserve (uchovat) objektu Session na hodnotu 0 nebo 1 aplikace určuje rozsah uchovávaných stavových informací. (Výchozí hodnota je 0 a během
zhroucení webového serveru a bohatší programovací prostředí.
zpracování je možno ji dynamicky měnit.) I 0 – Data uložená v objektu Session jsou uchována. (Data jsou jednoduše vložena do vícerozměrné vlastnosti, která přijímá data jakéhokoli typu a umožňuje použití libovolného počtu indexů – včetně řetězcových indexů – bez jakýchkoli deklarací.) I 1 – Systém Caché vyhradí pro relaci proces, takže je uchován veškerý stav procesu včetně všech proměnných (nejen těch, které jsou v objektu Session), stav vstupních a výstupních zařízení a uzamčení. Nastavení hodnoty 0 umožňuje logické uspořádání všech uchovaných dat do oddílů a dovoluje sdílení jednoho procesu více relacemi, ale uchovává méně informací o stavu. Nastavení na hodnotu 1 je pro programátora snazší a poskytuje širší možnosti za cenu zvýšení nároků na systémové prostředky serveru.
Objekt Request (požadavek) Technologie CSP kromě objektu Session (relace) automaticky poskytuje několik dalších objektů, které jsou užitečné při programovém zpracování stránky. Jedním z nich je objekt Request (požadavek). Když je přijata nějaká stránka, dekóduje se adresa URL a její obsah je uložen do objektu požadavku. Objekt požadavku obsahuje všechny dvojice názvů a příslušných hodnot, veškerá data z formulářů a další užitečné informace. Např. hodnotu pole s názvem „ID_filmu“ lze získat pomocí tohoto kódu: %request.Data("ID_filmu",1)
// 1 znamená, že chceme získat // první hodnotu pro tento název v případě, že pro něj existuje více hodnot 53
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 57
ARCHITEKTURA TŘÍD WEBOVÝCH STRÁNEK Každé webové stránce odpovídá třída stránky, která obsahuje metody (kód) pro generování obsahu stránky. Po přijetí požadavku se z adresy URL určí odpovídající třída stránky a vyvolá se metoda Page() (stránka) této třídy. Třídy stránek jsou většinou odvozeny ze standardní třídy webových stránek „%CSP.Page“, která každé stránce poskytuje různé integrované schopnosti, např. generování záhlaví či šifrování. Tyto standardní schopnosti mohou být nahrazeny širokou škálou možností, jako je odvození z jiné supertřídy, použití vícenásobného dědění nebo prosté nahrazení určitých metod. Tato architektura tříd usnadňuje změnu chování celé aplikace a uplatnění jednotného stylu. Zároveň do vývoje webových aplikací přináší všechny ostatní výhody objektového programování. Třída stránky obsahuje kód, který provádí požadovanou akci a generuje a odesílá odpovědi prohlížeči. V této třídě stránky však není všechen prováděný kód aplikace. Ve skutečnosti je většina prováděného kódu obvykle v metodách různých databázových tříd, případně i v dalších třídách obchodní logiky. Proces vývoje tak sestává současně z vývoje tříd stránek a databázových tříd (případně též dalších tříd obchodní logiky). Obecně doporučujeme, aby třídy stránek obsahovaly pouze logiku uživatelského rozhraní. Obchodní logika a databázová logika by měly patřit do různých tříd, aby byl jasně oddělen kód uživatelského rozhraní od obchodní a databázové logiky a aby případné pozdější doplnění uživatelského rozhraní bylo snadné.
NĚKOLIK STRATEGIÍ VÝVOJE Pro každou webovou stránku je vytvořena třída stránky, která obsahuje kód, jež má být pro danou stránku vykonán. Způsobů, jak vytvořit třídu stránky, je několik a většina aplikací používá více než jeden: I Soubor CSP – Pomocí textového editoru nebo nástroje pro návrh webů se napíše soubor ve formátu HTML s vloženými aplikačními značkami Caché. Výsledný soubor (tzv. „soubor CSP“) není odeslán přímo do prohlížeče, ale je z něj kompilací vygenerována třída stránky. I Přímé programování – Programátoři postupně napíší kód vhodných metod a vytvoří tak celou třídu stránky. I ZEN – Programátoři vytvářejí třídu stránky s využitím předem sestavených interaktivních objektových komponent. Jednodušší stránky lze často rychleji vyvíjet s použitím souborů CSP a průvodců, u složitějších stránek však bývá snadnější je programovat buď přímo, nebo s použitím ZEN.
54
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 58
SOUBORY CSP Soubory CSP jsou sekvenční soubory ve formátu HTML s vloženými aplikačními značkami Caché zkompilované do tříd stránek – podobných tříd stránek, jaké by mohl programátor napsat přímo. Tyto třídy stránek jsou pak zkompilovány do kódu, který je spouštěn v aplikačním serveru Caché jako odezva na požadavky od prohlížeče. Nástroj Caché Studio obsahuje Průvodce formulářem, který automaticky vygeneruje soubor CSP pro provádění úprav či zobrazení databázové třídy. Uživatel pouze klepne na databázovou třídu, která ho zajímá, a potom klepne na sadu vlastností, které chce zobrazit. Zbytek už obstará průvodce Caché: Přidá do stránky kód HTML a aplikační značky Caché. Jelikož výstupem průvodce je kód HTML, můžete ho v případě, že přesně neodpovídá vašim představám, snadno upravit. Využití souborů CSP je výhodné z následujících důvodů: I Grafici mohou navrhovat grafické rozvržení, zatímco programátoři se soustřeďují na vytváření kódu. I Většinu uživatelského rozhraní je možno programovat neprocedurálně v grafickém prostředí a udržovat odděleně od obchodní a databázové logiky. I Často je snazší přizpůsobit aplikaci určitému uživateli tím, že povolíte laikům upravovat grafické zobrazení a přidávat jednoduché schopnosti. Díky tomu, že jsou specifikace vzhledu rozhraní aplikace drženy odděleně od většiny programové logiky, je poměrně snadné změnit vzhled bez nutnosti zásahů do programového kódu. Stačí upravit soubor ve formátu HTML či XML a znovu zkompilovat stránku. I když tímto způsobem je možno vytvářet celé jednoduché aplikace, mnohem častěji přidává programátor další kód. Tento dodatečný kód je představován aplikačními značkami, které buď samy obsahují kód procedur, nebo spouštějí programový kód v jiných třídách. Složité stránky s velkým množstvím kódu procedur je však často snadnější napsat metodou přímého programování než s využitím souborů CSP. Systém Caché také obsahuje doplněk pro Dreamweaver, což je populární nástroj pro návrh webových stránek. Poskytuje podporu funkce „ukázat a klepnout“ pro přidávání aplikačních značek Caché a také průvodce Caché Form Wizard, který automaticky vygeneruje kód potřebný pro zobrazení či provádění úprav databázových objektů.
Aplikační značky Caché (CAT) Aplikační značky Caché mohou být vkládány do souborů CSP. Jsou používány obdobně jako standardní značky jazyka HTML, ve skutečnosti jsou to však příkazy pro webový kompilátor Caché, který vygeneruje kód aplikace zajišťující širokou škálu funkcí od přístupu k databázovým objektům, zadávání dotazů, řízení běhu programu až po spouštění kódu v aplikačním serveru Caché. Tyto značky jsou rozšiřitelné, čili vývojáři mohou podle potřeby vytvářet vlastní značky. Aplikační značky Caché nejsou vloženy do kódu HTML, který se posílá prohlížeči, ale jsou uloženy pouze do souboru .CSP, který je čten webovým kompilátorem Caché. Kompilátor tento soubor automaticky transformuje do standardního kódu HTML, který lze zpracovat libovolným prohlížečem.
55
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 59
UDÁLOSTI HYPER-EVENTS Události Hyper-Events™ technologie CSP umožňují, aby události, které nastanou v prohlížeči (klepnutí myší, změny hodnot polí, vypršení časových limitů atd.), vyvolaly spuštění metod na straně serveru a změnily aktuální stránku, aniž by musela být celá znovu překreslena. Po vykonání odpovídající akce může metoda serveru vrátit kód, který lze prohlížečem spustit. Typickým příkladem je kód jazyka JavaScript. Webové aplikace využívající funkci Hyper-Events jsou interaktivnější a rychleji odpovídají na požadavky. Ve stránce typu CSP je serverová metoda spuštěna pomocí jednoduché syntaxe "#server(...)#" Předpokládejme např., že když uživatel klepne na obrázek nákupního vozíku, chceme spustit serverovou metodu nazvanou PridatDoVoziku(). V takovém případě by definice obrázku v kódu HTML mohla obsahovat výraz:
onClick="#server(..PridatDoVoziku())#" Webový kompilátor nahradí tento výraz kódem jazyka JavaScript, který při spuštění v prohlížeči vyvolá metodu serveru Caché.
56
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 60
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 61
ZEN A WEBOVÉ STRÁNKY S VYUŽITÍM KOMPONENT ZEN značně usnadňuje rychlou tvorbu složitých webových aplikací bohatých na různá data. Vyznačuje se propracovaným vzhledem a vysoce interaktivním uživatelským rozhraním. ZEN není jazykem čtvrté generace (4GL) – ZEN je obsáhlou knihovnou předem sestavených objektových komponent a vývojářských nástrojů vycházejících z objektové technologie a CSP společnosti InterSystems. ZEN je zvláště vhodný pro vývoj webových verzí aplikací klient/server původně vytvořených s nástroji typu Visual Basic nebo PowerBuilder. Komponenty ZEN vytvářejí předpoklady pro podstatně dynamičtější interakce – při odesílání hodnot na server nejste omezováni mechanismem „submit”. Například s formulářovou komponentou ZEN lze definovat vlastní ověřování platnosti dat, včetně okamžitého volání serveru, a to bez nutnosti vyžádání stránky a jejího následného překreslení. Pro uživatele to znamená přirozenější způsob vkládání dat. Pro správu relace používá ZEN mechanismu CSP. Ten zajišťuje autentikaci uživatele, šifrování dat a zachování stálých dat relace v rámci stránkových požadavků. Veškerá komunikace, tedy při předávání objektů mezi prohlížečem a serverem, je propracovanější zásluhou techniky známé jako AJAX (Asynchronous JavaScript and XML). Stránky vytvářené s knihovnou ZEN lze jednoduše používat spolu se stránkami vytvořenými dalšími postupy CSP k vývoji webových aplikací.
Co je komponenta ZEN? Komponenta ZEN je definice třídy, která určuje vzhled a chování určité komponenty na stránce. Definice třídy ZEN v jednom dokumentu obsahuje úplnou definici komponenty včetně šablon stylů, serverového a klientského kódu. Pro každou komponentu použitou na stránce vytváří ZEN při běhu dva objekty: objekt na straně klienta, který ZEN automaticky vytváří jako objekt JavaScriptu v prohlížeči, a jeho protějšek na straně serveru. ZEN automaticky provádí správu stavu obou objektů a řídí tok informací mezi nimi.
58
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 62
Typy komponent ZEN Knihovna ZEN obsahuje komponenty, jež implementují všechny standardní řídící typy HTML: vstupní rámečky, textové rámečky, tlačítka, zaškrtávací pole, atd. Komponenty jsou vybaveny dalším chováním zděděným z třídy řízení ZEN. ZEN dále obsahuje sadu složitějších, datově bohatých komponent. Ty automaticky zobrazují data z databáze a poznají, jak tato data dynamicky aktualizovat na základě odezev na uživatelské události. Například mocná tabulková komponenta ZEN automaticky zobrazuje data v tabulce HTML s použitím databázového dotazu. Tabulková komponenta podporuje stránkování, rolování, rolování po sloupcích, filtrování a řadu různých stylů. Obsah tabulky lze obnovovat ze serveru bez překreslování celé stránky. Mezi další komponenty ZEN patří: I Menu [Nabídka] – Je podporována řada různých typů nabídek. I Grid [Mřížka] – Webovou stránku lze rozšířit o chování ve stylu tabulkového procesoru. I Tree [Strom] – Zobrazení hierarchických dat se stromovými ovládacími prvky. I Tab Group[Záložky] – Komponenta záložky obsahuje řadu dílčích záložek. Každá z nich může obsahovat řadu dalších komponent. I Chart [Diagram] – Je implementován bohatý výběr komponent diagramů s využitím SVG; kromě dalších zahrnují čárové, plošné, sloupcové, koláčové diagramy, stejně jako diagramy XY nebo maximum-minimum. I Graphical Meters [Grafické měřiče] – Rychloměry, měřící přístroje apod. umožňují zobrazovat data formou dynamických vizuálních komponent.
Změna vzhledu komponent knihovny ZEN Všechny komponenty ZEN podporují sadu vlastností pro ovládání vzhledu a chování uživatelského rozhraní. Aplikace mohou nastavovat tyto vlastnosti v době svého běhu a měnit tak hodnoty, vzhled nebo chování jednotlivých komponent. Vzhled lze také ovládat prostřednictvím definic stylů standardu CSS (Cascading Style Sheet). Výchozí styly lze nahradit (změna fontů, barev, velikosti atd.) pro celou aplikaci, stránku nebo pouze pro jednotlivé komponenty. Lze vytvářet podřízené třídy komponent knihovny ZEN a tak vzhled a chování dále řídit.
Tvorba nových komponent ZEN Jednou z hlavních předností knihovny ZEN je snadná tvorba nových komponent. Každá komponenta je implementována jako třída. Nové komponenty lze vytvářet následujícím postupem: (1) vytvořte novou třídu komponenty; ta může být podřízenou třídou již existující komponenty; (2) implementujte komponentu, která vykreslí HTML obsah komponenty; (3) definujte metody na straně serveru i klienta, které budou implementovat chování komponenty v době běhu; a (4) ověřte si, zda daná třída obsahuje definice stylu CSS nutné ke specifikování vzhledu komponenty. 59
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 63
Jak lokalizovat aplikace ZEN pro další jazyky V případě potřeby bude ZEN ve zvláštní lokalizační tabulce automaticky udržovat soubor všech textových hodnot (názvů, popisek atd.) zobrazovaných komponentami začleněnými do aplikace. Lokalizační tabulku aplikace lze exportovat jako dokument XML, přeložit hodnoty do jiných jazyků a nové tabulky importovat zpět. V době provádění bude ZEN používat textové hodnoty dané aktuálními jazykovými preferencemi prohlížeče používaného uživatelem.
Podpora SVG SVG (Scalable Vector Graphics) je efektivním a standardním způsobem zobrazování bohatých grafických dat na webové stránce. ZEN disponuje schopností vytvářet grafické komponenty, které se vykreslují s využitím SVG; nadto zahrnuje bohatou sadu předem sestavených komponent na bázi SVG.
Které prohlížeče podporují ZEN? ZEN spolupracuje s prohlížeči Firefox (v1.5 a vyšší) a Internet Explorer (v6.0 a vyšší). Pro Firefox nejsou zapotřebí žádné zásuvné moduly [plug-in] – podpora SVG je vestavěná. Pro použití komponenty SVG systému ZEN vyžaduje Internet Explorer zásuvný modul Adobe SVG. Knihovna ošetřuje rozdíly mezi SVG Firefoxu a Internet Exploreru.
VÝHODY SYSTÉMU CACHÉ Bohatá webová uživatelská rozhraní: Lze generovat vzhledově propracované, vysoce interaktivní stránky s vizuálně podobnějším grafickým uživatelským rozhraním aplikací klient/server než tradiční jednoduché formuláře prohlížeče s tlačítkem ODESLAT. Pro uživatele je takový interaktivní formát přirozenější a příjemněji se ovládá.
Rychlý objektový vývoj: Využívání předem sestavených komponent urychluje vývoj a usnadňuje pozdější úpravy.
Konzistentní uživatelská rozhraní: Architektura s využitím komponent usnadňuje definování a vymáhání směrnic chování a stylů v rámci aplikace.
60
pisma zlom 80990.qxd:Caché Tech Guide 05
4.6.2008
14:54
Stránka 64