Ik heb een zeer grote hoeveelheid netflowdata (>500GB) wat in een database opgeslagen zou moeten worden. Op dit moment is deze data zeer efficiënt in binary files opgeslagen. Zo wordt bijvoorbeeld 1 byte gebruikt om de TCP flags te representeren, en 4 bytes voor het opslaan van 1 ip adres.
Nu moet al deze data in een database gezet worden. Probleem is dat deze data zo efficiënt mogelijk in een database geplaatst moet worden. Onder mysql kan dit uitstekend, want deze ondersteunt unsigned integers, maar postgres lijkt dit niet te kunnen.
-Voor postgres is er ip4r wat het mogelijk maakt om ip's in 4 bytes op te slaan, echter lost dit het probleem niet op voor mijn 1 byte unsigned integers.
Postgress heeft een standaard datatype om ipadressen op te slaan. Echter neemt dit 12 bytes per adres is want dus 3x zoveel ruimte in neemt als benodigd. =Ongewenst.
-Op applicatie niveau zou ik alle signed bytes kunnen converteren naar unsigned bytes, echter is dit zeer vervelend als dit per query meerdere malen moet gebeuren. Bovendien maakt dat de data uit de database ook niet leesbaarder.
Kortom zit ik eigenlijk met 2 problemen:
1. Hoe kan ik unsigned values in postgres efficiënt opslaan zonder grotere datatypes te moeten gebruiken? Dit laatste doet de benodigde opslagruimte linear groeien en is zeker ongewenst in dit geval.
2. Gezien mysql wel unsigned integers ondersteunt, nijg ik naar het gebruik van Mysql ipv Postgress. Zijn er redenen waarom ik toch moet overwegen om mijn integers op applicatie niveau te converteren en dus toch postgres te gebruiken? Graag argumentatie goed onderbouwen. "PG evalueert queries netter dan MySQL" is niet zo'n nuttig argument tenzij je kunt specificiëren op welk gebied dit een voordeel levert (opslagruimte/evaluatie snelheid etc).
Nu moet al deze data in een database gezet worden. Probleem is dat deze data zo efficiënt mogelijk in een database geplaatst moet worden. Onder mysql kan dit uitstekend, want deze ondersteunt unsigned integers, maar postgres lijkt dit niet te kunnen.
-Voor postgres is er ip4r wat het mogelijk maakt om ip's in 4 bytes op te slaan, echter lost dit het probleem niet op voor mijn 1 byte unsigned integers.
Postgress heeft een standaard datatype om ipadressen op te slaan. Echter neemt dit 12 bytes per adres is want dus 3x zoveel ruimte in neemt als benodigd. =Ongewenst.
-Op applicatie niveau zou ik alle signed bytes kunnen converteren naar unsigned bytes, echter is dit zeer vervelend als dit per query meerdere malen moet gebeuren. Bovendien maakt dat de data uit de database ook niet leesbaarder.
Kortom zit ik eigenlijk met 2 problemen:
1. Hoe kan ik unsigned values in postgres efficiënt opslaan zonder grotere datatypes te moeten gebruiken? Dit laatste doet de benodigde opslagruimte linear groeien en is zeker ongewenst in dit geval.
2. Gezien mysql wel unsigned integers ondersteunt, nijg ik naar het gebruik van Mysql ipv Postgress. Zijn er redenen waarom ik toch moet overwegen om mijn integers op applicatie niveau te converteren en dus toch postgres te gebruiken? Graag argumentatie goed onderbouwen. "PG evalueert queries netter dan MySQL" is niet zo'n nuttig argument tenzij je kunt specificiëren op welk gebied dit een voordeel levert (opslagruimte/evaluatie snelheid etc).