Seite 1 von 1
Multi Datenbanken?
Verfasst: Samstag 28. November 2020, 20:54
von RonSH
Grundlagen /Verständnisfrage
Hallo zusammen,
ich bastel mir gerade eine Verwaltungsoberfläche zusammen, wo meine Kunden Ihre Daten einsehen können.
Kann mir jemand erklären, wie jeder Kunde nur seine Daten, wie z.B. Mitarbeiter, einsehen kann? Bekommt jeder Kunde seine eigene Datenbank zugewiesen?
Danke für eure Hilfe
Re: Multi Datenbanken?
Verfasst: Samstag 28. November 2020, 21:30
von sparrow
Der Kunde ("Mandant") ist Teil der Relation. Es gibt zum Beispiel eine Tabelle "Mandant", die die Mandanten enthält und jeder Eintrag in der Tabelle "Mitarbeiter" enthält ein Feld, das auf den Mandanten verweist. Wenn der Mandant dann nur seine Daten sehen darf, muss das entsprechend selektiert werden.
Wenn es dir darum geht. Denn die Frage ist ja, was verwaltet wird.
Wenn du dir allerdings diese Frage stellst, musst du dich auch fragen, ob die dein Verständnis tief genug geht, diese kundenspezifischen Daten auch entsprechend zu schützen.
Re: Multi Datenbanken?
Verfasst: Samstag 28. November 2020, 21:40
von noisefloor
Hallo,
was nutzt du denn für eine Art von Datenbank? Es gibt derer ja viele verschiedenen Spielarten? Verwendest du ein RDBMS (=relationale Datenbank)?
Normalerweise kommt alles, was zusammengehört, in eine Datenbank. In deinem Fall also alle Kundendaten von dir. Im Falle eines RDBMS müssen die Daten sinnvoll in Tabellen aufgeteilt werden und dann sinnvoll miteinander in Relation gesetzt werden, wie sparrow schon sagte.
Gruß, noisefloor
Re: Multi Datenbanken?
Verfasst: Sonntag 29. November 2020, 16:47
von RonSH
Danke für die schnelle Antwort. Mein Verständnis ist noch lange nicht so weit. Deshalb versuche ich gezielt mein Verständnis zu erweitern.
Ich arbeite mich gerade in RDBMS und DBMS-Plattformen ein.
Für meine Test-Plattform reicht aktuell die Standarddatenbank von Django.
Ich versuche das Projekt nochmal ein bisschen zu konkretisieren.
Es gibt 100 Firmen (meine Kunden) die zwischen 20 und 500 Mitarbeiter beschäftigen. Jede Firma soll ihre Mitarbeiter bei mir über die Seite verwalten können. Sprich, neue Mitarbeiter anlegen, alte entfernen. Ich muss Zugriff auf ALLE Firmen und alle Mitarbeiter haben.
Könnt ihr mir eine Empfehlung geben, in welche Richtung ich mich weiterbilden muss ? Mir soll auch keiner was vorkauen oder so. Ich möchte mir das alles schon selber erarbeiten.
Besten Dank und einen schönen 1ten
Re: Multi Datenbanken?
Verfasst: Sonntag 29. November 2020, 18:30
von nezzcarth
Ich habe selbst noch nie eine Anwendung geschrieben, die mandantenfähig sein musste. Aber ich frage mich, ob man in dem gegebenen Fall nicht vielleicht auf der sichereren Seite ist, wenn man stattdessen eine separate Instanz der Software pro Kunde einrichtet. Der entstehende Zusatzaufwand bei der Verwaltung sollte sich mit den Tools, die es heute so gibt (Docker, Ansible, etc.,) doch gut beherrschen lassen und die Daten können ja (als getrennte Schemata/Datenbanken) trotzdem an derselben Stelle, mit zentralem Zugang für den DBA, liegen. Das ist natürlich eine sehr grundlegende Frage, die man sich gut überlegen muss.
Re: Multi Datenbanken?
Verfasst: Sonntag 29. November 2020, 18:48
von noisefloor
Hallo,
Aber ich frage mich, ob man in dem gegebenen Fall nicht vielleicht auf der sichereren Seite ist, wenn man stattdessen eine separate Instanz der Software pro Kunde einrichtet.
Die Frage für mich wäre eher, ob man sowas wirklich selber Programmieren sollte, wenn es jenseits der aktuellen Programmierkenntnisse ist. Besonders dann, wenn es a) prinzipiell für jeden aus dem Netz erreichbar ist und b) es sich um sensible, weil personenbezogenen Daten handelt. Vor der Abfrage der Daten muss man hier ja auch noch eine möglichst sichere Authentifizierung platzieren.
Und wenn man es live schaltet, sollte man sich schon sicher sein, dass das möglichst frei von Bugs ist. Wenn man alles richtig macht ist das schon so, wie sparrow das sagte, dass man das über das selektieren regeln kann.
Gruß, noisefloor
Re: Multi Datenbanken?
Verfasst: Dienstag 1. Dezember 2020, 19:55
von naheliegend
RonSH hat geschrieben: Sonntag 29. November 2020, 16:47
Könnt ihr mir eine Empfehlung geben, in welche Richtung ich mich weiterbilden muss ? Mir soll auch keiner was vorkauen oder so. Ich möchte mir das alles schon selber erarbeiten.
Also dann solltest du auf jeden Fall Django beherrschen. Ansonsten solltest du verstehen, wie das Internet funktioniert und wie man Sachen über HTTP posted und gettet etc. Dann musst du dich zwangsläufig mit dem ganzen Securitykrams auseinandersetzen. Also du nutzt dann ja HTTPS, also mit TLS1.2 oder 1.3. Kannst also nochmal die Runde um den ganzen Handshake und Schlüsselaustausch drehen. Dann brauchst du auch noch einen Login für die Kunden. Demnach musst du dich mit Sessions, Cookies und oder JWT auseinandersetzen. Und Hashwerten für die Passwörter, sowie Salt und Pepper. Aber das sollte bei deiner Securityrunde mit drin sein.
Weißt du schon, wer dein Projekt dann deployed? Gibt es DevOps bei dir oder musst du dich darum kümmern? Dann kannste auch nochmal die Serverrunde drehen.
Ahja, Datenbanken kannst du dir auch nochmal anschauen. Dabei kannst du dir noch SQL reinziehen und wie das ORM in Django funktioniert, damit man mit den Daten im Code auch gescheit umgehen kann.
Ich stecke selbst gerade irgendwo in dem ganzen Berg. Ich sage dir, es ist ein Fass ohne Boden, aber dieses Forum hilft und ist Gold wert.
Falls du Django nicht mehr möchtest, kannst du auch Flask mit SQLAlchemy und Marshmallow nutzen.
Re: Multi Datenbanken?
Verfasst: Dienstag 1. Dezember 2020, 20:05
von noisefloor
Hallo,
@naheliegend: wo ist den der Bitte der Zusammenhang zwischen der Ausgangsfrage des TE, also wie man sicherstellt, das Kunde A nur Daten aus einer DB sieht, die Kunde A zugeordnet sind und einem X-beliebigen Webframework? Und warum sollte der TE dafür auf jeden Fall Djano beherrschen?
Gruß, noisefloor
Re: Multi Datenbanken?
Verfasst: Dienstag 1. Dezember 2020, 20:33
von naheliegend
Bin davon ausgegangen, dass er Django gebraucht, weil er auf der Testplattform die Standard-DB von Django nutzt.
Und wie würdest du denn 100 Kunden genau diese Möglichkeiten bereitstellen, wenn nicht über das Web?
Re: Multi Datenbanken?
Verfasst: Mittwoch 2. Dezember 2020, 09:20
von sparrow
@naheliegend: Wie noisefloor schon sagte, ist das alles sehr weit weg vom Thema des Fragestellers. Ich würde deine Aussage aber inhaltlich nicht so unterschreiben. Ob sich der Entwickler einer Webanwendung wirklich mit so etwas wie dem verwendeten Protokoll zur Verschlüsselung oder dessen Details auseinandersetzen muss, zweifle ich zumindest an. Damit sollte man sich beschäftigen, wenn man selbst einen Server betreibt, aber der Webanwendung an sich ist erst einmal egal, mit welchem Vehikel sie zum Anwender gelangt - und dem Webentwickler in der Regel auch.
Und gerade für so Dinge wie das Login und Sessions hat man ja ein Framework.
Gefühlt ist dieser "Berg" in dem du steckst vor allem ein Berg, den du dir selbst aufgetürmt hast. Kann man machen, dann lernt man unter Umständen etwas. Aber den Fragenden wird das wohl eher verwirren.