PostgreSQL: een inleiding

Door PHP erik, 23 jaar geleden, 11.311x bekeken

Vergelijking tussen PostgreSQL en MySQL en uitleg over de werking van PostgreSQL.

Gesponsorde koppelingen

Inhoudsopgave

  1. Wat is het?
  2. Werken met PHP en PostgreSQL
  3. Wat zijn de voordelen?
  4. Datatypes
  5. Wat zijn de nadelen?
  6. Transactions
  7. Row-level locking
  8. Stored procedures
  9. Waar op te letten als ik MySQL gewend ben?

 

Er zijn 23 reacties op 'Postgresql een inleiding'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
B a s
B a s
23 jaar geleden
 
0 +1 -0 -1
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!
PHP erik
PHP erik
23 jaar geleden
 
0 +1 -0 -1
Inderdaad een goede tip, anders ben je straks 80 pagina's om aan het zetten, dat schiet ook niet op (al kun je er dan een leuk fopen/fwrite projectje van maken).


23 jaar geleden
 
0 +1 -0 -1
Eindelijk een mooie Nederlandse tutorial over PostgreSQL op phphulp.nl :-)

Quote:
ODBC is van Microsoft, dus daar ben ik sowieso niet blij mee.
:-D
Martijn B
Martijn B
23 jaar geleden
 
0 +1 -0 -1
Mooie tutorial.

Als ik het goed gelezen heb kun je dus PostgreSQL vergelijken met MySQL met InnoDB ondersteuning.

Kun je in PostgreSQL dan ook keizen tussen meedere storage engines of is er maar 1? In MySQL is de combinatie MyIsam en InnoDB een hele sterke namelijk.
PHP erik
PHP erik
23 jaar geleden
 
0 +1 -0 -1
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.
Dutchcamel
dutchcamel
23 jaar geleden
 
0 +1 -0 -1
Goede tut, maar als ik me niet vergis mis ik een (groot) nadeel van PostgreSQL. Ik heb er nooit echt op gelet, maar heel veel webhosters bieden alleen ondersteuning voor MySQL en niet voor PostgreSQL.
Correct me if I'm wrong :)
PHP erik
PHP erik
23 jaar geleden
 
0 +1 -0 -1
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.
Dutchcamel
dutchcamel
23 jaar geleden
 
0 +1 -0 -1
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 :)
Remco van Arkelen
Remco van Arkelen
23 jaar geleden
 
0 +1 -0 -1
Ey leuk om te lezen, mooi werk :) We moesten nu ook maar eens een tutorial gaan schrijven over het gebruik van stored procedures, functions en triggers in PgSQL! :) Hopelijk worden er wat mensen wakker geschud en gaan ze eens met een echte database werken.
Willem Jan Z
Willem Jan Z
23 jaar geleden
 
0 +1 -0 -1
Goeie tut, misschien leuk om de datatypes pagina uit te breiden, de grote verschillen eruit te pakken.
Zoals AUTO_INCREMENT -> serial
Erik Rijk
Erik Rijk
23 jaar geleden
 
0 +1 -0 -1
Goeie Tutorial Erik.

Vooral het row-level locking vind ik goed omdat ik er altijd meer over wilde weten en ook hoe je het tegen kon gaan.

hartelijk dank :)
Jasper
jasper
23 jaar geleden
 
0 +1 -0 -1
die row locking is by mysql totaal overbodig, omdat je rollbacks kan doen, en dat heb ik nog niet gevonden bij p ostgreSQL, of vergis ik mij ?
Remco van Arkelen
Remco van Arkelen
23 jaar geleden
 
0 +1 -0 -1
Daar vergis je je erg in :) MySQL ondersteund alleen rollbacks met de InnoDB-engine, die niet standaard wordt meegeleverd. PgSQL heeft maar 1 engine die gewoon alles ondersteund, daarnaast is locking een veel nettere methode dan de boel ongedaan maken met rollbacks.


23 jaar geleden
 
0 +1 -0 -1
Ik heb een gratis host met PostgreSQL en MySQL ondersteuning. Beide met een grafische gebruikersinterface zodat je databases makkelijk aan te passen zijn. Ik denk echter niet dat ik PostgreSQL nuttig gaat gebruiken.
Remco van Arkelen
Remco van Arkelen
23 jaar geleden
 
0 +1 -0 -1
Quote:
Ik denk echter niet dat ik PostgreSQL nuttig gaat gebruiken.


En wat nu als ik je vertel dat PostgreSQL een object-geori?nteerde database is? (no kidding)


23 jaar geleden
 
0 +1 -0 -1
LOL Nu zou ik wel willen maar ik mis dan nog steeds FULLTEXT wat MySQL wel heeft :-)
Remco van Arkelen
Remco van Arkelen
23 jaar geleden
 
0 +1 -0 -1
Mwah, wees eerlijk, hoe vaak gebruik je dat? :)) Ik zou er lekker mee aan de slag gaan, je leert er echt veel van.
Tjibbe
tjibbe
23 jaar geleden
 
0 +1 -0 -1
Er is wel een full text engine aanwezig in postgreSQL. Deze moet je apart installeren en heet Tsearch2. Werkt veel beter dan de FULLTEXT in mySQL.
Barman V
Barman V
23 jaar geleden
 
0 +1 -0 -1
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.
PHP erik
PHP erik
23 jaar geleden
 
0 +1 -0 -1
@Barman
Het is natuurlijk een inleiding. Maar toch, vertel alsjeblieft wat je mist, dan werk ik het graag bij. Dat van de dump wist ik niet. Bigserial i.p.v. auto_increment wordt wel uitgelegd. Maar vertel..
Barman V
Barman V
23 jaar geleden
 
0 +1 -0 -1
Ah die uitleg over die serial had ik dan over het hoofd gezien. Ik zie hem nu staan onder het kopje "Datatypes".
Frank -
Frank -
20 jaar geleden
 
0 +1 -0 -1
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT NEXTVAL('sequnce_naam') AS nr;


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
INSERT INTO
  users (
    id,
    naam
  )
VALUES (
  $nr,
  'pgFrank'
);

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.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Frank -
Frank -
20 jaar geleden
 
0 +1 -0 -1
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$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.

Inhoudsopgave

  1. Wat is het?
  2. Werken met PHP en PostgreSQL
  3. Wat zijn de voordelen?
  4. Datatypes
  5. Wat zijn de nadelen?
  6. Transactions
  7. Row-level locking
  8. Stored procedures
  9. Waar op te letten als ik MySQL gewend ben?

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.