Avatar billede jaws Nybegynder
14. oktober 2002 - 16:56 Der er 8 kommentarer og
2 løsninger

Collection vs. Recordset

Jeg vil lave en 3-tier app, for et ASP (ActiveServerPages) projekt. Dvs. adgang og querys til database foregår gennem et Business Layer skrevet i VB. Før i tiden har jeg benyttet mig af GetRows på et recordset, for at få et recordset ud i et array på min ASP side. Nu vil jeg køre alt gennem mit VB business layer, ved simple kald af methods der returnerer enten et recordset, collection eller array.

Nu står jeg mellem nogle muligheder:

1. Skal jeg returnere et recordset, array eller collection fra min VB ActiveX DLL?
Jeg hælder til Collection, da den er variabel og den har nogle lækre features aut. indbygget som arrays ikke har bl.a. at et item kan refereres til som key. Men får den problemer performancemæssigt ved mange antal elementer i collection? Og hvad med nested collections?

2. Skal jeg holde min collection i memory i min VB og blot opdatere denne ved hver opdatering af database? Dette istedet for at query databasen hver gang en ASP side ønsker information...

Jeg kan vel ikke lave min ActiveX som DLL, hvis jeg vil kunne bevare en collection i memory? Hvis jeg laver den som DLL er jeg nødt til at query databasen hver gang der udtrækkes informationer...

Får jeg overhovedet nogle fordele ved at returnere mine data i andet end et recordset? Her tænker jeg udelukkende på performance...

Forstår I mine spørgsmål? Ellers skal jeg uddybe hvis der er behov...

Jeg ser frem til nogle kloge kommentarer:)
Avatar billede tubber Juniormester
15. oktober 2002 - 02:27 #1
1: Du skal bruge Collections hvis du selv mener du har brug for de features....

2:
Hvis det er til public brug:
Jeg vil helt klart mene du skal query databasen hver gang siden ønsker information.....
Hvis 10 brugere sidder samtidigt, vil den så ikke hente det hele ind i memory 10 gange ? Og idler de så låser de jo den resource.....hvad så hvis der er 1000 der sidder og kigger sitet ?

Hvis det er til private brug:
Hvis det ikke er for meget og du er den eneste bruger, sker der vel ikke noget ved at det ligger i memory ? Det vil nok kører lidt hurtigere end query løsningen, men ligger sitet hos en udbyder og ikke hjemme hos dig selv kan de godt finde på at brokke sig over at det loades i memory......

Bare lige min indskydelse......

/Tubber
Avatar billede jaws Nybegynder
15. oktober 2002 - 10:44 #2
Jeg er med på at hvis der skal hentes en collection ind for hver query vil det være memory consuming i længden.
Men hvad hvis jeg blot lægger de querys der altid er ens i memory som en collection? Da det er den samme komponent der også skriver til databasen kan de samtidig vedligeholde denne collection ved hver ændring i DB. Dvs. at det er kun hver gang DBen ændrer data at der loades en ny collection - i mellemtiden læses direkte fra collection i memory. Hvis flere brugere requester denne collection samtidig går jeg ud fra at det stadig kun er 1 collection i memory?

Men mit spørgsmål gik lige så vel på performance ved f.eks. mange elementer i min collection og ved nested collections...er der en hovedregel for hvor mange elementer der er hensigsmæssigt at have i en collection vs. recordset?

Men igen, hvad med typen af ActiveX - skal det være en DLL eller EXE for at kunne holde en collection i memory på tværs af flere requests?
Avatar billede tubber Juniormester
15. oktober 2002 - 11:29 #3
Jeg tror ikke jeg kan svare på mere end det jeg allerede har gjort....

Men har da lige et forslag.....
Du kan jo sætte en timer der opdatere databasen hver x min og så tømmer memory og så loader man ind i memory i x antal minutter og gentager proceduren....så vil man undgå at fylde på mem.....
Avatar billede terry Ekspert
16. oktober 2002 - 20:12 #4
I dont know much at all about this but have you also concidered disconnected recordset?
Avatar billede jaws Nybegynder
16. oktober 2002 - 21:15 #5
OK, I'll do this in english, so everybody understand my point:)

My reason for choosing collections is because it's ability of storing other data than just simple text and numbers as fx. collections inside collections (nested), user defined data types, objects etc. In this way I'll have the flexibility of "XML like" data and the easieness of not having to parse XML, but just using collections instead.

Furthermore I can use a collections key property, in order to fetch a particular "record" instead of having to loop through ie. a recordset or array. I can also attach methods and functions to a collection...

These are the points I see when using a collection instead of a plain recordset...
Avatar billede terry Ekspert
17. oktober 2002 - 08:14 #6
Well it sounds as though you have answered the question yourself jaws :o)
Avatar billede jaws Nybegynder
17. oktober 2002 - 09:02 #7
Yes, I have partially answered the question my self - but the other question was more of performance issues when using collections vs. recordsets? But anyway, I'll start up using collections and then I must see what happens...

Thanks tubber and terry for your help:)
Avatar billede terry Ekspert
17. oktober 2002 - 09:10 #8
thanks jaw :o)
Avatar billede terry Ekspert
17. oktober 2002 - 09:11 #9
jaw = jaws
Avatar billede tubber Juniormester
17. oktober 2002 - 12:21 #10
Takker :O)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester