Keuze innoDB of MyISAM

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koko

koko

17/07/2007 14:38:00
Quote Anchor link
Hoi,

Ik ben bezig met het scripten van een nieuwe website. Het is de bedoeling dat de core-code gebruikt kan worden in vele verschillende sites waaronder hopelijk ook enkele grote. Ik heb ondertussen al opgeschreven wat er allemaal moet kunnen en ook is er een eerste idee van database-ontwerp. Dit is echter gemaakt op de manier waarop ik het altijd doe, maar ik ben er zeker van dat het niet de ideale manier is. Na wat lezen en zoeken ben ik zover dat er eens degelijk moet nagedacht worden over welke database-engine ik wil gebruiken. Op "het internet" heb ik verschillende vergelijkingen gezien tussen innoDB en MyISAM.

Hoewel ik ondertussen al wel wat gelezen heb, ben ik er nog niet uit. Op grond van welke criteria zou ik moeten kiezen tussen de twee? Zou iemand me op weg willen zetten of zelfs helpen kiezen aub? (Naar het schijnt zou Frank hier zeker op moeten kunnen antwoorden, maar ik ben er zeker van dat hij niet de enige id :-p )
 
PHP hulp

PHP hulp

30/09/2022 21:08:01
 
Joren de Wit

Joren de Wit

17/07/2007 14:50:00
Quote Anchor link
Dat hangt er vanaf wat voor gegevens jij in je database wilt opslaan. Voor tabellen die een onderlinge relatie met elkaar hebben, zou ik altijd de innoDB engine gebruik aangezien dat de enige engine is het gebruik van foreign keys ondersteunt.

Het enige punt waar je zou kunnen overwegen om MyISAM te gebruiken, is als je van de fulltext functionaliteit gebruik wilt maken. Dus als je bijvoorbeeld artikelen hebt of grote stukken tekst waar je een zoekmachine op los wilt laten. Het voordeel van fulltext is dan namelijk de mogelijk van het sorteren op relevantie.
 
Koko

koko

17/07/2007 14:56:00
Quote Anchor link
Hoi,

Mja, die term ben k dus massaal tegengekomen... FULLTEXT. Bedoel je daarmee een tekstje van enkele zinnen +- 1 A4 max. Of is dat een heel boek. De eerste komen derin, de tweede helemaal niet.

Ivm de foreign keys daar snap ik het nut nog niet echt van... Ik heb gezocht op internet, ma wat er daar gebeurt in een tabel (of 2) doe ik toch ook met PHP?
 
Joren de Wit

Joren de Wit

17/07/2007 15:25:00
Quote Anchor link
Fulltext kan al van belang zijn bij artikelen van enkele regels. Het komt voornamelijk van pas als je ook een zoekfunctie wilt gaat toevoegen aan je website.

In alle andere gevallen zou ik voor de InnoDB engine kiezen vanwege het eerder genoemde voordeel. Met foreign keys breng je namelijk constraints aan in je database, je legt de onderlinge relaties van tabellen vast.

Je kunt met verschillende opties bepalen hoe er omgegaan wordt met records waar zo'n foreign key constraint op rust. Stel dat ik twee tabellen heb, 1 met daarin auteurs en een tweede met artikelen geschreven door die auteurs.

In de tabel met artikelen sla ik tevens het id van de auteur op, dit is de zogenaamde foreign key. Nu zou je bijvoorbeeld kunnen instellen dat het niet mogelijk is om een auteur te verwijderen als er nog artikelen van die auteur in de artikelen tabel staan. Ook zou je er voor kunnen kiezen om automatisch alle artikelen van een bepaalde auteur te verwijderen zodra die auteur uit de autuers tabel verwijderd wordt.

Deze contraints, indien goed ingesteld, zorgen ervoor dat je nooit met corrupte data in je database blijft zitten. Je zult immers nooit een artikel hebben waarvan de auteur niet meer in je database staat.
 
Koko

koko

17/07/2007 15:31:00
Quote Anchor link
Hoi,

Bedankt voor je verhelderend antwoord!! :-D Bij deze ga ik gaan voor InnoDB. ;-)

Ik ben niet van plan een zoekfunctie in de site te zetten en anders moet der maar gezocht worden op titel en niet in de full text :-D

Als we nu even teruggrijpen naar het voorbeeld auteur/artikel:

Kan ik in 1 query het artikel ophalen en ineens ook de naam van de auteur en niet enkel de id-van de auteur wat ik dan in php nog moest omzetten naar de naam met een 2de query. Enig idee?
 
Joren de Wit

Joren de Wit

17/07/2007 15:35:00
Quote Anchor link
Jep, dat is heel eenvoudig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    a.naam,
    art.titel
FROM
    auteurs AS a,
    artikelen AS art
WHERE
    art.auteur_id = a.id


ps. Je kunt zonder fulltext nog steeds zoeken in artikelen, alleen is het resultaat niet meer te sorteren op relevantie.
 
Koko

koko

17/07/2007 15:37:00
Quote Anchor link
ooh :-D

Van dat sorteren op relevantie heb k nog geen kaas gegeten ;-)

Bedankt voor de hulp! Nu eens tegoei van start gaan.
 



Overzicht Reageren

 
 

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.