yador skrev:
Ju jag vet att man bör, men jag har svårt att förstå riktigt varför.
Det är mycket jobbigare att göra och kommer inte ha någon prestanda som ens är i närheten av en riktig databas. En handfull argument:
- Du måste göra all sökning själv
- Du måste göra all indexering själv
- Du måste ta hand om all fleranvändarproblematik själv
- Du måste sköta all disk-I/O själv
- XML kommer att dra betydligt mer diskutrymme (vilket innebär mer disk-I/O, vilket också blir långsammare och mindre skalbart).
Etcetera. När jag säger att du kommer få dålig prestanda menar jag inte med några procent hit eller dit, utan snarare att den XML-baserade applikationen knappt skulle klara av två samtidiga användare, mot att en hyggligt skriven databasdriven applikation lätt skulle kunna hantera hundratals samtidiga användare.
yador skrev:
Via xml så kan ju data:n flyttas och ändras till olika operativsystem/program enkelt.
Med undantag för SQL Server så finns typ alla mainstreamdatabaser till alla vanliga operativsystem idag. Det stämmer förvisso att en XML-fil är plattformsoberoende i sig, men den innebörden som finns i strukturen är inte oberoende av ditt program. Så även om du inte har låst dig till en databas är du fortfarande låst till ditt program. Dataformatet är det minsta problemet för att migrera mellan olika system. Skulle du få för dig att flytta innehållet kan du dock göra en migreringsapplikation som skriver ut innehållet i den gamla databasen i ett XML-format.
yador skrev:
Man slipper oroa sig för sql injection.
SQL-injektioner är bara symptom på ett större problem, att man inte förutser vilka problem man kan få av konstigt formad indata. Faktum är att databaser i allmänhet har väldigt bra skydd mot slika misstag, om man bara använder parametriserade frågor. Eftersom du skulle bli tvungen att skriva en massa kod för att få till samma funktionalitet som en databas, finns det en stor risk att du skulle introducera liknande säkerhetshål alldeles själv.
yador skrev:
Sedan så tittar man ut i världen, man ser att Internet blir allt större, man vill ju gärna veta att sitt eget forum om 3 år är tillräckligt bra för att sedan t ex göras sökbar via massa andra apparater som lätt kan läsa av xml filer utan massor av extra jobb. Jag tror nämligen att det blir svårare om man har allt lagrat i en databas, men det är ju bara vad jag tror. Är det så fräs sten? Även om jag inte har det så nu så betyder det ju inte att jag inte kommer behöva ha det senare?
Ingen sökmotor kommer någonsin att kunna göra en bra indexering av en godtycklig XML-fil. Den kommer inte fatta vad som är titel, vad som är brödtext, vad som är kategorinamn etcetera utan en djupare förståelse av just det XML-format du använder. Vissa grejer går antagligen att gissa sig till i de flesta fall, men det är på intet sätt generellt. Då är det bättre att se till att du kan spruta ut innehållet i din databas till format som används av fler än dig, till exempel RSS och HTML.
För att sammanfatta: XML är ett kanonformat för dataöverföring. Det är inte ett kanonformat för datalagring om man vill ha någon som helst prestanda eller skalbarhet.