Datenbank-Konstrukt
Bei der Erstellung eines gehosteten Systems gibt es 2 große Varianten bei der Speicherung von Daten.
Ich befürworte die Variante 2, da sie mehr Möglichkeiten Flexibilität und Sicherheit bietet.
- 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
Ich befürworte die Variante 2, da sie mehr Möglichkeiten Flexibilität und Sicherheit bietet.