Ben al een poosje bezig met het ontwikkelen van een php applicatie met een mysql database.
Het gaat om een applicatie die alle leerling gegevens van meer dan 100 scholen bevat. Wegens de wet op de privacy mogen deze gegevens nooit uitgewisseld worden ts deze verschillende scholen.
Vraag: Mijn idee was om voor elke school een mysql-database te maken?
Is dit haalbaar? of is dit niet verstandig? Andere suggesties?
* het gaat na enkele jaren over vele honderden MB's per school
is dit haalbaar? Dat weten we niet, dat ligt aan jou kennis van sql en jouw ruimte in databases, werk je met een host? heeft die max aantal databases? wil je tussen die database kunnen communiceren? kun je dat?
Informatie in 1 database is ook gewoon heel goed te scheiden, indien de code maar veilig is, maar dat geld voor zowel 1 als 1000 database...
ik neem aan dat het splitsen in verschilllende databases wat dat aangaan ook gunstiger is voor de snelheid.... maar daar heb ik niet echt kaas van gegeten.
Elke school heeft zelf een 30tal tabellen nodig binnen de applicatie.
Dat zou willen zeggen dat er 3000 tabellen in zo'n database zitten.
Is dat kwa snelheid aanvaardbaar, enz ... ????
Wat kost eigenlijk zo'n database per school?
Het is verstandig om eerst te gaan normaliseren. Als je alles goed in elkaar zet zou het gewoon in 1 database moeten kunnen. Het gaat erom hoe je applicatie is beveiligd.
Verder is de vraag wat gebeurt er verder mee, is een mysql database hier wel verstandig voor of is bijvoorbeeld een PostgreSQL database verstandiger vanwege stabiliteit.
Ik werk zelf zijdelings ook met een project waarbij tientallen gb's aan data in een database komt te staan. Dit is een project waarbij samengewerkt wordt door meerdere instanties en mijn stage bedrijf. Hier is een losse server voor genomen maar die gaat gewoon alles draaien. De beveiliging is meer afhankelijk van je applicatie en vanaf waar je database(s) bereikbaar zijn.
Wanneer je 1 applicatie op 1 locatie (server) hebt staan, ga je daar maar 1 database aan knopen. Dat maakt de boel 100x eenvoudiger, ook wat betreft de beveiliging. Onderhoud op 100 databases, levert 100x hetzelfde risico op. Onderhoud op 3000 tabellen, levert 3000x hetzelfde risico op. Dat wil je echt niet, het levert verder namelijk geen enkel voordeel op. Ook niet wat betreft de beveiliging.
Kortom, vergeet dit hele idee.
Enkele honderden MB's per school is geen probleem, al worden het enkele honderden GB's, dan is het nog steeds geen probleem. Dat is natuurlijk wel een probleem voor MySQL, maar daar kies je voor wanneer je een dataramp als MySQL als database wilt gaan gebruiken. MySQL is een samenraapsel van bugs en andere functionaliteiten en omdat alles goed is beschreven, vallen de bugs in de categorie 'functionaliteit'. Daarnaast is MySQL zo snel als dikke stront door een trechter op het moment dat je met veel users of veel data gaat werken.
Tip van de dag: Neem PostgreSQL, vele malen veiliger en sneller. Daarnaast kan pgSQL prima uit de voeten met databases van vele honderden GB's groot, TB's zijn evenmin een probleem. Mocht je genoeg schijfruimte hebben...
pgSQL is altijd gratis, MySQL is niet altijd gratis.