MultiTenant im Vergleich zu mehreren DBs

9

Ich entwickle eine kundenspezifische CRM-Lösung, die über das Web / SaaS-Modell verkauft wird. Ich erwarte Zehner oder Hunderte von Kunden, die diese Lösung verwenden. Ich werde MS SQL als db-Engine verwenden.

Option 1 besteht darin, einen einzelnen DB zu haben und eine TenantId-Spalte in Tabellen sowie einen geeigneten Index einzufügen und 'where tenantId = {...}' für jeden DB-Zugriff zu verwenden.

Option 2 besteht darin, für jeden Client eine eigene Datenbank zu haben, wodurch die Klauseln TenantId und where vermieden werden.

Ich gehe davon aus, dass jeder Kunde Hunderttausende Datensätze haben wird, nicht Millionen.

Wie ich es sehe, wird es eine ganze Anzahl von Datenseiten geben, welche Option ich auch wählen mag. Die Entscheidung scheint zentriert zu sein, ob SQL besser in der Lage ist, mehrere DBs oder eine einzelne DB mit TenantId und Index zu verwalten. Anfänglich wird die Lösung auf einem einzelnen DB-Server ausgeführt, wechselt jedoch schließlich zu SAN.

Hat jemand irgendwelche Ansichten dazu?

    
DEH 24.06.2010, 08:46
quelle

2 Antworten

4

Es gibt einen interessanten MSDN-Artikel mit dem Titel Multi-Tenant Data Architecture , den Sie verwenden können möchte auschecken. Die Autoren geben eine kurze Analyse darüber, wo ein bestimmter Ansatz geeigneter sein könnte als ein anderer:

  

Die Anzahl, Art und Bedürfnisse der   Mieter erwarten Sie, alle Auswirkungen zu dienen   Ihre Datenarchitektur Entscheidung in   verschiedene Wege. Einige der folgenden   Fragen können Sie zu mehr neigen   isoliert Ansatz, während andere möglicherweise   Voreingenommenheit gegenüber einem mehr geteilt   nähern.

     
  • Wie viele potenzielle Mieter tun Sie   erwarten zu zielen? Du kannst nirgends sein   in der Nähe in der Lage zu schätzen   voraussichtlicher Gebrauch mit Autorität, aber   denke in Größenordnungen:   Erstellen Sie eine Anwendung für   Hunderte von Mietern? Tausende? Zehn   von Tausenden? Mehr? Je größer du bist   erwarte deine Mieterbasis, die   Wahrscheinlicher, dass Sie berücksichtigen möchten   ein gemeinsamer Ansatz.

  •   
  • Wie viel Speicherplatz erwartest du?   die Daten des durchschnittlichen Mieters belegen?   Wenn Sie einige oder alle Mieter erwarten   speichern sehr große Datenmengen, die   Separate-Datenbank-Ansatz ist wahrscheinlich   Beste. (In der Tat, Datenspeicherung   Anforderungen können dazu führen, dass Sie ein   separates Datenbankmodell sowieso. Wenn ja,   es wird viel einfacher sein, das zu entwerfen   Anwendung so von der   Anfang als zu a bewegen   separater Datenbankansatz später.)

  •   
  • Wie viele gleichzeitige Endbenutzer tun Sie?   erwarten, dass der durchschnittliche Mieter unterstützt?   Je größer die Zahl, desto mehr   ein eher isoliertes Vorgehen   wird den Endbenutzeranforderungen entsprechen.

  •   
  • Erwarten Sie, dass jeder Per-Tenant angeboten wird   Mehrwertdienste , wie z   Mandantenfähige Sicherung und Wiederherstellung   Fähigkeit? Solche Dienste sind einfacher   durch ein isolierteres anbieten   Annäherung.

  •   

Beachten Sie, dass der "gemeinsame Ansatz" die Option 1 und der "isolierte Ansatz" in Ihrem Fall die Option 2 ist. Sie sind bei den ersten beiden Punkten nicht voreingenommen, daher denke ich, dass ich meine Entscheidung auf die letzten beiden Punkte stützen würde.

    
Daniel Vassallo 24.06.2010, 08:51
quelle
0

Wenn Sie keine Daten zwischen den Mietern verknüpfen müssen, sollten Sie mehrere Datenbanken verwenden. Die Wartung ist einfacher, die Einrichtung ist einfacher und die Leistung wird viel besser. Wenn Daten von mehreren Mietern in einer Tabelle, Tabellensperren und Suche querys über große Tabellen mit und werden höchstwahrscheinlich Ihre Lösung verlangsamen.

Der einzige Grund, eine db zu teilen, würde ich sehen, wenn Sie sehr viele Klienten und sehr niedrige Anzahl von Reihen pro Klient haben.

    
Marks 24.06.2010 08:51
quelle

Tags und Links