Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sta vise opterecuje bazu?

[es] :: Pascal / Delphi / Kylix :: Sta vise opterecuje bazu?

[ Pregleda: 2832 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU

Član broj: 4114
Poruke: 1586
*.adanet.co.yu.



+17 Profil

icon Sta vise opterecuje bazu?29.12.2006. u 10:31 - pre 183 meseci
Posto radim program sa puno upita i puno otvorenih tabela interesuje me sledece..
Sta vise opterecuje bazu, recimo kada otvorim tabelu iscitam nesto iz nje pa je posle zatvorim ili jedan upit?
Ako drzim stalno otvoren upit da li on vise opterecuje bazu?
Dakle, poenta je da li se vise isplati otvoriti tabelu procitati sta treba i upisati ili sve to raditi sa upitima?
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 11:24 - pre 183 meseci
1. Otvaranje tabele je takodje upit, tako da nema razlike.
2. Ako je istovremeno samo jedan korisnik nakacen na bazu nema razlike, a ukoliko ima vise korisnika
razlika moze biti dramaticna, jer vise korisnika mogu pristupati i menjati iste podatke sto moze
dovesti do nezgodnih situacija (generalno govoreci), koje jesu resive ali traze dobro razumevanje
problematike (ponajvise transakcija)
3. Razliku mozes napraviti ako upit optimizujes da ti vraca samo odredjen skup
podataka a ne kompletnu tabelu. U svakom slucaju nikako ne treba koristiti koponentu za
rad sa celom tabelom. Teorijski moze ali je u praksi broj slucajeva gde to ne smeta veoma
mali.

Znaci savet je da treba koristiti upite tj. Query komponente jer omogucavaju vecu fleksibilnost u radu.
Takodje treba prouciti sta su transakcije i kako se ispravno koriste.
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
212.200.179.*



Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 12:31 - pre 183 meseci
Da se nadovezem pitanjima, ako nije odstupanje od teme, a ako jeste, nek moderator izbrise poruku.
Citat:
jer vise korisnika mogu pristupati i menjati iste podatke sto moze dovesti do nezgodnih situacija (generalno govoreci), koje jesu resive ali traze dobro razumevanje problematike (ponajvise transakcija)


Pitanja, teoretski za sad:
1) kako odraditi da vise korisnika vrsi obradu (INSERT, UPDATE) nad jednom tabelom, cak nad istim slogom?
2) ako u TADOQuery, npr., napisemo 'SELECT * FROM TABELA", jel mi vec tada ne povlacimo celu tabelu, ili
samo ucitavmo u TDBGrid taj upit koji smo poslali nekom serveru za bazu podataka?
Takodje, kad radimo INSERT, UPDATE, da li se tabela ucitva u klijentski program, ili se podaci za insert,
update salju serveru, pa se te operacije na njemu vrse?
3) Transakcije - koriscenje u delphiju?

Hvala unapred.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2685



+78 Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 14:14 - pre 183 meseci

> 1) kako odraditi da vise korisnika vrsi obradu (INSERT, UPDATE) nad jednom tabelom, cak nad istim slogom?

Ne možeš tek tako pustiti korisnike da istovremeno rade sa istim podacima, dolazi do konflikta. Mraš ili uraditi podršku za rešavanje konflikta (Mika upisao 30 a Pera upisao 40, šta uzeti kao ispravnu?) ili zabraniti istovremeni rad sa istim slogom (preko lokovanja, posebne tabele semafora, application servera...)

> 2) ako u TADOQuery, npr., napisemo 'SELECT * FROM TABELA", jel mi vec tada ne povlacimo celu tabelu, ili
> samo ucitavmo u TDBGrid taj upit koji smo poslali nekom serveru za bazu podataka?

Povući tabelu = Poslati upit za čitanje tabele. SELECT * FROM vraća sva polja date tabele a ako se ne postavi filter preko WHERE onda povlači i sve slogove. Zavisno od količine podataka i komponenti za pristup podacima (da li se automatski prevlači čitav result set na klijent) ta operacija može biti problematična i dugotrajna. Savet je da se uvek prikazuje što je manji broj podataka, taman koliko je dovoljno korisniku za rad.

> Takodje, kad radimo INSERT, UPDATE, da li se tabela ucitva u klijentski program, ili se podaci za insert,
> update salju serveru, pa se te operacije na njemu vrse?

