[Technik] Functions, Triggers und (Procedural) Languages in PostgreSQL, Was: Re: postgresql-contrib-8.1
Christof Donat
cd at actsoft.de
Tue May 6 10:58:37 CEST 2008
Hi,
> Wir haben folgende Möglichkeiten:
>
> a) Wir lassen keine externen Sprachen zu und beschränken damit Stored
> Procedures auf SQL und das interne PL/PGSQL. (Damit wäre auch der
> Einsatz von tsearch2 nicht möglich.)
Was auch bedeutet, dass man MediaWiki nur mit MySQL betreiben kann, weil
MediaWiki das für die PostgreSQL Unterstützung braucht. Mit PostgreSQL 8.3
gehört meines Wissens tsearch2 bereits zum Standardlieferumfang.
Ich weiß jetzt nicht, was genau nötig ist, damit man PostGIS betreiben kann.
Wenn ich mich richtig erinnere, beinhaltet das auch ein paar PL/C Sachen.
> c) Wir lassen keine externen Sprachen zu und beschränken damit Stored
> Procedures auf SQL und das interne PL/PGSQL. Zusätzlich stellen wir
> ausgewählte, als sicher bekannte Funktionen zur allgemeinen Verwendung
> zur Verfügung. Darüberhinaus definieren wir diverse sichere Sprachen als
> trusted languages, damit User eigene Funktionen darin definieren können.
d) Wie Punkt b), nur dass die sicher bekannten Funktionen als
Installationsskripte zur Verfügung gestellt werden. Man ruft also in der
shell z.B. "hs_pginstall tsearch2 xyz00_abc" auf um in der Datenbank
xyz00_abc die Funktionalität von tsearch2 zu installieren. Dann brauchen wir
nicht in jeder Datenbank alle Funktionen und eventuellen Spezialtabellen,
etc. mitschleppen.
Ich weiß nicht, welche Sprachen als sicher einzustufen sind. Die Programme,
die ich bisher gesehen habe, verwenden z.B. C (sicher nicht sicher) nur in
Standardmodulen, wie z.B. tsearch2. Die meisten, die eigene stored Procedures
verwenden, nehmen gleich PL/SQL. Ich kenne eine Anwendung, die PL/Java
verwendet (adempiere) und ich kann mich dunkel an ein paar erinnern, die
PL/TCL und PL/Perl verwenden. PL/PHP wird meines Wissens so gut wie gar nicht
verwendet, von PL/R und ähnlichen Exoten fange ich gar nicht erst an.
Meiner Meinung nach kann man auf die trusted Languages verzichten, wenn man
Installationsskripte für die wichtigsten C Erweiterungen, wie z.B. tsearch2
hat. Sonst wird nach meiner Erfahrung außer PL/SQL kaum etwas verwendet.
> abrechnungstechnisch sind sehr leistungsfähige Stored Procedures
> problematisch
Solche Stored Procedures kann man aber auch ohne weiteres in PL/SQL schreiben.
Ich denke, dass ein paar Installationsskripte ohne weitere trusted Languages
sinnvoll sind und auch abrechnungstechnisch keine Verschlechterung gegenüber
dem Status Quo darstellen.
Die Alternative, die sich mir mit MediaWiki jetzt stellt ist, MySQL zu
verwenden. Das braucht üblicherweise für die gleiche Funktionalität eher mehr
Ressourcen als PostgreSQL, ist langsamer und bietet schlechtere
Datensicherheit.
> P.S. Wie sieht das eigentlich im MySQL-Bereich aus?
MySQL unterstützt keine weiteren Sprachen: "A stored procedure is a set of SQL
statements that can be stored in the server."
(http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html)
Insofern stellt sich das Problem dort nicht.
Christof
--
actSoft gmbh Software nach Maß
Zugspitzstr. 211 www.actsoft.de
86165 Augsburg cd at actsoft.de
Registergericht Augsburg
Geschäftsführer Augsburg HRB 21896
Christof Donat UStID: DE 248 815 055
More information about the Technik
mailing list