In Entwicklung — usable.software ist noch nicht live.
Usable.softwareEin System von Balane Tech
Alle Beiträge

Jeder Kunde bekommt seine eigene Datenbank

Usable3 Min. LesezeitAktualisiert am

Viele Anbieter legen alle Kunden in eine gemeinsame Datenbank und trennen sie über eine Spalte: kunde_id = 42. Das ist bequem zu betreiben — und es bedeutet, dass ein einziger vergessener Filter in einer Abfrage ausreicht, um Daten von Kunde 42 an Kunde 43 auszuliefern.

Wir gehen den anderen Weg: Jede Firma bekommt beim Bestellen ihre eigene Datenbank. Nicht ihr eigenes Schema, nicht ihre eigene Zeile — ihre eigene Datenbank.

Reißbrett · Isolation
01 / 04

Klassisches SaaS legt alle Kunden in eine Tabelle. Deine Zeilen liegen neben fremden.

scrollen

Warum das kein Detail für Techniker ist

Der Unterschied klingt nach Architektur und ist in Wahrheit eine Aussage darüber, was im schlechtesten Fall passieren kann.

Abb. 2„Server in Deutschland“ ist eine Angabe zum Ort, nicht zur Trennung
 Gemeinsame DatenbankEigene Datenbank je Kunde
TrennungEine Spalte: kunde_id = 42.Eine eigene Datenbank. Fremde Daten liegen nicht darin.
Ein vergessener FilterZeigt Daten anderer Kunden.Zeigt nichts — es gibt nichts Fremdes zu zeigen.
DatenexportTeilmenge eines fremden Bestands, muss herausgefiltert werden.Abgeschlossener Bestand, als Ganzes übergebbar.
Selbst betreibenNicht vorgesehen.Dieselbe Software, dieselbe Datenbank, anderer Ort.
Preis dafürGünstiger im Betrieb — für den Anbieter.Migrationen müssen über viele Datenbanken laufen. Der Aufwand liegt bei uns.
Beide Bauformen können in derselben Stadt stehen. Der Unterschied liegt darin, was ein Fehler in einer Abfrage maximal anrichten kann.

In der gemeinsamen Datenbank ist die Trennung eine Regel, die bei jeder einzelnen Abfrage neu eingehalten werden muss. Bei tausend Abfragen im Code muss sie tausendmal richtig sein. Bei getrennten Datenbanken ist die Trennung eine Eigenschaft der Verbindung: Die Abfrage kann gar nicht woanders hinsehen, weil dort nichts anderes liegt.

Das ist der Grund, warum wir den Aufwand für richtig halten. Nicht, weil Anbieter mit gemeinsamer Datenbank unseriös wären — die meisten sind es nicht. Sondern weil die Sicherheitsaussage dort lautet „wir passen auf" und hier „es gibt nichts, worauf man aufpassen müsste".

Was das praktisch heißt

  • Ein Bug kann keine fremden Daten zeigen. Es gibt keine fremden Daten in der Datenbank, in der er läuft.
  • Umzug ist möglich. Deine Daten liegen als abgeschlossener Bestand vor, nicht als Teilmenge eines fremden Bestands. Das ist die Voraussetzung dafür, dass „Daten mitnehmen" mehr ist als ein Versprechen.
  • Selbst betreiben bleibt eine Option. Wer aus regulatorischen Gründen im eigenen Haus hosten muss, kann das — es ist dieselbe Software auf derselben Datenbank, nur an einem anderen Ort.
  • Eine Wiederherstellung betrifft nur dich. Wenn du einen Stand von gestern brauchst, wird deine Datenbank zurückgespielt. In einem gemeinsamen Bestand ist genau das die unangenehmste Frage überhaupt — man kann nicht einen Kunden zurückrollen, ohne die anderen anzufassen.
  • Auslastung anderer bleibt außen vor. Ein Kunde mit einer großen Auswertung bremst nicht deine Erfassung.

Was es dich kostet

Nichts an Aufwand. Die Bereitstellung läuft automatisch: Du bestellst deine Module, und im Hintergrund entsteht eine Instanz, die nur dir gehört — inklusive Rechten, Stammdaten und der Dokumentation zu genau den Modulen, die du gebucht hast.

AblaufWas beim Bestellen tatsächlich entsteht
  1. 01

    Bestellung

    Bereich, Module, Hosting-Weg. Danach steht fest, was gebaut wird.

  2. 02

    Eigene Datenbank

    Nicht ein Schema, nicht eine Zeile — eine Datenbank, die nur dir gehört.

  3. 03

    Module einziehen

    Jedes gebuchte Modul bringt seine Tabellen, Rechte und Stammdaten selbst mit.

  4. 04

    Rechte und Zugänge

    Rollen stehen, bevor der erste Mensch sich anmeldet.

  5. 05

    Updates

    Migrationen laufen über alle getrennten Datenbanken — der Aufwand liegt bei uns.

  6. 06

    Ausziehen

    Abgeschlossener Bestand, als Ganzes übergebbar. Kein Herausfiltern nötig.

Kein Schritt davon ist Handarbeit — und keiner davon berührt die Daten eines anderen Kunden.

Der Preis dafür liegt bei uns, nicht bei dir: Wir müssen Migrationen so bauen, dass sie über viele getrennte Datenbanken hinweg zuverlässig laufen. Das ist mehr Arbeit als ein einziges großes Schema zu pflegen — und es ist eine andere Art von Arbeit:

Gemeinsame Datenbank Eigene Datenbank je Kunde
Update einspielen Einmal, überall wirksam Über alle Instanzen, jede muss durchlaufen
Fehlgeschlagene Migration Betrifft alle gleichzeitig Betrifft eine Instanz, die anderen laufen weiter
Kunden mit Sonderstand Schwierig — alle teilen ein Schema Möglich, ohne die anderen zu berühren
Aufwand beim Anbieter Niedrig Hoch, dauerhaft
Aufwand beim Kunden Keiner Keiner

Die letzte Zeile ist der Punkt. Die Entscheidung verschiebt Arbeit vom Kunden zum Anbieter — und genau deshalb wird sie selten getroffen.

Wo diese Datenbank steht

Der Ort ist eine zweite, davon unabhängige Frage. Getrennte Datenbanken kann man in Deutschland betreiben, in der EU, oder bei dir im Haus. Wir bieten alle drei Wege an; die Hosting-Wege stehen hier.

Wichtig ist die Reihenfolge der Argumente: „Server in Deutschland" beantwortet die Frage nach dem Ort. Die Frage nach der Trennung beantwortet es nicht — beide Bauformen können in derselben Stadt stehen. Was daraus für Zugriffsrechte, Löschfristen und Auskunftsanfragen folgt, steht im Beitrag über DSGVO in der Betriebssoftware.

Und wenn du irgendwann wieder gehen willst: Der Bestand ist da, als Ganzes, ohne dass jemand ihn erst aus einem fremden herausfiltern muss. Wie so ein Umzug abläuft — in die eine wie in die andere Richtung — steht im Beitrag über den Wechsel aus dem alten System.

Diesen Beitrag auf Englisch lesen