Der community-support von nextcloud antwortete mir:
We use redis as a caching layer where it does act as an in-memory cache rather than a fully persisted key-value storage. I don’t think Postgres provides a way to avoid persisting the values to disk and would be therefore not be a suitable caching solution.
key-value geht via HSTORE-Extension. Wenn es okay ist, daß nach einem Crash der DB die Tabelle leer ist, kann man sie als unlogged erstellen. Damit werden Änderungen der Tabelle nicht im WAL gespeichert, dafür ist es aber deutlich schneller. Da Änderungen nicht im WAL sind, können solche Tabellen auch nicht repliziert werden.
Ja, sicher. Ich hab es nicht getestet, aber JSON(B) kann ja deutlich mehr als nur einfache Key-Value. Ich vermute, daß HSTORE da von der Performance besser ist - wenn man nur Key-Value braucht.
Ehrlich gesagt kann ich über die Performance wenig sagen. HSTORE hat für den “Nachteil” eine eigene Extension zu sein, JSON ist nativ vorhanden.
Welches Nextcloud-Problem willst du denn lösen und warum willst du redis o.ä. nicht verwenden?
ich sehe jetzt für mich keinen Grund, Kontakt zu nextcloud aufzunehmen, aber Du scheinst ja da ein Interesse zu haben und in Kontakt zu stehen: https://github.com/intaro/hstore-extension
Hm, was ist da eigentlich der Sinn der Sache - also mal unabhängig von Nextcloud - Redis ist eine In-Memory-Datenbank. Für komplexe Daten ist diese gar nicht ausgelegt weshalb diese ja in der Regel nur für Session-Daten verwendet wird. Dafür ist sie ausgelegt, optimiert und hoch performant.
PostgreSQL ist eine Datenbank die eine ganz anderes Ziel verfolgt. Natürlich kann ich das auch irgenwie damit abbilden aber die Frage ist, will ich das denn dann überhaupt und macht das Sinn?
Wenn ich den Bedarf einer extra Session-Engine benötige und über eine Funktionalität wie Redis nachdenke, dann geht es doch wirklich um Performance. In diesem Fall verwende ich doch dann auch die Tools, welche optimal für diesen Zweck gedacht und ausgelegt sind.
Nextcloud hat hier vermutlich gar kein Interesse das innerhalb von PostgreSQL abzubilden. Warum auch? Das bessere Tool hierfür ist redis und funktioniert dann auch ohne Probleme mit anderen Datenbanken zusammen.
[Übrigens nutzt auch das Forum hier zur Speicherung PostgreSQL und als Session-Datenbank redis. Für die jeweilige Funktion das beste Werkzeug… ]