Database-architectuur: 1 grote vs meerdere kleine databases

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tjop
  • Registratie: Juni 2008
  • Laatst online: 15-09 16:33
In het bedrijf waar ik werk beheren we een zestal websites die qua functionaliteiten veel overeenkomsten vertonen, het zijn namelijk allemaal vergelijkingssites. Elke site heeft een losse database met veel dezelfde tabellen, zoals 'bedrijf', 'offerteaanvraag', 'product' etc. De ene site is complexer dan de andere, maar ze zijn met een aantal uitzonderingen allemaal naar hetzelfde model te standaardiseren.

Nu loopt er een discussie binnen ons developmentteam of het beter is om voor elk project een aparte database te hebben, of één 'masterdatabase'. We proberen de voor- en nadelen op een rijtje te krijgen, wellicht kunnen jullie daarbij helpen. Een issue waar we zelf tegen aanlopen is bijvoorbeeld de veiligheid: doordat alle projecten nu een aparte database hebben met een aparte user die alleen tot die ene database toegang hebben, liggen alleen die projectgegevens op straat als de database gekraakt zou worden, tegenover alles bij 1 database.

Wat is volgens jullie het slimst, 1 database of meerdere? Ook problemen waar we tegen aan kunnen lopen bij het gebruik van één grote database zijn welkom.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Als je alle sites koppelt aan één grote database, loop je wel het risico dat sommige sites niet meer goed werken.
Performance-wise gesproken zou ik zeggen dat het in ieder geval redundanter is, omdat de gegevens dan op al die sites altijd gelijk zijn. Aan de andere kant, bedenk je wel dat die grote database dan meer requests te verduren krijgt.

Hebben jullie geen mogelijkheid om een en ander uit te testen?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou me vooral afvragen of er ook data gedeeld word tussen de sites. Als dat het geval is, en je nu dus dubbele data hebt, zou ik wel overwegen om het in een database te zetten.

Als het echt losse producten zijn en, op een redelijk gelijk data model na, geen link is tussen de sites, zou ik het gewoon als losse databases houden. Op die manier kun je er makkelijker voor kiezen om bijvoorbeeld 1 site later op een andere machine te laten draaien, of voor 1 site een backup terug zetten.

Op het moment dat je alles in een database zet, is het grote nadeel dat alle sites meteen een afhankelijkheid naar elkaar hebben.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 18-09 00:02

bomberboy

BOEM!

Tjop schreef op vrijdag 04 maart 2011 @ 16:37:
...
De ene site is complexer dan de andere, maar ze zijn met een aantal uitzonderingen allemaal naar hetzelfde model te standaardiseren.
Als dat kan lijkt me dat zeker een goed idee om te doen. Dat kan het onderhoud en hergebruik van code (ook over de verschillende projecten) alleen maar ten goede komen.
Nu loopt er een discussie binnen ons developmentteam of het beter is om voor elk project een aparte database te hebben, of één 'masterdatabase'. We proberen de voor- en nadelen op een rijtje te krijgen, wellicht kunnen jullie daarbij helpen.
Uit je post blijkt dat de structuren zeer sterk op elkaar lijken of zelfs hetzelfde zijn. Is de data ook dezelfde?
Of zijn het logisch volledig gescheiden projecten?
Om heel concreet te zijn: wordt er op dit moment data gesynchroniseerd tussen de verschillende databases? Of zou dat een enorm voordeel opleveren als het kon?

Indien ja: dan is het waarschijnlijk nuttig om een en ander samen te voegen.
Indien nee: dan niet omdat je er enkel maar een single point of failure mee creëert.
Een issue waar we zelf tegen aanlopen is bijvoorbeeld de veiligheid: doordat alle projecten nu een aparte database hebben met een aparte user die alleen tot die ene database toegang hebben, liggen alleen die projectgegevens op straat als de database gekraakt zou worden, tegenover alles bij 1 database.
Volgens wat ik begrijp zijn het allemaal vergelijkbare platformen. Het lijkt me dan ook niet onwaarschijnlijk dat als siteA gekraakt kan worden, dat siteB dezelfde zwakte heeft (kan uiteraard anders zijn) dus dan is de extra "beveiliging" niet zo heel waardevol.
Wat is volgens jullie het slimst, 1 database of meerdere? Ook problemen waar we tegen aan kunnen lopen bij het gebruik van één grote database zijn welkom.
Mogelijke voor de hand liggende problemen bij 1 db: je creëert een single point of failure en performance. Voordelen zijn er natuurlijk ook (vereenvoudigde backups, eenvouiger in onderhoud etc)

De belangrijkste vraag die je jezelf moet stellen is of de data ook logisch in één centrale database hoort of niet. Dat zou je dichter bij het antwoord moeten brengen dat juist is voor jouw situatie.

update: Woy was me dus al voor :)