sql - tipos - sintaxis de procedimientos almacenados
¿Qué idioma usas para los desencadenadores PostgreSQL y los procedimientos almacenados? (8)
Cuando escribí mi primer desencadenador, estaba en Perl porque ese era el lenguaje utilizado en el ejemplo que encontré, pero los últimos activadores que escribí estaban en Python porque estoy más cómodo con eso.
Creo que la comodidad del programador es mi principal razón para elegir Python, pero creo que Perl aún está mejor respaldado.
PostgreSQL es interesante porque admite varios lenguajes para escribir procedimientos almacenados. ¿Cuál usas y por qué?
Escribo prácticamente todo en plpgsql, pero también soy un tipo de base de datos, por lo que en general me conviene más que en cualquier otro idioma. Pero hay muchas cosas que no funciona muy bien, en cuyo caso otro lenguaje como plperl o plpython es una buena apuesta. Por supuesto, si la velocidad es una preocupación seria, C es el camino a seguir.
Para cualquier cosa realmente pequeña / simple o que no requiera mucha manipulación de cadenas o lógica, uso plpgsql, porque es rápido. Para cosas más complejas, uso plperl, porque me gusta.
PL / Ruby porque uso Ruby todos los días de todos modos.
Yo uso PL / pgSQL para casi todo, y si hay algo que no puede hacer, escribo funciones en PL / Python (lo cual me gusta). También puede usar PL / Java, PL / Perl, PL / PHP.
Diría que Python es probablemente el mejor de todos porque Python está en casi todos los sistemas de Linux. Perl estaría en segundo lugar con Python superando la sintaxis de lectura más fácil.
Yo uso PL / Perl porque:
- Me gusta Perl
- Es un lenguaje dinámico, lo que significa que puede hacer algunos trucos útiles, es decir, pasar un nombre de columna a una función de desencadenador y realizar algunas acciones con el valor de esta columna en una tupla desencadenante.
- Tiene una documentación bastante buena
Realmente solo he usado PL / pgSQL, pero eso fue porque necesitaba algunos procedimientos almacenados relativamente rápido y no quería agregar módulos adicionales al servidor.
A más largo plazo, probablemente usaría PL / Perl o PL / Python, ya que uso Perl para secuencias de comandos rápidas y he estado buscando en python por un tiempo.
Una cosa que he encontrado es que falta una buena documentación para eso en el sitio de PostgreSQL. Los manuales fueron minuciosos como referencia, pero no funcionaron bien como un tutorial para ayudar a mostrar a las personas cómo se debe hacer.
Eso, combinado con un muy buen entorno de depuración, significaba que mi primera experiencia en la escritura de procedimientos implicaba buscar errores de sintaxis extraños durante mucho tiempo.
Si alguien sabe de un buen sitio con tutoriales, etc. para la programación de PostgreSQL, me gustaría obtener un enlace a él.
Skype usa PostgreSQL junto con Python, y han mejorado PL / Python a su estado actual, así que dudaría que el soporte de Python esté muy por detrás de Perl. Después de todo, han escrito un sistema de cola / replicación encima de esas vinculaciones :-)
Echa un vistazo: Wiki Skytools
A partir de una rápida revisión de la documentación, Python parece tener menos documentación que las vinculaciones de Perl, pero sugiero que solo se ajuste al idioma con el que se sienta más cómodo.