Datenbank-Konstrukt

Bei der Erstellung eines gehosteten Systems gibt es 2 große Varianten bei der Speicherung von Daten.
  • Verwendung einer Datenbanken
    Alle Kunden-Daten werden in der selben Datenbank gespeichert, die Unterscheidung erfolgt durch eine Spalte in jedem Table (z.B.: siteID)
    + einfacheres Update des Datenbank-Schemas+ einfaches Backup
    - jeder Kunde hätte unter Umständen (Bug im Script) zugriff auf Fremddaten
    - Hackt jemand den Zugang, kann er alle Daten auslesen
    - Datenbank-Anpassungen pro Kunde nur schwer Möglich
    - Installation von weiteren Tables (Fremdprodukt, welches ein Kunde wünscht) nur schwer Möglich
    - Datenbank wird sehr schnell sehr groß und daher anfälliger
  • Sperate Datenbank pro Kunde
    Jeder Kunde bekommt eine eigne Datenbank, in der er alle Rechte (neben: Select, Insert, Update auch Alter, …) besitzt, falls diese von Nöten sind.
    + Kunde kann nur auf sich zugreifen, da unterschiedliche Zugänge
    + Kunde kann nur sich selbst zerstören
    + Anpassungen pro Kunde möglich
    + Installation von Fremd-Produkten für den Kunden leicht Möglich
    - Backup mehrer Datenbanken
    - Benötigt zum Anlegen von einem neuen Kunden DB-Create und DB-Reload Rechte

    Zusätzlich wäre es Möglich die Master-Konfiguration (Globale-, Sprach-Variablen, …) in einer eigenen Datenbank zu speichern, in der jeder Kunde lesen kann
Infos zum Anlegen von Datenbanken und Rechten in MySql findest man hier.
Ich befürworte die Variante 2, da sie mehr Möglichkeiten Flexibilität und Sicherheit bietet.