Viktor Kustov. Informix. Rukovodstvo administratora baz dannyh
---------------------------------------------------------------
Email: visor@olma.co.ru
---------------------------------------------------------------
1. Teoreticheskie osnovy. *
1.1 Ponyatie SUBD servera. *
1.1.1 Osnovnye funkcii SUBD *
1.1.2 Tipovaya organizaciya sovremennoj SUBD *
1.2 Ponyatie arhitektury klient-server. *
2. Teoreticheskie osnovy SUBD servera Informix OnLine v.7.X *
2.1 SUBD server Informix. *
2.2 Arhitektura SUBD servera Informix OnLine v.7.X *
2.2.1 . Dinamicheskaya masshtabiruemaya arhitektura *
2.2.1.1 Potoki *
2.2.1.2 Virtual'nye processory *
2.2.1.3 Planirovanie potokov *
2.2.1.4 Razdelenie potokov mezhdu virtual'nymi processorami. *
2.2.1.5 |konomiya pamyati i drugih resursov *
2.2.2 Organizaciya razdelyaemoj pamyati *
2.2.3 Organizaciya operacij obmena s diskami *
2.2.3.1 Upravlenie diskovoj pamyat'yu *
2.2.3.2 Asinhronnyj vvod-vyvod *
2.2.3.3 Operezhayushchee chtenie *
2.2.4 Podderzhka fragmentacii tablic i indeksov *
2.2.5 Parallel'naya obrabotka zaprosov *
2.2.5.1 Na chem osnovana tehnologiya PDQ *
2.2.5.2 Iteratory *
2.2.5.3 Primery primeneniya parallelizma *
2.2.5.4 Balans mezhdu OLTP i DSS-prilozheniyami *
2.2.6 Optimizator vypolneniya zaprosov po stoimosti *
2.2.7 Sredstva obespecheniya nadezhnosti *
2.2.7.1 . Zerkalirovanie diskovyh oblastej *
2.2.7.2 Tirazhirovanie *
2.2.7.3 Bystroe vosstanovlenie pri vklyuchenii sistemy *
2.2.7.4 Arhivirovanie i vosstanovlenie dannyh *
2.2.8 Dinamicheskoe administrirovanie *
2.2.8.1 Interfejs monitoringa sistemy *
2.2.8.2 Utilita DB/Cockpit *
2.2.8.3 Utilita OnPerf *
2.2.8.4 Utilita parallel'noj zagruzki *
2.2.9 Raspredelennye vychisleniya *
2.2.9.1 Vzaimodejstvie klient-server *
2.2.9.2 Prozrachnost' raspolozheniya dannyh *
2.2.9.3 Raspredelennye bazy dannyh i protokol dvuhfazovoj fiksacii tranzakcij *
2.2.10 Podderzhka nacional'nyh yazykov *
2.2.11 Sredstva bezopasnosti klassa S2 *
2.3 Dopolnitel'nye komponenty kompanii Informix dlya vypolneniya specificheskih zadach. *
2.3.1 Informix-Enterprise Gateway 7.1 *
2.3.2 Tehnologiya i komponenty EDA/SQL *
2.3.2.1 EDA API/SQL *
2.3.2.2 EDA/Link *
2.3.2.3 EDA/SQL Server *
2.3.2.4 EDA/Data Drivers *
2.3.3 Vozmozhnosti Enterprise Gateway *
2.3.3.1 Prozrachnyj dostup dlya chteniya i zapisi *
2.3.3.2 Raspredelennye soedineniya *
2.3.3.3 Konfigurirovanie Enterprise Gateway *
2.3.3.4 Bezopasnost' *
2.3.4 Biblioteki sopryazheniya servera Informix-OnLine DS s menedzherami tranzakcij: Informix-TP/XA i Informix-TP/TOOLKIT *
2.4 Zaklyuchenie *
2.5 Literatura *
1. Teoreticheskie osnovy.
1.1 Ponyatie SUBD servera.
Tradicionnyh vozmozhnostej fajlovyh sistem okazyvaetsya nedostatochno dlya postroeniya dazhe prostyh informacionnyh sistem. Pri postroenii informacionnoj sistemy trebuetsya obespechit': podderzhanie logicheski soglasovannogo nabora dannyh; obespechenie yazyka manipulirovaniya dannymi; vosstanovlenie informacii posle raznogo roda sboev; real'no parallel'naya rabota neskol'kih pol'zovatelej. Dlya vypolneniya vseh etih zadach' vydelyaetsya gruppa programm, ob'edenennyh v edinyj programmnyj kompleks. |tot kompleks nosit nazvanie sistema upravleniya bazami dannyh (SUBD). Sformuliruem eti (i drugie) vazhnye funkcii otdel'no.
1.1.1 Osnovnye funkcii SUBD
K chislu funkcij SUBD prinyato otnosit' sleduyushchee:
1. Neposredstvennoe upravlenie dannymi vo vneshnej pamyati
|ta funkciya vklyuchaet obespechenie neobhodimyh struktur vneshnej pamyati kak dlya hraneniya neposredstvennyh dannyh, vhodyashchih v BD, tak i dlya sluzhebnyh celej, naprimer, dlya ubystreniya dostupa k dannym v nekotoryh sluchayah (obychno dlya etogo ispol'zuyutsya indeksy). V nekotoryh realizaciyah SUBD aktivno ispol'zuyutsya vozmozhnosti sushchestvuyushchih fajlovyh sistem, v drugih rabota proizvoditsya vplot' do urovnya ustrojstv vneshnej pamyati. No podcherknem, chto v razvityh SUBD pol'zovateli v lyubom sluchae ne obyazany znat', ispol'zuet li SUBD fajlovuyu sistemu, a esli ispol'zuet, to kak organizovany fajly. V chastnosti, SUBD podderzhivaet sobstvennuyu sistemu imenovaniya ob®ektov BD (eto ochen' vazhno, poskol'ku imena ob®ektov bazy dannyh sootvetstvuyut imenam ob®ektov predmetnoj oblasti).
Sushchestvuet mnozhestvo razlichnyh sposobov organizacii vneshnej pamyati baz dannyh. Kak i vse resheniya, prinimaemye pri organizacii baz dannyh, konkretnye metody organizacii vneshnej pamyati neobhodimo vybirat' v tesnoj svyazi so vsemi ostal'nymi resheniyami.
2. Upravlenie buferami operativnoj pamyati
SUBD obychno rabotayut s BD znachitel'nogo razmera; po krajnej mere etot razmer obychno sushchestvenno prevyshaet dostupnyj ob®em operativnoj pamyati. Ponyatno, esli pri obrashchenii k lyubomu elementu dannyh budet proizvodit'sya obmen s vneshnej pamyat'yu, to vsya sistema budet rabotat' so skorost'yu ustrojstva vneshnej pamyati. Edinstvennym zhe sposobom real'nogo uvelicheniya etoj skorosti yavlyaetsya buferizaciya dannyh v operativnoj pamyati. I dazhe esli operacionnaya sistema proizvodit obshchesistemnuyu buferizaciyu (kak v sluchae OS UNIX), etogo nedostatochno dlya celej SUBD, kotoraya raspolagaet gorazdo bol'shej informaciej o poleznosti buferizacii toj ili inoj chasti BD. Poetomu v razvityh SUBD podderzhivaetsya sobstvennyj nabor buferov operativnoj pamyati s sobstvennoj disciplinoj zameny buferov. Pri upravlenii buferami osnovnoj pamyati prihoditsya razrabatyvat' i primenyat' soglasovannye algoritmy buferizacii, zhurnalizacii i sinhronizacii. Zametim, chto sushchestvuet otdel'noe napravlenie SUBD, kotorye orientirovany na postoyannoe prisutstvie v operativnoj pamyati vsej BD. |to napravlenie osnovyvaetsya na predpolozhenii, chto v predvidimom budushchem ob®em operativnoj pamyati komp'yuterov smozhet byt' nastol'ko velik, chto pozvolit ne bespokoit'sya o buferizacii. Poka eti raboty nahodyatsya v stadii issledovanij.
3. Upravlenie tranzakciyami
Tranzakciya - eto posledovatel'nost' operacij nad BD, rassmatrivaemyh SUBD kak edinoe celoe. Libo tranzakciya uspeshno vypolnyaetsya, i SUBD fiksiruet (COMMIT) izmeneniya BD, proizvedennye eyu, vo vneshnej pamyati, libo ni odno iz etih izmenenij nikak ne otrazhaetsya v sostoyanii BD. Ponyatie tranzakcii neobhodimo dlya podderzhaniya logicheskoj celostnosti BD. Esli vspomnit' nash primer informacionnoj sistemy otdela kadrov s fajlami SOTRUDNIKI i OTDELY, to edinstvennym sposobom ne narushit' celostnost' BD pri vypolnenii operacii priema na rabotu novogo sotrudnika budet ob®edinenie elementarnyh operacij nad fajlami SOTRUDNIKI i OTDELY v odnu tranzakciyu. Takim obrazom, podderzhanie mehanizma tranzakcij - obyazatel'noe uslovie dazhe odnopol'zovatel'skih SUBD (esli, konechno, takaya sistema zasluzhivaet nazvaniya SUBD). No ponyatie tranzakcii gorazdo sushchestvennee vo mnogopol'zovatel'skih SUBD. To svojstvo, chto kazhdaya tranzakciya nachinaetsya pri celostnom sostoyanii BD i ostavlyaet eto sostoyanie celostnym posle svoego zaversheniya, delaet ochen' udobnym ispol'zovanie ponyatiya tranzakcii kak edinicy aktivnosti pol'zovatelya po otnosheniyu k BD. Pri sootvetstvuyushchem upravlenii parallel'no vypolnyayushchimisya tranzakciyami so storony SUBD kazhdyj pol'zovatel' mozhet v principe oshchushchat' sebya edinstvennym pol'zovatelem SUBD (na samom dele, eto neskol'ko idealizirovannoe predstavlenie, poskol'ku pol'zovateli mnogopol'zovatel'skih SUBD poroj mogut oshchutit' prisutstvie svoih kolleg).
S upravleniem tranzakciyami v mnogopol'zovatel'skoj SUBD svyazany vazhnye ponyatiya serializacii tranzakcij i serial'nogo plana vypolneniya smesi tranzakcij. Pod serializacij parallel'no vypolnyayushchihsya tranzakcij ponimaetsya takoj poryadok planirovaniya ih raboty, pri kotorom summarnyj effekt smesi tranzakcij ekvivlenten effektu ih nekotorogo posledovatel'nogo vypolneniya. Serial'nyj plan vypolneniya smesi tranzakcij - eto takoj sposob ih sovmestnogo vypolneniya, kotoryj privodit k serializacii tranzakcij. Ponyatno, chto esli udaetsya dobit'sya dejstvitel'no serial'nogo vypolneniya smesi tranzakcij, to dlya kazhdogo pol'zovatelya, po iniciative kotorogo obrazovana tranzakciya, prisutstvie drugih tranzakcij budet nezametno (esli ne schitat' nekotorogo zamedleniya raboty dlya kazhdogo pol'zovatelya po sravneniyu s odnopol'zovatel'skim rezhimom).
Sushchestvuet neskol'ko bazovyh algoritmov serializacii tranzakcij. V centralizovannyh SUBD naibolee rasprostraneny algoritmy, osnovannye na sinhronizacionnyh zahvatah ob®ektov BD. Pri ispol'zovanii lyubogo algoritma serializacii vozmozhny situacii konfliktov mezhdu dvumya ili bolee tranzakciyami po dostupu k ob®ektam BD. V etom sluchae dlya podderzhaniya serializacii neobhodimo vypolnit' otkat (likvidirovat' vse izmeneniya, proizvedennye v BD) odnoj ili bolee tranzakcij. |to odin iz sluchaev, kogda pol'zovatel' mnogopol'zovatel'skoj SUBD mozhet real'no (i dostatochno nepriyatno) oshchutit' prisutstvie v sisteme tranzakcij drugih pol'zovatelej.
4. ZHurnalizaciya
Odno iz osnovnyh trebovanij k SUBD - nadezhnoe hranenie dannyh vo vneshnej pamyati. Pod nadezhnost'yu hraneniya ponimaetsya to, chto SUBD dolzhna byt' v sostoyanii vosstanovit' poslednee soglasovannoe sostoyanie BD posle lyubogo apparatnogo ili programmnogo sboya. Obychno rassmatrivayutsya dva vozmozhnyh vida apparatnyh sboev: tak nazyvaemye myagkie sboi, kotorye mozhno traktovat' kak vnezapnuyu ostanovku raboty komp'yutera (naprimer, avarijnoe vyklyuchenie pitaniya), izhestkie sboi, harakterizuemye poterej informacii na nositelyah vneshnej pamyati. Primerami programmnyh sboev mogut byt' avarijnoe zavershenie raboty SUBD (iz-za oshibki v programme ili nekotorogo apparatnogo sboya) ili avarijnoe zavershenie pol'zovatel'skoj programmy, v rezul'tate chego nekotoraya tranzakciya ostaetsya nezavershennoj. Pervuyu situaciyu mozhno rassmatrivat' kak osobyj vid myagkogo apparatnogo sboya; pri vozniknovenii poslednej trebuetsya likvidirovat' posledstviya tol'ko odnoj tranzakcii.
No v lyubom sluchae dlya vosstanovleniya BD nuzhno raspolagat' nekotoroj dopolnitel'noj informaciej. Drugimi slovami, podderzhanie nadezhnogo hraneniya dannyh v BD trebuet izbytochnosti hraneniya dannyh, prichem ta ih chast', kotoraya ispol'zuetsya dlya vosstanovleniya, dolzhna hranit'sya osobo nadezhno. Naibolee rasprostranennyj metod podderzhaniya takoj izbytochnoj informacii - vedenie zhurnala izmenenij BD.
ZHurnal - eto osobaya chast' BD, nedostupnaya pol'zovatelyam SUBD i podderzhivaemaya osobo tshchatel'no (inogda podderzhivayutsya dve kopii zhurnala, raspolagaemye na raznyh fizicheskih diskah), v kotoruyu postupayut zapisi obo vseh izmeneniyah osnovnoj chasti BD. V raznyh SUBD izmeneniya BD zhurnalizuyutsya na raznyh urovnyah: inogda zapis' v zhurnale sootvetstvuet nekotoroj logicheskoj operacii izmeneniya BD (naprimer, operacii udaleniya stroki iz tablicy relyacionnoj BD), a poroj zapis' sootvetstvuet minimal'noj vnutrennej operacii modifikacii stranicy vneshnej pamyati. V nekotoryh sistemah odnovremenno ispol'zuyutsya oba podhoda.
Vo vseh sluchayah priderzhivayutsya strategii "uprezhdayushchej" zapisi v zhurnal (tak nazyvaemogo protokola Write Ahead Log - WAL). Grubo govorya, eta strategiya zaklyuchaetsya v tom, chto zapis' ob izmenenii lyubogo ob®ekta BD dolzhna popast' vo vneshnyuyu pamyat' zhurnala ran'she, chem izmenennyj ob®ekt popadet vo vneshnyuyu pamyat' osnovnoj chasti BD. Izvestno, esli v SUBD korrektno soblyudaetsya protokol WAL, to s pomoshch'yu zhurnala mozhno reshit' vse problemy vosstanovleniya BD posle lyubogo sboya.
Samaya prostaya situaciya vosstanovleniya - individual'nyj otkat tranzakcii. Strogo govorya, dlya etogo ne trebuetsya obshchesistemnyj zhurnal izmenenij BD. Dostatochno dlya kazhdoj tranzakcii podderzhivat' lokal'nyj zhurnal operacij modifikacii BD, vypolnennyh v etoj tranzakcii, i proizvodit' otkat tranzakcii vypolneniem obratnyh operacij, sleduya ot konca lokal'nogo zhurnala. V nekotoryh SUBD tak i delayut, no v bol'shinstve sistem lokal'nye zhurnaly ne podderzhivayut, a individual'nyj otkat tranzakcii vypolnyayut po obshchesistemnomu zhurnalu, dlya chego vse zapisi ot odnoj tranzakcii svyazyvayut obratnym spiskom (ot konca k nachalu).
Pri myagkom sboe vo vneshnej pamyati osnovnoj chasti BD mogut nahodit'sya ob®ekty, modificirovannye tranzakciyami, ne zakonchivshimisya k momentu sboya, i mogut otsutstvovat' ob®ekty, modificirovannye tranzakciyami, kotorye k momentu sboya uspeshno zavershilis' (po prichine ispol'zovaniya buferov operativnoj pamyati, soderzhimoe kotoryh pri myagkom sboe propadaet). Pri soblyudenii protokola WAL vo vneshnej pamyati zhurnala dolzhny garantirovanno nahodit'sya zapisi, otnosyashchiesya k operaciyam modifikacii oboih vidov ob®ektov. Cel'yu processa vosstanovleniya posle myagkogo sboya yavlyaetsya sostoyanie vneshnej pamyati osnovnoj chasti BD, kotoroe vozniklo by pri fiksacii vo vneshnej pamyati izmenenij vseh zavershivshihsya tranzakcij i kotoroe ne soderzhalo by nikakih sledov nezakonchennyh tranzakcij. CHtoby etogo dobit'sya, snachala proizvodyat otkat nezavershennyh tranzakcij (undo), a potom povtorno vosproizvodyat (redo) te operacii zavershennyh tranzakcij, rezul'taty kotoryh ne otobrazheny vo vneshnej pamyati. |tot process soderzhit mnogo tonkostej, svyazannyh s obshchej organizaciej upravleniya buferami i zhurnalom. Bolee podrobno my rassmotrim eto v sootvetstvuyushchej lekcii.
Dlya vosstanovleniya BD posle zhestkogo sboya ispol'zuyut zhurnal i arhivnuyu kopiyu BD. Grubo govorya, arhivnaya kopiya - eto polnaya kopiya BD k momentu nachala zapolneniya zhurnala (imeetsya mnogo variantov bolee gibkoj traktovki smysla arhivnoj kopii). Konechno, dlya normal'nogo vosstanovleniya BD posle zhestkogo sboya neobhodimo, chtoby zhurnal ne propal. Kak uzhe otmechalos', k sohrannosti zhurnala vo vneshnej pamyati v SUBD pred®yavlyayutsya osobo povyshennye trebovaniya. Togda vosstanovlenie BD sostoit v tom, chto ishodya iz arhivnoj kopii po zhurnalu vosproizvoditsya rabota vseh tranzakcij, kotorye zakonchilis' k momentu sboya. V principe mozhno dazhe vosproizvesti rabotu nezavershennyh tranzakcij i prodolzhit' ih rabotu posle konca vosstanovleniya. Odnako v real'nyh sistemah eto obychno ne delaetsya, poskol'ku process vosstanovleniya posle zhestkogo sboya yavlyaetsya dostatochno dlitel'nym.
5. YAzyki BD
Dlya raboty s bazami dannyh ispol'zuyutsya special'nye yazyki, v celom nazyvaemye yazykami baz dannyh. V rannih SUBD podderzhivalos' neskol'ko specializirovannyh po svoim funkciyam yazykov. CHashche vsego vydelyalis' dva - yazyk opredeleniya shemy BD (SDL - Schema Definition Language) i yazyk manipulirovaniya dannymi (DML - Data Manipulation Language). SDL sluzhil glavnym obrazom dlya opredeleniya logicheskoj struktury BD, t.e. toj struktury BD, kakoj ona predstavlyaetsya pol'zovatelyam. DML soderzhal nabor operatorov manipulirovaniya dannymi, t.e. operatorov, pozvolyayushchih zanosit' dannye v BD, udalyat', modificirovat' ili vybirat' sushchestvuyushchie dannye. My rassmotrim bolee podrobno yazyki rannih SUBD v sleduyushchej lekcii.
V sovremennyh SUBD obychno podderzhivaetsya edinyj integrirovannyj yazyk, soderzhashchij vse neobhodimye sredstva dlya raboty s BD, nachinaya ot ee sozdaniya i obespechivayushchij bazovyj pol'zovatel'skij interfejs s bazami dannyh. Standartnym yazykom naibolee rasprostranennyh v nastoyashchee vremya relyacionnyh SUBD yavlyaetsya yazyk SQL (Structured Query Language). V neskol'kih lekciyah etogo kursa yazyk SQL budet rassmatrivat'sya dostatochno podrobno, a poka my perechislim osnovnye funkcii relyacionnoj SUBD, podderzhivaemye na "yazykovom" urovne (t.e. funkcii, podderzhivaemye pri realizacii interfejsa SQL).
Prezhde vsego yazyk SQL sochetaet sredstva SDL i DML, t.e. pozvolyaet opredelyat' shemu relyacionnoj BD i manipulirovat' dannymi. Pri etom imenovanie ob®ektov BD (dlya relyacionnoj BD - imenovanie tablic i ih stolbcov) podderzhivaetsya na yazykovom urovne v tom smysle, chto kompilyator yazyka SQL proizvodit preobrazovanie imen ob®ektov v ih vnutrennie identifikatory na osnovanii special'no podderzhivaemyh sluzhebnyh tablic-katalogov. Vnutrennyaya chast' SUBD (yadro) voobshche ne rabotaet s imenami tablic i ih stolbcov.
YAzyk SQL soderzhit special'nye sredstva opredeleniya ogranichenij celostnosti BD. Opyat' zhe ogranicheniya celostnosti hranyatsya v special'nyh tablicah-katalogah, i obespechenie kontrolya celostnosti BD proizvoditsya na yazykovom urovne, t.e. pri kompilyacii operatorov modifikacii BD kompilyator SQL na osnovanii imeyushchihsya v BD ogranichenij celostnosti generiruet sootvetstvuyushchij programmnyj kod.
Special'nye operatory yazyka SQL pozvolyayut opredelyat' tak nazyvaemye predstavleniya BD, fakticheski yavlyayushchiesya hranimymi v BD zaprosami (rezul'tatom lyubogo zaprosa k relyacionnoj BD yavlyaetsya tablica) s imenovannymi stolbcami. Dlya pol'zovatelya predstavlenie yavlyaetsya takoj zhe tablicej, kak lyubaya bazovaya tablica, hranimaya v BD, no s pomoshch'yu predstavlenij mozhno ogranichit' ili naoborot rasshirit' vidimost' BD dlya konkretnogo pol'zovatelya. Podderzhanie predstavlenij proizvoditsya takzhe na yazykovom urovne.
Nakonec, avtorizaciya dostupa k ob®ektam BD proizvoditsya na osnove special'nogo nabora operatorov SQL. Ideya sostoit v tom, chto dlya vypolneniya operatorov SQL raznogo vida pol'zovatel' dolzhen obladat' razlichnymi polnomochiyami. Pol'zovatel', sozdavshij tablicu BD, obladaet polnym naborom polnomochij dlya raboty s etoj tablicej. V ih chislo vhodit polnomochie na peredachu vseh ili chasti polnomochij drugim pol'zovatelyam, vklyuchaya polnomochie na peredachu polnomochij. Polnomochiya pol'zovatelej opisyvayutsya v special'nyh tablicah-katalogah, kontrol' polnomochij podderzhivaetsya na yazykovom urovne.
1.1.2 Tipovaya organizaciya sovremennoj SUBD
Estestvenno, organizaciya tipichnoj SUBD i sostav ee komponentov sootvetstvuet rassmotrennomu nami naboru funkcij.
Logicheski v sovremennoj relyacionnoj SUBD mozhno vydelit' naibolee vnutrennyuyu chast' - yadro SUBD (chasto ego nazyvayut Data Base Engine), kompilyator yazyka BD (obychno SQL), podsistemu podderzhki vremeni vypolneniya, nabor utilit. V nekotoryh sistemah eti chasti vydelyayutsya yavno, v drugih - net, no logicheski takoe razdelenie mozhno provesti vo vseh SUBD.
YAdro SUBD otvechaet za upravlenie dannymi vo vneshnej pamyati, upravlenie buferami operativnoj pamyati, upravlenie tranzakciyami i zhurnalizaciyu. Sootvetstvenno mozhno vydelit' takie komponenty yadra (po krajnej mere, logicheski, hotya v nekotoryh sistemah eti komponenty vydelyayutsya yavno), kak menedzher dannyh, menedzher buferov, menedzher tranzakcij i menedzher zhurnala. Kak mozhno bylo ponyat' iz pervoj chasti etoj lekcii, funkcii etih komonentov vzaimosvyazany, i dlya obespecheniya korrektnoj raboty SUBD vse eti komponenty dolzhny vzaimodejstvovat' po tshchatel'no produmannym i proverennym protokolam. YAdro SUBD obladaet sobstvennym interfejsom, ne dostupnym pol'zovatelyam napryamuyu i ispol'zuemym v programmah, proizvodimyh kompilyatorom SQL (ili v podsisteme podderzhki vypolneniya takih programm), i utilitah BD. YAdro SUBD yavlyaetsya osnovnoj rezidentnoj chast'yu SUBD. Pri ispol'zovanii arhitektury "klient-server" yadro yavlyaetsya osnovnym sostavlyayushchim servernoj chasti sistemy.
Osnovnaya funkciya kompilyatora yazyka BD - kompilyaciya operatorov yazyka BD v nekotoruyu vypolnyaemuyu programmu.
Osnovnoj problemoj relyacionnyh SUBD yavlyaetsya to, chto yazyki etih sistem (a eto, kak pravilo, SQL) yavlyayutsya neprocedurnymi, t.e. v operatore takogo yazyka specificiruetsya nekotoroe dejstvie nad BD, no eta specifikaciya ne procedura, ona lish' opisyvaet v nekotoroj forme usloviya soversheniya zhelaemogo dejstviya (vspomnite primery iz pervoj lekcii). Poetomu kompilyator dolzhen reshit', kakim obrazom vypolnyat' operator yazyka, prezhde chem proizvesti programmu. Primenyayutsya dostatochno slozhnye metody optimizacii operatorov, kotorye my podrobno rassmotrim v sleduyushchih lekciyah. Rezul'tatom kompilyacii yavlyaetsya vypolnyaemaya programma, predstavlyaemaya v nekotoryh sistemah v mashinnyh kodah, no bolee chasto v vypolnyaemom vnutrennem mashinno-nezavisimom kode. V poslednem sluchae real'noe vypolnenie operatora proizvoditsya s privlecheniem podsistemy podderzhki vremeni vypolneniya, predstavlyayushchej soboj, po suti dela, interpretator etogo vnutrennego yazyka.
Nakonec, v otdel'nye utility BD obychno vydelyayut takie procedury, kotorye slishkom nakladno vypolnyat' s ispol'zovaniem yazyka BD, naprimer, zagruzka i razgruzka BD, sbor statistiki, global'naya proverka celostnosti BD i t.d. Utility programmiruyutsya s ispol'zovaniem interfejsa yadra SUBD, a inogda dazhe s proniknoveniem vnutr' yadra.
1.2 Ponyatie arhitektury klient-server.
V podavlyayushchem bol'shinstve sluchaev lokal'naya set' ispol'zuetsya dlya kollektivnogo dostupa k bazam dannyh.
Sushchestvuet dva podhoda k organizacii kollektivnogo dostupa dannym. Pervyj podhod zaklyuchaetsya v tom , chto fajly dannyh raspolagayut na diskah fajl servera i vse rabochie stancii poluchayut k nemu dostup. |tot podhod nosit nazvanie arhitektura "fajl-server". Esli fajly dannyh raspolozheny na servere ( v dannom sluchae server nazyvaetsya "fajl-server" ) , s nimi odnovremenno rabotayut neskol'ko programm , zapushchennyh na rabochih stanciyah. Pri etom programmy dolzhny sami sledit' za tem , chtoby izmenyaemye zapisi bazy dannyh blokirovalis' dlya zapisi i chteniya so storony drugih programm vo vremya izmenenij. Dannyj metod imeet sushchestvennyj nedostatok: fajl-server ne obespechivaet dostatochnuyu proizvoditel'nost' pri bol'shom kolichestve rabochih stancij.
Vtoroj podhod nosit nazvanie arhitektura "klient-server".
Opredeleniya:
Klient - Rabochaya stanciya dlya odnogo pol'zovatelya, obespechivayushchaya rezhim registracii i dr. neobhodimye na ego rabochem meste funkcii vychisleniya, kommunikaciyu, dostup k bazam dannyh i dr.
Server - odin ili neskol'ko mnogopol'zovatel'skih processorov s edinym polem pamyati, kotoryj v sootvetstvii s potrebnostyami pol'zovatelya obespechivaet im funkcii vychisleniya, kommunikacii i dostupa k bazam dannyh.
Obrabotka Klient - Server - sreda, v kotoroj obrabotka prilozhenij raspredelena mezhdu klientom i serverom. Neredko v obrabotke uchastvuyut mashiny raznyh tipov, prichem klient i server obshchayutsya mezhdu soboj s pomoshch'yu fiksirovannogo mnozhestva standartnyh protokolov obmena i procedur obrashcheniya k udalennym platformam.
SUBD s personal'nyh |VM ( takie, kak Clipper, DBase, FoxPro, Paradox, Clarion imeyut setevye versii, kotorye prosto sovmestno ispol'zuyut fajly baz dannyh teh zhe formatov dlya PK, osushchestvlyaya pri etom setevye blokirovki dlya razgranicheniya dostupa k tablicam i zapisyam. Pri etom vsya rabota osushchestvlyaetsya na PK. Server ispol'zuetsya prosto kak obshchij udalennyj disk bol'shoj emkosti. Takoj sposob raboty privodit k risku poteri dannyh pri apparatnyh sboyah.
Po sravneniyu s takimi sistemami sistemy , postroennye v arhitekture Klient - Server, imeyut sleduyushchie preimushchestva:
- pozvolyayut uvelichit' razmer i slozhnost' programm, vypolnyaemyh na rabochej stancii;
- obespechivaet perenesenie naibolee trudoemkih ope-racij na server, yavlyayushchijsya mashinoj bol'shej vychislitel'noj moshchnosti;
- umen'shaet do minimuma vozmozhnost' poteri soderzhashchejsya v BD informacii za schet primeneniya imeyushchihsya na servere vnutrennih mehanizmov zashchity dannyh , takih , kak , naprimer sistemy trassirovki tranzakcij, otkat posle sboya, sredstva obespecheniya celostnosti dannyh;
- v neskol'ko raz umen'shaet ob®em informacii, peredavaemyj po seti.
2. Teoreticheskie osnovy SUBD servera Informix OnLine v.7.X
2.1 SUBD server Informix.
Raboty nad sistemoj upravleniya bazami dannyh Informix byli nachaty v 1980 g. Soglasno nachal'nomu zamyslu programmnyj kompleks Informix rassmatrivalsya kak SUBD, special'no orientirovannaya dlya raboty v srede OS UNIX. Dlya organizacii hraneniya dannyh byl vybran relyacionnyj podhod. S teh por Informix stal odnoj iz osnovnyh SUBD, rabotayushchih v srede UNIX.
Sejchas produkty Informix uzhe ustanovleny prakticheski na vseh UNIX-komp'yuterah. Sredi vseh OEM firma vybrala shest' strategicheskih partnerov. |to: Sequent, HP, SUN, IBM, Siemens Nixdorf, NCR. Portirovanie produktov firmy na proizvodimye strategicheskimi partnerami platformy proizvoditsya v pervuyu ochered'. Prakticheski eto oznachaet, chto pri poyavlenii na rynke novoj platformy ili novoj versii operacionnoj sistemy dlya platformy uzhe imeetsya sootvetstvuyushchaya versiya produktov Informix.
Sredi ne UNIX platform Informix podderzhivaet NetWare, Windows, Windows NT i DOS.
Firma Informix ob®yavila i podderzhivaet programmu InSync. Programma ob®edinyaet nezavisimyh razrabotchikov programmnogo obespecheniya. V ramkah etoj programmy sozdany programmnye interfejsy dlya svyazi s SUBD drugih proizvoditelej, v chastnosti SUBD, funkcioniruyushchie na ne UNIX-platformah.
2.1.1 Opisanie produktov Informix
Produkty Informix soderzhat servery baz dannyh, sredstva razrabotki i otladki, kommunikacionnye sredstva. Harakternoj osobennost'yu Informix yavlyaetsya nalichie neskol'kih tipov serverov, podrobnee o nih budet skazano nizhe.
Nachinaya s versii 4.0 firma Informix postavlyaet server bazy dannyh OnLine, kotoryj podderzhivaet apparat raspredelennyh tranzakcij (tehnologiya OLTP - on-line transaction processing), chto pozvolyaet po-novomu podhodit' k sozdaniyu baz dannyh s ochen' bol'shim ob®emom hranimoj informacii.
Krome togo, v Informix-OnLine vklyuchen novyj tip dannyh - bitovye polya (BLOB - binary large objects). Bitovye polya mogut ispol'zovat'sya dlya mul'timedijnyh prilozhenij (hranenie izobrazhenij i zvuka).
2.1.2 Tipovye konfiguracii
V osnove sistem, razrabotannyh na osnove SUBD Informix, lezhit princip arhitektury "klient-server". Klient - eto pol'zovatel'skaya prikladnaya programma, obespechivayushchaya vzaimodejstvie (interfejs) bazy dannyh s pol'zovatelem. Vsyu rabotu, svyazannuyu s dostupom i modifikaciej bazy dannyh, vypolnyaet server bazy dannyh (BD-server).
Server bazy dannyh (database engine), on zhe yadro bazy dannyh - eto otdel'naya programma, vypolnyaemaya kak otdel'nyj process. Server peredaet vybrannuyu iz bazy informaciyu po kanalu klientu. Imenno server rabotaet s dannymi, zabotitsya ob ih razmeshchenii na diske. Tehnologiyu "klient-server" so storony servera obespechivayut moduli Informix-SE, Informix-Online ili Informix OnLine-Dynamic Server.
Informix-SE predstavlyaet soboj server bazy dannyh, prednaznachennyj dlya obespecheniya raboty v sistemah s malym ili srednim ob®emom informacii.
Hranenie dannyh v etom sluchae osushchestvlyaetsya v fajlovoj sisteme operacionnoj sistemy, chto znachitel'no uproshchaet razrabotku i ekspluataciyu prilozhenij.
Klienty i servery mogut nahodit'sya na odnom komp'yutere, libo na neskol'kih, svyazannyh mezhdu soboj set'yu. Podobnoe razdelenie funkcij daet vysokuyu proizvoditel'nost' i maksimal'nuyu gibkost'. Dlya obespecheniya otnoshenij svyazi tipa "klient-server" mezhdu razlichnymi komp'yuterami so storony servera primenyaetsya modul' Informix-NET.
Informix-OnLine - eto server vtorogo pokoleniya, obespechivayushchij tehnologiyu raspredelennyh tranzakcij (OLTP - on-line transaction processing). Tehnologiya raspredelennyh tranzakcij pozvolyaet vypolnyat' zaprosy v raspredelennoj baze dannyh, fizicheski nahodyashchihsya na razlichnyh komp'yuterah. Po sravneniyu s Informix-SE server Informix-OnLine imeet special'nyj tip dannyh - bitovye polya (BLOB - Binary Large Objects), simvol'nye stroki peremennoj dliny, buferizaciyu tranzakcij, zerkal'nyj disk, avtomaticheskoe vosstanovlenie posle sistemnyh sboev, bol'shuyu skorost' (v 2-4 raza).
Modul' Informix-Star yavlyaetsya sredstvom podderzhki raboty s raspredelennymi bazami dannyh. Posredstvom modulya InformixStar osushchestvlyaetsya operativnaya obrabotka tranzakcij.
Rabota servera Informix zaklyuchaetsya v zapuske special'noj programmy (SQLEXEC dlya Informix-SE i SQLTURBO dlya Informix-OnLine), kotoraya obespechivaet rabotu vseh SQL-operatorov. Dlya kazhdogo klienta zapuskaetsya process operacionnoj sistemy, ispol'zuyushchij etu programmu. V sluchae, esli klient prerval rabotu, no ne vyshel iz svoej zadachi, to ego process zanimaet resursy sistemy, snizhaya ee proizvoditel'nost'.
Odnim iz poslednih dostizhenij firmy stal vypusk novogo servera bazy dannyh OnLine Dynamic Server, kotoroj vhodit v sostav sistemy nachinaya s versii 6.0. |tot produkt osnovan na tak nazyvaemoj Dinamicheskoj Masshtabiruemoj Arhitekture (Dynamically Scalable Architecture - DSA), kotoraya special'no orientirovana na rabotu s mnogoprocessornymi sistemami. OnLine Dynamic Server obespechivaet povyshenie proizvoditel'nosti za schet gibkosti ispol'zovaniya resursov SUBD, ispol'zovanie mnogopotochnoj arhitektury. Fakticheski OnLine Dynamic Server beret na sebya mnogie svyazannye s raspredeleniem resursov funkcii operacionnoj sistemy. V rezul'tate umen'shaetsya nagruzka na operacionnuyu sistemy, chto v konechnom schete privodit k rostu proizvoditel'nosti.
Dlya obsluzhivaniya klientov zapuskayutsya "virtual'nye processory" - processy operacionnoj sistemy, kotorye ustanavlivayut svyaz' mezhdu klientom i yadrom Informix. Svyaz' ustanavlivaetsya s pomoshch'yu special'nyh "nitej" (thread), kotorye aktiviziruyutsya tol'ko esli klient aktiven i obrashchaetsya k serveru bazy dannyh. V sluchae, esli klient neaktiven, "nit'" mozhet obsluzhivat' drugih klientov.
CHislo virtual'nyh processorov opredelyaet administrator bazy dannyh, ishodya iz real'nyh resursov vychislitel'noj sistemy i seti klientov. Esli vychislitel'naya sistema yavlyaetsya mnogoprocessornoj, to raznye virtual'nye processory mogut obsluzhivat'sya raznymi real'nymi processorami.
V versii 6.0 setevye funkcii zalozheny v yadre SUBD. Poetomu dlya funkcionirovaniya v seti OnLine Dynamic Server moduli Informix-Net ili Informix-Star ne trebuyutsya.
2.2 Arhitektura SUBD servera Informix OnLine v.7.X
K SUBD, pretenduyushchim na rol' informacionnoj osnovy sovremennyh predpriyatij, pred®yavlyayutsya vse novye i bolee zhestkie trebovaniya. K chislu vazhnejshih mozhno otnesti sleduyushchie:
- vysokaya proizvoditel'nost'
- masshtabiruemost'
- smeshannaya zagruzka servera raznymi tipami zadach
- nepreryvnaya dostupnost' dannyh
Dannyj razdel posvyashchen, glavnym obrazom, rassmotreniyu arhitekturnyh osobennostej i mehanizmov servera INFORMIX-OnLine DS, napravlennyh na udovletvorenie perechislennyh vyshe trebovanij. Privoditsya takzhe informaciya o sredstvah raspredelennyh vychislenij, bezopasnosti, podderzhki nacional'noj sredy.
2.2.1 . Dinamicheskaya masshtabiruemaya arhitektura
Arhitektura servera INFORMIX-OnLine DS poluchila nazvanie "dinamicheskaya masshtabiruemaya arhitektura" (DSA). Sut' ee zaklyuchaetsya v tom, chto odnovremenno vypolnyaetsya otnositel'no nebol'shoe chislo servernyh processov (virtual'nyh processorov), kotorye razdelyayut mezhdu soboj rabotu po obsluzhivaniyu mnozhestva klientov. Po sravneniyu s bolee rannimi modelyami servera INFORMIX, gde dlya kazhdogo klienta sozdavalsya individual'nyj servernyj process (ris. 1), novaya model' obladaet ryadom preimushchestv:
- snizhenie nagruzki na operacionnuyu sistemu (chislo servernyh processov neveliko);
- sokrashchenie sovokupnoj potrebnosti klientov v operativnoj pamyati;
- snizhenie konkurencii pri odnovremennom ispol'zovanii sistemnyh resursov;
- bolee racional'noe po sravneniyu s OS naznachenie prioritetov i planirovanie;
Dlya mnogoprocessornyh platform:
>
- ravnomernaya zagruzka nalichnyh processorov;
- uskorenie obrabotki slozhnyh zaprosov za schet parallel'nogo vypolneniya na neskol'kih processorah.
Ris. 1. Model' "odin klient - odin servernyj process".
Poka pol'zovatel' analiziruet rezul'taty ili gotovit ocherednoj zapros, servernyj process prostaivaet, zanimaya sistemnye resursy.
Arhitektura DSA polnost'yu ispol'zuet vozmozhnosti simmetrichnyh mnogoprocessornyh platform SMP (Symmetric Multiprocessing systems), i mozhet rabotat' na odnoprocessornyh platformah. V posleduyushchih versiyah predpolagaetsya rasshirit' arhitekturu servera, obespechiv podderzhku slabosvyazannyh sistem i sistem s massovym parallelizmom (MPP). Vse bazovye tehnologii DSA yavlyayutsya vstroennymi, oni vklyucheny v biblioteki servera, i ih primenenie ne zavisit ot osobennostej OS ili apparatnyh platform razlichnyh postavshchikov.
2.2.1.1 Potoki
Arhitekturu INFORMIX-OnLine DS nazyvayut takzhe mnogopotokovoj. Dlya kazhdogo klienta sozdaetsya tak nazyvaemyj potok, ili nit' (thread). Potok - eto podzadacha, vypolnyaemaya v ramkah odnogo iz servernyh processov.
V nekotoryh sluchayah dlya obsluzhivaniya odnogo klientskogo zaprosa sozdaetsya neskol'ko parallel'nyh potokov. Potoki sozdayutsya takzhe dlya vypolneniya vnutrennih zadach servera - vvoda-vyvoda, zhurnalizacii, administrirovaniya i dr. Takim obrazom, odnovremenno vypolnyaetsya mnozhestvo potokov, kotorye raspredelyayutsya mezhdu nalichnymi virtual'nymi processorami (ris. 2).
Ris.2. Mnogopotokovaya model'. Virtual'nye processory (VP) ne prostaivayut, esli imeyutsya gotovye k vypolneniyu pol'zovatel'skie ili sistemnye potoki.
INFORMIX-OnLine DS ne polagaetsya na mehanizmy potokov, imeyushchiesya v nekotoryh operacionnyh sistemah. On formiruet potoki, specifichnye dlya zadach obrabotki baz dannyh, optimal'nye v otnoshenii vydelyaemoj pod nih pamyati, metodov planirovaniya i chisla instrukcij, zatrachivaemyh na pereklyuchenie mezhdu potokami.
2.2.1.2 Virtual'nye processory
Virtual'nym processorom nazyvaetsya process servera baz dannyh. Virtual'nyj processor mozhno sravnit' s operacionnoj sistemoj. Potok po otnosheniyu k nemu vystupaet kak process, podobno tomu, kak sam virtual'nyj processor yavlyaetsya processom s tochki zreniya operacionnoj sistemy.
Virtual'nye processory (VP) yavlyayutsya specializirovannymi - oni podrazdelyayutsya na klassy v sootvetstvii s tipom potokov, dlya vypolneniya kotoryh oni prednaznacheny. Primery klassov VP:
CPU - Potoki obsluzhivaniya klientov, realizuyut optimizaciyu i logiku vypolneniya zaprosov. K etomu klassu otnosyatsya i nekotorye sistemnye potoki.
AIO - Operacii asinhronnogo obmena s diskom.
ADM - Administrativnye funkcii, naprimer, sistemnyj tajmer.
TLI - Kontrol' setevogo vzaimodejstviya posredstvom interfejsa TLI (Transport Layer Interface).
V otlichie ot operacionnoj sistemy, kotoraya dolzhna obespechivat' vypolnenie proizvol'nyh processov, klassy virtual'nyh processorov sproektirovany dlya naibolee optimal'nogo vypolneniya zadanij opredelennogo vida.
Nachal'noe chislo virtual'nyh processorov kazhdogo klassa, sozdavaemyh pri zapuske INFORMIX-OnLine DS, zadaetsya v konfiguracionnom fajle. Odnako, potrebnosti v kazhdom vide obrabotki ne vsegda predskazuemy. Instrumenty administrirovaniya pozvolyayut dinamicheski, ne ostanavlivaya server, zapustit' dopolnitel'nye virtual'nye processory. Naprimer, esli rastet ochered' potokov k virtual'nym CPU-processoram, to mozhno uvelichit' ih chislo. Tochno tak zhe, vozmozhno dobavlenie virtual'nyh processorov obmena s diskami, setevyh processorov vzaimodejstviya s klientami, sozdanie processora obmena s opticheskim diskom, esli on otsutstvoval v nachal'noj konfiguracii. Dinamicheski sokratit' mozhno tol'ko chislo virtual'nyh processorov klassa CPU.
Na nekotoryh mul'tiprocessornyh platformah, gde OnLine DS podderzhivaet rodstvo processorov (processor affinity), dopuskaetsya privyazka virtual'nyh CPU-processorov k opredelennym central'nym processoram komp'yutera. V rezul'tate proizvoditel'nost' virtual'nogo CPU-processora povyshaetsya, poskol'ku operacionnaya sistema rezhe proizvodit pereklyuchenie processov. Privyazka pozvolyaet takzhe izolirovat' rabotu s bazoj dannyh, vydelyaya dlya etoj celi opredelennye processory, v to vremya kak ostal'nye budut zanyaty drugimi zadachami.
2.2.1.3 Planirovanie potokov
Server osvedomlen o stepeni znachimosti razlichnyh potokov i v sootvetstvii s etim naznachaet dlya nih prioritety. Naprimer, potoki vvoda-vyvoda poluchayut prioritety sleduyushchim obrazom:
- vvod-vyvod logicheskoj zhurnalizacii - naivysshij prioritet;
- vvod-vyvod fizicheskoj zhurnalizacii - vtoroj po znachimosti prioritet;
- prochie operacii vvoda-vyvoda- nizshij prioritet.
Takim obrazom, garantiruetsya, chto operacii zapisi v logicheskij zhurnal, ot kotoryh zavisit vosstanovlenie bazy dannyh v sluchae sboya, ne okazhutsya v ocheredi pozadi operacii vyvoda vo vremennyj rabochij fajl.
Sami virtual'nye processory vypolnyayutsya kak vysokoprioritetnye processy operacionnoj sistemy, kotorye ne preryvayutsya, poka ne pusty ocheredi gotovyh k vypolneniyu potokov.
Vypolnenie potoka ne otkladyvaetsya po istechenii zadannogo kvanta vremeni, kak eto proishodit s processami v operacionnoj sisteme. Potok otkladyvaetsya v dvuh sluchayah:
- kogda on vremenno ne mozhet vypolnyat'sya, naprimer, esli neobhodimo dozhdat'sya zaversheniya obmena s diskom, vvoda dannyh ot klienta, snyatiya blokirovki.
- kogda v kode potoka vstrechayutsya obrashcheniya k funkcii yield. Obrashcheniya k nej vstavlyayutsya pri kompilyacii zaprosov, trebuyushchih dlitel'noj obrabotki, chtoby ih vypolnenie ne tormozilo prohozhdenie drugih potokov. Dlya etogo vybirayutsya tochki, naibolee bezboleznennye dlya vypolneniya potoka.
2.2.1.4 Razdelenie potokov mezhdu virtual'nymi processorami.
Dlya kazhdogo klassa podderzhivayutsya tri ocheredi potokov, kotorye razdelyayutsya vsemi virtual'nymi processorami dannogo klassa:
- Ochered' gotovyh k vypolneniyu potokov.
- Ochered' spyashchih potokov. V nee pomeshchaetsya, naprimer, CPU-potok, kotoromu trebuetsya dostup k disku. Predvaritel'no CPU-potok porozhdaet zapros na obmen s diskom, dlya obsluzhivaniya kotorogo formiruetsya AIO-potok. Zavershiv obmen s diskom, AIO-potok opoveshchaet ob etom virtual'nyj processor CPU, kotoryj "budit" spyashchij CPU-potok i peremeshchaet ego v ochered' gotovyh potokov.
- Ochered' zhdushchih potokov. |ta ochered' sluzhit dlya koordinacii dostupa potokov k razdelyaemym resursam. V nee pomeshchayutsya potoki, ozhidayushchie kakogo-libo sobytiya, naprimer, osvobozhdeniya zablokirovannogo resursa. Kogda potok, zablokirovavshij etot resurs, gotov osvobodit' ego, prosmatrivaetsya ochered' zhdushchih potokov. Esli v nej est' potok, ozhidayushchij imenno etot resurs, to on peremeshchaetsya v ochered' gotovyh.
Esli vypolnyaemyj potok zavershaetsya, zasypaet ili otkladyvaetsya, to osvobodivshijsya virtual'nyj processor vybiraet iz ocheredi gotovyh ocherednoj potok s naivysshim prioritetom. Kak pravilo, OnLine DS stremitsya vypolnyat' potok na odnom i tom zhe virtual'nom processore, poskol'ku peredacha ego drugomu processoru trebuet peresylki nekotorogo ob®ema dannyh. Tem ne menee, esli potok gotov k vypolneniyu, on mozhet byt' prodolzhen drugim processorom, s cel'yu isklyucheniya prostoev i obespecheniya obshchego balansa zagruzki.
2.2.1.5 |konomiya pamyati i drugih resursov
Racional'noe ispol'zovanie resursov operacionnoj sistemy dostigaetsya za schet togo, chto potoki razdelyayut resursy (pamyat', kommunikacionnye porty, fajly) virtual'nogo processora, na kotorom oni vypolnyayutsya. Virtual'nyj processor sam koordiniruet dostup potokov k svoim resursam. Processy zhe, v otlichie ot potokov, imeyut individual'nye nabory resursov, i, esli resurs trebuetsya neskol'kim processam, to dostup k nemu reguliruetsya operacionnoj sistemoj.
Pereklyuchenie virtual'nogo processora s odnogo potoka na drugoj, v celom, proishodit bystree, chem pereklyuchenie operacionnoj sistemy s odnogo processa na drugoj. Operacionnaya sistema dolzhna prervat' odin process, vypolnyaemyj central'nym processorom, sohranit' ego tekushchee sostoyanie (kontekst) i zapustit' drugoj process, predvaritel'no pomestiv v yadro ego kontekst, chto trebuet fizicheskoj perezapisi fragmentov pamyati. Poskol'ku potoki razdelyayut virtual'nuyu pamyat' i deskriptory fajlov, to pereklyuchenie virtual'nogo processora s potoka na potok mozhet svodit'sya k perezapisi nebol'shogo upravlyayushchego bloka potoka, chto sootvetstvuet vypolneniyu primerno 20 mashinnyh komand. Pri etom virtual'nyj processor kak process operacionnoj sistemy prodolzhaet vypolnyat'sya bez preryvaniya.
2.2.2 Organizaciya razdelyaemoj pamyati
Razdelyaemaya pamyat' - eto mehanizm operacionnoj sistemy, na kotorom osnovano razdelenie dannyh mezhdu virtual'nymi processorami i potokami servera. Razdelenie dannyh pozvolyaet:
- Snizit' obshchee potreblenie pamyati, poskol'ku uchastvuyushchim v razdelenii processam, t. e. virtual'nym processoram, net nuzhdy podderzhivat' svoi kopii informacii, nahodyashchejsya v razdelyaemoj pamyati.
- Sokratit' chislo obmenov s diskami, potomu chto bufery vvoda-vyvoda sbrasyvayutsya na disk ne dlya kazhdogo processa v otdel'nosti, a obrazuyut odin obshchij dlya vsego servera baz dannyh pul. Virtual'nyj processor zachastuyu izbegaet vypolneniya ili obrashcheniya za rezul'tatami operacij vvoda s diska, poskol'ku nuzhnaya tablica uzhe prochitana drugim processorom.
- Organizovat' bystroe vzaimodejstvie mezhdu processami. CHerez razdelyaemuyu pamyat', v chastnosti, obmenivayutsya dannymi potoki, uchastvuyushchie v parallel'noj obrabotke slozhnogo zaprosa. Razdelyaemaya pamyat' ispol'zuetsya takzhe dlya organizacii vzaimodejstviya mezhdu lokal'nym klientom i serverom.
Upravlenie razdelyaemoj pamyat'yu realizovano takim obrazom, chto ee fragmentaciya minimiziruetsya, poetomu proizvoditel'nost' servera pri ee ispol'zovanii ne degradiruet s techeniem vremeni. Iznachal'no vydelennye segmenty razdelyaemoj pamyati narashchivayutsya po mere nadobnosti avtomaticheski ili vruchnuyu. Pri osvobozhdenii pamyati, zanyatoj serverom, ona vozvrashchaetsya operacionnoj sisteme.
V razdelyaemoj pamyati nahoditsya informaciya obo vseh vypolnyaemyh potokah, poetomu potoki otnositel'no bystro pereklyuchayutsya mezhdu virtual'nymi processorami. V chastnosti, v razdelyaemoj pamyati vydelyaetsya oblast' stekov potokov. Stek hranit dannye dlya funkcij, vypolnyaemyh potokom, i druguyu informaciyu o sostoyanii pol'zovatel'skogo seansa. Razmer steka dlya kazhdogo seansa ustanavlivaetsya pri pomoshchi peremennoj okruzheniya.
Vazhnyj optimiziruyushchij mehanizm servera - keshi hranimyh procedur i slovarej dannyh. Slovari dannyh (system catalog), dostupnye tol'ko na chtenie, a takzhe hranimye procedury, razdelyayutsya mezhdu vsemi pol'zovatelyami servera, chto pozvolyaet optimizirovat' sovokupnoe ispol'zovanie pamyati. Pri zagruzke v razdelyaemuyu pamyat' slovar' dannyh zapisyvaetsya v struktury, obespechivayushchie bystryj dostup k informacii, a hranimye procedury preobrazuyutsya v vypolnyaemyj format. Vse eto mozhet sushchestvenno uskorit' vypolnenie prilozhenij, obrashchayushchihsya ko mnogim tablicam s bol'shim chislom stolbcov i/ili ko mnogim hranimym proceduram.
2.2.3 Organizaciya operacij obmena s diskami
Operacii vvoda-vyvoda, kak pravilo, obrazuyut naibolee medlennuyu komponentu obrabotki baz dannyh. Poetomu ot ih realizacii sushchestvenno zavisit obshchaya produktivnost' servera. Dlya optimizacii vvoda-vyvoda i povysheniya nadezhnosti v servere INFORMIX-OnLine DS primenyayutsya sleduyushchie mehanizmy:
- sobstvennoe upravlenie diskovoj pamyat'yu;
- asinhronnyj vvod-vyvod;
- operezhayushchee chtenie.
2.2.3.1 Upravlenie diskovoj pamyat'yu
INFORMIX-OnLine DS podderzhivaet kak sobstvennyj mehanizm upravleniya diskovoj pamyat'yu, tak i upravlenie sredstvami fajlovoj sistemy OS UNIX. Preimushchestva sobstvennogo mehanizma upravleniya diskovoj pamyat'yu:
- Snyatie ogranichenij operacionnoj sistemy na chislo odnovremenno chitaemyh tablic.
- Optimizaciya razmeshcheniya tablic - dlya tablic vydelyayutsya bol'shie oblasti posledovatel'nyh fizicheskih blokov, v rezul'tate uskoryaetsya dostup k nim.
- Snizhenie nakladnyh rashodov pri chtenii - dannye s diskov schityvayutsya neposredstvenno v razdelyaemuyu pamyat', minuya bufery OS.
- Povyshenie nadezhnosti. Pri ispol'zovanii fajlovoj sistemy INFORMIX-OnLine DS ne mozhet garantirovat', chto v sluchae sboya dannye zhurnala tranzakcij ne propadut iz-za togo, chto oni ostalis' v buferah OS i ne uspeli zapisat'sya na disk. Poetomu procedura bystrogo vosstanovleniya, vyzyvaemaya pri perezapuske sistemy, ne obespechit v etom sluchae celostnosti dannyh.
Fajlovuyu sistemu ispol'zuyut v situaciyah, kogda net vozmozhnosti vydelit' pod bazy dannyh special'nye razdely na diskah, ili esli perechislennye soobrazheniya ne kritichny.
2.2.3.2 Asinhronnyj vvod-vyvod
Dlya uskoreniya operacij vvoda-vyvoda server ispol'zuet sobstvennyj paket asinhronnogo vvoda-vyvoda (AIO) ili paket asinhronnogo vvoda-vyvoda yadra OS (KAIO), esli on dostupen. Pol'zovatel'skie zaprosy na vvod-vyvod obrabatyvayutsya asinhronno, poetomu virtual'nym processoram CPU ne prihoditsya zhdat' zaversheniya operacii obmena, chtoby prodolzhit' obrabotku.
2.2.3.3 Operezhayushchee chtenie
Server OnLine DS mozhet byt' skonfigurirovan takim obrazom, chtoby pri chtenii posledovatel'noj tablicy ili indeksnogo fajla obespechivalos' operezhayushchee chtenie neskol'kih stranic v to vremya, poka obrabatyvayutsya uzhe prochitannye v razdelyaemuyu pamyat' dannye. Takim obrazom, sokrashchaetsya vremya ozhidaniya obmena s diskom, i pol'zovatel' bystree poluchaet rezul'taty zaprosa.
2.2.4 Podderzhka fragmentacii tablic i indeksov
INFORMIX-OnLine DS podderzhivaet gorizontal'nuyu lokal'nuyu fragmentaciyu tablic. |to takoj sposob hraneniya tablicy, kogda sovokupnost' ee strok razbivaetsya na neskol'ko grupp soglasno nekotoromu pravilu, i eti gruppy hranyatsya na raznyh diskovyh razdelah. Fragmentaciya tablic sposobstvuet dostizheniyu sleduyushchih celej:
- Sokrashchaetsya vremya obrabotki odnogo zaprosa. Vstroennyj v INFORMIX-OnLine DS mehanizm PDQ pri obrabotke zaprosov ispol'zuet informaciyu o fragmentacii tablic i sozdaet dlya skanirovaniya tablicy neskol'ko parallel'nyh potokov. Esli strategiya fragmentacii vybrana udachno, to uskorenie pri vyborke iz tablicy prakticheski linejno zavisit ot chisla fragmentov (ris. 3).
Ris.3. Operacii chteniya-zapisi fragmentirovannoj tablicy vypolnyayutsya parallel'no, v rezul'tate vremya obrabotki sokrashchaetsya proporcional'no chislu fragmentov.
- Snizhaetsya uroven' konkurencii pri odnovremennom obrashchenii neskol'kih zaprosov k odnoj tablice. INFORMIX-OnLine DS analiziruet pravilo fragmentacii tablicy i vo mnogih sluchayah sposoben opredelit', chto dannyj zapros otnositsya tol'ko k odnomu ee fragmentu. Esli fragmenty hranyatsya na raznyh diskovyh ustrojstvah, to raznym zaprosam budut sootvetstvovat' obrashcheniya k raznym diskam.
- Povyshaetsya gotovnost' (dostupnost') prilozhenij. Dazhe esli nekotorye fragmenty tablicy nedostupny iz-za togo, chto sootvetstvuyushchie diski vyshli iz stroya, zaprosy k nej, tem ne menee, vo mnogih sluchayah mogut vypolnyat'sya.
- Uluchshayutsya harakteristiki administrativnyh operacij, takih kak arhivirovanie-vosstanovlenie, zagruzka-vygruzka dannyh, poskol'ku oni primenimy k otdel'nym fragmentam tablic. Esli tablica razbita na malye fragmenty, to ee vosstanovlenie pri vyhode iz stroya odnogo fragmenta vypolnyaetsya znachitel'no operativnee, chem polnoe vosstanovlenie nefragmentirovannoj tablicy. Polnye operacii arhivirovaniya, vosstanovleniya, zagruzki, vygruzki dannyh takzhe uskoryayutsya, poskol'ku operacii vvoda-vyvoda dlya fragmentov tablicy vypolnyayutsya parallel'no.
Razlichayutsya dva tipa pravil fragmentacii tablic:
- Ravnomernoe raspredelenie (round robin) - eto vstroennyj v INFORMIX-OnLine DS mehanizm fragmentacii, kotoryj obespechivaet primerno ravnoe chislo zapisej v kazhdom fragmente.
- Raspredelenie po vyrazheniyu (by expression) - dlya kazhdogo fragmenta zadaetsya nekotoroe vyrazhenie, zavisyashchee ot znachenij polej zapisi; istinnost' vyrazheniya opredelyaet, popadet li zapis' v dannyj fragment.
Pravilo razbieniya tablicy zadaetsya v SQL-instrukciyah
CREATE TABLE (sozdat' tablicu), ALTER TABLE (izmenit' tablicu). Primer:
CREATE TABLE account ...
FRAGMENT BY EXPRESSION
id_num > 0 AND id_num <= 20 IN dbsp1
id_num >20 AND id_num <= 40 IN dbsp2
REMAINDER IN dbsp3
Zdes' dbsp1, dbsp2, dbsp3 - imena oblastej diskovogo prostranstva, vydelennogo pod BD.
INFORMIX-OnLine DS podderzhivaet takzhe fragmentaciyu indeksov. Razlichayutsya dva vida fragmentacii indeksov - zavisimaya (sootvetstvuyushchaya fragmentacii tablicy) i nezavisimaya. Fragmentirovannoj tablice mozhet sootvetstvovat' nefragmentirovannyj indeks. Sozdanie indeksa s pravilom fragmentacii, ne sovpadayushchim s pravilom fragmentacii tablicy, polezno v teh sluchayah, kogda v raznyh prilozheniyah vyborki iz tablicy osushchestvlyayutsya na osnove raznyh podmnozhestv ee atributov.
Strategiya fragmentacii tablic i indeksov vybiraetsya v zavisimosti ot celi, kotoraya presleduetsya, ot struktury tablicy i haraktera zaprosov k nej. Razlichnye strategii podrobno opisany v dokumentacii. Naprimer, esli osnovnoj cel'yu yavlyaetsya umen'shenie konkurencii pri odnovremennom dostupe k tablice, to optimal'noj budet fragmentaciya tablicy po diapazonam znacheniya klyucha (ili drugogo stolbca, na osnove kotorogo proizvoditsya osnovnoj dostup k tablice) i zavisimaya fragmentaciya indeksa.
INFORMIX-OnLine DS predostavlyaet sredstva nablyudeniya, pozvolyayushchie ocenit' effektivnost' fragmentacii tablic i indeksov po sleduyushchim parametram:
- Raspredelenie dannyh po fragmentam;
- Balans zaprosov na vvod-vyvod po fragmentam;
- Status diskovyh oblastej, soderzhashchih fragmenty.
Esli nablyudeniya pokazyvayut, chto vybrannaya strategiya ne udovletvoryaet postavlennoj celi, to pravila fragmentacii mogut byt' izmeneny dinamicheski, bez ostanovki servera.
Vazhno, chto fragmentaciya tablic i indeksov prozrachna dlya prilozhenij, rabotayushchih s bazoj dannyh. Izmenenie pravila fragmentacii ne trebuet nikakih izmenenij v prikladnyh sistemah - ono lish' povyshaet (ili snizhaet) skorost' i ekonomichnost' ih vypolneniya.
2.2.5 Parallel'naya obrabotka zaprosov
Parallel'naya obrabotka zaprosov (Parallel Data Query, PDQ) - eto tehnologiya, kotoraya pozvolyaet raspredelit' obrabotku odnogo slozhnogo zaprosa na neskol'ko processorov, mobilizovat' dlya ego vypolneniya maksimal'no dostupnye sistemnye resursy, vo mnogo raz sokrashchaya vremya polucheniya rezul'tata. Osnovnye tipy zadanij, na kotoryh proyavlyaetsya effekt tehnologii PDQ:
- obrabotka slozhnyh zaprosov, vklyuchayushchih skanirovanie bol'shih tablic, sortirovku, soedineniya, gruppirovanie, massovye vstavki;
- postroenie indeksov;
- sohranenie i vosstanovlenie dannyh;
- zagruzka, vygruzka dannyh, reorganizaciya baz dannyh;
- massovye operacii vstavki, udaleniya, modifikacii dannyh.
Prakticheski eto oznachaet, chto otchet ili otvet na slozhnyj zapros, ot kotorogo zavisit prinyatie otvetstvennogo resheniya, mozhno poluchit' ne zavtra (posle nochnoj obrabotki), a neposredstvenno vo vremya obychnoj operativnoj dnevnoj raboty. Snimayutsya problemy, svyazannye s obrabotkoj i obsluzhivaniem (arhivirovaniem, kopirovaniem) ochen' bol'shih tablic - blagodarya fragmentacii, parallel'noj obrabotke i vozmozhnostyam vypolneniya administrativnyh dejstvij v operativnom rezhime. V rezul'tate rasshiryaetsya klass potencial'nyh prilozhenij, i, sootvetstvenno, krug pol'zovatelej, bolee gibkim stanovitsya rezhim raboty IS, prichem vse eto dostigaetsya ne na uzkospecializirovannyh, a na obychnyh shiroko rasprostranennyh apparatnyh platformah. Takim obrazom, mozhno govorit' o novom kachestve, kotoroe privnosit s soboj tehnologiya PDQ.
Maksimal'nye preimushchestva eta tehnologiya daet na mnogoprocessornyh platformah v usloviyah primeneniya fragmentacii tablic, gde vremya vypolneniya zaprosa sokrashchaetsya v desyatki raz; odnako vyigrysh v proizvoditel'nosti dostigaetsya i na odnoprocessornyh mashinah i nefragmentirovannyh tablicah za schet togo, chto dostup k diskam osushchestvlyaetsya parallel'no s drugimi vidami obrabotki, i za schet maksimal'no polnogo ispol'zovaniya pamyati.
2.2.5.1 Na chem osnovana tehnologiya PDQ
Realizaciya zaprosa sostoit iz otdel'nyh dejstvij - skanirovaniya, sortirovki, gruppirovaniya i dr. |ti dejstviya nazyvayutsya iteratorami. Iteratory obrazuyut derevo realizacii zaprosa v tom smysle, chto rezul'taty vypolneniya odnih iteratorov yavlyayutsya ishodnymi dannymi dlya drugih. Pri obychnoj obrabotke iteratory vypolnyayutsya posledovatel'no. V osnove tehnologii PDQ lezhat sleduyushchie vidy optimizacii i regulirovaniya:
- Parallel'nyj vvod i vyvod (na osnove gorizontal'noj fragmentacii tablic).
- Rasparallelivanie otdel'nyh iteratorov (na osnove metodov razbieniya dannyh).
- Rasparallelivanie plana vypolneniya zaprosa (putem razbieniya dereva realizacii zaprosa na nezavisimye podderev'ya; za schet primeneniya tehniki potokov dannyh).
- Snizhenie vychislitel'noj slozhnosti algoritmov (primenenie osnovannyh na heshirovanii algoritmov sortirovki, soedineniya, vychisleniya agregatnyh funkcij (sum, min, max, avg, ...)).
- Upravlenie resursami, regulirovanie stepeni rasparallelivaniya (pod PDQ vydelyaetsya opredelennaya dolya sistemnyh resursov).
2.2.5.2 Iteratory
Iterator - eto programmnyj ob®ekt, kotoryj osushchestvlyaet iterativnuyu (ciklicheskuyu) obrabotku nekotorogo mnozhestva dannyh. Iteratory razlichayutsya tipom proizvodimoj obrabotki, no imeyut edinoobraznyj vneshnij interfejs (ris. 4). Kazhdyj iterator otkryvaet odin (ili bolee) vhodnyh potokov dannyh (data flow), posledovatel'no schityvaet ih i, posle obrabotki, pomeshchaet rezul'taty v vyhodnoj potok. Iteratoru bezrazlichen istochnik vhodnogo potoka i naznachenie vyhodnogo potoka - eto mozhet byt' disk, drugoj iterator, setevoe soedinenie. My budem govorit' o postavshchikah i potrebitelyah potokov dannyh. Nizhe perechisleny tipy iteratorov, primenyaemye v INFORMIX-OnLine DS:
Ris. 4. Rabota iteratora ne zavisit ot istochnikov vhodnyh dannyh. Vyvod postupaet ob®ektu, kotoryj vyzval iterator.
SCAN - Skaniruet fragmentirovannye i nefragmentirovannye tablicy i indeksy.
NESTED LOOP JOIN - Realizuet standartnuyu logiku soedinenij metodom vlozhennyh ciklov (chitaet stroku iz odnoj tablicy, nahodit vse sovpadeniya vo vtoroj tablice, chitaet sleduyushchuyu stroku iz pervoj tablicy i t. d.).
MERGE JOIN - Vypolnyaet fazu sliyaniya dlya soedineniya metodom sortirovki i sliyaniya.
HASH JOIN - Realizuet novyj metod soedinenij s heshirovaniem. Dlya odnoj iz dvuh soedinyaemyh tablic stroitsya hesh-tablica, vtoraya tablica zondiruetsya. Optimizator reshaet, kakaya iz tablic budet heshirovat'sya.
GROUP - Gruppiruet dannye (GROUP BY) i vychislyaet agregatnye funkcii.
SORT - Sortiruet dannye.
MERGE - Vypolnyaet ob®edineniya UNION i UNION ALL (dlya UNION ispol'zuetsya kombinaciya iteratorov MERGE i SORT).
REMOTE - Realizuet udalennye skanirovaniya dlya operatorov SELECT.
Iterator kak programmnyj ob®ekt sostoit iz staticheskih i dinamicheskih struktur dannyh. Staticheskaya struktura soderzhit ssylki na funkcii (ili metody), primenimye k iteratoru. Dinamicheskaya struktura soderzhit informaciyu o tekushchem sostoyanii iteratora (otkryt, zakryt, vypolnyaet ocherednuyu iteraciyu), odnu ili dve ssylki na postavshchikov.
Metody iteratora
CREATE() - Sozdaet iterator. Vydelyaet pamyat' dlya iteratora, inicializiruet ego struktury, a takzhe ostal'nye metody (open(), next(), close(), free()), t.e. ustanavlivaet ssylki na funkcii, sootvetstvuyushchie dannomu tipu iteratora. Zatem vyzyvaet metod create() dlya svoih iteratorov-postavshchikov, kotorye sozdadut svoih postavshchikov, esli takovye imeyutsya, i t. d. Takim obrazom, vyzov metoda create() dlya kornevogo iteratora privodit k sozdaniyu vsego dereva iteratorov.
OPEN() - Zapuskaet iterator. Vypolnyayutsya specificheskie dlya dannogo tipa iteratora inicializiruyushchie dejstviya, vozmozhno, zapros dopolnitel'noj pamyati. Naprimer, pri zapuske iteratora skanirovaniya opredelyaetsya, kakie fragmenty neobhodimo skanirovat', ustanavlivaetsya ukazatel' na pervyj iz nih, sozdaetsya vremennaya tablica (esli ona nuzhna), posylaetsya soobshchenie
MGM (MGM - komponenta servera, kotoraya reguliruet vydelenie resursov pod zaprosy, obrabatyvaemye sredstvami PDQ; sm. ob etom nizhe, p. "Balans mezhdu OLTP i DSS-prilozheniyami") o zapuske potoka skanirovaniya. Dalee primenyaetsya metod open() po otnosheniyu k postavshchikam iteratora, kotorye primenyat ego k svoim postavshchikam i t.d. Takim obrazom, dlya zapuska vsego dereva iteratorov dostatochno primenit' metod open() k kornevomu iteratoru.
NEXT() - Vypolnyaet odnu iteraciyu. Vypolnenie nachinaetsya s togo, chto iterator primenyaet metod next() k svoim postavshchikam, zastavlyaya ih takzhe primenit' next() k svoim postavshchikam i t. d., poka ne srabotayut iteracii postavshchikov nizhnego urovnya. Zatem dannye podnimayutsya snizu vverh - kazhdyj iterator, poluchiv dannye ot svoego postavshchika, primenyaet k nim svoj specificheskij vid obrabotki i peredaet rezul'tat svoemu potrebitelyu. Metod next() primenyaetsya ciklicheski, poka ne postupit priznak konca potoka dannyh.
CLOSE() - Zakryvaet iterator. Vysvobozhdaet pamyat', vydelennuyu pri zapuske. Fakticheski, eta pamyat' mogla uzhe byt' vysvobozhdena metodom next(), kogda on poluchil priznak konca dannyh, poskol'ku obshchij princip sostoit v tom, chtoby osvobozhdat' pamyat' srazu zhe, kak tol'ko ona stanovitsya ne nuzhna. Odnako, eto ne vsegda vozmozhno. Poetomu na metod close() vozlagaetsya otvetstvennost' za to, chtoby pamyat' v lyubom sluchae byla osvobozhdena.
Metod close() rekursivno primenyaetsya k postavshchikam, tem samym, zakryvaetsya vse derevo iteratorov.
FREE() - Osvobozhdaet iterator. Vysvobozhdaet pamyat', vydelennuyu pri sozdanii. Primenyaet free() k postavshchikam, takim obrazom, osvobozhdaetsya vse derevo iteratorov.
Blagodarya edinoobraziyu interfejsa, iteratory raznyh tipov mogut soedinyat'sya drug s drugom proizvol'nym obrazom (ris. 5). Iterator ne zabotitsya o tom, kakoj tip imeyut ego postavshchiki, poskol'ku on vzaimodejstvuet s nimi tol'ko posredstvom metodov. Iz opisaniya metodov sleduet, chto zapusk dereva, sostavlennogo iz iteratorov, realizuet ih parallel'noe vypolnenie. Dlya kazhdogo iteratora sozdaetsya potok vypolneniya, kotoryj prodvigaetsya po mere togo, kak poluchaet dannye ot svoih postavshchikov. Takim obrazom v servere realizuetsya vertikal'nyj parallelizm - odnovremennoe, konvejernoe vypolnenie razlichnyh iteratorov.
Ris. 5. Iteratory vypolnyayutsya parallel'no, kazhdyj mozhet prodvigat'sya po mere togo, kak postupayut dannye ot ego postavshchikov.
Drugoj vid parallelizma - gorizontal'nyj - zaklyuchaetsya v tom, chto vmesto odnogo iteratora (naprimer, skanirovaniya) sozdaetsya neskol'ko odnotipnyh parallel'no vypolnyaemyh iteratorov. Gorizontal'nyj parallelizm realizuetsya pri pomoshchi iteratorov special'nogo vida - iteratorov obmena (EXCHANGE). Posle togo, kak derevo realizacii zaprosa postroeno, optimizator opredelyaet, kakie ego komponenty imeet smysl rasparallelit'. Nad takoj komponentoj vstavlyaetsya iterator EXCHANGE. Iterator EXCHANGE sozdaet i zapuskaet neskol'ko ekzemplyarov svoego postavshchika, obespechivaet koordinaciyu postupayushchih ot nih potokov dannyh i ih peredachu svoemu potrebitelyu. Peredacha dannyh osushchestvlyaetsya v etom sluchae ne cherez vhody potrebitelya, a cherez ocheredi paketov v razdelyaemoj pamyati.
Stepen' i naibolee optimal'nye sposoby primeneniya vertikal'nogo i gorizontal'nogo parallelizma dlya kazhdogo konkretnogo zaprosa opredelyaetsya optimizatorom. Optimizator prinimaet resheniya, ishodya iz znachenij parametrov konfiguracii, ustanavlivaemyh administratorom, pol'zovatelem i klientskim prilozheniem, a takzhe s uchetom nekotoryh vnutrennih soobrazhenij, takih kak chislo nalichnyh processorov, fragmentaciya uchastvuyushchih v zaprose tablic, slozhnost' zaprosa i t. d.
Rezul'taty testov pokazyvayut, chto mehanizmy PDQ i optimizacii INFORMIX-OnLine DS obespechivayut s uvelicheniem chisla processorov prakticheski proporcional'nyj rost proizvoditel'nosti.
2.2.5.3 Primery primeneniya parallelizma
Parallel'naya sortirovka
Sortirovka - eto fundamental'naya operaciya obrabotki baz dannyh, primenyaemaya pri vypolnenii takih dejstvij, kak postroenie indeksov, soedinenie metodom sortirovki i sliyaniya, gruppirovanie; poetomu uskorenie sortirovki uluchshaet kachestvo mnogih prilozhenij.
Pri parallel'noj sortirovke sovokupnost' dannyh razbivaetsya na sekcii, kotorye peredayutsya dlya sortirovki neskol'kim processoram. Zatem vypolnyaetsya sliyanie otsortirovannyh sekcij.
Na praktike skorost' sortirovki ogranichivaetsya vremenem skanirovaniya dannyh iz tablic. |to ogranichenie v znachitel'noj mere snimaetsya primeneniem PDQ-algoritmov parallel'nogo skanirovaniya.
Parallel'noe skanirovanie
Operacii postroeniya indeksov, soedinenij, podgotovki otchetov, neobhodimye v bol'shinstve prilozhenij, trebuyut skanirovaniya bol'shih ob®emov dannyh, esli v nih uchastvuyut bol'shie tablicy. Tehnologiya PDQ pozvolyaet sushchestvenno snizit' vremya skanirovaniya. Esli tablica fragmentirovana, to sekcii skaniruyutsya parallel'no, pri etom vyigrysh vo vremeni primerno proporcionalen chislu diskov. Pri skanirovanii posledovatel'nyh tablic ili indeksov primenyaetsya konfiguraciya servera OnLine DS s operezhayushchim chteniem - vremya otklika sokrashchaetsya za schet togo, chto chtenie ocherednyh stranic idet parallel'no s obrabotkoj uzhe prochitannyh.
Parallel'noe postroenie indeksov
Procedura postroeniya indeksa nachinaetsya s ocenki ob®ema dannyh i opredeleniya chisla potokov, neobhodimyh dlya ih skanirovaniya. Zatem vypolnyaetsya parallel'noe skanirovanie dannyh s primeneniem, tam, gde eto vozmozhno, operezhayushchego chteniya. Schitannye dannye pomeshchayutsya v uchastki razdelyaemoj pamyati, i zapuskaetsya parallel'naya sortirovka uchastkov, dlya kazhdogo iz kotoryh stroitsya Vpodderevo; zatem iz nih formiruetsya obshchij indeks. Potoki sortirovki nachinayut vypolnyat'sya, ne dozhidayas' zaversheniya vseh potokov skanirovaniya, tochno tak zhe, potok postroeniya indeksa ne ozhidaet zaversheniya vseh potokov sortirovki - vse, chto mozhno, vypolnyaetsya parallel'no. V rezul'tate dostigaetsya uskorenie, vplot' do desyatikratnogo, po sravneniyu s posledovatel'nymi metodami postroeniya indeksov - v zavisimosti ot ob®emov dannyh, chisla ispol'zuemyh diskov i dostupnoj pamyati.
2.2.5.4 Balans mezhdu OLTP i DSS-prilozheniyami
V sovremennyh informacionnyh sistemah, kak pravilo, trebuetsya odnovremennoe vypolnenie raznyh po harakteru zaprosov k baze dannyh. Vydelyayutsya prilozheniya obrabotki dannyh tipa OLTP, DSS i paketnoj obrabotki.
Primer OLTP-zaprosa: Est' li svobodnyj nomer v kakoj-libo berlinskoj gostinice na 8-e dekabrya?
Primer DSS-zaprosa: Kakovy budut zatraty na realizaciyu strategii X ohrany zdorov'ya sotrudnikov po sravneniyu so strategiej Y s uchetom demograficheskogo profilya kompanii? Zavisit li effektivnost' strategii ot regiona?
Primerami zadanij paketnoj obrabotki mogut sluzhit' massovaya zagruzka dannyh, vydacha bol'shih slozhnyh otchetov, vypolnenie nekotoryh administrativnyh dejstvij, naprimer, po reorganizacii bazy dannyh.
Otvety na zaprosy pervogo tipa dolzhny vydavat'sya prakticheski mgnovenno, zaprosy vtorogo i tret'ego tipov mogut obsluzhivat'sya dostatochno dolgo, no pri otsutstvii ili maloj intensivnosti OLTP-prilozhenij zhelatel'no poluchat' otvety na DSS-zaprosy maksimal'no bystro.
Tehnologiya PDQ ispol'zuetsya v osnovnom dlya bystrogo vypolneniya DSS-zaprosov i paketnyh prilozhenij. Esli ee primenenie nichem ne ogranicheno, to sil'no rasparallelennoe vypolnenie neskol'kih slozhnyh zaprosov privodit k nedopustimomu zamedleniyu OLTP-prilozhenij, vypolnyayushchihsya na tom zhe servere. Upravlenie stepen'yu rasparallelivaniya zaprosov i dolej sistemnyh resursov, vydelyaemyh dlya PDQ-obrabotki, v srede INFORMIX-OnLine DS osushchestvlyaetsya pri pomoshchi neskol'kih parametrov konfigurirovaniya i peremennyh okruzheniya, znacheniya kotoryh dinamicheski nastraivaemy. Znacheniya etih parametrov i peremennyh ustanavlivayutsya sistemnymi administratorami i, v opredelennoj stepeni, prikladnymi programmistami i pol'zovatelyami.
Programmist ili pol'zovatel' zadaet tip kazhdogo zaprosa (obychnyj ili PDQ) i zhelaemuyu stepen' rasparallelivaniya dlya PDQ-zaprosov. Administrator, so svoej storony, dinamicheski ogranichivaet maksimal'nuyu dopustimuyu stepen' rasparallelivaniya PDQ-zaprosov, a takzhe opredelyaet dolyu sistemnyh resursov, vydelyaemyh pod obrabotku PDQ-zaprosov. Parallel'naya sortirovka primenyaetsya dlya lyubyh zaprosov, v tom chisle, obychnyh.
Takim obrazom, rezhim raboty servera INFORMIX-OnLine DS mozhet dinamicheski izmenyat'sya. V chasy naibolee aktivnoj raboty prilozhenij OLTP zaprosy DSS vypolnyayutsya bez rasparallelivaniya (kogda dlya kazhdogo zaprosa sozdaetsya vsegda tol'ko odin potok klassa CPU) ili s nevysokoj stepen'yu rasparallelivaniya. V ostal'noe vremya, ili na serverah, gde prilozheniya OLTP otsutstvuyut, ustanavlivaetsya maksimal'naya stepen' ispol'zovaniya PDQ.
Sobstvenno raspredeleniem resursov i prioritetov v sootvetstvii s ustanovlennymi znacheniyami zanimaetsya special'naya komponenta servera OnLine DS - Menedzher vydeleniya pamyati (Memory Grant Manager - MGM). Menedzher vydeleniya pamyati reguliruet ob®em sistemnyh resursov, potreblyaemyh PDQ-zadaniyami, a takzhe:
- ustanavlivaet prioritet kazhdogo zaprosa;
- sledit za tem, chtoby odnovremenno vypolnyalos' ne bolee zadannogo chisla PDQ-zaprosov;
- sledit za tem, chtoby ob®em razdelyaemoj pamyati, zanyatoj pod obrabotku slozhnyh zaprosov, ne prevyshal zadannogo urovnya;
- sovmestno s optimizatorom zaprosov obespechivaet maksimal'nuyu pri zadannyh parametrah stepen' parallelizma na vseh urovnyah.
2.2.6 Optimizator vypolneniya zaprosov po stoimosti
Optimizator zaprosov opredelyaet naibolee optimal'nyj s tochki zreniya zatrat sistemnyh resursov plan realizacii kazhdogo zaprosa k baze dannyh. Uchityvaetsya chislo obmenov s diskom, zatraty razdelyaemoj pamyati, zatraty na peresylku dannyh po seti i dr. Plan mozhet vklyuchat' parallel'noe vypolnenie operacij ili byt' strogo posledovatel'nym, chto zavisit kak ot struktury zaprosa, tak i ot resursov, vydelyaemyh MGM. Optimizator opiraetsya na statisticheskuyu informaciyu o raspredelenii dannyh po stolbcam tablic, periodicheskim sborom kotoroj upravlyaet administrator.
Naprimer, esli trebuetsya vypolnit' soedinenie dvuh tablic, nahodyashchihsya v raznyh uzlah seti, to optimizator splaniruet etu operaciyu takim obrazom, chto men'shaya po ob®emu tablica budet peredana na server, soderzhashchij bol'shuyu tablicu, gde i budet vypolneno soedinenie (ne obyazatel'no vypolnyat' ego na tom servere, k kotoromu proizvedeno pervoe podklyuchenie). Dopolnitel'naya optimizaciya dostigaetsya za schet fil'tracii tablicy pered ee peresylkoj, t. e. iz®yatiya iz nee ne uchastvuyushchih v dannoj operacii soedineniya strok i/ili stolbcov.
Optimizator daet vozmozhnost' razrabotchiku predvaritel'no poluchit' plan vypolneniya zaprosa, v tom chisle, raspredelennoj tranzakcii. Poluchiv takoj plan, razrabotchik mozhet vyyasnit', chto ne raspolagaet dostatochnoj pamyat'yu, chtoby sohranit' poluchennye v rezul'tate dannye, ili chto vypolnenie zaprosa potrebuet slishkom bol'shih zatrat sistemnyh resursov. V takoj situacii on libo otlozhit vypolnenie zaprosa na drugoe vremya, libo pereformuliruet zapros tak, chtoby suzit' ob®em vozvrashchaemyh dannyh, libo primet kakoe-to drugoe reshenie.
Prikladnoj programmist ili pol'zovatel' ustanavlivaet odin iz dvuh vozmozhnyh urovnej optimizacii - vysokij ili nizkij. Vysokij uroven' optimizacii predpolagaet perebor bol'shogo chisla vozmozhnyh variantov i sam trebuet bol'shih zatrat sistemnyh resursov, v chastnosti, pamyati. Optimizaciya nizkogo urovnya obhoditsya deshevle, poskol'ku perebiraetsya nebol'shoe chislo predpolozhitel'no optimal'nyh variantov, no ostaetsya veroyatnost' "upustit'" nailuchshij variant. Naprimer, plan vypolneniya hranimoj procedury vychislyaetsya zaranee s vysokim urovnem optimizacii i sohranyaetsya, posle chego ustanavlivaetsya nizkij uroven' - togda pri obrashchenii k procedure ispol'zuetsya postroennyj zaranee naibolee optimal'nyj plan.
2.2.7 Sredstva obespecheniya nadezhnosti
Server INFORMIX-OnLine DS predostavlyaet sleduyushchie sredstva dlya vosstanovleniya posle sboev i obespecheniya otkazoustojchivosti:
- Zerkalirovanie diskovyh oblastej
- Polnoe tirazhirovanie dannyh servera
- Bystroe vosstanovlenie pri vklyuchenii sistemy
- Sredstva arhivirovaniya dannyh
2.2.7.1 . Zerkalirovanie diskovyh oblastej
Zerkalirovanie v INFORMIX-OnLine DS - eto dublirovanie svyaznoj diskovoj oblasti, vydelennoj pod bazu dannyh, na takuyu zhe po razmeru oblast'. Ishodnaya oblast' nazyvaetsya pervichnoj, a ee kopiya - zerkal'noj. Celi, dlya kotoryh primenyaetsya zerkalirovanie - vysokaya gotovnost' i optimizaciya operacij chteniya.
Vysokaya gotovnost' dostigaetsya za schet togo, chto pri vyhode iz stroya diska, na kotorom nahoditsya pervichnaya oblast', server avtomaticheski prodolzhaet rabotu s ostavshimsya diskom bez perehoda servera v rezhim off-line. Vse operacii chteniya-zapisi proishodyat s zerkal'noj oblast'yu (pri uslovii, chto ona nahoditsya na drugom diske). Vosstanovlenie kopii na pervichnom diske posle ego vklyucheniya proizvoditsya v operativnom rezhime.
Zatraty na zerkalirovanie skladyvayutsya iz zatrat diskovogo prostranstva i zatrat na dopolnitel'nye operacii zapisi. V usloviyah, kogda imeetsya neskol'ko virtual'nyh processorov obmena s diskom, operacii zapisi na oba diska proizvodyatsya parallel'no, i zatraty vtorogo roda svodyatsya k minimumu. K tomu zhe oni kompensiruyutsya optimizaciej operacij chteniya, o kotoroj govoritsya nizhe.
V ideal'nom sluchae zerkalirovanie dolzhno byt' obespecheno dlya vseh oblastej bazy dannyh. Krajne zhelatel'no podderzhivat' zerkalirovanie dlya kritichnyh oblastej, sostavlyayushchih kornevoe prostranstvo bazy dannyh i prostranstva, gde hranyatsya logicheskij i fizicheskij zhurnaly. Pri vyhode iz stroya lyubogo iz nih, esli net zerkal'nogo dublya, server nemedlenno perevoditsya v rezhim off-line. Pri otkaze drugih nezerkaliruemyh oblastej nedostupnymi stanovyatsya tol'ko hranyashchiesya na nih tablicy ili fragmenty tablic - do zaversheniya procedury ih vosstanovleniya. Poetomu dlya naibolee kritichnyh tablic takzhe zhelatel'no podderzhivat' zerkalirovanie.
Optimizaciya operacij chteniya dostigaetsya za schet razbieniya (split read). Stranicy, otnosyashchiesya k nachal'noj polovine oblasti, chitayutsya s pervichnoj oblasti, a stranicy iz vtoroj poloviny - s zerkal'noj. V rezul'tate uskoryaetsya poisk stranicy na diske, poskol'ku maksimal'nyj probeg diskovyh golovok sokrashchaetsya vdvoe.
2.2.7.2 Tirazhirovanie
Tirazhirovanie - eto podderzhanie na drugoj vychislitel'noj ustanovke kopii ob®ektov bazy dannyh. V INFORMIX-OnLine DS realizovano prozrachnoe tirazhirovanie dannyh s osnovnogo servera baz dannyh na vtorichnyj (ili podderzhivayushchij) server, k kotoromu razreshen dostup tol'ko na chtenie i kotoryj mozhet nahodit'sya v drugom geograficheskom punkte. V etoj terminologii server, ne uchastvuyushchij v tirazhirovanii, nazyvaetsya standartnym.
Glavnaya cel' tirazhirovaniya v INFORMIX-OnLine DS - eto obespechenie vysokoj gotovnosti (High Availability Data Replication - HDR). V sluchae otkaza osnovnogo servera vtorichnomu serveru avtomaticheski ili vruchnuyu pridaetsya status standartnogo, s dostupom na chtenie i zapis' (ris. 6, ris. 7). Prozrachnoe perenapravlenie klientov pri otkaze osnovnogo servera ne podderzhivaetsya, no ono mozhet byt' realizovano v ramkah prilozhenij.
Ris. 6. Tirazhirovanie. Osnovnoj server dostupen na chtenie i zapis', vtorichnyj - tol'ko na chtenie.
Ris. 7. Kogda osnovnoj server vyhodit iz stroya, vtorichnyj perehodit v rezhim standartnogo servera i stanovitsya dostupen na chtenie i zapis'.
Posle vosstanovleniya osnovnogo servera, v zavisimosti ot znacheniya parametra konfiguracii, vybiraetsya odin iz dvuh vozmozhnyh scenariev: