Globale temporäre Tabellen

Hallo,
ich habe mich soeben hier angemeldet und habe gleich die erste Frage, die sich im Laufe meiner Open-Source-Entwicklung gestellt hat: Unterstützt PostgreSQL globale temporäre Tabellen? Es sollen also temporäre Tabellen nur im Speicher gehalten werden. Dies soll aber nicht auf eine Sitzung bzw. einen Client beschränkt sein, sondern soll, wie der Name schon sagt, global von jedem Client under jeder Sitzung aus erreichbar sein. Diese Tabelle sollte dann entweder beim Beenden der Sitzung, die die Tabelle erstellt hat, oder beim Beenden aller Sitzungen, die auf die Tabelle zugegriffen haben, gelöscht werden. Allerdings kann man das notfalls auch manuell programmieren.
Beim SQL Server von Microsoft soll das gehen. Momentan verwende ich MySQL und löse dies über HEAP-Tabellen.

Vielen Dank für eure Ideen und Anregungen, Gruß Sebastian!

Keiner einen Plan? :frowning:

Nicht so voreilig :wink:

Temporäre Tabellen sind jeweils session bezogen, sprich, eine andere Session kann diese nicht sehen. Alles andere wäre nicht temporär, weil es die Session verlassen müsste und damit statisch wird.

[quote=“ads”]Nicht so voreilig ]
Naja es geht darum, dass sie permanent im Speicher sind und nicht die Festplatte beanspruchen.

Ja, das wären dann temporäre Tabellen. Diese werden imho (bin mir nicht ganz sicher) nur im Speicher gehalten. Aber sie sind, wie gesagt, nur für deine Session sichtbar.

Was genau möchtest du erreichen und warum dieses Verhalten?

Die Mysql HEAP Tabellen löschen den Inhalt auch erst, wenn die DB heruntergefahren wird, nicht, wenn die Zugriffe darauf aufhören …

Btw, genauso ein schrottiges Konzept wie die Blackhole Engine …

Ich möchte Daten zwischen einer Webapplikation und einem Windows-Dienst austauschen. Die Daten sollen in einer SQL Datenbank legen, damit der Zugriff aus vielen Programmiersprachen möglich ist. Diese Daten ändern sich ständig. Es handelt sich um eine Anbindung an Speicherprogrammierbare Steuerungen. Werde wohl nicht um einen eigenen TCP Server rumkommen. PostgreSQL wird dann nur die Archivwerte “verwerten”.

Gruß Sebastian

Was spricht dann gegen normale statische Tabellen? Darin kannst du doch auch die Inhalte von Zeit zu Zeit löschen, die du nicht mehr benötigst, oder?

Die ständige Belastung der Festplatte spricht dagegen. Geht bei gut 10 Aktualisierungen pro Sekunde los und endet irgendwo an der physikalischen Grenze des Systems.

Dann suchst du aber eigentlich keine Datenbank, diese soll ja die Sicherheit deiner Daten garantieren und nicht, das sie gleich wieder verschwinden, wenn du den Server ausschaltest.
Dafür ist SQL als Standardabfragesprache zwar ein netter Zwischenweg, aber was du da verlangst, definitiv nicht Aufgabe einer Datenbank.

Mit nem vernünftigen, Batteriegebufferten Raidcontroller sollte sich das trotzdem hinbekommen lassen … halt mit Writes auf die Festplatte.

Btw, nen TCP (oder noch besser UDP) Server dafür sollte wirklich nicht schwer zu implementieren sein …

Nein, ist es sicher nicht und werde ich wohl auch so machen. PostgreSQL kommt dann wohl als Archivserver zum Einsatz.
Wieso würdest du UDP bevorzugen?

Gruß Sebastian

Weil ich mir den kompletten TCP Handshake spare (3 Pakete, ehe überhaupt Daten übertragen werden).
Funktioniert allerdings nicht wirklich brauchbar mit großen Datenpaketen.

Kommt also drauf an, was genau du da übertragen möchtest …