Planungssoftware für Datenbankabfragen

Ich habe folgendes Szenario:

  • Eine große Datenbank (postgresql).
  • Viele Organisationen, die Daten aus dieser Datenbank extrahieren müssen, haben jeweils ihren eigenen Zeitplan und ihre eigenen Datenanforderungen.

Ich möchte eine Anwendung, die:

  • Bietet mir eine Art Kalender, in dem ich verschiedene Abfrageausführungen planen kann.
  • Für jede Ausführung kann ich eine einfache SQL-Datei, ein Format für die resultierende Datei und eine Art automatisches Hochladen, zum Beispiel auf einen FTP-Server, angeben.
  • Verfügt über eine Webschnittstelle, sodass ich sie von einem anderen Computer aus über das Internet verwenden kann.
  • Kann mehrere Benutzer verwalten.
  • Vorzugsweise "Software Libre" und Linux-kompatibel.

Danke!

Sind die Zeitpläne "fest" (dh immer zur gleichen Tageszeit, sagen wir "täglich um 7 Uhr"), oder müssen Sie sie dynamisch von Hand platzieren? Ist eine GUI erforderlich oder reicht die Befehlszeile? Auf welchem ​​Betriebssystem läuft der Server, und wenn der Scheduler auf einem anderen Rechner laufen soll, welches Betriebssystem sollte auf diesem Ende unterstützt werden?
Kann ein integrierter OS-Scheduler ausreichen? Wie ein Windows-Taskplaner oder ein Linux-Cron-Job, der ein Befehlszeilentool zum Ausführen der Abfrage ausführt?
@Izzy: Die Zeitpläne könnten fixiert werden, aber die andere Möglichkeit klingt nett. Die GUI ist erforderlich (Web, wenn möglich) und sie muss unter Linux laufen. Danke.
@Alejandro: Cron ist im Moment meine erste Option, aber ich müsste zusätzlichen Code schreiben, um die Dateien hochzuladen, und ich hätte keine GUI. Danke.
Cron hatte ich auch im Sinn. Es gibt GUI-Frontends dafür. Obwohl die meisten direkt auf dem Host angemeldet sein müssten, könnte Webmin dafür eine Option sein. Das bedeutet natürlich etwas Shell-Scripting, um die eigentliche Arbeit zu erledigen. // Darf ich vorschlagen, Ihre Frage so zu bearbeiten , dass sie einige der in den Kommentaren gesammelten Fakten enthält, damit sie leichter zu erkennen sind? ;)
@Izzy: Vorschlag angenommen :)
Danke! :) Ich lese Ihre Frage noch einmal: Ich weiß nicht, ob es eine solche Software gibt, aber ich könnte mir eine ziemlich einfache Lösung vorstellen: Jede Organisation hat ein eigenes Benutzerkonto und lädt ihre Datei(en) per FTP auf ein bestimmtes Konto hoch. Ein Cron-Job prüft diese Verzeichnisse anhand ihrer bzw. schedule ausführt, was darin enthalten ist, und legt die Ausgabe in einem zweiten Ordner des entsprechenden Kontos ab. Sie pflegen die Zeitpläne zB über Webmin oder nutzen eine GUI auf dem Server über VNC. Also: empfohlene Software = VNC/Webmin/Cron/FTPd :) Ping mich an, um zu skizzieren, wenn keine andere Antwort erscheint.

Antworten (1)

Ich mache etwas Ähnliches, aber umgekehrt (große Mengen an Informationen von mehreren verschiedenen Unternehmen in ein Enterprise Data Warehouse aufnehmen).

Für diesen Job würde ich empfehlen, dass Sie sich ein ETL-Tool ansehen. Wenn Sie PostgreSQL verwenden, empfehle ich Ihnen, sich entweder Pentaho Data Integration (PDI) oder Talend anzusehen . Ich habe mich für PDI entschieden, wo ich arbeite, und ich könnte nicht glücklicher sein.

So wie es funktioniert, bauen Sie Ihre Jobs (die mehrere Transformationen ausführen, die Datenübertragung zu Dingen wie FTP/SFTP, E-Mail, Syslog-Einträge usw. handhaben) und Ihre Transformationen (die Bits, die die Datenextrakte durchführen) aus. Sie können sie in einem Dateisystem oder in meinem Fall in einer Datenbank speichern, sodass von mehreren Computern darauf zugegriffen werden kann.

Sie können die auszuführenden Jobs mit einem einfachen Cron-Job von jedem Computer aus planen, auf dem Java ausgeführt werden kann (ich verwende OpenJDK mit Ubuntu 14.04 und es funktioniert hervorragend). Ein netter Nebeneffekt davon, wenn Sie in der Produktion arbeiten, ist, dass Ihre DB- und ETL-Server getrennt sind. Wenn ETL aus irgendeinem Grund ausfällt, wird Ihre DB nicht mitgenommen.

Ich habe mir das Tool (das von Pentaho) angesehen und es scheint alles zu haben, was ich brauche. Scheduling ist nur für die Enterprise Edition, aber ich werde versuchen, Cron zu verwenden, um dies zu erreichen, wie Sie sagen.
Meine Cron-Einträge sehen in etwa so aus:0 6 * * * cd /opt/data-integration && ./kitchen.sh -rep=REPO_NAME -user=USER_NAME -pass=PASSWORD -dir=/FOLDER_ON_DB_REPOSITORY -job=JOB_NAME
Eine Sache, die ich in der Dokumentation nicht gefunden habe, ist das Kopieren der Datei „repositories.xml“ aus Ihrem Desktop-Installationsordner in den PDI-Installationsordner auf dem Server, auf dem der Cron-Job ausgeführt wird – dies enthält alle Repository-Verbindungsinformationen.
Vielen Dank für den Cron-Eintrag, er wird sich bei der Implementierung der Lösung als nützlich erweisen.