Gedanken zu einer Multiuserumgebung

SQL Datenbanken sind ja per se auf Multiuserumgebungen ausgerichtet.
Nun ist es jedoch so, dass durch eine Anwendung welche die Datenbank nutzt diese Funktionalität wieder ausgehebelt wird. Z. B. durch Filtertabellen.

Im konkreten Fall geht es um die Kombination von eben PostgreSQL in Verbindung mit LibreOffice Base.
Als Einzelnutzung funktioniert das sehr gut. Wie jedoch geht man mit den nutzerspezifischen Daten in einer Multiuserumgebung um?

Temporäre Tabellen? Spezifische UserIDs? usw.
Welche Lösungsansätze sind da aus PostgreSQL Sicht möglich und sinnvoll?

Es dreht sich dabei hauptsächlich um Tabellen in denen Filterbegriffe und IDs zwischengespeichert werden.

PostgreSQL kann seit 9.5 nun auch RLS (Row Level Security), siehe http://michael.otacoo.com/postgresql-2/postgres-9-5-feature-highlight-row-level-security/

Ich denke, das ist wohl das, was Du suchst, oder?

Alternativ zu RLS:

Wenn jeder Anwender seinen eigenen Postgres User benutzt und LibreOffice unqualifizierte Tabellennamen verwendet, könnte man für jeden Benutzer ein eigenes Schema anlegen und dort die spezifischen Tabellen ablegen. Durch den Standard search_path “$user, public” werden diese dann zuerst gefunden und damit kann jeder Benutzer eine “private Kopie” dieser Tabellen haben.

Wenn alle Anwender den gleichen Postgres User verwenden, dann wird’s ein wenig komplizierter. Dann müsste man im LibreOffice ein “set search_path = …” direkt nach dem Öffnen der Verbindung ausführen - keine Ahnung ob das möglich ist.

Hallo,

Danke zunächst für die Anregungen.

Wenn ich das mit dem RLS trotz meines laienhaften Englisch verstanden habe, läuft es in beiden Fällen auf separate Benutzer Anmeldungen hinaus.
Der Gedanke von dir, castorp hat schon einen gewissen Charme. Brauche ich dadurch fast nichts an der bestehenden APP zu ändern.

Grundsätzlich arbeite ich noch nicht lange genug mit dem System um alles verstanden zu haben. Werde aber anhand der Stichworte tapfer weiterlernen :wink:
Danke

Meinst Du den zweiten Gedanken von castorp? Dann verlagerst Du aber auch nur die Userverwaltung von der DB in die Applikation. Wenn Du die Applikation außen vor läßt hast Du keine Nutzerverwaltung mehr. Machst Du diese in der DB wäre die Applikation egal - die Nutzerverwaltung funktioniert immer.

Hallo,

werde das RLS mal unter Win testen, da habe ich die 9.5.1 am laufen.
Auf Linux noch die 9.2.xxx
das kommt aber nächste Woche auch die 9.5 drauf

Schaun wir mal.
Ich berichte dann zu gegebener Zeit.

Vielen Dank