PostgreSQL es interesante porque admite varios lenguajes para escribir procedimientos almacenados. ¿Cuál usas y por qué?¿Qué idioma usas para los desencadenadores PostgreSQL y los procedimientos almacenados?
Respuesta
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. Ellos han escrito sistema de colas/replicación en la parte superior de esas fijaciones, después de todo :-)
Echale un vistazo: Wiki Skytools
De un vistazo rápido en la documentación, pitón parece tener menos documentación de fijaciones de Perl , pero sugeriría simplemente pegar con el idioma con el que se sienta más cómodo.
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í fueron 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.
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 desde hace un tiempo.
Una cosa que he encontrado es que hay una falta de 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, significó que mi primera experiencia en la escritura de procedimientos implicó 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.
Escribo casi todo en plpgsql, pero también soy un tipo de base de datos en primer lugar, 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.
sí, Empecé a usar pl/python para algo y leí sobre las preocupaciones de seguridad y luego revisé plpgsql y descubrí que hacía todo lo que quería de forma bastante simple. Me gusta. –
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.
Como usuario PL/Ruby, ¿tiene alguna idea sobre mi pregunta en http://stackoverflow.com/questions/617600/installing-pl-ruby-for-postgresql? - Gracias –
Uso PL/pgSQL para casi todo, y si hay algo que no puede hacer, escribo funciones en PL/Python (que oscila). 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.
utilizo PL/Perl porque:
- me gusta Perl
- Es un lenguaje dinámico, lo que significa que usted puede hacer algunos trucos útiles fácil, es decir, pasar un nombre de columna a una función de disparo y haciendo algunas acciones con el valor de esta columna en una tupla desencadenante.
- Tiene una pretty good documentation
- 1. Procedimientos almacenados en Python para PostgreSQL
- 2. ¿La mejor manera de aprender los procedimientos almacenados de PostgreSQL?
- 3. Cómo deshabilitar los desencadenadores en PostgreSQL 9?
- 4. ¿Cómo desactivo temporalmente los desencadenadores en PostgreSQL?
- 5. ¿El SQL formado dinámicamente en los procedimientos almacenados niega el propósito mismo de los procedimientos almacenados?
- 6. Procedimientos almacenados y funciones
- 7. MySQL: ¿Cómo modificar los procedimientos almacenados atómicamente?
- 8. ¿Cuándo debo usar los procedimientos almacenados?
- 9. ¿Los procedimientos almacenados bloquean las tablas/filas?
- 10. ¿Cómo encontrar los procedimientos almacenados por nombre?
- 11. DIferencia entre los procedimientos almacenados y las declaraciones preparadas ..?
- 12. Procedimientos almacenados y pruebas unitarias
- 13. establece el nivel de aislamiento para los procedimientos almacenados de postgresql
- 14. ¿Qué versión de MYSQL admite los procedimientos almacenados?
- 15. ¿En qué ubicación están almacenados los procedimientos recopilados de Mysql?
- 16. WebMatrix y procedimientos almacenados
- 17. Ruby tutorial sobre cómo escribir procedimientos almacenados para PostgreSQL?
- 18. ¿Cómo y cuándo mysql compila los procedimientos almacenados?
- 19. Patrones para procedimientos almacenados?
- 20. ¿Los procedimientos almacenados de SQL distinguen entre mayúsculas y minúsculas?
- 21. Cómo usar los procedimientos almacenados con Symfony y Doctrine
- 22. C#/SQL Obtenga todos los procedimientos almacenados y su código
- 23. ¿Cómo migrar los procedimientos almacenados para probar db?
- 24. SQL para buscar objetos, incluidos los procedimientos almacenados, en Oracle
- 25. Eliminar todos los procedimientos almacenados en MySQL o usar procedimientos almacenados temporales
- 26. ¿Entiende primero el código de Entity Framework los procedimientos almacenados?
- 27. Versiones de procedimientos almacenados
- 28. ¿Cómo compila Sql Server los planes de ejecución para el flujo lógico en los procedimientos almacenados?
- 29. Mejores lenguajes que SQL para procedimientos almacenados
- 30. [MySQL]: Procedimientos almacenados y sentencias de selección
Esta es una prueba de rendimiento de disparadores vacíos en diferentes idiomas: http://www.openscg.com/2014/05/trigger-overhead-part-2/ –