2009-04-04 4 views

Antwort

7

Für die Datenbank:

A. alles auf der gleichen Datenbank Stoßen, eine tenant_id Spalte auf Ihre Tabellen zu setzen

Vorteile: Einfache

Nachteile zu tun: Sehr anfällig für Fehler: Es ist leicht, Daten von einem Mandanten zu einem anderen zu verlieren.

B. alles auf der gleichen Datenbank Stoßen, sondern setzen für jeden Gast in seinen eigenen Namensraum (postgresql nennt sie Schemata)

Vorteile: Bietet einen besseren Datenschutz als Option Leck

Nachteile: Nicht unterstützt von allen Datenbanken. AFAIK PostgreSQL und Oracle unterstützt es.

C. Einrichtung eine Datenbank pro Mieter

Vorteile: Absolut keine Chance von Daten von einem Mieter zu einer anderen

Cons undicht: neue Mieter Einrichtung ist komplizierter. Datenbankverbindungen sind teuer.

Die obigen Ideen habe ich nur von Guy Naor gelernt. Hier ist ein Link zu seiner Präsentation: http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html

+0

In #B, alle Support-Datenbanken Schemata, jedoch mit unterschiedlicher Terminologie. In MySQL sind Schema und Datenbank synonym. MSSQL unterstützt jetzt auch Schemas. Unsere Multitenancy-App in Produktion läuft mit ~ 4000 (ab sofort) Datenbanken/Schemas auf MySQL. –