Tilannekatsaus

Operaatio: Kottaraiseen puhtia

Tietokannasta hakua muutettiin siten, että nyt kaikki tiedot metatietoja lukuun ottamatta haetaan noin kymmenellä haulla. Kaikki questionresultit ja questionfieldit haetaan kahdella haulla. Myös questionit haetaan yhdellä haulla. Questionasgroupit haetaan kahdella haulla siten, että ensin haetaan kysymysten perusteella viitteet questionasgroupeihin ja sitten yhdellä haulla kaikki questionasgroupit. Tähän asti haku siis tapahtuu "alhaalta ylös", eli hierarkiassa alemmat oliot haetaan ensin ja niiden perusteella alikyselyjen avulla haetaan aina seuraava taso. Questiongroupit kuitenkin haetaan ainakin toistaiseksi kuten ennenkin, eli questionnairen tiedot haetaan ensin ja sitten haetaan sille kuuluvat questiongroupit. Jokainen questiongroup hakee sen jälkeen itsensä. Tämä tuottaa pari turhaa hakua, mutta se ei vaikuta kokonaisuuteen käytännössä mitenkään, joten sitä ei vielä muutettu. Näin päästiin hieman nopeammin näkemään, oliko hakurakenteen muuttamisesta mitään hyötyä.

Testikyselynä oli Santasen arviointikysely (joka on sittemmin mennyt rikki). Vasemmalla on ajon järjestysnumero. Viimeisessä taulukossa on monta ykköstä, koska ne ovat kaikki kääntämisen jälkeen ensimmäisiä ajoja. Seuraavaksi taulukossa on tietokannasta hakevan metodin suoritusaika. Sen jälkeen on HTML-koodin generoivan metodin suoritusaika ja lopuksi Kotka.login kokonaisaika.

Ensin vertailun vuoksi lähtötilanteen ajot:

Ajo
getValuesFromDb-metodin suoritusaika
getHtml-metodin suoritusaika
Kotka.login aika
1
3380
2360
5780
2
2290
3630
6140
3
2330
2400
4900
4
2380
2407
5000
5
2270
2488
4840
6
2350
2350
4910
7
2410
2410
5020
8
2340
2360
4900
9
2300
2450
4940
10
2310
2400
4910

Seuraavat ajot on tehty uudella tavalla:

Ajo
getValuesFromDbQuickly-metodin suoritusaika
getHtml-metodin suoritusaika
Kotka.login aika
1
2680
2480
5350
2
1570
2470
4240
3
1580
2500
4260
4
1510
2410
4120
5
1430
2470
4090
6
1470
2480
4120
7
1810
2450
4450
8
2640
3460
6150
9
1700
2440
4330
10
1450
2440
4080

Uusi rakenne kyselyn hakemiseksi siis nopeutti hieman hakua, mutta ei läheskään riittävästi. Tutkailimme hiukan eri palaset hakevien SQL-hakujen kestoa login avulla.

Seuraavana pari ajoa:

Ajo
Result-qtime
Field-qtime
Question-qtime
Questionasgroup_question-qtime
1
258
192
69
51
2
200
199
69
52
3
214
194
83
42

Seuraavaksi kiinnostuimme siitä, miten ihmeessä HTML-koodin muodostava getHtml-metodi voi viedä niin paljon aikaa kuin mitä testit kertoivat. Tutkailimme rakennetta aikamme ja päädyimme tarkastelemaan villakoiran ydintä, TemplateHandleria. Huomasimme sitä tutkiessamme, että se käy jokaisella kutsulla lukemassa template-tiedoston sisällön tiedostosta muistiinsa. Muutimme luokkaa siten, että nykyisellään se lukee yhdellä kertaa kaikki template-tiedostot HashMap-tietorakenteeseen. Lisäksi HashMap on kaikille yhteinen, joten tiedostosta lukeminen tehdään vain kerran kyselyä käsiteltäessä.

Muutoksen jälkeen HTML-koodin generoiminen alkoi sujumaan jo siedettävää vauhtia. Seuraavana pari testiajoa:

Ajo
getValuesFromDbQuickly-metodin suoritusaika
getHtml-metodin suoritusaika
1
2800
110
1
2394
107
1
1617
105
1
1551
124
2
1615
114
3
1503
101
4
1500
99
5
1498
124
6
1541
105
7
1549
127

Tällä hetkellä kyselyn hakeminen tietokannasta ja tulostaminen näyttöön vie siis pari-kolme sekuntia. Tästä tosin vielä puuttuvat erilaiset metatiedot ja pari määritystaulua, joihin tulevat esim. tekstialueiden koot ym. Niiden käsittelyä on vielä hiukan pähkittävä, koska samalla JSP-sivulla harvoin tarvitaan sekä metatietoja, että koko kyselyn näkymää.

Kyselyn tallennuksen nopeutus on vielä edessä.

Muut edistysaskeleet

Muilta osin sovellus on edennyt siten, että vastausten selailu on nyt mahdollista. Lisäksi main-sivulle on tehty lista kyseisen käyttäjän tekemistä kyselyistä. Kyseisestä listasta voi valita mieleisensä kyselyn ja mennä selailemaan sen vastauksia yksi kerrallaan.

Lisäksi handler-sivujen päivitysongelma on korjattu. Aikaisemmin ongelmana oli, etteivät sivut päivittyneet kun niille meni uudelleen, vaan tiedot pysyivät samana.

Esikatselu on saatu valmiiksi ja lisätty kaikille luomisvaiheen sivuille.

Ensimmäinen versio tyylilomakkeesta on toteutettu.

WWW-osoitteiden syöttöominaisuus kysymyksille on toteutettu välilehtiominaisuuden avulla. Muuten välilehtien tekeminen on vielä aika paljon kesken.