webForumDet fria alternativet

xml vs databas

5 svar · 582 visningar · startad av yador

yadorMedlem sedan mars 2004455 inlägg
#1

Hejsan!
Vilka nackdelar och fördelar är det att lagra data i en/flera xml fil/filer mot t ex en mysql databas? Ni som har gjort hemsidor som åtnjuter(stavas det så?) båda teknikerna, vad tyckte ni var bäst?

Vad händer om man läser av en xml fil som man samtidigt håller på att skriva till den med t ex ett server språk?

Tack på förhand!

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Databaser är till för att lagra data och är egentligen aldrig fel att använda. Dock kan det i vissa situationer ses som overkill och/eller mindre lämpat, t.ex. om man ämnar använda sig av konfigurationsfiler till sin applikation.

I ditt fall (det verkar som att du har en gästbok eller forum) skall du absolut använda en databas om möjligheten finns.

Du vill som regel inte läsa och skriva till en och samma fil parallellt. Det som kan hända är att du i läsoperationen stöter på gammal data eller rent av strunt. Har du flera trådar eller flera applikationer som använder gemensamma resurser bör du kolla upp sätt att låsa (mutex) resurserna innan du opererar på dem.

Ja, "åtnjuter" är korrekt ;)

yadorMedlem sedan mars 2004455 inlägg
#3

Ju jag vet att man bör, men jag har svårt att förstå riktigt varför. Via xml så kan ju data:n flyttas och ändras till olika operativsystem/program enkelt. Man slipper oroa sig för sql injection. 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?

Förstår någon hur jag tänker?

okej, då vet man det.

Tack annars :)

OBS.. Jag hade tänkt göra ett forum som ett kul projekt så du hade nästan rätt.

tydalMedlem sedan juni 20034 013 inlägg
#4

yador skrev:

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.

Det blir lättare om du har allt lagrat i en databas. Mycket lättare. XML är inte ens ett alternativ i det här sammanhanget. Inget att överväga. Undrar om jag ska försöka mig på en liknelse...

Jag vet inte om du kommer ihåg, men förut på biblioteken så hade de ett register över vilka böcker de hade som bestod av en massa små papperslappar (kort) som var sorterade alfabetiskt i lådor. Ville man veta om de hade några böcker av Agatha Christie fick man leta upp lådan med C och bläddra fram Christie där.

Man kan säga att biblioteket hade en databas, för det är så databaser funkar. Det är snyggt och prydligt ordnat, så att man snabbt kan hitta det man söker.

Hade biblioteket haft en XML-fil så hade alla kort legat i en och samma hög på golvet.

spangoMedlem sedan juni 20008 205 inlägg
#5

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.

yadorMedlem sedan mars 2004455 inlägg
#6

Jag tror att ni har övertygat mig ganska väl :) Tusen tack!

144 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)