sql >> Database teknologi >  >> RDS >> Mysql

PHP-webapplikation:spørgsmål om bedste praksis for mysql-databasedesign

Jeg talte med databasearkitekten fra wordpress.com, hostingtjenesten til WordPress. Han sagde, at de startede med én database, der hostede alle kunder sammen. Indholdet på en enkelt blogside er jo ikke så meget. Det er naturligt, at en enkelt database er mere overskuelig.

Dette fungerede godt for dem, indtil de fik hundreder og tusinder af kunder, de indså, at de var nødt til at skalere ud , kører flere fysiske servere og hoster en undergruppe af deres kunder på hver server. Når de tilføjer en server, ville det være nemt at migrere individuelle kunder til den nye server, men sværere at adskille data i en enkelt database, der tilhører en individuel kundes blog.

Efterhånden som kunderne kommer og går, og nogle kunders blogs har stor aktivitet, mens andre bliver forældede, bliver rebalanceringen over flere servere et endnu mere komplekst vedligeholdelsesjob. Overvågning af størrelse og aktivitet pr. individuel database er også nemmere.

Gør ligeledes en sikkerhedskopiering eller gendannelse af databasen af en enkelt database, der indeholder terrabytes af data, versus individuelle database backups og gendannelser på nogle få megabyte hver, er en vigtig faktor. Overvej:en kunde ringer og siger, at deres data blev SNAFU'd på grund af en dårlig dataindtastning, og kan du venligst gendanne dataene fra gårsdagens backup? Hvordan ville du gendanne one kundedata, hvis alle dine kunder deler en enkelt database?

Til sidst besluttede de at opdele i en separat database pr. kunde Selvom de var komplekse at administrere, tilbød de dem større fleksibilitet, og de ombyggede deres hostingtjeneste til denne model.

Altså fra en datamodellering perspektiv ser det ud til at være den rigtige ting at gøre at holde alt i en enkelt database, noget databaseadministration opgaver bliver lettere, når du passerer et bestemt brudpunkt for datavolumen.



  1. Top 5 datamodelleringsværktøjer til SQL Server

  2. CASESTUDIE:ARKWARE MS ACCESS CRM

  3. Hvordan tilføjer man et startscript til en mysql docker-container?

  4. Sådan bestiller du efter pivottabeldata i Laravels Eloquent ORM