Hallo, ik ben van plan om een PostgreSQL te gebruiken.
Maar wat zijn de verschillen bij mysql ?
Of zijn die helemaal hetzelfde?
Ook que php codes helemaal gezelfde?
PostgreSQL is iets specifieker dan MySQL en handelt SQL beter volgens de standaard af dan mysql. Dit is met name van belang als je waarde hecht aan zaken als transacties en data integriteit.
Als je niet echt weet waarom je postgresql wilt gebruiken is volgens mij de kans groot dat je het niet nodig hebt, hoewel Frank dit met me oneens zal zijn ;)
Als je mysql gewend bent is het even aanpassen aan postgresql en het management werkt ook net even iets anders.
Verder zal je sommige sql queries moeten aanpassen omdat mysql minder snel fouten zal geven dan postgresql, en zal postgresql over sommige fouten vallen waar mysql dat niet deed.
Als je niet echt weet waarom je postgresql wilt gebruiken is volgens mij de kans groot dat je het niet nodig hebt, hoewel Frank dit met me oneens zal zijn ;)
Het gaat er niet om of je het wel of niet nodig hebt, het gaat er om dat PostgreSQL zich wel normaal aan de regels houdt en MySQL niet. Althans, daar gaat het om bij de databasekeuze voor beginners. MySQL heeft varchars waarvan je de lengte kan instellen. Dat is absurd, het is een VARchar. En het zou wel handig zijn als je een error zou krijgen als je je ingestelde limiet overscheidt, maar nee, dan kapt 'ie 'm af.
Het voordeel van PostgreSQL is dat je relaties kan maken. Dit is niet voor gevorderden belangrijk, maar ook voor beginners. Je leert dit in elk degelijk SQL boek al heel rap. Zonder die relaties, zoals in MySQL (MyISAM), kun je wel wat leuke websitejes maken, maar wat mij betreft kun je nooit iets serieus maken aangezien je je eigen database en data niet kunt vertrouwen.
Wat verder veel beter is aan PostgreSQL is dat je erg goed stored procedures kunt schrijven. Dit zijn acties die door de database worden uitgevoerd. Normaalgesproken doen mensen dit met PHP, terwijl dit dingen zijn die de database veel beter kan. Dit is dus programmeren.
Eén van de grootste verschillen tussen beide databases is de zekerheid die je met PostgreSQL krijgt. Het is bv. onmogelijk om een string van 32 tekens in een VARCHAR(30) te stoppen. MySQL doet daar niet moeilijk over, alleen jammer dat je een deel van de data kwijt raakt...
Dit heeft tot gevolg dat je netter moet programmeren en dus overal moet controleren of je query wel is gelukt en wat er is foutgegaan. Het is aan te raden om hiervoor een database-class te gebruiken die ook een error-log bijhoudt.
Vergeet niet het gebruik van transactions, daar kun je nu altijd over beschikken, maak er dan ook gebruik van. Probeer zo te programmeren dat je database onmogelijk corrupt kan raken door een fout in je php-code.
Wil je nog een stap verder gaan, ga je dan eens verdiepen in PL/pgSQL. Daarmee kun je een complete API binnen de database ontwikkelen. Vanuit PHP roep je deze API aan, met een function, en de API zal de gewenste informatie ophalen, bewerken, wegschrijven, etc. Vanuit php heb je dan geen rechtstreeks contact meer met de data in de database. Je hebt dus niet 1 SELECT, UPDATE of DELETE-query meer in je php-code staan, dit staat allemaal in de API. 3-tier op zijn best, een php-, java- of .NET-programmeur hoeft niet eens meer te weten hoe de database in elkaar zit en werkt, alleen welke functies er moeten worden aangeroepen. En wanneer dat goed in elkaar zit, kun je daar fouten mee maken waarbij de database (of de data) om zeep wordt geholpen.
De php-code is uiteraard verschillend, je kunt geen mysql-functies gebruiken voor PostgreSQL.
dankje wel ik weet nog niet zeker of ik al echt ga beginnen met postgreSQL ik ben ben mysql zeer gewoon en kan er ook al redelijk mee werken...
dus ik weet nog niet zeker...
Bedankt voor jullie reacties:D
?
Onbekende gebruiker
27-08-2006 18:00
Frank schreef op 27.08.2006 17:44
Dit heeft tot gevolg dat je netter moet programmeren
Dit is met name van belang als je waarde hecht aan zaken als transacties en data integriteit.
En waarom zou je dat niet doen? Wanneer je zo weinig waarde hecht aan de juistheid van de data, dan neem je je eigen werk niet bijzonder serieus.
Arend schreef op 27.08.2006 17:19
Als je niet echt weet waarom je postgresql wilt gebruiken is volgens mij de kans groot dat je het niet nodig hebt, hoewel Frank dit met me oneens zal zijn ;)
Klopt, ben het niet met je eens. Wanneer je een keuze moet maken tussen MySQL en PostgreSQL zonder dat je zelf argumenten hebt, neem dan de meest veilige van deze 2 databases. Dan zit je altijd goed. Sinds versie 5 is MySQL wel een stuk beter geworden, maar heeft nog steeds niet het niveau van PostgreSQL.
Arend schreef op 27.08.2006 17:19
Verder zal je sommige sql queries moeten aanpassen omdat mysql minder snel fouten zal geven dan postgresql, en zal postgresql over sommige fouten vallen waar mysql dat niet deed.
Het zal MySQL een rotzorg zijn dat de gegevens niet kloppen... Kijk bijvoorbeeld eens naar het gebruik van GROUP BY in MySQL.
Natuurlijk stel ik het wat zwart-witter voor dan dat het misschien in werkelijkheid is. Maar omdat veel MySQL-gebruikers nog nooit met uitermate belangrijke data (bv. in bank- en verzekeringswereld) hebben gewerkt, hebben ze geen/onvoldoende besef van het belang van een veilige en betrouwbare database. Zelfs met een klein webshopje moet je al kunnen vertrouwen op jouw database, je kunt anders financieel goed het schip ingaan. En dat zou toch zonde zijn.
Op http://builder.com.com/5100-6388-1050671.html staat een betere vergelijking van de features, maar ook hier missen de bugs/gebreken die de verschillende databases kennen. In veel vergelijkingen wordt alleen gekeken naar een rijtje features en de snelheid.
En over snelheid gesproken, het maakt nogal uit of je diverse queries vanuit de php-code aanroept of dat je 1 functie in je schema (de API) aanroept die diverse queries uitvoert. Het gebruik van een API kan enorme performance-winst opleveren. Je maakt tenslotte maar 1x een connectie met de database i.p.v. een X aantal keren.
Ik kan maar één reden bedenken voor de keuze van MySQL. Dat is de load bij kleinere applicaties (dus weinig interactie met database). Maar, een kleine applicatie heeft dus ook maar heel weinig load nodig, waardoor het voordeel wegvalt.
Dus noem eens één voordeel van MySQL?
(oh, en een webhosting van 5 euro per maand minder is geen argument)