1.9 KiB
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.