Algemeen:
Ik zit met een xml bestand van 300MB en dat wil ik in een databank bewaren (MySQL). Het xml bevat een productenlijst, nu wil ik die productenlijst doorzoekbaar maken voor een website. Mij leek het sneller om het opzoeken via een databank te laten verlopen. Dat xml bestand wordt elke 24 uur upgedate, dus moet ik mijn databank om de 24u martelen. Het xml wordt mij aangeboden via een externe partij en het is niet mogelijk om het anders aangereikt te krijgen dan in xml.
Probleem:
Een product kan in het xml bestand maar 1 categorie hebben, dus als een product in meerdere categorieën thuis hoort staat het er meerdere keren in. Ik kan nu wel gerust alle producten doorlopen (sequentieel) en daarbij het product id vergelijken met dat van de databank, als het niet bestaat toevoegen en anders de gegevens vergelijken om te kijken of alles nog klopt. Nu zit ik met het probleem wat als de gegevens uit de databank veroudert zijn en niet meer voorkomen in het xml bestand.
Ik werk nu met php en gebruik eerst copy() om het xml bestand binnen te halen en vervolgens ga ik aan het werk met het DOMDocument. Ik merk echter dat domdocument er niet veel zin in heeft om zijn taak af te werken. Hij stopt er gewoon mee na een tijdje of hij begint er gewoon niet aan (cronjob, terwijl cronjob wel gestart is).
Ook verwerk ik de gegevens eerst nog, niet alles is even correct bvb typo's (als ik nu even currency van euro erbij neem zie ik dit staan: eu44r, eur4, e4ur, eu5r, eur3, eu2r als typefouten) Het is handig als je dit kunt opvangen in een apparte tabel
Enzo heb ik nog wel een paar redenen waarom ik het in een databank wil stoppen.
Hoe zouden jullie het aanpakken? Ik zou met een update id kunnen werken, als een product niet mee geupdate is dus niet +1 is gegaan stond hij waarschijnlijk niet in het xml bestand. Maar het gaat al snel om een half miljoen records dus wil ik niet op elk record een operatie uitvoeren
Wat raden jullie aan? Xquery? Xpath? Een ander alternatief waar ik nog niet aan gedacht heb?
Ik zit met een xml bestand van 300MB en dat wil ik in een databank bewaren (MySQL). Het xml bevat een productenlijst, nu wil ik die productenlijst doorzoekbaar maken voor een website. Mij leek het sneller om het opzoeken via een databank te laten verlopen. Dat xml bestand wordt elke 24 uur upgedate, dus moet ik mijn databank om de 24u martelen. Het xml wordt mij aangeboden via een externe partij en het is niet mogelijk om het anders aangereikt te krijgen dan in xml.
Probleem:
Een product kan in het xml bestand maar 1 categorie hebben, dus als een product in meerdere categorieën thuis hoort staat het er meerdere keren in. Ik kan nu wel gerust alle producten doorlopen (sequentieel) en daarbij het product id vergelijken met dat van de databank, als het niet bestaat toevoegen en anders de gegevens vergelijken om te kijken of alles nog klopt. Nu zit ik met het probleem wat als de gegevens uit de databank veroudert zijn en niet meer voorkomen in het xml bestand.
Ik werk nu met php en gebruik eerst copy() om het xml bestand binnen te halen en vervolgens ga ik aan het werk met het DOMDocument. Ik merk echter dat domdocument er niet veel zin in heeft om zijn taak af te werken. Hij stopt er gewoon mee na een tijdje of hij begint er gewoon niet aan (cronjob, terwijl cronjob wel gestart is).
Ook verwerk ik de gegevens eerst nog, niet alles is even correct bvb typo's (als ik nu even currency van euro erbij neem zie ik dit staan: eu44r, eur4, e4ur, eu5r, eur3, eu2r als typefouten) Het is handig als je dit kunt opvangen in een apparte tabel
Hoe zouden jullie het aanpakken? Ik zou met een update id kunnen werken, als een product niet mee geupdate is dus niet +1 is gegaan stond hij waarschijnlijk niet in het xml bestand. Maar het gaat al snel om een half miljoen records dus wil ik niet op elk record een operatie uitvoeren
Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?