Files
clt2023/vortrag5_datentypenpostgres.md
2023-03-11 16:24:02 +01:00

1.9 KiB

Erweiterte Datentypen in PostgreSQL

  • Andreas Scherbaum. Arbeitet seit 1998 mit Postgres
  • Hat nen krassen Blog: andreas.scherbaum.la
  • Welche Datentypen nutzen wir so?
  • Datenbank an sich weiß nix über Datentypen. Diese sind nur Extensions
  • Everything is a star!
  • Alles ist nichts!
  • Man kann Datenbanken, Tabellen und Inhalte in non printable whitespace machen. Einfach weils geht
  • Nicht Money-Type verwenden.
    • Man kann nur eine Währung speichern, also keine Konvertierung
    • Je nach Umgebungavariable wird bspw. decimal separator anders interpretiert.
  • Währungen mit NUMERIC Type speichern. Bis 1000 Stellen Genauigkeit
  • Arrays. Man kann alles in Arrays packen. Mittlerweile wird mehr JSON für flexible Daten genutzt.
  • Arrays beginnen bei 1!
  • JSON(B): JSONB ist das was man haben will, da mehr Funktionen.
    • JSONB wird beim speichern geparsed. JSON wird beim lesen geparsed, heißt man kann ungültiges JSON abspeichern
    • Datum in JSONB speichern ist wegen Validierung schlecht.
  • Composite Types:
    • Wird auch Row Type oder Record
    • Datentyp definieren und dann kann man diesen in der Datenbank weiter verwenden.
  • Besseres Feature als Composite Types: Domains
    • Ein Datentyp mit zusätzlichen Constraints
    • Beliebig viele Constraints und man kann den Datentyp in allen Tabellen verwenden.
    • Sind sehr umfangreich und im SQL Standard integriert.
    • Chacks kann man in Domain Type auslagern anstatt krasse Funktionen zu schreiben.
  • Range Types:
    • Anfang und Ende
    • Kann man als eigene Typen erstellen
    • Sinnvoll für Zeitspannen. Man kann wieder Checks drauf laufen lassen
    • GIST Index darauf bilden. Daraufhin kann man ORDER BY nur über Index scan ausführen lassen -> sehr schnell
  • Create your own type:
    • Wie hat PHP Postgres Boolean Typen vor PDO Treiber behandelt? Hat es gar nicht behandelt. Hat alles als Text behandelt.
    • Deshalb true/false auf Integer umwandeln. Also besser einfach PDO verwenden.