|
Klijent za Clipper instalira se
kao poseban RDD koji je potpuno kompatibilan sa postojećim DBFNTX i
DBFCDX drajverima. Potrebno je po uputstvu izmeniti skriptove za
linkovanje i u aplikaciji na početku izabrati novi RDD naredbom RddSetDefault i to je sve - source
programa ostaje neizmenjen, a ipak se program potpuno drugačije
ponaša. Podaci u bazi ostaju neizmenjeni i ne zahteva se nikakva
konverzija. Na serveru se startuje ADS koji očekuje zahtev, a
vaš program je sada klijent. Komunikacija se obavlja IP ili IPX
protokolom.
Nakon startovanja, program uobičajenim
naredbama pristupa podacima na mapiranom mrežnom disku. Na primer,
izvršavaju se naredbe Use , Index, Replace, Skip
itd. ali klijent sada te operacije ne izvršava, nego samo
prosleđuje zahtev ADS serveru. Server reaguje i izvršava zahtev
(ukoliko startujete konzolu na serveru, možete pratiti obradu zahteva i
protok podataka). Rezultat je isti, ali se obrada drastično razlikuje.
Uočite da se obrada desila isključivo na serveru, a radna stanica samo
treba da prikaže rezultat obrade.
Uključivanje ADS-a u vašu
aplikaciju neće učiniti da program "poleti"; rad u "lokalu" će čak biti
usporen u odnosu na standardnu obradu, jer u slučaju ADS cela obrada
opet ide mrežnim protokolom što je mnogo sporije nego direktan
pristup lokalnom disku. Čim se pojavi nekoliko istovremenih korisnika,
stvar je potpuno drugačija - klasična obrada postaje sporija, dok ADS-u
jedino usko grlo predstavlja hardver servera. Pri tom treba imati u
vidu da fajl server postaje aplikativni server i da se na njemu
izvršavaju naredbe vezane za bazu podataka, dok je u klasičnom
slučaju samo odgovarao na zahteve za čitanje/pisanje fajlova. Zato je
važno da server bude snažna mašina, naročito ako ima veliki broj
korisnika koji paralelno koriste program.
ADS je prava 32-bitna multithread
aplikacija koja podržava više procesora, pa će većina obrada
biti znatno brža čak i u poređenju sa ranijom lokalnom obradom. Samo
ova osobina bila bi vredna korišćenja ADS-a, ali se lista
prednosti tu ni izbliza ne završava: kako je sada obrada
podataka centralizovana, moguće je daleko kvalitetnije uraditi
centralno keširanje podataka i optimizaciju upita. Na primer,
umesto primitivnog mehanizma zaključivanja koji se primenjuje na tabele
fajl-servera, ADS ima posebne redove lokovanja koje optimizuje i tako
postiže značajne dobitke u performansama. Tabelu više nema
potrebe stalno otvarati i zatvarati; sve to kontroliše ADS i
klijent ne koristi nijedan file handle za obradu.
|
ADS takođe koristi posebne tehnike za
optimizaciju filtera i pretraživanja, pa se te operacije obavljaju
daleko brže. Podržana su tri formata podataka. Prvi je standardni DBF
sa NTX indeksima i DBT memo-poljima. Ovaj format je uglavnom podržan
zbog kompatibilnosti i preporuka je da se koristi napredniji DBFCDX sa
znatno kvalitetnijim CDX i IDX indeksima i FPT memo-poljima. Postoji i
ADT/ADI format koji obezbeđuje najbolje performanse i mogućnosti, ali
na žalost nije podržan za korišćenje iz Clipper-a.
Napredne funkcije
Bez obzira na zaista jednostavan
početak, za puno korišćenje ADS-a treba uložiti određeni trud u
izmenu programa. Ustvari, prosto aktiviranje ADS-a, verovatno će
prilično degradirati performanse vašeg programa. Da bi se stanje
popravilo, treba donekle izmeniti logiku programa i upotrebiti neke
mogućnosti koje ADS podržava. Jedna od njih je korišćenje
indeksa za filtriranje slogova. Poslovično spora naredba Set Filter je verovatno najslabija karika Clipper sistema za obradu podataka. Na primer, ako zadate naredbu Set filter to p_id>10 i počnete neku obradu koja prolazi celu tabelu, uslov p_id>10 biće računat prilikom svakog pristupa nekom slogu. ADS koristi derivat poznate Rushmore tehnologije: ako postoji indeks po polju p_id,
mogu se odbaciti slogovi koji ne zadovoljavaju uslov. Važno je da se
pri tom i ne koriste podaci u DBF tabeli, nego samo indeks, što
znači da je polazni upit značajno optimizovan. U stvari, Set Filter se preslikava u novu ADS funkciju koja podržava optimizaciju upita.
Osim ovakvih dinamičkih filtera, ADS poznaje i svojevrsne statičke filtere. Nakon Set Filter
zadati uslov se nanovo izračunava prilikom svakog pristupa nekom slogu
a pri tome se izraz uvek računa, bez obzira na to što je jednom
već izračunat za isti slog; možda je neki drugi korisnik u međuvremenu
izmenio podatke. Zato ADS poznaje tzv. AOF - Advanced Optimized Filters.
To su nizovi bitova koji omogućavaju mnogo bržu selekciju slogova iz
tabele nego pomoću tradicionalnog filtera. Uslov se ispituje samo
prilikom kreiranja AOF-a i onda se odlučuje da li slog ispunjava uslov
ili ne. Ukoliko neki korisnik izmeni ili doda podatak, AOF ga neće
automatski prihvatiti, ukoliko se ne izvrši naredba koja
regeneriše AOF. Korišćenje takvog filtera je daleko brže
nego višestruko izračunavanje Set Filter izraza. Ukoliko je to moguće, računanje AOF se optimizuje i koriste se samo indeksi umesto podataka iz tabela.
|