pg_timetable es un planificador de ejecuciones para PostgreSQL desarrollado por CYBERTEC. Ofrece una gran flexibilidad y versatilidad de funcionalidades.
La planificación de tareas es una de los temas más importantes en bases de datos modernas. Dentro el ecosistema PostgreSQL, pgAgent y pg_cron son herramientas populares para programar ejecuciones, sin embargo ambas presentan varias limitaciones. Por este motivo, hemos decidido lanzar nuestra propia solución: pg_timetable, un planificador de tareas de próxima generación para PostgreSQL

Por qué elegir pg_timetable?
1. Arquitectura estable y confiable
2. Soporta ejecuciones complejas
- Soporte para cadenas de tareas complejas
- Posibilidad de crear módulos
- Manejo de errores sofisticado
- Sporte para ejecuciones transaccionales
- Protección de concurrencia
3. Capacidad para ejecutar diferentes tipos de tareas
- Scripts en SQL
- Ejecutables Shell
- Tareas integradas (mandar mails, etc.)
- Cadenas autodestructivas
1. Arquitectura estable y confiable
Como funciona pg_timetable
pg_timetable es un ejecutable simple y fácil de correr, que se conecta a PostgreSQL. No es parte de la infraestructura del servidor. Por esta razón, no es una amenaza en cuanto a la seguridad o estabilidad de su servidor. Corre de manera independiente y su implementación es simple con una arquitectura robusta.

pg_timetable está orientado 100% a bases de datos y permite utilizar PostgreSQL como único controlador de tu flujo de trabajo. Los logs son guardados en la base de datos, por lo que resulta muy simple extraer información de los mismo utilizando SQL queries. También es posible visualizar datos y logs de ejecución rápido y fácil utilizando la tecnología que desee.
2. Soporte para ejecuciones complejas
Ejecute complejos flujos de trabajo
Planificadores de tareas tradicionales, como cron o pg_cron, pueden lanzar scripts o ejecutar SQL, pero es muy difícil combinar ambas tareas. Además, presenta problemas de modularización. pg_timetable lo ayuda a correr este tipo de operaciones. Las «Base tasks» pueden combinarse de manera flexible, permitiendo armar complejas cadenas de tareas.

Tareas de PostgreSQL y protección de concurrencia
Además, pg_timetable ofrece protección de concurrencia integrada. Esto previene a las tareas individuales de lanzarse a si mismas, mientras inundan su servidor lentamente. Utilizando un simple flag, pg_timetable le permite sincronizar complejas cadenas de operaciones.

Transacciones y manejo de errores.
Una tarea debe correr dentro de una transacción y esta debe terminar exitosamente o fracasar en su totalidad, sin matices. pg_timetable está completamente basado en transacciones. Esto permite combinar de manera flexible «base tasks» en una sola transacción, asegurando la integridad y confiabilidad en la tarea de tareas.
3. Ability to execute different types of tasks
Configurar pg_timetable con el estilo «cron»
En general pg_timetable puede ser configurado utilizando SQL. Sin embargo, algunos prefieren configurarlo con el estilo «cron». Para poder comenzar rápidamente, pg_timetable también soporta interfaces de configuración estilo «cron» y agendar tareas de manera sencilla. Esto es especialmente útil si desea correr tareas simples. pg_timetable transformará su configuración automáticamente al formato nativo.
Cadenas autodestructivas
Las cadenas autodestructivas sirven para ejecutar tareas una sola vez. Por ejemplo, si se quiere borrar un usuario dentro de dos semanas, o mandar un recordatorio a un cliente una sola vez. pg_timetable le permite programar cadenas de tareas autodestructivas de manera sencilla para estos casos.
4. pg_timetable: Cloud-ready by design
pg_timetable has been designed to be cloud-ready from the start. Simply run pg_timetable as a Docker container, make use of Kubernetes and / or OpenShift. There are no external dependencies. pg_timetable is available as a container and as a statically linked binary for simple use. You can deploy pg_timetable at any cloud provider.
If you are running pg_timetable in a cloud environment the ability to run command line tools can be disabled easily using a simple parameter:
--no-program-tasks Disable executing of PROGRAM tasks [$PGTT_NOPROGRAMTASKS]
This ensures maximum security and reliable scheduling in any environment.
Contact us if you want to know more!
Descarga
pg_timetable es un software abierto y puede ser utilizado gratuitamente por todo el mundo. Descargue el código fuente desde GitHub o utilice el Dockerfile si desea correrlo directamente desde un container.
Como siempre, animamos a que todos contribuyan a nuestras soluciones de código abierto.