PostgreSQL: een inleiding
Vergelijking tussen PostgreSQL en MySQL en uitleg over de werking van PostgreSQL.
Gesponsorde koppelingen
Inhoudsopgave
- Wat is het?
- Werken met PHP en PostgreSQL
- Wat zijn de voordelen?
- Datatypes
- Wat zijn de nadelen?
- Transactions
- Row-level locking
- Stored procedures
- Waar op te letten als ik MySQL gewend ben?
23 reacties op 'PostgreSQL: een inleiding'
Gesponsorde koppelingen
Nice tutorial!! Denk dat veel mensen hier wat aan hebben..
Wanneer je MySQL gebruikt en wil overstappen naar PostgreSQL, dan is het makkelijk wanneer je een database class gebruikt die ondermeer de functies mysql_fetch_array, num_rows enz. ondersteunt. Zo kun je gemakkelijk (door een andere databaes class te gebruiken voor PostgreSQL) overstappen zonder in je code te hoeven rotzooien!
Wanneer je MySQL gebruikt en wil overstappen naar PostgreSQL, dan is het makkelijk wanneer je een database class gebruikt die ondermeer de functies mysql_fetch_array, num_rows enz. ondersteunt. Zo kun je gemakkelijk (door een andere databaes class te gebruiken voor PostgreSQL) overstappen zonder in je code te hoeven rotzooien!
Zover ik weet word er voor PostgreSQL maar ??n engine gebruikt.
Combinatie MyISAM en InnoDB kan sterk zijn. Hangt erg sterk van je databaseindeling en query's af. Maar dat kunnen mensen met wat ervaring zo zelf ontdekken :)
Voor grote applicaties raad ik overigens wel altijd PostgreSQL aan (of Oracle), in elk geval.
Combinatie MyISAM en InnoDB kan sterk zijn. Hangt erg sterk van je databaseindeling en query's af. Maar dat kunnen mensen met wat ervaring zo zelf ontdekken :)
Voor grote applicaties raad ik overigens wel altijd PostgreSQL aan (of Oracle), in elk geval.
Klopt, maar ik zie dat niet als nadeel, jij blijkbaar wel. Voordeel is dat PostgreSQL-hosters meestal niet pubers met een resellerpakket zijn, maar ?chte hosters. En we praten hier over hooguit een paar tientjes per jaar. PostgreSQL zelf is gratis.
Zo kun je ook zeggen dat je beter geen Outlook kan gebruiken omdat Windows duurder is dan Linux...
Maar ik begrijp dat dit voor sommige mensen een nadeel kan zijn. Bedenk wel dat bij sites 'die dit niet kunnen betalen' PostgreSQL geen vereiste is, aangezien die sites niet eens een paar tientjes per jaar opleveren en dus nooit groot kunnen zijn.
Zo kun je ook zeggen dat je beter geen Outlook kan gebruiken omdat Windows duurder is dan Linux...
Maar ik begrijp dat dit voor sommige mensen een nadeel kan zijn. Bedenk wel dat bij sites 'die dit niet kunnen betalen' PostgreSQL geen vereiste is, aangezien die sites niet eens een paar tientjes per jaar opleveren en dus nooit groot kunnen zijn.
Klopt, daar heb je gelijk in. Ik heb er ook niet echt goed naar gezocht ofzo verder, maar ik vond het wel een nadeel(tje) wat genoemd mocht worden. Dat sites die het nodig hebben ook meer voor hun hosting betalen is idd logisch :)
PS: Zoals ik al zei heb ik zelf niet goed gezocht, dus zou je me een link kunnen geven van een goede host die PostgreSQL ondersteunt (jouw favoriet)? PM is misschien handiger daarvoor anders gaat het wat offtopic in de reacties :)
-edit-
Nuttige link:
YAPF.net - De slechte punten van MySQL op een rijtje
De redenen waarom de maker van die site is overgestapt op PostgreSQL, met op die site ook meer uitleg over PostgreSQL :)
PS: Zoals ik al zei heb ik zelf niet goed gezocht, dus zou je me een link kunnen geven van een goede host die PostgreSQL ondersteunt (jouw favoriet)? PM is misschien handiger daarvoor anders gaat het wat offtopic in de reacties :)
-edit-
Nuttige link:
YAPF.net - De slechte punten van MySQL op een rijtje
De redenen waarom de maker van die site is overgestapt op PostgreSQL, met op die site ook meer uitleg over PostgreSQL :)
Ik mis alleen iets belangrijks.
Hetgeen waar je ook op moet letten is dat Postgre Bigserial heeft ipv auto-increment. Je kan dus geen dump van MySQL ineens overzetten naar een Postgre database (dat komt natuurlijk niet alleen door Bigserial).
Wat mij is opgevallen is dat als je een dump in PostgreSQL inlaad, dat hij dan niet de Bigserial bijwerkt (dat hij bijvoorbeeld bij ID 53 moet beginnen). De auto-increment werkt het wel netjes bij, die weet dat de volgende ID 53 is en geen 1.
Verder een goede tutorial, ik mis alleen een paar belangrijke dingetjes.
Hetgeen waar je ook op moet letten is dat Postgre Bigserial heeft ipv auto-increment. Je kan dus geen dump van MySQL ineens overzetten naar een Postgre database (dat komt natuurlijk niet alleen door Bigserial).
Wat mij is opgevallen is dat als je een dump in PostgreSQL inlaad, dat hij dan niet de Bigserial bijwerkt (dat hij bijvoorbeeld bij ID 53 moet beginnen). De auto-increment werkt het wel netjes bij, die weet dat de volgende ID 53 is en geen 1.
Verder een goede tutorial, ik mis alleen een paar belangrijke dingetjes.
Even over het gebruik van de datatypes SERIAL en BIGSERIAL, dat zijn eigenlijk gewoon een INT en een BIGINT met een functie die de teller bijhoudt, een SEQUENCE. Deze SEQUENCE wordt bij een SERIAL en BIGSERIAL automatisch aangemaakt en als default waarde aangeroepen.
Je kunt dit ook allemaal zelf aanmaken, dat maakt voor het eindresultaat niet uit.
Met de functies nextval(), currval(), lastval() en setval() kun je met de SEQUENCE gaan spelen.
Een belangrijk verschil tussen auto_increment (MySQL) en een sequence (pgSQL) is dat je met een sequence vooraf al weet welke waarde je bij een INSERT-query gaat gebruiken voor het id.
Aangenomen dat in dit voorbeeldje $nr het resultaat is van de eerste query, die de NEXTVAL aanroept.
Dit kan erg handig zijn wanneer je gekoppelde data in diverse tabellen moet wegschrijven, dan haal je eerst de diverse id's op (die je her en der als foreignkey gaat gebruiken) en daarna ga je pas alle INSERT-query's uitvoeren.
Een SEQUENCE telt alleen vooruit, de waarde gaat nooit omlaag. Ook niet als je een ROLLBACK uitvoert! Raar maar waar.
Je kunt dit ook allemaal zelf aanmaken, dat maakt voor het eindresultaat niet uit.
Met de functies nextval(), currval(), lastval() en setval() kun je met de SEQUENCE gaan spelen.
Een belangrijk verschil tussen auto_increment (MySQL) en een sequence (pgSQL) is dat je met een sequence vooraf al weet welke waarde je bij een INSERT-query gaat gebruiken voor het id.
Aangenomen dat in dit voorbeeldje $nr het resultaat is van de eerste query, die de NEXTVAL aanroept.
Dit kan erg handig zijn wanneer je gekoppelde data in diverse tabellen moet wegschrijven, dan haal je eerst de diverse id's op (die je her en der als foreignkey gaat gebruiken) en daarna ga je pas alle INSERT-query's uitvoeren.
Een SEQUENCE telt alleen vooruit, de waarde gaat nooit omlaag. Ook niet als je een ROLLBACK uitvoert! Raar maar waar.
Voor de liefhebbers die geen PDO (willen) gebruiken, kijk ook even naar de functie pg_query_params(). Hiermee kun je snel en eenvoudig prepared statements maken, geen geklooi mee met het escapen van je data!
Code (php)
1
2
3
2
3
<?
$result = pg_query_params($dbconn, 'SELECT * FROM tabel WHERE name = $1 AND status = $2', array("jim's bar", "actief"));
?>
$result = pg_query_params($dbconn, 'SELECT * FROM tabel WHERE name = $1 AND status = $2', array("jim's bar", "actief"));
?>
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
PHP erik- 8 jaar geleden
- 1.799 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP tutorials opties
- Overig
- Nieuwste PHP tutorials
- PHP tutorial toevoegen


PHP hulp
0 seconden vanaf nu