Avatar billede superdude Nybegynder
10. april 2005 - 22:24 Der er 5 kommentarer og
1 løsning

XML som mini database - OK eller ej?

Jeg skal lave en simpel windows app, som skal håndtere noget data. Det forventes at der aldrig vil blive skrevet mere end 1000 data-poster (hver post har ca. 10 felter), så det er en relativ lille mængde data der skal gemmes.
App'en skal bla. køre en masse queries på data'ene.

Umiddelbart har jeg tænkt mig at gemme data i en .mdb og lade programmet køre queries via sql, men da jeg måske ender med at skulle distribuere mit program, vil jeg gerne være fri for at skulle bruge en .mdb, da det sikkert er ulovligt at distribuere sådan en fil som en del af sit program...? Eller...?


Da det ikke er hundrede-tusinder data-poster det drejer sig om har jeg overvejet at gemme alt data i en xml fil og loade det ind i memory ved program-start, og håndtere alle quries direkte i program-koden.

Hvad siger eksperterne? Er xml løsningen en meget dårlig idé?
Jeg ved at .mdb løsningen er mest optimal, men hvor meget ringere er xml løsningen?
Avatar billede arne_v Ekspert
10. april 2005 - 22:29 #1
Jeg mener godt at du må distribuere end .mdb fil.

Det afhænger meget af forholdet mellem SELECT og INSERT/UPDATE/DELETE.

Hvis det kun er SELECT, så er en XML fil som loades og søges i med XPath
en glimrende løsning.

Med masser af opdateringer, så skal du til at tage stilling til spørgsmål
som hvor tit du vil skrive tilbage til disk - og hvad med flere samtidige
brugere.
Avatar billede superdude Nybegynder
10. april 2005 - 22:38 #2
Der vil være lidt INSERT/UPDATE/DELETE, men det er primært SELECT der bekymrer mig:
Dels det faktum at alt data er loadet ind i memory, men også at jeg skal lave nogle komplekse queries der i sql ville kræve flere joins - her ville jeg så skulle løbe en masse collection-klasser igennem, køre betingelser på dem og sortere osv. Jeg kan kun forestille mig at dette er langsommere end at lade sql gøre dette...?

Interessant hvis man må distribuere en .mdb fil ;-)
ADO.NET er vel en del af distributed .NET framework, så alle der kan køre mit C# program vil derfor også kunne læse .mdb'en uden at skulle installere alle mulige drivere, eller...?
Avatar billede arne_v Ekspert
10. april 2005 - 22:42 #3
System.Data.OleDb kommer med .NET men bruger native Access OLE DB driver, men
den kommer vist med alle nyere Windows/Internet Explorer/Office, så det vil jeg
ikke bekymre mig over.

Nej - umiddelbart burde du kune gøre det hurtigere i memory end Jet kan gøre
det på disk.

Og jeg synes absolut at du skal bruge XPath. Det er jo faktisk en SELECT.
Avatar billede superdude Nybegynder
10. april 2005 - 22:44 #4
Arne, tak for dine råd og synspunkter.
Smid et svar så du kan få points.
Avatar billede arne_v Ekspert
10. april 2005 - 22:46 #5
kommer her
Avatar billede burningice Nybegynder
13. april 2005 - 23:14 #6
en anden mulighed var vel at bygge hele sin datamodel op omkring et DataSet som understøtter direkte skrivning/læsning til xmlfil.

Og hvis du på et tidspunkt skulle få lyst til at skrifte til en database kan du bruge DataAdapter som koblingled uden at skrive hele din datastruktur om.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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