Ne razumem pitanje? INSERT i UPDATE se izvršavaju na serveru sa podacima koje je obezbedio klijent.

3) Transakcije - koriscenje u delphiju?

Mislim da tebi treba jedna dobra knjiga koja to sve lepo objašnjava, ne mora biti specifična za Delphi jer su principi isti za sve baze i sve programske alate.
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
212.200.180.*



Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 15:27 - pre 183 meseci
Naravno, nisam ni mislio da vise korisnika istovremeno rade sa istim podacima. U zadnje vreme sam se pitao kako to resiti, bas situaciju ako Pera za neku novcanu vrednost menja podatak, uplacuje neki novac na racun, npr., a istovremeno se na tu novcanu vrednost unosom nove vrednosti od strane Mike, menja ta vrednost, povecava, npr. Gde je bolje to resiti, na serveru ako pruza tu mogucnost ili u klijentskoj aplikaciji?
Mogucnosti koje si opisao u nastavku,savkic, lokovanje, podrška za rešavanje konflikta, posebne tabele semafora, application servera... Jel ima nesto na "cirilici", provereno, neki link gde bi se moglo nesto vise o tome procitati? - ne moj reci da googlam jer pitam za proveren link, a i sam si spomenuo neku dobru knjigu, pa ako si voljan, a i ostali, postavite ga.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 16:20 - pre 183 meseci
Evo linka za knjigu koja nije toliko losa za pocetak (Delphi+Baza):

http://www.kombib.co.yu/knjiga.php?kid=64&o=17

Ja nesto nisam naletao na dobre knjige na cirilici/latinici na ovu temu sto ne znaci da ih nema, ali zato na netu ima dosta informacija.

Inace, za resavanje konflikata univerzalnog resenja nema. Najbolje je kada se pri samom dizajnu baze obrati paznja da se smanji broj situacija kada bi isti iste podatke mogli da menjaju "istovremeno" razliciti korisnici. Zatim, drugacija problematika moze biti od tabele do tabele. Konacno u aplikaciji se mora razraditi mehanizam koji obradjuje konfiktne situacije na pouzdan nacin. Znaci, treba i nekog iskustva imati da bi se problem kvalitetno resio. A iskustva bez prakse, pokusaja i ucenja na greskama nema. Zato treba krenuti od recimo knjige koju sam pomenuo, Tesko mozemo ovu temu objasniti u par pasusa ovde, nazalost.



 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 16:58 - pre 183 meseci
Pozdrav,

malo sam googlao, ali nisam naleteo na link za download "Delphi/Kylix Database Development" by Eric Harmon, eBook, samo na one koji se plaćaju!? Zna li neko, ima li, proveren, link za free download ove knjige.

Edit: meni engleski nije problem.

[Ovu poruku je menjao loshmiscg dana 29.12.2006. u 20:55 GMT+1]
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2685



+78 Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 18:54 - pre 183 meseci
> Naravno, nisam ni mislio da vise korisnika istovremeno rade sa istim podacima. U zadnje vreme sam se pitao kako to resiti, bas situaciju
> ako Pera za neku novcanu vrednost menja podatak, uplacuje neki novac na racun, npr., a istovremeno se na tu novcanu vrednost
> unosom nove vrednosti od strane Mike, menja ta vrednost, povecava, npr. Gde je bolje to resiti, na serveru ako pruza tu mogucnost ili
> u klijentskoj aplikaciji?

Ako već dođe do konflikta onda je to problem koji uglavnom AI ne može rešiti, mora se dati korisniku da odluči. Dakle rešava se na klijentu. Nešto o tome možeš saznati u Delphi helpu, (Find: "Reconcile").

> Mogucnosti koje si opisao u nastavku,savkic, lokovanje, podrška za rešavanje konflikta, posebne tabele semafora, application servera...
> Jel ima nesto na "cirilici", provereno, neki link gde bi se moglo nesto vise o tome procitati? - ne moj reci da googlam jer pitam za proveren link, a i
> sam si spomenuo neku dobru knjigu, pa ako si voljan, a i ostali, postavite ga.

