Ik vraag mij af. Ik heb een script in NodeJS dat elke 10 seconden een XML-file binnenkrijgt, met ongeveer 300 tot 700 records erin.
Nu wil ik de inhoud van die XML-file in een database opslaan. Wat is het meest zinvolle om te doen? De XML tijdelijk in een bestand opslaan (elke 10 sec) en deze met PHP verwerken en in de database plaatsen?
Ik wil natuurlijk de boel van mijn dedicated server niet overbelasten. En wou er graag met PHP (als het even kan wat dingen aan toevoegen.
Kun je niet met NodeJS meteen de boel in de database proppen?
Anders zou ik inderdaad een tijdelijk bestand aanmaken en die met PHP uitlezen. Je hoeft dat met PHP niet elke 10 sec te doen, je kunt de bestanden ook gewoon laten oplopen en dan elke nacht op een rustig moment alle 6 * 60 * 24 = 8.640 bestanden uitlezen en invoeren. Tenzij je die data natuurlijk direct nodig hebt.
Sowieso zou ik de bestanden allemaal een unieke naam geven en dus niet overschrijven, dan voorkom je dat je data mist als je PHP script om wat voor reden dan ook een keer een .xml bestand overslaat in die 10 seconden.
Je zou eventueel ook de inhoud van de XML bestanden tijdelijk in het geheugen kunnen opslaan om deze 1x per zoveel minuten naar de database te schrijven als je deze niet realtime nodig hebt.
Het is een voertuig-tracing systeem. Dus het is wel realtime....
Dan zou ik het gewoon live doorvoeren. Je ideale aanpak hangt natuurlijk heel erg af van, zoals Sevvlor al zegt, de query. Welke dingen wil je bewerken, hoe actueel moet alle data zijn, enz.
Opzich is de bewerking niet veel spannends, aan de hand van een treinstelnummer een juiste type materieel (Koploper, Flirt, SGM etc..) kiezen uit een switch. En misschien nog een leuke lat/lon berekening om een dichstbijzijnde locatie in de huidige coördinaat op te halen. Geen idee of dat zwaar is met PHP als je per 10 seconden bij +/- 300 treinen dit moet doorvoeren?
Opzich is de bewerking niet veel spannends, aan de hand van een treinstelnummer een juiste type materieel (Koploper, Flirt, SGM etc..) kiezen uit een switch. En misschien nog een leuke lat/lon berekening om een dichstbijzijnde locatie in de huidige coördinaat op te halen. Geen idee of dat zwaar is met PHP als je per 10 seconden bij +/- 300 treinen dit moet doorvoeren?
Als het goed is kun je dit met PDO in 1 query doen i.p.v 300 losse queries, dat scheelt enorm. Voor de rest zou ik gewoon timen hoelang alles duurt en of de server daarbij zwaar belast wordt.
@Aarclay wil je nou php of node gebruiken? Ik zie het voordeel van php niet in? Je kan met Node prima elke 10sec een multi insert doen. Dan heb je 1 query per 10 seconden
toevoeging op zondag 10 december 2017, 23:08:24: Desnoods splits je de load en verdeel je deze over meerdere wueries in die 10 sec
http://yoshinorimatsunobu.blogspot.nl/2010/10/using-mysql-as-nosql-story-for.html Hij claimt 105.000 queries per seconde uit te kunnen voeren met SQL met een "server CPU util" van %us 60% %sy 28% Waarom zou je dan moeilijk doen over 700 rijen per 10 seconden toevoeging op maandag 11 december 2017, 0927: Het is natuurlijk wel afhankelijk van de server hardware