VyÜlo v t²denφku: CHIPweek
╚φslo:9/96
Datum:27. ·nora 1996
Strana:25
Rubrika/kategorie: Principy poΦφtaΦov²ch sφtφ
Modul: V²voj v²poΦetnφho modelu
Dφl:7

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Model klient/server

dod2lat

Pot°eba sdφlenφ soubor∙ v prost°edφ vzßjemn∞ propojen²ch osobnφch poΦφtaΦ∙ se postarala o velkΘ rozÜφ°enφ a velkou popularitu lokßlnφch poΦφtaΦov²ch sφtφ. ╚asem vznikly velmi v²konnΘ platformy pro file servery, kterΘ nabφzely i mo₧nost sdφlenφ dalÜφch periferiφ, zejmΘna tiskßren. Pro mnohΘ aplikace a pot°eby u₧ivatel∙ i provozovatel∙ a sprßvc∙ sφtφ to staΦilo. Postupn∞ se ale objevovaly i takovΘ po₧adavky, pro kterΘ nebylo provozovßnφ aplikacφ v re₧imu file server/pracovnφ stanice p°φliÜ vhodnΘ. Dφky nim se pak prosadil dalÜφ v²poΦetnφ model, model klient/server.

Zkusme si nejprve naznaΦit, v Φem spoΦφvala ona änep°φliÜ velkß vhodnost" modelu file server /pracovnφ stanice pro n∞kterΘ aplikace. P°edstavme si jako p°φklad databßzovou aplikaci, napsanou v n∞kterΘm b∞₧nΘm databßzovΘm prost°edφ pro osobnφ poΦφtaΦe standardu IBM PC (nap°φklad FoxPro, FoxBase, dBase apod.). Na konkrΘtnφm databßzovΘm produktu p°itom a₧ tak nezßle₧φ, d∙le₧itΘ je naopak to, aby Ülo o databßzi vyvinutou p°edevÜφm pro prost°edφ samostatn²ch a vzßjemn∞ nepropojen²ch osobnφch poΦφtaΦ∙. TakovΘto databßze se samoz°ejm∞ Φasem p°izp∙sobily existenci lokßlnφch sφtφ a mo₧nosti sdφlenφ centrßln∞ umφst∞n²ch soubor∙ (tj. umφst∞n²ch na file serverech), dokßzaly tuto mo₧nost vyu₧φt, ale jejich samotnß podstata se ji₧ nezm∞nila: tato podstata spoΦφvß v tom, ₧e veÜkerΘ zpracovßnφ dat v databßzi se provßdφ jedin²m programem, kter² b∞₧φ p°φmo na poΦφtaΦi (pracovnφ stanici) u₧ivatele. Rozdφl je vlastn∞ jen v tom, kde jsou umφst∞na vlastnφ data tvo°φcφ änßpl≥" databßze: zda v souboru, kter² se nachßzφ takΘ na u₧ivatelov∞ poΦφtaΦi (a ten pak v∙bec nemusφ b²t zapojen do sφt∞), nebo v souboru umφst∞nΘm centrßln∞ na file serveru. Z pohledu samotnΘ databßzovΘ aplikace p°itom nemusφ b²t rozdφl mezi ob∞ma p°φpady zase a₧ tak patrn² - dφky snaze lokßlnφch sφtφ uΦinit mechanismus sdφlenφ soubor∙ na file serveru co mo₧nß nejmΘn∞ viditeln² si tato aplikace m∙₧e myslet, ₧e zpracovßvß lokßlnφ soubory, p°esn∞ji data umφst∞na v lokßlnφch souborech. V praxi ovÜem musφ databßzovß aplikace p°eci jen brßt do ·vahy n∞kterΘ Φist∞ technickΘ aspekty - nap°φklad to, ₧e k obsahu sdφlenΘho souboru m∙₧e chtφt p°istupovat vφce zßjemc∙ souΦasn∞, a musφ b²t tudφ₧ aplikovßny vhodnΘ strategie a mechanismy, °eÜφcφ takovΘto situace (nap°. formou uzamykßnφ cel²ch soubor∙ nebo jejich Φßstφ).

