postgresql datatype für html?

Grüße Euch!

Ich wollte euch um Eure Erfahrungen/Meinungen zu folgendem Szenario bitten:

Nehmen wir an, ich würde gerne HTML aus einem Rich-TextEditor einer Applikation in einem PostgreSQL-Table ablegen…

Was wäre der geeignete Datentyp, gibt es interne Funktionen die dabei genutzt werden sollten (zB. zum Escapen von gewissen Zeichen, etc.) bzw. was ist generell ‘Best Practice’ beim Ablegen von HTML in PostgreSQL?

Danke & Grüße an alle hier im Forum,

Christoph

Pfff…

da gibt es keinen direkten Datentyp dafür, daß würde als TEXT oder BYTEA wohl durchgehen. PG würde größere Brocken dann allerdings automatisch beim speichern komprimieren.

Danke für die Info, ich werde mich mal ein wenig in meiner Sandbox austoben und die Performance der zwei Varianten vergleichen :wink:

vermutlich wird der Unterschied nicht groß sein, aber es wäre schön, wenn Du berichtest, was Du da erlebst :wink:

Grüß Dich nochmals!

Hier die Resultate:

Tables:

CREATE TABLE testbytea (id INT, data BYTEA);
CREATE TABLE testtext (id INT, data TEXT);

Daten:

Zufällige Zeichenfolge mit 1000 Zeichen

SELECT-Test: (1 x insert & N x select)

Die Leistung für den TEXT- Datentyp ist ca. um 15% besser als die des ByteA- Datentyps.
Der Overhead zum Lesen von base64-codierten Daten ist etwa 10% besser als der beim Lesen der Binärdaten des ByteA-Datentyps.

INSERT-Test: (N x insert -> Ausführungszeit )

Auf den ersten Blick zeigen die Resultate beim INSERT der verschiedenen Datentypen keinen wirklichen Unterschied, aber wenn man ins Detail schaut, gibt es einen sehr kleinen Unterschied und die Verwendung von TEXT ist nur geringfügig schneller als die Verwendung von ByteA.

Fazit:

Der Wechsel von ByteA zu TEXT führt zu einer sofortigen Leistungsverbesserung für Leseabfragen - Das ist ein großer Gewinn, da kein Anwendungscode geändert werden muss. Die Schreibleistung wird sich dadurch jedoch nicht merklich ändern.

Sogar der Wechsel von ByteA zu codierten Daten (wie Base64) verbessert die Leseleistung.
Dieser Ansatz kann in Betracht gezogen werden, wenn binäre Daten in der Datenbank gespeichert werden sollen.

Beste Grüße, Christoph

bytea ist für Binärdaten. HTML ist Text und deswegen sollte das auch in einer text Spalte gespeichert werden. Allein schon deswegen damit man das in einem SQL Client anständig ansehen kann. Ausserdem verliert man mit bytea praktisch alle Möglichkeiten Teile des Textes zu manipulieren oder zu durchsuchen.

ACK @castop.

@castop: Danke für Deine Info, habe für meine Geschichte BYTEA für den Datei-Upload genommen und speichere das HTML mit dem Typ TEXT :slight_smile: