Software de programación de consultas de bases de datos

Tengo el siguiente escenario:

  • Una gran base de datos (postgresql).
  • Muchas organizaciones que necesitan extraer datos de esta base de datos, cada una con su propio cronograma y requisitos de datos.

Quiero una aplicación que:

  • Me proporciona una especie de calendario donde puedo programar diferentes ejecuciones de consultas.
  • Para cada ejecución puedo especificar un archivo sql simple, un formato para el archivo resultante y algún tipo de carga automática, por ejemplo, a un servidor ftp.
  • Tiene una interfaz web para que pueda usarlo desde otra computadora a través de Internet.
  • Puede gestionar varios usuarios.
  • Preferiblemente "software libre" y compatible con linux.

¡Gracias!

¿Los horarios son "fijos" (es decir, siempre a la misma hora del día, digamos "diariamente a las 7 am"), o necesita colocarlos dinámicamente a mano? ¿Se requiere una GUI, o lo hace la línea de comandos? ¿En qué sistema operativo se ejecuta el servidor y, si se supone que el programador se ejecuta en una máquina diferente, qué sistema operativo debería ser compatible en ese extremo?
¿Puede un programador de sistema operativo integrado ser suficiente? ¿Como un programador de tareas de Windows o un trabajo Cron de Linux que ejecuta una herramienta de línea de comandos para ejecutar la consulta?
@Izzy: los horarios podrían arreglarse, pero la otra posibilidad suena bien. Se requiere la GUI (web, si es posible) y debe ejecutarse en Linux. Gracias.
@Alejandro: cron es mi primera opción en este momento, pero tendría que escribir un código adicional para cargar los archivos y no tendría una GUI. Gracias.
Cron era lo que yo también tenía en mente. Hay interfaces GUI para él. Aunque la mayoría requeriría iniciar sesión en el host directamente, Webmin podría ser una opción para eso. Por supuesto, eso significa algunos scripts de shell para hacer el trabajo real. // ¿Puedo sugerir editar su pregunta para incluir algunos de los hechos recopilados en los comentarios, para que sean más fáciles de detectar? ;)
@Izzy: sugerencia aceptada :)
¡Gracias! :) Leyendo su pregunta nuevamente: no sé si existe tal software, pero podría pensar en una solución bastante simple: cada organización tiene una cuenta de usuario dedicada, cargando sus archivos a una cuenta específica a través de FTP. Un trabajo de Cron verifica estos directorios por su resp. programar para ejecutar lo que hay allí y coloca la salida en una segunda carpeta de la cuenta correspondiente. Mantiene los horarios, por ejemplo, a través de Webmin , o usa una GUI en el servidor a través de VNC. Entonces: software recomendado = VNC/Webmin/Cron/FTPd :) Hazme ping para delinear cuando no aparezca otra respuesta.

Respuestas (1)

Hago algo similar, pero a la inversa (ingresando grandes cantidades de información de varias empresas diferentes en un almacén de datos empresarial).

Para este trabajo, le recomiendo que consulte una herramienta ETL. Si utiliza PostgreSQL, le recomiendo que consulte Pentaho Data Integration (PDI) o Talend . Elegí usar PDI donde trabajo y no podría estar más feliz.

Por la forma en que funciona, construye sus trabajos (que ejecutan varias transformaciones, manejan la transferencia de datos a cosas como FTP/SFTP, correo electrónico, entradas de syslog, etc.) y sus transformaciones (los bits que extraen los datos). Puede guardarlos en un sistema de archivos o, en mi caso, en una base de datos para que se pueda acceder a ellos desde varias computadoras.

Puede programar los trabajos para que se ejecuten usando un trabajo cron simple desde cualquier computadora que pueda ejecutar Java (estoy usando OpenJDK con Ubuntu 14.04 y funciona muy bien). Un buen efecto secundario de esto cuando se trabaja en producción es que sus servidores DB y ETL están separados, de esa manera, si por alguna razón ETL falla, no se llevará su base de datos.

Eché un vistazo a la herramienta (la de Pentaho) y parece que tiene todo lo que necesito. La programación es solo para la edición Enterprise, pero intentaré usar cron para lograrlo como dices.
Mis entradas cron se ven así:0 6 * * * cd /opt/data-integration && ./kitchen.sh -rep=REPO_NAME -user=USER_NAME -pass=PASSWORD -dir=/FOLDER_ON_DB_REPOSITORY -job=JOB_NAME
Una cosa que no encontré en la documentación es copiar el archivo repositories.xml de la carpeta de instalación de su escritorio a la carpeta de instalación de PDI en el servidor que ejecuta el trabajo cron; esto contiene toda la información de conexión del repositorio.
Gracias por la entrada de cron, será útil al implementar la solución.