10. april 2005 - 22:24Der 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?
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.
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...?
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.
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.
Synes godt om
Ny brugerNybegynder
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.