Ga naar inhoud
Log in om dit te volgen  
aarclay

Performance server bij schrijven naar database

Aanbevolen berichten

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.

Wat is jullie advies?

Deel dit bericht


Link naar bericht
Delen op andere sites
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.

Deel dit bericht


Link naar bericht
Delen op andere sites
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.

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Het is een voertuig-tracing systeem. Dus het is wel realtime....


Één query per 10 seconden zal de boel toch niet overbelasten? smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Stef (link):
Klik om eerdere quotes te tonen


Één query per 10 seconden zal de boel toch niet overbelasten? smiley


Afhankelijk van de server en de query die je uitvoert kan dat wel X)

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
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.

Deel dit bericht


Link naar bericht
Delen op andere sites
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?

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
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.

Deel dit bericht


Link naar bericht
Delen op andere sites
Ja, maar dit zijn alsnog losse insert queries, je kunt namelijk ook deze syntax gebruiken:

Codeblok:
1
2
3
4
5
6
7
INSERT INTO blabla (ding1, ding2, ding) VALUES
(waarde1, waarde2, waarde3),
(waarde1, waarde2, waarde3),
(waarde1, waarde2, waarde3),
(waarde1, waarde2, waarde3),
(waarde1, waarde2, waarde3),
(waarde1, waarde2, waarde3)

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
@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

Deel dit bericht


Link naar bericht
Delen op andere sites
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% smiley
Waarom zou je dan moeilijk doen over 700 rijen per 10 seconden smiley

toevoeging op maandag 11 december 2017, 09:15:27:
Het is natuurlijk wel afhankelijk van de server hardware smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Lennard (link):
Klik om eerdere quotes te tonen
Klein detail smiley


Bij de One2xs servers wel smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
@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


NodeJS om de boel in te laden, en PHP voor enkele kleine bewerkingen. Maar misschien kan ik dit ook wel naar JS ombuigen.

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Klik om eerdere quotes te tonen


NodeJS om de boel in te laden, en PHP voor enkele kleine bewerkingen. Maar misschien kan ik dit ook wel naar JS ombuigen.


Mij lijkt het gewoon dat je alles in NodeJS kan doen toch?

Deel dit bericht


Link naar bericht
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden
Log in om dit te volgen  

×