Eine oder mehere Datenbanken ???

swissurs

Neuer Benutzer
Beiträge
3
Hallo zusammen
Ich möchte mein app von ios auf web portieren und stehe darum vor einer grossen Frage. Soll ich eine Datenbank für alle Kunden oder eine Datenbank pro Kunde anlegen ??
Es gibt wie immer Vor und Nachteile für beide Lösungen. Vielleicht kann mir jemand helfen diese Entscheidung leichter zu machen
- Die Daten eines Kunden sind max. 1-2 MB das ist also keine Herausforderung.
- Für "eine" gemeinsame DB sprechen vorallem die Kosten, da man beim Hosten pro DB zahlt. Kosten sind leider ein wichtiger Faktor. Auch muss man diese DB nur einmal anlegen.
- Für eine DB pro Kunde sprechen wohl die Ueberschaubarkeit und die eichfachere Wartung. Bei jedem neuen Kunden muss jedoch eine neue DB angelegt werden - weiss nicht ob das automatisiert werden kann
Vielen Dank für eure Anregungen
Gruss Urs
 
Werbung:
Hallo zusammen
Ich möchte mein app von ios auf web portieren und stehe darum vor einer grossen Frage.

Was genau bedeutet das in Bezug auf die DB?

Soll ich eine Datenbank für alle Kunden oder eine Datenbank pro Kunde anlegen ??
Es gibt wie immer Vor und Nachteile für beide Lösungen. Vielleicht kann mir jemand helfen diese Entscheidung leichter zu machen

Was sind denn die Ziele der DB? Was wird es für Auswertungen geben?

Andreas
 
- Die DB soll eine neue Struktur erhalten und das gesamte app wird neu geschrieben (als web app)

- das app ist eine Kassensoftware und Kunden ERP. Die DB ist als Herzstück extrem wichtig - sie sollte robust und möglichst langlebig sein. Die Auswertungen wie z.B die Tages-, Wochen- Monats- und Jahresabschlüsse sind verbindliche Dokumente.

Hoffe diese Informationen beantworten deine Fragen. Vielen Dank für deine Unterstützung

Urs
 
Hoffe diese Informationen beantworten deine Fragen.

Nicht ganz.

  • mir ist nicht klar, was Du mit 'web app' meinst, was das für die DB bedeutet.
  • Datenbanken sind typischerweise bei unsere Kunden sehr wichtig - das beschreibt aber an sich selbst exakt nix
  • wenn du überlegst, ob eine große DB oder eine DB je Kunde: hast Du Auswertungen NUR je Kunde oder auch über alle Kunden hinweg? Eine Auswertung über alle Kunden hinweg wird vermutlichz.B. schlecht skalieren, wenn jeder Kunde seine eigene DB hat. Dann fängst Du an, bei jeder Auswertung Deine SQL-Abfragen anzupassen - vermutlich.
  • was EXACKT für eine DB verwendest Du, einen normalen Zettelkasten wie vor hundert Jahren oder eine richtige Datenbank?

Typischerweise baut man Datenbanken so, daß diese skalieren. Das bedeutet z.B., daß man am DB-Modell keine Änderungen vornehmen muß, wenn man wächst (neue Kunden, neue Produkte, mehr Umsatz). Wenn man sich die Frage stellt, was passiert wenn ich wachse (mehr Kunden, Produkte, Umsatz) und seine Struktur flexiebel darauf vorbereitet, hat man dann auch keine Schmerzen, wenn das Wachstum (you know, Kunden, Produkte, Umsatz) beginnt, denn dann will man sich eher um das Geschäft kümmern als um die DB.
 
Hier einige zusätzliche Informationen

- Als Web App verstehe ich eine Anwendung, die über die Cloud bzw. einen Server bereitgestellt und im Browser beliebiger Endgeräte abgerufen wird. Eine Offline-Nutzung ist nicht vorgesehen. Beim bestehenden iOs App war die DB lokal auf dem Gerät.

- meine Kunden sind Besitzer eines oder mehrerer Geschäfte welche mein Kassen und Kunden ERP App betreiben. Eine Abfrage geht nur über die Daten eines Geschäftes



 
Werbung:
Ahh, so wird das schon etwas klarer...

Nun, mal zu den Fakten:

  • je Kunde 1 bis 2 MB. Das ist nix, da sind ja i.d.R. die internen Katalogtabellen größer. Ganz klar für eine zentrale DB
  • Kosten hast Du pro DB, ja? Dann also auch klar für eine zentrale DB.
  • DB pro Kunde hätte den Vorteil, daß Du später leichter in die Breite skalieren könntest, also bei weiteren DBs einfach mit Hardware werfen. Bei 1 oder 2 MB je Kunde brauchst Du wenigstens eine Million Kunden, um die Notwendigkeit einer Skalierung in die Breite zu haben, zumindest vom Datenvolumen. Ich kenne Datenbanken im 3-stelligen TB-Bereich.
  • Deine Kunden, wenn diese mehrere Geschäfte haben, werden sicher Abfragen auch über alle Geschäfte machen wollen, oder?
  • Kann es passieren, daß Kunde X die Geschäfte des Kunden Y übernimmt? Falls ja, siehe Punkt drüber...
  • Wartbarkeit: vermutlich haben alle Kunden dieselben Tabellen und dasselbe Schema. Wenn Du eine neue Version Deiner Software ausrollen willst, wäre der Aufwand mit einer DB vermutlich deutlich geringer als mit vielen DBs, oder?

alles in allem denke ich, eine zentrale DB ist sinnvoller. Zu beachten ist sicherlich, daß Kunde X nicht Daten von Kunde Y sehen darf. Das läßt sich aber regeln, sogar soweit, daß in ein und derselben Tabelle Kunde X nur seine Datensätze sieht und Kunde Y nur seine. Das Stichwort zur Google-Suche ist hier RLS, Row Level Security. Kann aber nicht jede DB. Was willst Du verwenden?
 
Zurück
Oben