Frage

Ich erstelle eine Multi-User / Unternehmen Web-Anwendung in PHP & MySQL. Ich bin daran interessiert zu wissen, was die beste Praxis in Bezug auf die Strukturierung ist meine Datenbank (en).

Es gibt Hunderte von Unternehmen und Tausende von Benutzern dieses Web-App, so diese Bedürfnisse robust. Jedes Unternehmen wird sehen können, an anderen Unternehmen Daten nicht nur ihre eigenen. Wir werden in erster Linie von Textdaten zu speichern und wird wahrscheinlich nur ein paar MB pro Unternehmen sein.

Derzeit enthält die Datenbank 14 Tabellen (für eine Beispielfirma).

Ist es besser, die Daten für alle Unternehmen und deren Benutzer in einer einzigen Datenbank zu setzen und eine einzigartige CompanyID für jeden erstellen?

oder:

Ist es besser, jedes Unternehmens der Daten in der eigenen Datenbank zu setzen und eine neue Datenbank und Tabelle für jedes neues Unternehmen zu schaffen, dass ich hinzufügen?

Was sind die Vor- und Nachteile zu jedem Ansatz?

Danke,

Stephen

War es hilfreich?

Lösung

Wenn ein einzelner Web-App wird von allen den verschiedenen Unternehmen verwendet wird, wenn Sie einen sehr spezifischen Bedarf oder Grund haben separate Datenbanken zu verwenden (es klingt nicht wie Sie tun), dann sollten Sie auf jeden Fall eine einzige Datenbank verwenden.

Ihre Bewerbung verantwortlich für nur die richtigen Informationen an den richtigen authentifizierte Benutzer zeigt.

Andere Tipps

Mehrere Datenbanken wären ein Albtraum zu halten sein. Für jedes neue Unternehmen müssten Sie jeden erstellen und zu verwalten. Wenn Sie eine Änderung an ein Schema zu machen, werden Sie es zu Ihrem 14 + zu tun haben.

Tausende von Benutzern und Tausende von Anwendungen sollten kein Problem überhaupt stellen, solange Sie etwas verwenden, das eine echte Datenbank und nicht die Access oder etwas albern wie das.

Eine einzige Datenbank ist die relationale Art und Weise. Ein Aspekt aus dieser Perspektive ist, dass Datenbanken sammelt Statistiken über die Datenbanknutzung und macht starken Gebrauch. Wenn Sie die Dinge aufteilen Sie selbst in den Fuß, wie die Statistiken fragmentiert werden wird schießen.

Multi-Tenant

Pluses

  • relativ leicht zu entwickeln. Nur ändern Datenbank-Code in einem Ort
  • können Sie ganz einfach Abfragen erstellen, die Daten für mehrere Mieter nutzen.
  • Einfache neue Mieter hinzuzufügen:. Keine Code muss sich ändern
  • Die Umwandlung einen Multi-Tenant zu einem Single-Tenant-Setup ist einfach, sollten Sie Ihr Design ändern müssen.

Minuses

  • Gefahr von Daten Leck zwischen Mietern, wenn Codierung schlampig ist. Tenant Ansicht Filter kann in einigen Fällen verwendet werden, um dieses Risiko zu reduzieren, . Diese Methode basiert auf verschiedene Datenbank-Benutzerkonten für verschiedene Mieter verwenden.
  • Wenn Sie den Code brechen, werden alle Mieter betroffen sein.

Single-Tenant

Pluses

  • Wenn Sie sehr unterschiedliche Anforderungen für verschiedene Mieter können mehrere unterschiedliche Datenbankmodelle von Vorteil sein. Dies ist der beste Fall für einen einzelnen Mieter Setup.
  • Wenn Sie Code schlampig, gibt es praktisch keine Gefahr von Datenlecks zwischen Mietern (Mieter A nicht zugreifen Mieter der Lage sein, B 's-Daten). Darüber hinaus, wenn Sie versehentlich das Schema ein Mieter durch eine verpfuschte Update zerstören, werden andere Mieter bleiben unberührt.
  • Weniger SQL-Code, wenn Sie nicht in Ihre Anfragen nehmen Mieter ID-Werte berücksichtigen müssen

Minuses

  • Datenbank-Schemata sind in der Regel mit der Zeit zu unterscheiden, die oft in einem Alptraum führen. eine Datenbank vergleichen Werkzeug verwenden, können Sie dieses Problem beheben, aber potenziell viele Schemata müssen verglichen werden.
  • Einschließlich Daten aus mehreren Datenbanken in einer Abfrage ist in der Regel komplex und erfordert oft vorbereitete Anweisungen.
  • Die Entwicklung ist schwer, da Sie die gleichen Änderungen an mehreren Schemata vornehmen müssen.
  • Die gleiche Datenbankeinheit kann mit verschiedenen ID-Tasten in vielen Datenbanken erscheinen, in Verwirrung führt.
  • Die Umwandlung einen Single-Tenant zu einem Multi-Tenant-Setup ist sehr hart, sollten Sie Ihr Design ändern müssen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top