Kao što je ranije bilo pravilo ako hoćeš da igraš šah moraš znati ruski, sada je pravilo ako hoćeš da programiraš moraš znati engleski (i koristiti google). Literatura se ne bira na osnovu jezika već kvaliteta. Literatura koja sve te stvari oko konflikata objedinjuje verovatno postoji, ali sigurno nije namenjena za neki konkretni alat već stvari objašnjava sa teorijske strane. Kako je možeš naći osim preko gugla ili gugle grupa ne znam.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 20:00 - pre 183 meseci
Pa nesto mora i da se kupi :)

Inace, Igor je 100% u pravu. Ko ne zna engleski i ne namerava da ga uci od programiranja moze da se oprosti, ali bukvalno. U suprotnom bice nagradjen ogromnom bazom znanja koja bukvalno nema granica. I sve dobre knjige koje sam procitao/kupovao su na engleskom jeziku. Kod nas je uradjen prevod samo malog dela literature za Delphi i to one za siroke narodne mase (Cantu/Erik H). Imam ih sve, reda radi. Steta, ali to je tako.
 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 411
*.dlp18.bih.net.ba.



+25 Profil

icon Re: Sta vise opterecuje bazu?29.12.2006. u 22:32 - pre 183 meseci
Kada se u FB izvrsi upit "SELECT * FROM tabela" preko UIB komponenti na primjer, komponenta dohvaca onoliko redova (malo vise) koliko mu treba da ih prikaze u vizuelnoj kontroli (TDBGrid recimo) jer se serveru salju komande fetch i uzima potreban broj slogova. Mogu se uzeti i svi slogovi i tada je dohvacanje podataka sporije. Ovo vjerovatno zavisi od komponenti koje se koriste jer server moze dati jedan ili sve slogove za neki upit.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Sta vise opterecuje bazu?30.12.2006. u 08:13 - pre 183 meseci
@Almedin

Da, ali imas problem otvorene transakcije za to vreme. Transakcije treba da traju sto krace. Opet napominjem da je ovo bitno kada vise korisnika istovremeno pristupa bazi.

Zato rezultati upita treba da budu sto kraci. Naravno to nije uvek izvodljivo, ali u vecini slucajeva jeste. Recimo da imas tabelu komitenata, koja ima 10.000 slogova. Ako korisnik treba da izabere iz te tabele jednog komitenta kako bi izgledao postupak?

Recimo varijanta A, koja je najcesca u praksi:

prikazi prozor za izbor komitenata
"select * from KOMITENTI"
prikazi podatke u dbgrid-u
sa locate() metodom pronadji slog po kriterijumu korisnika.
korisnik se odlucuje za odredjeni slog
zatvaramo prozor i prosledjujemo izbor

Mane ovakvog pristupa su sto se sa servera cesto povlace podaci koji nisu potrebni. Recimo da korisnik
otkuca pocetno slovo naziva komitenta koji je negde na sredini dataset-a. Desice se da klijent vuce sa
servera sve slogove dok ne dodje do tog koji mu treba. Znaci u nasem primeru oko 5.000. Korisnik mora
da ceka odredjen deo vremena na podatke sa servera, sto u praksi moze biti i po 5-10 sek. Znaci, ovo
resenje je katastrofalno.

Sad idemo na varijantu B:

prikazi prazan prozor za izbor komitenata
korisnik kuca deo naziva komitenta (recimo "TRANS") i pritiska ENTER
"select * from KOMITENTI where NAZIV like 'TRANS%'
prikazi podatke u dbgrid-u
korisnik se odlucuje za odredjeni slog
zatvaramo prozor i prosledjujemo izbor


Ovde vidimo da se sa servera povlace samo oni slogovi koji odgovaraju kriterijumu koji unosi korisnik
i velicina dataset-a je u tom slucaju drasticno manja. Na ovaj nacin se i korisnik "tera" da kuca sto
preciznije deo naziva ili ceo naziv jer ce brze i lakse doci do rezultata. U mrezi gde istovremeno radi
10 korisnika koji dnevno traze komitenta po 100 puta, broj slogova koji se vuku manje moze biti
blizu deset miliona dnevno (!, *teorijski maksimum) sto stvarno olaksava "disanje" serveru, a i posao se efikasnije obavlja jer nema cekanja
prilikom povlacenja manjeg broja slogova sa servera.

Naravno, ovo je grub primer ali pomaze da se malo pojasne stvari.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Sta vise opterecuje bazu?

[ Pregleda: 2832 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.