Serißl CachΘ Studio

"Krok za krokem k dokonalosti."

Serißl CachΘ Studio vßm v p°φÜtφch m∞sφcφch bude nabφzet postupn² v²klad prßce se systΘmem CachΘ vΦ. praktick²ch p°φklad∙. JednotlivΘ dφly budou vychßzet v p°φÜtφch m∞sφcφch na ka₧dΘm Chip CD.

V ucelen²ch tΘmatech jednotliv²ch dφl∙ se jejich autor - ing. Daniel KutßΦ, sales engineer InterSystems B.V. - v∞nuje mo₧nostem univerzßlnφho aplikaΦnφho a databßzovΘho serveru CachΘ vΦ. poslednφch novinek. Objas≥uje, v Φem jsou hlavnφ v²hody CachΘ - jako je nap°. rychlost a mohutnost databßzovΘho stroje, rychlost v²voje, rozÜi°itelnost aplikacφ, snadnß kooperace s r∙zn²mi technologiemi a pru₧nß reakce na poslednφ technologickΘ trendy.

Serißl CachΘ Studio je vhodn²m dopl≥kem k ostatnφm studijnφm nßstroj∙m, kterΘ spoleΦnost InterSystems B.V. nabφzφ, nap°. dokumenty v sekci webov²ch strßnek Technologie CachΘ nebo jednodennφ trΘnink CachΘ EntrΘe, kter² firma po°ßdß ka₧d² m∞sφc. V₧dy m∙₧ete svΘ informace doplnit na americk²ch strßnkßch http://www.intersystems.com/ nebo nßs p°φmo kontaktovat zde.

P°edstavujeme vßm prvnφ dφl vΦetn∞ zdrojov²ch k≤d∙. Pro praktickΘ p°φklady budete pot°ebovat

download verze CachΘ 5, Beta 3 - ZDARMA.

Pod ikonami jsou ke ka₧dΘmu dφlu p°ipraveny zdrojovΘ k≤dy, kterΘ vhodn∞ ilustrujφ p°φklady z textu.

V∞°φme, ₧e se budete ke CachΘ Studiu se zßjmem vracet.

 

CachΘ Studio 1

Daniel KutßΦ, InterSystems CZ, 2002

 

┌vodem

Cφlem tohoto serißlu je seznßmit Φtenß°e a pota₧mo softvarovΘ v²vojß°e se zajφmavou databßzovou technologiφ firmy InterSystems.

Firma byla zalo₧ena v roce 1978, co₧ je shodou okolnostφ tΘ₧ rok zalo₧enφ konkurenΦnφ firmy Oracle. Nosn²m produktem firmy v poslednφch 5 letech je databßzov² nßstroj zvan² CachΘ.

CachΘ je velmi vysp∞l² nßstroj pro tvorbu komplexnφch aplikacφ zalo₧en²ch na prßci s persistentnφmi (trvale dostupn²mi) daty. Na rozdφl od klasick²ch relaΦnφch databßzφ i Φist∞ objektov²ch databßzφ je CachΘ dφky svΘ architektu°e ulo₧enφ dat schopna pracovat s daty jak z pohledu objektovΘho tak relaΦnφho.

Kombinacφ t∞chto dvou zßkladnφch p°φstup∙ CachΘ dßvß vznik samostatnΘ kategorii databßzφ, a to databßzφ postrelaΦnφch. Tedy takov²ch, kterΘ umφ pracovat s daty pomocφ jak SQL jazyka tak pomocφ objektovΘ syntaxe.

Pro CachΘ je velmi p°φznaΦnΘ, ₧e na rozdφl od nap°. objektov∞-relaΦnφch databßzφ nedochßzφ ke ztrßt∞ v²konu p°i p°φstupu k dat∙m pomocφ objektovΘ nadstavby nebo¥ CachΘ nic takovΘho nemß. Mß jen 2 stejn∞ v²konnΘ projekce dat.

 

Unifikovanß architektura databßze

Zßkladem modelovßnφ komponent aplikacφ jsou objekty. Objekty jsou organizovßny do t°φd ve kter²ch jsou popsßny vlastnosti (data) a metody (chovßnφ) objekt∙.

Definice t°φd jsou ulo₧eny spolu s ostatnφmi daty v jednotnΘm ulo₧iÜti zvanΘm CachΘ Class Dictionary (slovnφk t°φd). Tento slovnφk t°φd je sßm o sob∞ databßzφ a ostatnφ objekty k n∞mu mohou objektov∞ p°istupovat.

V okam₧iku zkompilovßnφ definice t°φdy dojde k vytvo°enφ dvou r∙zn²ch, navzßjem synchronizovan²ch sad k≤du, kterΘ zajistφ optimßlnφ p°φstup k instancφm objekt∙ t°φdy bu∩ pomocφ objektovΘho nebo relaΦnφho p°φstupu.

Obr. 1

 

Definice t°φd je mo₧no v CachΘ vytvo°it n∞kolika r∙zn²mi zp∙soby:

         öruΦn∞ö pomocφ CachΘ Studia

  • örelaΦn∞ö pomocφ DDL jazyka p°i zavolßnφ DDL p°φkazu pomocφ SQL. CachΘ automaticky vytvo°φ na zßklad∞ definice tabulky definici t°φdy.
  • Pomocφ XML, CachΘ je schopno naΦφst XML dokument, mß-li dokument sprßvnou strukturu, CachΘ vytvo°φ definici t°φdy
  • Programov∞, pomocφ objekt∙. CachΘ obsahuje systΘmovΘ t°φdy pro prßci se slovnφky t°φd.
  • Pomocφ UML, CachΘ umφ importovat a exportovat datovΘ modely vytvo°enΘ v Rational Rose a Microsoft Visual Modelleru.

 

P°φstup k definici ulo₧enφ dat

Objektov² model pou₧φvan² CachΘ je v porovnßnφ s objektov²mi modely jin²ch programovacφch jazyk∙ rozÜφ°en o prvky z relaΦnφho prost°edφ. Lze tedy nap°φklad definovat indexy, omezenφ (constrains) a strukturu ulo₧enφ dat.

Definice fyzickΘ stuktury ulo₧enφ dat objekt∙ je nezßvislΘ na popisu t°φdy. Vyvojß°i majφ mo₧nost vybrat si p°ednastavenou strukturu pou₧φvanou kompilßtorem t°φd, nebo zvolit vlastnφ strukturu a ruΦn∞ ji nadefinovat s ohledem na maximßlnφ v²kon p°i dotazech nebo transakcφch apod.

 

Objekty

Definovßnφ t°φdy

CachΘ disponuje pln∞ vyvinutou objektovou databßzφ pro prßci v prost°edφch nßroΦn²ch na v²poΦetnφ v²kon a mno₧stvφ zpracovan²ch transakcφ.

Objektov² model CachΘ zahrnuje mj:

T°φdy: to jsou zßkladnφ kameny objektovΘho programovßnφ. CachΘ umo₧nuje definovat t°φdy uchovßvajφcφ aplikaΦnφ data a vykonßvajφcφ aplikaΦnφ logiku.

Vlastnosti: t∞mito jsou popisovßna data uklßdanß a zpracovßvanß t°φdami.

Metody: popisujφ chovßnφ objekt∙ a vzßjemnou interakci.

Relace: popisujφ vztahy mezi jednotliv²mi t°φdami v aplikaci.

D∞diΦnost: t°φdy definovanΘ v CachΘ mohou b²t odvozeny od jin²ch t°φd a p°ejφmat jejich vlastnosti a metody a dalÜφ (nap°. parametry)

R∙znorodost (polymorfismus): t°φdy mohou modifikovat zd∞d∞nΘ vlastnosti a metody.

╪et∞zenφ referencφ: CachΘ automaticky p°i otev°enφ instance t°φdy otevφrß instance vÜech t°φd kterΘ jsou ve vztahy k otev°enΘ instanci (reference/relace)

 

SQL

Vztah objekt∙ a relaΦnφch tabulek

Jak ji₧ bylo uvedeno d°φve, p°i kompilaci definice t°φdy se automaticky vytvß°φ dv∞ sady k≤du. Prvnφ z nich je pro pot°eby objektovΘho p°φstupu (jak jinak, ₧e) a druhß sada rutin definuje p°φstup k vlastnostem t°φdy jako ke sloupc∙m v tabulce.

Jednφm z projev∙ nezßvislosti objektovΘ a relaΦnφ projekce datovΘho modelu je i mo₧nost p°id∞lit t°φd∞ alternativnφ nßzev jako₧to nßzev tabulky. TotΘ₧ platφ i pro vlastnosti t°φdy. D∙vod je nasnad∞. SQL obsahuje klφΦovß slova, kterß nemohou b²t pou₧ita jako nßzvy tabulek nebo sloupc∙, zatφmco sv∞t objekt∙ je daleko svobodn∞jÜφ. Jen pro ilustraci, slovo USER je klφΦov²m slovem SQL a tedy jej nelze v nßzvu tabulky Φi sloupce pou₧φt, zatφmco v objektovΘm datovΘm modelu je pom∞rn∞ Φasto pou₧ito pro nßzev vlastnosti Φi t°φdy popisujφcφ nap°. u₧ivatele aplikace.

Ka₧dß vlastnost t°φdy kterß mß jednu hodnotu je automaticky transformovßna na sloupec relaΦnφ tabulky. Vlastnost typu pole, kterΘ nab²vß libovolnΘho poΦtu hodnot, je transformovßna na samostatnou tabulku obsahujφcφ odkaz na p∙vodnφ tabulku.

Obr. 2.

 

stejn² datov² model ale v relaΦnφ projekci:

 

Obr. 3

 

Z uveden²ch obrßzk∙ je z°ejmΘ, ₧e mezi objektovou a relaΦnφ projekcφ tΘho₧ datovΘho modelu mohou b²t znaΦnΘ rozdφly.

 

Obr. 4

Na tomto obrßzku je ukßzßno fyzickΘ ulo₧iÜt∞ dat.

FyzickΘ ulo₧iÜt∞ dat se v CachΘ naz²vß globßl. Jednß se o vφcerozm∞rnΘ °φdkΘ pole.

Zatφmco k zobrazenφ dat v klasick²ch 2-rozm∞rn²ch polφch je nejvhodn∞jÜφ pou₧φt tabulkov² pohled, k zobrazenφ vφcerozm∞rn²ch datov²ch struktur je vhodn² pohled stromov²; tφmto zp∙sobem jsou prezentovßna data na p°edchozφm obrßzku. Vlevo od znamΘnka ô=ö jsou vid∞t jednotlivΘ ôdimenzeö, vpravo pak data p°φsluÜnß instanci objektu v danΘ dimenzi . Pole p°ßtel je ulo₧eno o ·rove≥ nφ₧e ne₧ detaily osoby. Na druhΘ stran∞, detaily adresy jsou ulo₧eny v rßmci datov²ch polo₧ek osoby ale v samostatnΘm bloku ($lb).

P°i kompilaci nßvrhu t°φdy CachΘ sama vytvo°φ k≤d, kter² zajistφ p°φstup k fyzickΘ datovΘ vrstv∞, programßtor se v∙bec o tyto vrstvu nemusφ zajφmat.

NicmΘn∞, a tφm se CachΘ v²razn∞ liÜφ od ostatnφch databßzov²ch nßstroj∙, v²vojß°i mohou sami definovat zp∙sob ulo₧enφ dat ve fyzickΘ vrstv∞. Dφky tΘto otev°enosti CachΘ je mo₧no provßd∞t optimalizaci / modifikaci ulo₧enφ v p°φpadech kdy p∙vodnφ zvolen² zp∙sob uklßdßnφ dat nenφ pro nßroΦnost aplikace optimßlnφ. Je to velmi z°φdka, ale stßvß se to. NicmΘn∞ s pot°ebou öruΦn∞ö optimalizovat se v²vojß°i setkajφ jen u opravdu rozsßhl²ch databßzφ (GB) provßd∞jφcφch statisφce a vφce transakcφ denn∞.

 

Nßvrh datovΘho modelu pomocφ CachΘ Studia

K nßvrhu slo₧it²ch datov²ch model∙ je vhodnΘ pou₧φvat n∞kter² z profesionßlnφch CASE nßstroj∙, nap°φklad firmy Rational Rose, ze kterΘho je mo₧no model importovat p°φmo do CachΘ.

U jednoduÜÜφch datov²ch model∙ je mo₧no zaΦφt definici t°φdy p°φmo v CachΘ Studiu. Stejn∞ tak implementace k≤du metod t°φd vytvo°en²ch v CASE nßstrojφch se provßdφ v tomto studiu.

P°i nßvrhu definice t°φdy mß v²vojß° mo₧nost pou₧φt pr∙vodce pro jednotlivΘ dφlΦφ ·koly nebo m∙₧e psßt definici p°φmo pomocφ jazyka CDL (Class Definition Language)

Nßsledujφcφ text obsahuje definic nßvrhu t°φdy User.Osoba.

Obr. 5

Class User.Osoba Extends %Persistent [ ClassType = persistent, ProcedureBlock ]

{

Property DatumNarozeni As %Date;

Property Jmeno As %String;

Property Vek As %Integer [ Calculated ];

Property Pratele As %String [ Collection = array ];

Property Adresa As User.Adresa;

/// vypoΦφtß v∞k z data narozenφ

Method VekGet() As %Integer

{

// p°ibli₧n² v²poΦet ...

set vek=+$h-..DatumNarozeni\365

Quit vek

}

/// Pozdravφ

Method Pozdrav()

{

write "Dobr² den!",!

quit

}

}

 

T∞la metod mohou b²t napsßna pomocφ CachΘ ObjectScriptu nebo CachΘBasicu, co₧ jsou skriptovacφ jazyky pro prßci s daty a pro provßd∞nφ aplikaΦnφ logiky. Skriptovacφm jazyk∙m CachΘ bude v∞novßn samostatn² dφl serißlu.

 

Detaily implementace objekt∙

Typy t°φd

Objektovß technologie implementovanß systΘmem CachΘ zahrnuje nßsledujφcφ typy t°φd:

         Abstraktnφ t°φdy

  • RegistrovanΘ t°φdy
  • Persistentnφ t°φdy
  • Vno°enΘ t°φdy
  • OdvozenΘ t°φdy
  • DatovΘ typy

Nynφ k popisu jednotliv²ch typ∙ t°φd:

Abstraktnφ t°φdy slou₧φ k popisu obecn²ch t°φd, od nich₧ se v rßmci aplikace odvozujφ t°φdy p°edstavujφcφ konkrΘtnφ modelovanΘ objekty. Abstraktnφm t°φdßm nelze vytvß°et instance objekt∙.

RegistrovanΘ t°φdy implementujφ plnohodnotnΘ objekty ve smlyslu OOP. Vzhledem k tomu, ₧e nepodporujφ persistenci, vyu₧φvajφ se zpravidla pro tvorbu k≤du aplikaΦnφ logiky.

Persistentnφ t°φdy slou₧φ k popisu dat, kterß jsou trvale k dispozici, tedy dat uklßdan²ch na disk nebo jinΘ zßznamovΘ mΘdium. Ka₧dß persistentnφ t°φda je odvozena od t°φdy registrovanΘ, p°i kompilaci vytvß°φ k≤d kter² zajiÜ¥uje komunikaci mezi aplikaΦnφ vrstvou (objekt) a fyzickou vrstvou (globßly). P°φkladem persistentnφ t°φdy je t°φda Osoba.

Vno°enΘ t°φdy jsou podobnΘ t°φdam persistentnφm ale na rozdφl od nich nemajφ vlastnφ ulo₧iÜt∞ dat. Data obsa₧enß ve vno°en²ch t°φdßch jsou v₧dy ulo₧ena spolu s daty persistentnφ t°φdy je₧ na vno°enou t°φdu odkazuje. P°φkladem vno°enΘ t°φdy je Adresa.

OdvozenΘ t°φdy jsou obecn∞ t°φdy odvozenΘ od jednΘ nebo vφce u₧ivatelsk²ch t°φd (D∞diΦnost). OdvozenΘ t°φdy obecn∞ mohou modifikovat vlastnosti a metody sv²ch nadt°φd (Polymorfismus).

DatovΘ typy jsou t°φdy kterΘ slou₧φ jako popis dat. DatovΘ typy mohou b²t libovoln∞ slo₧itΘ. ┌lohou datov²ch typ∙ je mj. zajistit sprßvnou konverzi dat mezi zobrazovanou (externφ) podobou a jejich ulo₧enou (vnit°nφ) podobou, dßle zajistit validaci vstupnφch hodnot aj.

ZvlßÜtnφ kategoriφ t°φd jsou CSP strßnky, co₧ jsou t°φdy slou₧φcφ pro tvorbu dynamick²ch webov²ch aplikacφ a Web Services je₧ implementujφ webovΘ slu₧by.

 

Vlastnosti, metody, vno°enΘ dotazy

Vlastnosti t°φd mohou b²t:

         Datov² typ

  • Jednoduchß reference na jinou t°φdu
  • Jedna strana relace typu: 1-N, rodiΦ-dφt∞

Vlastnosti mohou b²t privßtnφ, vy₧adujφcφ neprßzdnou hodnotu, indexovanΘ, vy₧adujφcφ unikßtnφ hodnotu, transientnφ, vypoΦφtanΘ, vφcerozm∞rnΘ. Vlastnost m∙₧e bßt oznaΦena jako finßlnφ, takovou vlastnost nelze v odvozen²ch t°φdßch modifikovat.

Metody mohou b²t metodami instance nebo metodami t°φd, (pak pro jejich volßnφ nenφ nutno otevφrat instanci t°φdy). Je-li metoda metodou t°φdy m∙₧e b²t zßrove≥ oznaΦena jako ulo₧enß procedura SQL. Metody takΘ mohou b²t, podobn∞ jako vlastnosti, privßtnφ a finßlnφ.

T°φdy mohou definovat tΘ₧ vlo₧enΘ dotazy. Vlo₧enΘ dotazy mohou b²t definovßny bu∩ pomocφ jazyka SQL nebo pomocφ CachΘ ObjectScriptu. V²hodou vlo₧en²ch procedur je to, ₧e jsou zkomilovßny spolu s definicφ t°φdy a tφm se Üet°φ Φas p°i b∞hu programu. Vlo₧enΘ dotazy dovolujφ zadßvßnφ parametr∙.

Pomocφ parametr∙ t°φd a vlastnostφ lze modifikovat nap°φklad zp∙sob validace hodnot p°i uklßdßnφ t°φdy na disk.

-- pokraΦovßnφ --