Nynφ si ale uv∞domme, jak bude naÜe databßzovß aplikace skuteΦn∞ fungovat: p°edstavme si, ₧e mß n∞co najφt v datovΘm souboru velikosti kup°. 10 megabyt∙, kter² musφ cel² prohledat. K tomuto prohledßnφ p°itom musφ dojφt tam, kde samotnß databßzovß aplikace b∞₧φ, tj. na u₧ivatelov∞ poΦφtaΦi. Je-li ale datov² soubor sdφlen², tj. nachßzφ-li se ve skuteΦnosti na centrßlnφm file serveru, musφ b²t nejprve p°enesen po sφti na u₧ivatel∙v poΦφtaΦ. No a to p°edstavuje nemalou zßt∞₧ pro p°enosovΘ cesty, zajiÜ¥ujφcφ propojenφ mezi file serverem a jednotliv²mi pracovnφmi stanicemi. Zßt∞₧ takovΘho rozm∞ru, kterß dokß₧e velmi snadno p°er∙st mo₧nosti a p°enosovΘ schopnosti danΘ sφt∞, a stßt se v²razn²m ·zk²m mφstem, kterΘ tΘm∞° znemo₧nφ praktickΘ vyu₧φvßnφ databßzov²ch aplikacφ v²Üe popsanΘho typu - a obecn∞ pak vÜech druh∙ aplikacφ, kterΘ zpracovßvajφ velkΘ objemy dat jinde, ne₧ se tato data nachßzφ. Podstata problΘmu je p°itom prßv∞ v tom, ₧e ke zpracovßnφ dochßzφ na jinΘm mφst∞, ne₧ kde jsou data skuteΦn∞ ulo₧ena, a v d∙sledku toho jsou nutnΘ obrovskΘ p°enosy dat po sφti. P°enosy, kterΘ ji₧ na prvnφ pohled musφ vzbuzovat pochybnosti o svΘ opodstatn∞nosti - proΦ n∞kam p°enßÜet cel² desetimegabytov² soubor, kdy₧ nßs z n∞j zajφmß nap°φklad jen jeden jedin² byte?

MyÜlenka rozd∞lit zpracovßnφ

V²poΦetnφ model klient/server je zalo₧en na myÜlence, ₧e data by se m∞la zpracovßvat p°edevÜφm tam, kde jsou k dispozici. Nejsou-li k dispozici mφstn∞, tj. p°φmo u u₧ivatele, ale jsou umφst∞na centrßln∞, pak nech¥ se takΘ zpracovßvajφ na onom centrßlnφm mφst∞, kde se skuteΦn∞ nachßzφ. Jestli₧e ale s t∞mito daty chce pracovat u₧ivatel ze svΘ pracovnφ stanice, a chce tedy b²t v p°φmΘm kontaktu s aplikacφ, kterß mu tato data zp°φstup≥uje a zpracovßvß, pak je nevyhnutnß jistß d∞lba prßce - p∙vodn∞ jednolitß aplikace se musφ rozd∞lit na dv∞ Φßsti. Jedna z nich, zajiÜ¥ujφcφ vlastnφ zpracovßvßnφ dat, se p°est∞huje na mφsto v²skytu dat, zatφmco druhß Φßst z∙stane u u₧ivatele a bude zajiÜ¥ovat kontakt s nφm. Pokud se ä°ez" p∙vodnφ jedinΘ aplikace na dv∞ Φßsti provede rozumn∞ a Üikovn∞, je mo₧nΘ dosßhnout toho, ₧e objem p°enßÜen²ch dat mezi ob∞ma Φßstmi bude velmi mal², a₧ prakticky zanedbateln². Vrßtφme-li se zp∞t k p°φkladu desetimegabytovΘho souboru, ze kterΘho nßs zajφmß jen jedin² byte, nynφ ji₧ lze v∞ci za°φdit mnohem efektivn∞ji: Φßst aplikace, b∞₧φcφ p°φmo u u₧ivatele, zformuluje na jeho popud konkrΘtnφ dotaz, kter² odeÜle druhΘ Φßsti aplikace. Ta jej p°ijme a zodpovφ, tj. provede po₧adovanΘ zpracovßnφ dat (ze svΘho pohledu mφstnφch), a v²sledek - nßmi po₧adovan² byte - odeÜle zp∞t sm∞rem k u₧ivateli. Dovedeno ad absurdum, nynφ po sφti mφsto celΘho desetimegabytovΘho soboru cestuje pouze jedin² byte!

V praxi se samoz°ejm∞ p°enßÜφ po sφti p°eci jen o n∞co vφce dat, proto₧e ob∞ Φßsti aplikace se musφ n∞jak dorozumφvat a dßvat si najevo, co vlastn∞ po sob∞ cht∞jφ a co si posφlajφ. NicmΘn∞ po°ßd p∙jde o velmi malΘ objemy dat, a jejich konkrΘtnφ velikost je navφc pln∞ v moci tv∙rc∙ p°φsluÜnΘ aplikace, rozd∞lenΘ do dvou Φßstφ.

Server a jeho klient

MyÜlenka rozd∞lit jednu aplikaci na dv∞ Φßsti m∙₧e p°inßÜet i dalÜφ v²hody, ne₧ jen pouhou minimalizaci objemu p°enßÜen²ch dat. Jednou z velk²ch v²hod vhodnΘ äd∞lby prßce" m∙₧e b²t i to, ₧e centrßln∞ umφst∞nß Φßst aplikace m∙₧e existovat v jedinΘm exemplß°i, ale p°itom m∙₧e spolupracovat s vφce äu₧ivatelsk²mi" Φßstmi vφce Φi mΘn∞ najednou.

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm