[PHP] Database keuze

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo

ik ben nu bezig met een systeem wat vrij uitgebreid gaat worden. Hierin zullen nog veel insert en updates plaats vinden.

Nu zat ik te tweifelen over de database keuze. Tot nu toe gebruik ik MySQL met MyISAM tables.
Maar net zoals hier is ervoor gekozen om voor het forum InnoDB tabellen te kiezen.

Daarnaast is er ook nog de keuze voor ProgreSQL of zelf Interbase/Firebird, alleen hier heb ik geen ervaring mee en weet ook zo niemand die er echt mee gewerkt heeft.

Nu heb ik de vraag, wanneer is het verstandig om de overstap te maken van MyISAM tables en InnoDB tables? Rowlevel locking heeft veel voordelen als er veel veranderd in de tabel. Dit zal wel iets meer CPU kosten. Zijn er nog meer voor of nadelen zo te noemen?

En kan iemand mij misschien meer vertellen wat de performance is bij grotere databases, als je gebruikt maakt van bijvoorbeeld PostgreSQL of Interbase.

Een ander punt waar ik ook nog aan moet denken is er ook de mogelijkheid moet zijn om de database te mirroren naar een 2e server.

Alvast bedankt

Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

Zelf wel eens paar keer benchmarks voorbij zien komen.
En mirror'en kan wel vrijwel bij elke database engine.

Was het de bedoeling om je database alleen door PHP te benaderen ? ( Single DB-user )
edit:
[quote]
curry684 schreef op 14 juni 2004 @ 09:54:
Performance is geen issue
[/quote]
Bij technici niet nee :), maarja "de Baas" moet betalen voor de HardwareUpgrade mocht ie te traag worden. Dus bij ons ligt dat anders ;)[list]Bedrijf = Schip• Kaptein aka Baas : Laatste woord• Stuurlui aka Verkoop : Wishes vanaf klanten (klanten willen SNEL)• Machinisten aka Technici : Stabiel & veel mogelijkheden om tot juiste oplossingen te komen[/list]Stuurlui zeggen : "Wij bepalen waar het schip heen vaart."
Technici zeggen : "Ja hoho, wij bepalen hoe hard de motor draait."
De Kaptein mag beslissen :)

[ Voor 51% gewijzigd door glashio op 14-06-2004 11:36 . Reden: Uitleg reaktie ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Performance is geen issue bij de keuze van een database: een DB kies je op basis van benodigde features. Dat MySQL de snelste database is kan iedereen je vertellen, dat het een buggy rotding is dat alleen zo snel is omdat het niets kan en nauwelijks tot niet de integriteit van je data bewaart ook.

De belangrijkste vraag is dus: waarvoor ben je een database aan het opzetten? In een commerciele omgeving is 2500 euro extra investeren in hard- en software voor een databaseserver vaak rendabeler dan de ramp afwachten zodra er iets mis gaat.

Met dank aan ACM wat leuk leesvoer over MySQL.

[ Voor 10% gewijzigd door curry684 op 14-06-2004 09:55 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • jochemd
  • Registratie: November 2000
  • Laatst online: 24-08 12:31
Je kan vast wel wat beter vertellen wat de requirements zijn. Veel updates/inserts zegt namelijk vrij weinig, voor de één is 10 tps al veel, voor de ander is 300 tps veel. Ook de grootte van een database en de distributie van de wijzigingen over de database is hier van belang (je wil geen hotspots).

Verder, de genoemde CPU-load is irrelevant. Versioning (zowel implementatie van InnoDB implementatie van PostgreSQL) kost je diskruimte en I/O bandbreedte. Dat is waar de pijn van versioning zit, niet in de CPU.
Het scenario waarin versioning een slechte keuze is is een scenario waarbij je in één table een heleboel wijzigingen per seconde hebt, en in de zelfde of een andere table langlopende transacties. Dit is een eigenschap van versioning, die in PostgreSQL en InnoDB precies het zelfde probleem oplevert.

Je zou je verder misschien eens moeten afvragen welke eisen je stelt aan een database. Je doet het voorkomen alsof snelheid het enige is wat van belang is. Ik denk dat juist de eigenschappen op het gebied van data integriteit, SQL features en betrouwbaarheid de belangrijkste zijn. Om het heel gechargeerd te zeggen: je kan een database arbitrair snel maken als hij het foute antwoord mag teruggeven.

Juist om deze redenen zou ik zelf altijd voor PostgreSQL gaan als ik de keuze had.

Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
MySQL is een heerlijke database... nouja... als het je niet zoveel uit maakt om ALTIJD en ALTIJD al je data te verifieren en te controleren. (nou zou je dat zowiezo moeten doen maargoed)... Ik persoonlijk mis toch wel heel erg dingen zoals foreign keys on update cascade achtige constructies, restraints en UNION / Subselects... maar misschien ben ik gewoon een addict die de kracht van SQL mist in MySQL....

Thuis zit ik ook heerlijk te kutten met de nieuwste versie (5.0.0alpha) waarin een hoop dingen al beter geregeld zijn. Helaas draai ik geen **nix achtige dingen, anders zou ik het wel weten --> Ingress!

Als je de keuze hebt, en je wilt de kracht van een echte database eens ontdekken moet je niet voor MySQL gaan. Ga je echt voor de snelheid... tja.. dan blijft het jouw keuze als je MySQL neemt.

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

iKKe007 schreef op 14 juni 2004 @ 10:44:
MySQL is een heerlijke database... nouja... als het je niet zoveel uit maakt om ALTIJD en ALTIJD al je data te verifieren en te controleren. (nou zou je dat zowiezo moeten doen maargoed)... Ik persoonlijk mis toch wel heel erg dingen zoals foreign keys on update cascade achtige constructies, restraints en UNION / Subselects... maar misschien ben ik gewoon een addict die de kracht van SQL mist in MySQL....
Je spreekt jezelf wel aardig tegen he? :P Het komt er gewoon op neer dat MySQL "marktleider" is in het PHP wereldje, waarschijnlijk omdat het snel is en omdat het niet al te strict vasthoudt aan de standaard, waardoor het makkelijker te leren is. Om maar weer vast te houden aan het eeuwige LIMIT statement, das is gewoon veel makkelijker te begrijpen dan een dubbele SELECT TOP constructie.
MySQL mist gewoon de kracht van "echte" SQL. Als je een kleine applicatie maakt kun je dat prima met MySQL/MyISAM doen. Is het een grote, actieve database dan zou ik zelf een ander database systeem gebruiken. Welk zou ik niet kunnen zeggen, ik heb zelf eigenlijk alleen maar kleinere applicaties gemaakt in PHP. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
curry684 schreef op 14 juni 2004 @ 09:54:
Performance is geen issue bij de keuze van een database: een DB kies je op basis van benodigde features. Dat MySQL de snelste database is kan iedereen je vertellen, dat het een buggy rotding is dat alleen zo snel is omdat het niets kan en nauwelijks tot niet de integriteit van je data bewaart ook.
MySQL is zeker niet altijd de snelste oplossing, wel voor veel van de simpele queries die vaak in forums gebruikt worden.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

ACM schreef op 14 juni 2004 @ 11:50:
[...]

MySQL is zeker niet altijd de snelste oplossing, wel voor veel van de simpele queries die vaak in forums gebruikt worden.
Inderdaad. Ter illustratie een query op een Access database tegenover dezelfde query in MySQL:

Access:
SQL:
1
2
3
4
5
6
7
8
SELECT TOP 50 id, naam, email, email_prive, registratiedatum, recht
FROM gebruiker
WHERE id IN (
   SELECT TOP (Aantal - (Pagina * 50)) id
   FROM gebruiker
   ORDER BY recht DESC, naam DESC
)
ORDER BY recht ASC, naam ASC

Aantal -> aantal records in de tabel; Pagina -> Huidig paginanummer, waarbij de eerste pagina 0 is

MySQL:
SQL:
1
2
3
4
SELECT id, naam, email, email_prive, registratiedatum, recht
FROM gebruiker
ORDER BY recht ASC, naam ASC
LIMIT (Pagina * 50), 50


Ik weet wel welke van de twee eenvoudiger te begrijpen is.... 7(8)7

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

NMe84 schreef op 14 juni 2004 @ 11:55:
Ik weet wel welke van de twee eenvoudiger te begrijpen is.... 7(8)7
Leuk dat jij dat weet... 8)7
SQL-Taal is een spreek-,expressie-taal/standaard...
Alleen in welk dialect(en) heb je het in 1ste instantie geleerd :)
* glashio weet dat Oracle de meest krachtige SQL Variant heeft.

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • 0 Henk 'm!

  • Godjira
  • Registratie: Februari 2003
  • Laatst online: 10-08 02:06

Godjira

To infinity and beyond!

MySQL vind ik persoonlijk prima werken. Heb er eigenlijk nooit problemen mee. Werkt als een trein en slaat het op zoals ik het invoer :). Maar goed, ik ben geen heavy gebruiker of zo. Het enige wat ik in mijn dbase opsla is eigenlijk mijn DVD, Gamecube, PC Games en Audio CD collecties. Verder heb ik er wel ooit een forum op gedraaid en ook die werkte prima. Maar goed... dit is mijn ervaring met MySQL. Om mijn database te beheren gebruik ik overigens PHP MyAdmin.

Profile


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

glashio schreef op 14 juni 2004 @ 14:31:
[...]
Leuk dat jij dat weet... 8)7
SQL-Taal is een spreek-,expressie-taal/standaard...
Alleen in welk dialect(en) heb je het in 1ste instantie geleerd :)
* glashio weet dat Oracle de meest krachtige SQL Variant heeft.
Ik heb het zelf geleerd met de SQL'99 standaard, gewoon op papier. En in Oracle verder oefeningen gemaakt. Maar de syntax van sommige MySQL statements is gewoon veel lekkerder en makkelijker te begrijpen. Jammer alleen dat er verder zoveel schort aan MySQL...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
MySQL is in standaard mode (MyISAM) misschien niet op alle fronten even handig of compleet, maar zodra je InnoDB als engine gaat gebruiken wordt het al een stuk beter. InnoDB is een echt RDBMS en dat gecombineerd met de flexibiliteit van het SQL-dialect van MySQL maakt het een krachtig geheel. (Nee, ik werk niet voor MySQL en ik ben ook geen business partner ;) ).

En nu dat ze SAPDB ook als engine hebben toegevoegd (onder de naam MaxDB) hebben ze denk ik drie krachtige mogelijkheden die je kunt gebruiken al naar gelang de soort en grootte van je applicatie.
Pagina: 1