Kapselung von Datentypen mit DOMAINs

Hallo zusammen,

wir überlegen gerade, ob wir Datentypen, die wir mehrfach für die Definition von Tabellenspalten brauchen, durch Domains definieren.

Z. Bsp.

Postleitzahlen
create domain plz_typ as varchar(6)
constraint plz_typ_constraint
check ( VALUE ~ ‘^[0-9]+$’ );

Id’s die als Sequenzen generiert werden
create domain seq_id as bigint;
(Schade dass bigserial kein echter Datentyp ist, den man hier kapseln könnte)

… und wenn wir schon dabei sind, dann kapseln wir doch ALLE Typen, die wir benutzen (gnadenlos und naiv wie wir sind).

Jetzt wissen wir nicht, ob wir uns da Overhead einhandeln, den wir später bereuen würden. Unsere Anwendung ist zwar komplex, aber vom Datenvolumen klein (pg_dump -a auf alte Tabellen < 30 MByte).

Ist der Overhead für Domains vernachlässigbar ?

Im Grunde ist die Domain ja auch nur eine Art Vorlage für nen Datentyp … der Overhead ist letztendlich das, was die DB sowieso zu tun haette, wenn du die Eigenschaften / das Verhalten der Domain direkt am Attribut einer Tabelle definieren wuerdest.

Mit Domains arbeiten könnte sehr löblich sein - allerdings kann ich dir gerade nicht sagen ob das “Entwickeln” des Modells selbst bei Postgres dann etwas komplizierter wird, weil Abhängigkeiten evtl Änderungen erschweren.

Hi Symbiont,

also rein theoretisch ist Kapseln natürlich eine feine Sache, aber die Praxis … . Wir haben keine Ahnung, wie sich Postgres dabei verhält.

Haben folgendes gefunden :

http://archives.postgresql.org/pgsql-performance/2006-06/msg00415.php

In der Antwort darauf, wird gesagt, dass es wohl nicht so einfach ist.

naja “nicht einfach” … das ist eben ein komplexes thema … es kann zumindest nicht “falscher” sein, mal an bestimmten ecken damit zu arbeiten …

zumindest ist es ja logisch, dass das DBMS mit domains nicht weniger auwendig zu operieren hat, als wenn ihr die gleiche funktionalitaet “zu fuss” erledigt …