[Alg]Testresultaten opslaan in database

Pagina: 1
Acties:

  • Casteloni
  • Registratie: November 2001
  • Laatst online: 19-05 19:09
Voor mijn stage ben ik bezig met een website die momenteel in ASP gemaakt is, deze website was niet meer schaalbaar genoeg en ook de database die er achter hangt voldoet niet meer. Op deze site kan je een test doen, je moet vragen beantwoorden en vervolgens komt er een rapport uit.

De nieuwe website zal op het J2EE platform draaien met JBoss als application server. Alles werkt al vrij goed, ik kan al vragen beantwoorden en er ook een rapport van genereren.

Het punt is nu dat ik eigenlijk ook de antwoorden op de vragen wil opslaan. Dit om verschillende redenen:
  • een persoon moet een rapport weer kunnen opvragen
  • de antwoorden moeten opnieuw berekent worden(indien er een nieuw scoremodel is)
  • een persoon moet de test halverwege kunnen afbreken en vervolgens weer doorgaan
Momenteel sla ik alle antwoorden op met een testid ( welke uniek is voor een test ), vraagnummer en het antwoord. Elke test bestaat uit 100+ vragen. Dit werkt prima, het enige probleem is dat die tabel enorm groot gaat worden.
In de database van de huidige applicatie bevat deze een half miljoen records.

Een oplossing zou kunnen zijn om de vraagid's + antwoord in een comma-seperated value als een lange string op te slaan. Het nadeel hiervan is dat je vragen niet zomaar kunt verwijderen.
Een vraag heeft een bepaalde gewichtsfactor, dus stel je haalt vraag 20 weg, dan kan je wel de score berekenen van die vraag alleen die gewichtsfactor is weg.

Wat is een handige manier om de antwoorden voor een bepaalde scan die door een bepaalde klant wordt gedaan op te slaan? :)

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:56
Niet comma seperated maar gewoon zoals je het nu doet is het goed. Veel records maakt in principe niet zoveel uit, het je al benchmarks zodat je ook daadwerkelijk kan merken dat het té lang duurt?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 14:59

pjvandesande

GC.Collect(head);

Gewoon zoals je het nu doet, ik weet niet welk type je id is, ik neem aan een bigint zo niet dan conveer je hem naar bigint en heb je een maximale waarde van:

bigint
-2^63 (9223372036854775808) tot 2^63-1 (9223372036854775807)

Dit lijkt mij dus wel even genoeg. Je kan er nog aan denken om oude resultaten te archiveren. Dat lijkt mij ook geen slecht idee.

  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Vergeet niet een index te zetten op je testid...

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Verwijderd

Ik zou inderdaad eerst kijken naar hoe je systeem reageert met een testdatabase met een representatief aantal records, en pas eventueel aan de hand van slechte resultaten je systeem aan te passen. De door jouw bedachte manier vind ik geen slechte, hoewel een XML vorm als string opslaan misschien nog netter is.

Sowieso is dat een goede manier om de overall performance van je systeem te testen, want zo kan je de opdrachtgever een bepaalde performance garanderen bij een bepaald gebruik (aantal users, hoeveelheid data, etc.) Het is altijd goed de grenzen van een systeem te kennen en die ook te laten accepteren door de opdrachtgever dan alleen te zeggen dat je systeem goed performt totdat het misloopt.