We draaien momenteel een Postgresql database voor het opslaan van geografische logpunten en routes van 10K+ object.
Vooralsnog was de werkwijze hier in sequenteel: logpunten erin -> script erover om de zooi te verwerken.
Dat werkt ook prima, tot we nu zover zijn dat het ophalen van de logpunten en het verwerken ervan een dag lang duurt. Dus dingen gaan parallel lopen, en ook gaan we opschalen naar een flink aantal extra gebruikers.
De database met punten is op dit moment grofweg 60GB groot en snel groeiende. Momenteel wordt er binnen Postgresql gewerkt met partitionering, en dat scheelt al een hele berg. Echter gaan we straks flink wat extra load op de database zetten, waarbij veel meer IO gegenereerd zal worden.
Op dit moment is het soms al niet meer werkbaar, zeker als het backup script een dump aan het maken is van de hele database.
Dit moet dus allemaal sneller en beter. Hardware is op zich geen probleem, maar het moet wel zinvol zijn.
De grote vraag is dus: wat is zinvol? In eerste instantie is het van groot belang dat een nieuwe opzet om zal moeten kunnen gaan met flink wat IO. Momenteel is het een server met Raid 10, quad core 1.8 Ghz en 4 GB memory. Dat maakt best wel wat IO, maar voor veel concurrent requests die allemaal op verschillende plekken dingen uit de dataset halen zal het gewoon niet voldoen vrees ik.
Een DB cluster zou misschien oplossing bieden. Ik heb al zitten kijken naar PGpool II en Sequoia. Beiden zien er veelbelovend uit, maar er zitten zeker wel wat haken en ogen aan, zoals bijvoorbeeld een bepaalde custom function die we zelf hebben geschreven voor het indexeren van plaats en straatnamen. Dat soort dingen zullen we dan anders moeten implementeren. Is op zich niet erg, maar dan moet het gebruik van de cluster wel van voordeel zijn voor ons.
Andere mogelijkheid is natuurlijk om een monster van een server neer te zeggen met een berg disks, en een berg memory, waarmee het mogelijk is om veel gelijktijdige IO te doen.
De vraag is bij de laatste mogelijkheid: hoe lang gaat dat goed? Een cluster schaalt natuurlijk veel beter. Server erbij, en je kunt weer vooruit.
Misschien hebben jullie nog ideeën? We hoeven ook niet perse bij Postgresql te blijven, maar dat heeft wel duidelijk de voorkeur. Kom echter niet met iets als Oracle aanzetten, daar hebben we helaas het budget niet voor
Vooralsnog was de werkwijze hier in sequenteel: logpunten erin -> script erover om de zooi te verwerken.
Dat werkt ook prima, tot we nu zover zijn dat het ophalen van de logpunten en het verwerken ervan een dag lang duurt. Dus dingen gaan parallel lopen, en ook gaan we opschalen naar een flink aantal extra gebruikers.
De database met punten is op dit moment grofweg 60GB groot en snel groeiende. Momenteel wordt er binnen Postgresql gewerkt met partitionering, en dat scheelt al een hele berg. Echter gaan we straks flink wat extra load op de database zetten, waarbij veel meer IO gegenereerd zal worden.
Op dit moment is het soms al niet meer werkbaar, zeker als het backup script een dump aan het maken is van de hele database.
Dit moet dus allemaal sneller en beter. Hardware is op zich geen probleem, maar het moet wel zinvol zijn.
De grote vraag is dus: wat is zinvol? In eerste instantie is het van groot belang dat een nieuwe opzet om zal moeten kunnen gaan met flink wat IO. Momenteel is het een server met Raid 10, quad core 1.8 Ghz en 4 GB memory. Dat maakt best wel wat IO, maar voor veel concurrent requests die allemaal op verschillende plekken dingen uit de dataset halen zal het gewoon niet voldoen vrees ik.
Een DB cluster zou misschien oplossing bieden. Ik heb al zitten kijken naar PGpool II en Sequoia. Beiden zien er veelbelovend uit, maar er zitten zeker wel wat haken en ogen aan, zoals bijvoorbeeld een bepaalde custom function die we zelf hebben geschreven voor het indexeren van plaats en straatnamen. Dat soort dingen zullen we dan anders moeten implementeren. Is op zich niet erg, maar dan moet het gebruik van de cluster wel van voordeel zijn voor ons.
Andere mogelijkheid is natuurlijk om een monster van een server neer te zeggen met een berg disks, en een berg memory, waarmee het mogelijk is om veel gelijktijdige IO te doen.
De vraag is bij de laatste mogelijkheid: hoe lang gaat dat goed? Een cluster schaalt natuurlijk veel beter. Server erbij, en je kunt weer vooruit.
Misschien hebben jullie nog ideeën? We hoeven ook niet perse bij Postgresql te blijven, maar dat heeft wel duidelijk de voorkeur. Kom echter niet met iets als Oracle aanzetten, daar hebben we helaas het budget niet voor
Do diamonds shine on the dark side of the moon :?