DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > Web aplikacije, web servisi i software
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

Web aplikacije, web servisi i software Frameworks, web servisi, programi, plugin-ovi, ekstenzije korisni za razvoj web sajtova. Sponzor: vivvo

Odgovori
 
Alati teme Način prikaza
Staro 20. 07. 2006.   #1
Pedja
Predrag Supurović
Grand Master
 
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
Pedja is on a distinguished roadPedja is on a distinguished roadPedja is on a distinguished road
Default Prikaz tabele sa mnostvom slogova

Nesto razmisljam kako bih mogao da resim jedan problem. Opisacu ga ovde u opstem obliku:

web dokument se generise tako sto se pokrene jedna kompleksna funicija koja vuce podatke iz baze, koji ne samo sto je kompleksna i ima mnogobrada podataka pre prikaza nego je rezultat ogroman broj slogova. Tako dobijene podatke treba prikazati.

Normalno, neophodno je omoguciti korsiniku da podatke vidi po stranama koje su ogranicene na prikaz razumnog broja slogova. Mejutim, neekonomicno je da se za prikaz svake strane ponovo poizva funkciaj koja izvlaci podatke iz baze, jer trosi znacajne resurse.

Resenje koje se namece je da se prilikom prvog otvaranja dokumenta izgenerise tabela sa podacima ali kao neka privremena tabela koja nece biti brisana nakon prikaza dokumenta, a da se za stvarni prikaz koristi jednostavan upit koji iz te privremene tabele izvlaci samo one slogove koji su potrebni za prikaz izabrane strane. Preko sesije bi se moglo obezbediti da tu privremenu tabelu visi samo korsinik koji je inicirao prikaz dokumenta.

Tu treba resiti neke stvari kao sto je recimo, kako znati kada tu privremenu tabelu treba obrisati a verovatno i neka druga koja mi nepadaju na pamet.

Da li je neko resavao ovakav problem?
Pedja je offline   Odgovorite uz citat
Staro 20. 07. 2006.   #2
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Da, mi imamo nešto slično u našoj aplikaciji. To se u mom selu inače zove keširanje.

Imamo globalni keš, ne na nivou sesije. Ako se podaci razlikuju u zavisnosti od korisnika koji ih je zahtevao, dodamo još userid u keš ključ. Za keš koristimo gotovu MS-ovu helper klasu (tipa heštabele), a same kolekcije u XML-u (u pitanju je stablasta struktura, za razliku od tvog slučaja gde je u pitanju ravna tabela).

Keš je ograničen sopstvenim kapacitetom i helper se sam stara o izbacivanju najstarijih elemenata.

Imamo prilično komplikovan sistem "ručne" invalidacije keša, kad se promeni neki podatak koji se nalazi u nekoj keširanoj kolekciji. Plus veb servis za invalidaciju sa drugih servera iz veb farme.

Eh, da, zašto izvlačiš celu tabelu, a ne samo deo koji je korisnik tražio?

Poslednja izmena od jablan : 20. 07. 2006. u 13:25.
jablan je offline   Odgovorite uz citat
Staro 20. 07. 2006.   #3
zextra
Boris
Grand Master
 
Avatar zextra
 
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
zextra is on a distinguished roadzextra is on a distinguished road
Default

Nisam naisao na slican problem, ali mi pada na pamet nesto slicno kao i tebi, recimo da napravis tabelu cached_data (koja je obicna tabela), sa dodatnim poljem koje sadrzi id ili ime korisnika koji gleda podatke, i jos jednu tabelu, npr. cached_data_stamps, sa id/imenom korisnika i vremenom nastanka pomenute kopije podataka. Tako mozes da pristupas podacima do mile volje, a znaces ko ih je kreirao i kada, pa ces moci da ih uklonis kada se vise ne koriste (verovatno bi ti odgovarao isti interval koji koristis za istek sesije, ili recimo period neaktivnosti korisnika veci od X minuta...). Posto se paginacija uglavnom implementira dodavanjem ekstra parametra URL-u (npr. ?page=), primetices da je jedina stranica koja nema ?page= parametar zapravo samo pocetna stranica, ona koju dobijes klikom na link koji vodi ka stranici, pa tu okolnost mozes iskoristiti kao priliku za generisanje podataka, a sve ostale zahteve za ?page samo vadis podatke iz kesha.

Ne znam da li bi ti ovo resilo problem, mada meni deluje ok (struktura same tabele ne bi morala da ima primarni key, samo index na polju user id/name, pored kljuceva koje tvoji podaci zahtevaju). Jedini problem bio bi ako znas da ce te podatke (verujem da su u pitanju neki glomazni izvestaji) gledati vise ljudi istovremeno, i to dosta cesto, sto bi, zavisno od broja zapisa u krajnjem rezultatu, moglo da prouzrokuje ubrzan rast baze ili povecan load.

[edit]Preduhitren sam [/edit]
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams
zextra je offline   Odgovorite uz citat
Staro 20. 07. 2006.   #4
Pedja
Predrag Supurović
Grand Master
 
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
Pedja is on a distinguished roadPedja is on a distinguished roadPedja is on a distinguished road
Default

Mora da se uradi cela tabela zato sto recimo treba da se obezbedi suma po nekim kolonama za celu tabelu ( a ne samo za stranu kaj se prikazuje), tako da sam zakljucio da je najbolej jednom odraditi sve obrade kojima sse dobijau podaci a posle samo priakzivati.

