WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Meningen med att konvertera xml till databas? (https://www.wn.se/forum/showthread.php?t=1042671)

emilv 2010-06-28 15:02

Det går mycket fortare att läsa in det i en databas först, särskilt om du tänker söka i innehållet. XML-klasserna kräver dessutom mycket minne om det är stora filer.

dAEk 2010-06-29 22:47

Citat:

Ursprungligen postat av emilv (Inlägg 20360860)
Det går mycket fortare att läsa in det i en databas först, särskilt om du tänker söka i innehållet. XML-klasserna kräver dessutom mycket minne om det är stora filer.

Sorry för rättningen men det gäller bara om man kör med DOM. En SAX-parser använder mycket mindre minne jämfört med DOM men belastar CPU:n desto mer. SAX är dessutom lite bökigare att jobba med.

Man får göra en avvägning helt enkelt. Har man lite större Xml-filer är SAX ett bättre alternativ eftersom man - precis som Emil skriver - ganska snabbt får OutOfMemory-exceptions.

mojitoo 2010-08-31 17:52

För att ta upp en gammal tråd från mig igen eftersom att jag behöver hjälp med detta igen.

Hur gör man för att jämföra den information jag har sparat i databasen med informationen från en xml fil? Eftersom att jag vill ta bort information som inte längre finns i xmlfilen och lägga till den nya informationen från xmlfilen i databasen? XML filen innehåller ju som sagt endast en pubDate så jag antar att jag måste göra en jämförelse på vad som finns i databasen och vad som finns i xmlfilen och ta bort det som finns i databasen men inte i xml filen och lägga till det som finns xml filen men inte finns i databasen.
Hur och på vad gör jag denna jämförelse?

För att vi ska ha någonting att leka med så kan vi använda oss av xmlfilen fritidsresor använder på tradera (en feed som uppdaters ofta och har mycket info):
http://www.fritidsresor.se/Blandade-...feeds/tradera/

Det enklaste vore ju att bara ta bort all information och lägga till den igen men det känns onödigt prestandasugande och det känns som om det "borde" finnas någon smidig lösning för detta?

Är det som så att det kräver mer prestanda att utföra detta istället för att hämta ut datan direkt ur xml dokumentet med exempelvis Simple Xml / DOM och Xquery eller är det fortfarande att föredra att kopia över all data till databasen. Jag vill som sagt att man ska kunna sortera efter namn osv. Nu vet jag att det går att göra via Xquery och inte bara via RDBMS.

Så om någon har idéer? Dela dem gärna!
Gärna även en liten kodsnutt om du har.

Om någon glömt eller inte upptäckt och vill veta så använder jag mig av MySQL, PHP.

Tack på förhand för att ni sätter er in i en gammal tråd igen.

dAEk 2010-09-01 20:15

Citat:

Ursprungligen postat av mojitoo (Inlägg 20367455)
Det enklaste vore ju att bara ta bort all information och lägga till den igen men det känns onödigt prestandasugande och det känns som om det "borde" finnas någon smidig lösning för detta?

Behöver du inte spara nåt i tabellerna är det bara att trunkera dem. Det går oftast väldigt snabbt och är effektivare än delete-queries.

Clarence 2010-09-02 08:00

Citat:

Ursprungligen postat av mojitoo (Inlägg 20367455)
Det enklaste vore ju att bara ta bort all information och lägga till den igen men det känns onödigt prestandasugande och det känns som om det "borde" finnas någon smidig lösning för detta?

Är det som så att det kräver mer prestanda att utföra detta istället för att hämta ut datan direkt ur xml dokumentet med exempelvis Simple Xml / DOM och Xquery eller är det fortfarande att föredra att kopia över all data till databasen. Jag vill som sagt att man ska kunna sortera efter namn osv. Nu vet jag att det går att göra via Xquery och inte bara via RDBMS.

Så om någon har idéer? Dela dem gärna!
Gärna även en liten kodsnutt om du har.

Har du fler än ett 20-tal frågor/besökare med xquery-lösningen lär databaslösningen vara mycket effektivare trots att du får läsa in ny data. Att uppdatera raderna då alla rader i tabellen ändå måste gås igenom blir både mindre effektivt och onödigt (annat blir det om du skulle ha 10 feeds till i samma tabell). Läs gärna in all ny data till en separat tabell först för att få minsta möjliga nertid med den kompletta tabellen.

mojitoo 2010-09-09 22:31

Av ren nyfikenhet, vad är mest effektivt och den bästa lösningen om man skulle ha flera feeds?

Är det då effektivare att spara varje feed i en separat tabell (feed_tradera_ginza, feed_tradera_cdon osv) som man sedan tar truncate table på och läser in den nya datan. Sedan för att skriva ut dem tillsammans på hemsidan så gör man en INNER JOIN mellan dem.
Eller är det effektivare att spara alla i en och samma tabell (product_feeds) och då använda sig av UPDATE och DELETE istället?

Finns det någon gräns när det ena respektive det andra alternativet är mer eller mindre effektivt?


Alla tider är GMT +2. Klockan är nu 18:19.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson