Seite 7 von 7

Re: TurboBird weiterentwickelt

Verfasst: Fr 5. Sep 2025, 01:52
von vr2
Hallo Maurog,

teste TurboBird ebenfalls, weil es derzeit kein anderes Firebird-DBA-Tool gibt, bei dem wir so direkten Kontakt mit dem Maintainer haben, das ist sehr cool. Und Lazarus sowieso. Benutzt Du IBX?

Testumgebung ist Win10, 64 Bit-Version 1.2.1.1260. Hier erste Eindrücke:

* bei der Installation lief es nicht ganz rund mit der Angabe der fbclient, kann das jetzt aber nicht mehr reproduzieren, ich hab dann den richtigen Pfad in einer .ini angegeben. Hier würde es völlig ausreichen, wenn man die gewünschte fbclient pro Server über einen Dateimanager auswählen könnte - die Anwendung suchte selber und registrierte eine aus system32, das war aber die falsche, ich habe 4 Firebird-Versionen auf dem Rechner, 2.5 bis 5.0.3
* wenn eine DB connectet ist, hat TurboBird die fdb-Datei in exklusivem Zugriff - das ist nicht nötig, TurboBird ist nur ein weiterer Firebird-Client. Man kann dann nicht mehr mit anderen Tools connecten.
* Der update-checker: Failed to connect to GitHub: connect to api.github.com.443 failed
* Benennung von Firebird-Servern im Baum links: dort steht derzeit localhost, ich habe aber mehrere Firebird-Server und würde die gern sprechend benennen
* Doppelklick auf Objektknoten im Navigationsbaum öffnet normalerweise den Unterbaum des Knotens. Beim Knoten UDR bekomme ich damit allerdings TTreeNode Index 1 out of bounds 0 .. 0 - ich habe UDRs in der DB. Schließt man den Fehlerdialog und klappt über '>' den Unterbaum des UDR-Knotens auf, kommt ein weiterer Knoten nur mit einem UDR-Symbol und einem '>' davor. Klappt man diesen Knoten auf, sieht man erst die Liste der UDRs.
* Klickt man auf einen der UDR-Endknoten, öffnet sich ein Tab dazu. Default-Aktion scheint Test UDR-Procedure zu sein. Zumindest bei Stored Procedures und Stored Functions fände ich View Procedure oder Edit Procedure als Doppelklick-Default nützlicher
* View Stored Procedure liefert nicht den vollständigen Code einer SP, nur den Code bis 'AS'
* Benennung der Objekte im Navigationsbaum uneinheitlich: Stored Procedures / FBFunctions könnten einheitlicher Procedures und Functions heißen
* Wenn UDRs ein eigener Knoten sein sollen, könnte man darunter nochmal nach Procedures / Functions, Triggers differenzieren. Alternative: die UDRs bei den anderen Objekten einsortieren
* Knoten Users: PUBLIC ist ein interner User, den kann man aber bspw nicht droppen, würde ich da weglassen. Ansonsten: Gut, denn ab Firebird 3 kann eine DB eine abweichende security.fdb angeben und damit datenbankspezifisch andere User haben.
* Ich würde das explizite set term-Geraffel bei PSQL-Code dem DBA-User ersparen, in dem die Anwendung das hinter den Kulissen übernimmt und selber klammert. Das macht die Bearbeitung von SPs/SFs einiges einfacher.

Hoffe, das ist nützlich für Deine Arbeit. Für Anregungen bzgl UI lohnt sich auch ein Blick zu DBeaver, einige Dinge haben die gut gelöst, zb den Dark Mode ;-), das Skripting, die Ausführung in einen weiteren Ergebnistab und die Exportfunktionen. Allerdings sind die keine Firebird-Experten, das merkt man hier und da, und es ist Java.

Unerreicht bzgl Übersicht, schnelle und intuitive Bedienung finde ich immer noch den uralten (20 Jahre?) SQLHammer. Leider kann der mit Firebird ab Version 3 nur noch teilweise umgehen, kennt die neueren Datentypen, UDRs usw nicht und hat seit einem Windows-Update vor Urzeiten keine Tab-Beschriftungen mehr. SQLHammer wurde damals in Delphi 7 geschrieben, nutzte u.a. VirtualTreeView (schneller geht immer noch nicht, wenn Du 500K Sätze anzeigen willst), wurde dann als BlazeTop noch eine Zeit weitergeführt, der war aber schon schlechter. Wenn Du vom SQLHammer eine Version auftreiben kannst, das würde sich als Inspiration lohnen, sogar als Spezifikation. Ich hab den Code und eine lauffähige Version und kann sie bei Bedarf hier irgendwo hinstellen.

FlameRobin finde ich furchtbar mit seinen rumfliegenden Fenstern, das ist so eine linux-Altlast aus grauer Vorzeit und muss einfach seit Ewigkeiten tabbed sein. FlameRobin hat aber bspw die Möglichkeit, Transaktionen ziemlich weitgehend zu konfigurieren, das kenne ich von keinem anderen Tool - wenn man mal wait-Transactions oder ReadOnly TXen testen will.

Ich muss aufhören, sonst wirds zu viel auf einmal ;-)

Grüße Volker

Re: TurboBird weiterentwickelt

Verfasst: Fr 5. Sep 2025, 11:22
von bfuerchau
Nun ja, RedExpert kann mit einmaliger kostenloser Registrierung da in vielen Dingen bereits mithalten.

Re: TurboBird weiterentwickelt

Verfasst: Fr 5. Sep 2025, 14:04
von vr2
bfuerchau hat geschrieben: Fr 5. Sep 2025, 11:22 Nun ja, RedExpert kann mit einmaliger kostenloser Registrierung da in vielen Dingen bereits mithalten.
es gibt nur keinen zwingenden Grund, für die Benutzung eines DBA-Tools eine E-Mailadresse zu verlangen. Also im Prinzip einen weltweit eindeutigen Key, mit dem man zugeordnet werden kann. Die Registrierung ist daher alles andere als kostenlos, denn man hat mit persönlichen Daten bezahlt und tut das ab dann permanent. Ich will nicht getrackt werden, wenn ich eine DB abfrage oder eine SP bearbeite, also einfach nur meine Arbeit mache. Deswegen ist RedExpert für mich keine Option. Ich will überhaupt nicht getrackt werden, bei nichts und von niemandem. Schwer genug, da eine Mehrheit darin kein Problem sieht.

Grüße, Volker

Re: TurboBird weiterentwickelt

Verfasst: Fr 5. Sep 2025, 16:01
von bfuerchau
Da RedExpert als Java-Anwendung nichts trackt, ist das ja kein Problem.
Auch habe ich bisher noch nie igendeine Werbemail von denen bekommen. :D

Re: TurboBird weiterentwickelt

Verfasst: Sa 6. Sep 2025, 12:56
von maurog
Hallo,

vielen Dank für euer Feedback!
(Ich bin kein Firebird-Experte, ich lerne durch eure Rückmeldungen dazu.)

@Volker
Benutzt du IBX?
Die Anwendung wurde ursprünglich mit SQLdb entwickelt.
SQLdb und ZeosDB unterstützen jedoch keine Firebird-Arrays.
IBX wurde speziell für Interbase und Firebird entwickelt,
daher stelle ich die Anwendung nach und nach auf IBX um.
(Einige Masken sind bereits umgestellt.)
Bei der Installation gab es bei mir anfangs Probleme mit der Angabe der fbclient, das konnte ich aber später nicht mehr reproduzieren. Ich habe dann einfach den richtigen Pfad in einer .ini-Datei hinterlegt. Praktisch wäre es, wenn man die gewünschte fbclient pro Server direkt über einen Dateimanager auswählen könnte.
Die Anwendung sucht aktuell selbstständig und registriert eine Bibliothek aus system32, das war bei mir allerdings die falsche (ich habe 4 Firebird-Versionen installiert, von 2.5 bis 5.0.3).
Beim ersten Start steht in der .ini ein fester Eintrag, z. B.:
ClientLib = '/opt/firebird/lib' (für Linux) oder der Windows-Pfad.
Die Anwendung versucht dann, diese Bibliothek zu laden. Falls das fehlschlägt, öffnet sich eine Suchmaske:
Klick auf „Suchen“ → es werden mögliche fbclient-Bibliotheken gefunden und in einer Liste angezeigt.
Man kann dann einen Eintrag markieren und mit „Test“ prüfen, ob er geladen werden kann.
Erst wenn der Test erfolgreich ist, wird „OK“ aktiv und die Bibliothek übernommen.
Alternativ kann man über „Browse“ die gewünschte Bibliothek manuell auswählen (genau so wie Du vorgeschlagen hast).

Die Suchmaske kann jederzeit erneut über Rechtsklick auf den Servernamen → Set Firebird Client geöffnet werden.

Wichtig: TurboBird kann innerhalb einer Instanz nur eine Firebird-Client-Bibliothek verwenden.
Wenn man mit verschiedenen Firebird-Versionen arbeiten will, muss man mehrere TurboBird-Instanzen mit jeweils eigener fbclient konfigurieren.

Benennung von Firebird-Servern im Baum links:
Momentan wird bei Einträgen wie
/home/maurog/employee.fdb oder localhost:/home/maurog/employee.fdb
alles unter „localhost“ angezeigt, wodurch die Anwendung in den Embedded-Modus schaltet.
(das macht Firebird-Client automatisch).

In diesem Modus genügt ein gültiger Username, ein Passwort ist nicht erforderlich,
der Zugriff hängt dann allein von den OS-Berechtigungen auf die .fdb-Datei ab.

Anders sieht es bei Einträgen wie
127.0.0.1:/home/maurog/employee.fdb oder
mxLinux:/home/maurog/employee.fdb aus.
Dann erscheinen die Datenbanken unter den jeweiligen Knoten und werden als echte Serververbindungen behandelt (kein Embedded-Modus).
So registrierte Datenbanken werden nicht exklusiv geöffnet, parallele Zugriffe sind problemlos möglich.

Exklusiver Zugriff im Embedded-Modus
Nach meinen Recherchen ist im Embedded-Modus nur exklusiver Zugriff möglich, weil die Synchronisationsmechanismen des Firebird-Servers fehlen.

Wenn meine Angaben hier nicht ganz korrekt sind, bitte gerne korrigieren – wie gesagt, ich bin kein Firebird-Experte.

UDR-Knoten im Navigationsbaum:
Doppelklick auf den Knoten UDR führt bei dir zu:
TTreeNode Index 1 out of bounds 0 .. 0.
Bei mir tritt das nicht auf, ich teste es aber noch.

Eigentlich sollte UDR → Functions und Procedures als Unterknoten enthalten.
So ist es vorgesehen. Ich werde das noch testen.
View Stored Procedure zeigt momentan nur bis „AS“
Standardaktion beim Doppelklick: derzeit „Test UDR-Procedure“.

Ich werde das auf Edit umstellen.

Benennung im Baum:
Die Bezeichnungen sind jetzt vereinheitlicht: Functions und Procedures.

Update-Checker:
Fehler: Failed to connect to GitHub: connect to api.github.com.443 failed.
→ Für die GitHub-Verbindung sind OpenSSL-Runtime- und -Dev-Libs nötig.
Unter Windows konnte ich das bisher nicht testen (VM Win7 auf Linux-Host, OpenSSL ließ sich nicht sauber installieren).
Unter Linux funktioniert es wie erwartet.

Users-Knoten
Soll der User „PUBLIC“ ausgeblendet werden?

PSQL-Code / set term:
Steht auf meiner ToDo-Liste.

Transaktionen (FlameRobin)
Ich werde mir die erweiterten Transaktions-Optionen ebenfalls ansehen und ggf. umsetzen.

UI-Anregungen / DBeaver
Dark Mode ist vorgesehen, sobald die wichtigsten Änderungen erledigt sind.
SQL-Skripte lassen sich bereits ausführen:
Im QueryWindow → Klick auf Ordner-Icon → SQL-Datei auswählen und ausführen.
(Falls Du das meinst ?)

Daten Export:
TurboBird unterstützt bereits 9 Formate.
(rechts Click auf DBGrid -> Export...)

SQLHammer / BlazeTop
Das klingt sehr interessant!
Wenn du Quellcode und Binaries zur Verfügung stellen kannst, wäre das super. Falls zu groß fürs Forum, kannst du es mir auch gerne per E-Mail schicken.
Wenn der Code gut strukturiert ist, könnte ich ihn ggf. an neuere Firebird-Versionen anpassen und auch nach Linux portieren – dann hätten wir ein weiteres Tool.

Ich plane, in den nächsten Tagen eine neue Version mit deinen (und weiteren) Vorschlägen hochzuladen.

Viele Grüße
Maurog

Re: TurboBird weiterentwickelt

Verfasst: Sa 6. Sep 2025, 23:19
von vr2
Hallo Maurog,

* IBX: IBX hat eine sehr gute UDR-Schnittstelle und mit fbintf eine gutes Firebird-Interface
* Server-Registrierung: ja, bspw mit dem tcp-connectstring server/port:alias läuft es wie es sein soll. Ein Serveralias wäre hübsch, aber so kann man sie schon unterscheiden.
* View Stored Procedure: Da der Code mit "create or alter" angezeigt wird, reicht Edit Stored Procedure
* Für die GitHub-Verbindung sind OpenSSL-Runtime- und -Dev-Libs nötig: Eigentlich nur die ssl-libs: Unter Windows sind das libeay32.dll und ssleay32.dll. Nutzt Du die synapse-lib?
* Soll der User „PUBLIC“ ausgeblendet werden? Eher ja, ich kenne kein DBA-Tool, das den anzeigt.
* PSQL-Code / set term:Steht auf meiner ToDo-Liste: Super!
* Ich werde mir die erweiterten Transaktions-Optionen ebenfalls ansehen und ggf. umsetzen. Schön
* SQL-Skripte lassen sich bereits ausführen: Gut, hatte ich übersehen
* Exportformate: RTF und DBF sind glaube ich überholt. Stattdessen wäre ein tabellarisches Markup interessant, so dass man ein Ergebnis gleich in eine Ticketsystem wie Redmine einfügen kann, schau mal bei DBeaver, Advanced Copy, Copy as TXT oder Markdown
* SQLHammer / BlazeTop: Die Quellen sind hier: https://github.com/runningmaster/sqlhammer

Noch zwei Dinge:

* Transaktionen im SQL Editor: (Commit/Rollback) Retaining würde ich nicht benutzen, nur das reguläre Commit/Rollback
* Die Benennung der Tabs bitte lieber kürzer, da schon mal 20 Tabs offen sein können. Also bspw statt "Edit Stored Procedure ACL2JSON" nur ACL2JSON.

Danke!

Viele Grüße, Volker