Ovo niej bas klasican kes, jer se generise za svaki dokument i za svakog korisnika ponaosob. Proto podatke treba izgenerisati sbaki put kada korsink zeli dapogleda dokument, samo treba napraviti medjukes koliko da se zaprikaz pojedinih strana ne generise sveiznova.

zexxtra, otprilike se moaj ideja poklapa a ovom tvojom, podatke u privremenoj tabeli bih vezivao za mehanizam sesije te bih tako resio pitanje "kada treba obrisati privremenu tabelu - prosto, kada istekne sesija, ni za tom tabelom vise nema potrebe.

Da, pade mi na pamet jos jedna problem: sta ako korisnik otvori izti izvestaj u dva prozora, sa ralicitim paametrima. Morao bih da svakoj privremenoj tabeli dam neki ID pa da ga prosledjujem kroz strane (u linkovima), kako bi apliakcija znala koju tabelu treba da prikazuje.

Olaksavajuc aokolnost je da nece ove izvestaje gledati istvoremeno veliki broj ljudi tako da nece bas biti preteranog zauzeca prostora, ali cak i da je tako, tu ne mogu nista, jer svaki korsinik moze da unese razlicite parametre izvestaja i tako gleda razlicite podatke.

Najnepovoljnije u celoj stvari je to sto ne mogu da se oslonim ni na jedan postojeci mehanizam, jer ih nemam, sve moram da napravim od nule. Ali, princip je isti, sve su smo nijanse u realizaciji
Pedja je offline   Odgovorite uz citat
Staro 20. 07. 2006.   #5
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

U svakom slucaju za ovakve stvari mogu lepo da se koriste temp tabele, narocito ako ces umesto krajnjeg rezultata da pamtis neki zahtevni medjurezultat (tipa tih nekih suma recimo) pa da onda izvlacis sta ti treba odatle.

Ako ces da samo zapamtis gotove rezultate i da ih redom prikazujes (ne treba ti search, sortiranje i sl funkcije baze) onda je mozda bolje da guras te podatke u neki fajl, a da pamtis offset do kog se stiglo u sesiju. I onda samo uradis seek do linije koja je na redu i izprintas sledecih X linija i to je to...
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 20. 07. 2006.   #6
Pedja
Predrag Supurović
Grand Master
 
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
Pedja is on a distinguished roadPedja is on a distinguished roadPedja is on a distinguished road
Default

Vidis, to ti nije losa ideja da napravim dodatnu pretragu i soritranje po gotovim podacima, kad ih vec drzim u tabeli... hm..ovo ce jos da ispadne i da ima znacajnu dobit u funkcionalnosti... da sam znao unapred na sta ce sve ovo da ispadne, ne bih se ni upustao

Ne bih bas korsitio unapred generisan sadrzaj za prikaz, jer bih omogucio korsiniku da menja nacin prikaza, recimo da moze da menja broj slogova koji ce da se prikazuje na jednoj strani, a zasto ne i da moze da naknadno sortira kako mu odgovara...
Pedja je offline   Odgovorite uz citat
Staro 20. 07. 2006.   #7
oliver
expert
Expert
 
Avatar oliver
 
Datum učlanjenja: 16.06.2005
Lokacija: Novi Sad
Poruke: 580
Hvala: 1
0 "Hvala" u 0 poruka
oliver is on a distinguished road
Pošaljite ICQ poruku za oliver Pošaljite poruku preko Skype™ za oliver
Default

Citat:
Originalno napisao Pedja
...da sam znao unapred na sta ce sve ovo da ispadne, ne bih se ni upustao
eee...nemoj tako da se nisi upustio, ne bi na kraju imao rijesenu jos jednu vrstu problema, i parce koda za neki od sledecih poslova
__________________

oliver je offline   Odgovorite uz citat
Staro 21. 07. 2006.   #8
Pedja
Predrag Supurović
Grand Master
 
Datum učlanjenja: 24.01.2006
Lokacija: Užice
Poruke: 791
Hvala: 3
200 "Hvala" u 12 poruka
Pedja is on a distinguished roadPedja is on a distinguished roadPedja is on a distinguished road
Default

M anije ovo kod koji mogu da upotrebim na drugom mestu. To je sve tako specificno i vezano za platformu da prsoto nije upotrebljivo drugacije. Koristilo mi je jer sam usput mnogo naucio, a kako i ne bi kad sam napravio "PHP umesto PHP-a".

Na pocetku je to izgledalo kao mali skriptic i gotovo a ispade celo razvojno okruzenje.
Pedja je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
Pomoc oko tabele akki (X)HTML, JavaScript, DHTML, XML, CSS 1 22. 07. 2010. 18:24
Crawler i tabele Mitrović Srđan Marketing i SEO 4 25. 05. 2008. 14:10
ID za dve tabele PeTkO Sva početnička pitanja 7 06. 02. 2008. 21:50
ime tabele ivanhoe SQL baze podataka - Sponzor: Baze-Podataka.net 4 21. 05. 2007. 17:20
Brisanje većeg broja slogova iz MySQL baze Dragi Tata SQL baze podataka - Sponzor: Baze-Podataka.net 14 22. 04. 2007. 17:46


Vreme je GMT +2. Trenutno vreme je 21:21.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.