Commençons par vos options :
- pl/pgsql et sql
- pl/perl, pl/pythonu et pl/tcl
- Autre svp
Ces grandes catégories présentent des différences en termes de forces et de faiblesses. Ils ont aussi des différences dans la façon dont vous abordez les choses. L'une des grandes faiblesses des pls externes comme pl/ruby est que s'ils ne sont pas maintenus, vous pourriez avoir un problème plus tard.
PL/PGSQL et SQL
Dans ces cas, vous pouvez probablement exprimer vos modifications sous la forme d'une requête SQL avec une expression de table commune récursive. Ensuite, vous pouvez utiliser sql ou, si vous avez besoin d'un léger support procédural, ajoutez-le et utilisez pl/pgsql. C'est généralement comme ça que j'aborde ça.
PL/Perl, PL/TCL et PL/PythonU
Vous pouvez également porter votre code Ruby vers Python ou Perl et utiliser les variantes PL de ces langages. Ces PL sont largement utilisés et maintenus dans le cadre de la distribution principale de PostgreSQL. Ils ne s'en vont pas. Cela vous permettrait une meilleure transparence de la façon dont la logique se déplace.
Une limitation importante de PL/Python est qu'il n'a pas de mode de confiance, et un problème que vous rencontrerez avec pl/perl est que le mode de confiance signifie qu'il n'y a pas d'accès aux modules externes.