Beginnen wir mit Ihren Optionen:
- pl/pgsql und sql
- pl/perl, pl/pythonu und pl/tcl
- Andere bitte
Diese Hauptkategorien haben unterschiedliche Stärken und Schwächen. Sie unterscheiden sich auch darin, wie Sie die Dinge angehen. Eine der großen Schwächen von externen pls wie pl/ruby ist, dass Sie später ein Problem haben können, wenn sie nicht gewartet werden.
PL/PGSQL und SQL
In diesen Fällen können Sie Ihre Änderungen wahrscheinlich als SQL-Abfrage mit einem rekursiven allgemeinen Tabellenausdruck ausdrücken. Dann können Sie sql verwenden oder, wenn Sie etwas prozedurale Unterstützung benötigen, das hinzufügen und pl/pgsql verwenden. So gehe ich normalerweise vor.
PL/Perl, PL/TCL und PL/PythonU
Möglicherweise können Sie Ihren Ruby-Code auch nach Python oder Perl portieren und die PL-Varianten dieser Sprachen verwenden. Diese PLs werden häufig verwendet und als Teil der Core-Distribution von PostgreSQL verwaltet. Sie gehen nicht weg. Dies würde Ihnen eine bessere Transparenz darüber ermöglichen, wie sich die Logik ändert.
Eine wesentliche Einschränkung von PL/Python ist, dass es keinen vertrauenswürdigen Modus hat, und ein Problem, auf das Sie bei pl/perl stoßen werden, ist, dass der vertrauenswürdige Modus keinen Zugriff auf externe Module bedeutet.