Mysql
 sql >> Datenbank >  >> RDS >> Mysql

DB-Design:eine große DB für alle Kunden oder viele kleine DBs

Eine Frage, die ich beantwortet haben möchte, lautet:Müssen Sie jemals kundenübergreifende Daten für Ihre eigene Berichterstattung oder Verwendung sehen? In diesem Fall müssen Sie sich für die Nummer eins entscheiden oder Sie werden einen Albtraum haben, um eine gute Berichterstattung zu erhalten.

Werden Sie eine Anpassung durch den Kunden vornehmen? Dies würde darauf hindeuten, dass die Trennung der Dinge eine bessere Wahl sein könnte. Wenn Sie nie anpassen werden, dann trennen Sie sich nicht.

Ich habe mit Systemen in all diesen Optionen gearbeitet und die erste ist bei weitem die beste für die langfristige Wartung. Alle sind jedoch praktikabel, wenn Sie organisiert sind und gut planen. Wenn Sie sich für die separate Option entscheiden, müssen Sie in der Lage sein, Änderungen an alle Clients zu übertragen, und müssen daher Änderungen an der Datenbank über Skripts vornehmen, die in der Quellcodeverwaltung aufbewahrt werden. Möglicherweise müssen Sie sogar eine Quellcodeverwaltung nach Datenbankversion beibehalten, damit Clients entscheiden können, ob sie ein Upgrade durchführen möchten oder nicht. Bei Option 1 hat natürlich niemand die Möglichkeit, auf der alten Version zu bleiben. Wenn dies besser zu Ihren geschäftlichen Anforderungen passt, ist dies ein Pluspunkt für Option 1.

Ich stimme Ollie Jones voll und ganz zu, wenn Sie Option eins verwenden, müssen Sie über ein gutes Datenbanksicherheitsdesign verfügen, um zu verhindern, dass Clients die Daten anderer Clients sehen. Wir haben einmal einen Client von einem Server, auf dem er der einzige Client war, in eine gemeinsam genutzte Datenbank verschoben, und nur ein Prozess, der es versäumt hat, nach der client_ID zu fragen (diese wurde im alten System nicht benötigt und die Entwickler waren nachlässig geworden), hat am Ende eine E-Mail an alle gesendet Vertriebsmitarbeiter aller anderen Kunden mit Informationen über den ersten Kunden. Das hat das Unternehmen viel Geld gekostet (sowohl um das Problem zu beheben, als auch E-Mail-Entschuldigungen zu versenden, und wir haben dadurch fast einen Kunden verloren und mussten ihnen einige Kostennachlässe gewähren, um sie zu behalten) und viele kriechende Entschuldigungen und den Entwickler nur knapp verpasst, seinen Job zu verlieren. Lassen Sie dies eine Lektion sein, die Sie nicht auf die harte Tour lernen.