Was fehlt euch in Firebird?

Alles was nicht direkt zu den obigen Foren passt, findet hier Platz. Also Fragen zu allem was generell firebirdspezifisch ist oder sonst einen Bezug zum Forum hat.

Moderator: martin.koeditz

vr2
Beiträge: 75
Registriert: Fr 13. Apr 2018, 00:13

So 28. Jun 2020, 02:34

Hallo LitBigMan,
LitBigMan hat geschrieben:
Mo 22. Jun 2020, 15:29
Bei Interbase kann man beim Erstellen der Datenbank gleichzeitig den Alias anlegen lassen. Dieser kann auch per SQL dann nachträglich angelegt, geändert und gelöscht werden. Das würde bei der Kundeninstallation schon einiges erleichtern.
Aliase waren zumindest mal dafür gedacht, vom physischen Ort einer DB zu abstrahieren, ein Sicherheitsfeature. Jemand, der sich zu einer DB connecten kann, hat noch lange nicht physischen Zugriff auf die DB im Filesystem. Deshalb die Unterbringung in aliases.conf bzw databases.conf-file. Die Vergabe von Aliasen ist natürlich dann über SQL oder API sinnvoll, wenn ihr im laufenden Betrieb häufig Aliase anlegen/ändern müsst, zb weil ihr DBs ständig dynamisch erzeugt und wegwerft.

Grüße, Volker
Zuletzt geändert von vr2 am So 28. Jun 2020, 03:33, insgesamt 2-mal geändert.
vr2
Beiträge: 75
Registriert: Fr 13. Apr 2018, 00:13

So 28. Jun 2020, 03:01

Hallo Gerd,
Gerd hat geschrieben:
Fr 4. Okt 2019, 09:26
martin.koeditz hat geschrieben:
Fr 4. Okt 2019, 09:05
... Siehe auch http://www.firebirdfaq.org/faq209/. Ich hoffe das hilft.
Ja, das hilft natürlich.
csv-Import über externe Tabellen ist ein Kompromiss und mühsam, weil es Festformat-csv voraussetzt, und das hast Du eher selten oder musst es erst sicherstellen. csv-Import läuft eigentlich immer darauf hinaus, dass irgendeine Ebene das csv ansaugt, passend zerlegt und in eine Tabelle der DB einfügt. Dabei gibt es allerdings viele verschiedene Szenarien und Problemzonen. Der Ansatz mit den externen Tabellen ist zumindest konzeptionell modular, da man sich nicht frühzeitig auf Datentypen festlegen muss.

Problemzonen sind
* Längenbeschränkungen - Deine csv-Zeilen können nahezu beliebig lang werden, die externe Tabelle kann nicht beliebig lange Sätze aufnehmen. Spalten analog.
* Blobs
* Import beliebig strukturierter csv-Daten - die Zieltabelle muss schon passend existieren - oder Du macht einen Kompromiss und nimmst bspw eine Tabelle mit 80 Spalten a varchar(800) oder einer Spalte varchar(32K) grundsätzlich als Ziel, kann auch eine GTT sein, und zerlegst/verteilst von da aus weiter. Hast Du die Daten mal in der DB, ist der Rest nicht mehr schwer.

Ab Firebird 3 wären UDRs eine Alternative, da Du damit Zugriff auf Filesystem *und* DB haben kannst, aber die sind ziemlich low-level und mager dokumentiert, öffnen Dir allerdings Tür und Tor. Du könntest Dir dann in C++ oder Delphi eine generische UDR für den csv-Import schreiben, die die Zieltabelle entlang der csv-Struktur anlegt. Wenn Du C++ kannst, wär das eine Option, Wenn Du Delphi kannst, kommt es drauf an, denn die UDR-Doku und Ressourcen beziehen sich leider fast ausschließlich auf C++ - außer Du bist gut in beidem und kannst C++-Templates und Makros lesen und auf Delphi abbilden. Ich habe einige UDRs geschrieben, aber für sportlichere Sachen wie BLOBs in UDRs ist die Doku für Delphi einfach zu dünn.

Ansonsten kannst Du natürlich jede Client-Ebene einsetzen, die Zugriff auf Filesystem *und* DB hat und ein prepared statement absetzen kann, Webserver, Desktopanwendung.

Ein Bordmittel wie https://mariadb.com/kb/en/load_file/ wäre natürlich cool und man hätte nicht diesen ganzen Aufriss, dafür brauchst Du aber höhere Rechte, und das Verhalten bei Replikation ist auch nicht unproblematisch.

Grüße, Volker
bfuerchau
Beiträge: 185
Registriert: Mo 7. Mai 2018, 18:09

So 28. Jun 2020, 16:20

Auch ein "indexadvisor" für SQL's wäre nicht schlecht, so dass man daraufhin Indizes erstellen könnte, die der Server dann auch nimmt.
Bisher erstelle ich nur nach meiner eigenen automatisierten Methodik Indizes, die nach Analyse mit IBExpert, .Net-Provider zu 95% auch genommen werden.
Eine 100%ige Trefferquote wäre mir da schon lieber. :idea:
Gerd
Beiträge: 162
Registriert: Di 1. Okt 2019, 17:13

Do 2. Jul 2020, 13:17

@volker Ich melde mich in ein paar Tagen zu Deinem Beitrag. Geht gerade nicht. Tablet tu ich mir nicht an.

Viele Grüße
Gerd
Linux Mint 20 Ulyana Cinnamon 4.6.6
Firebird 4.0 Beta 2, Superserver - ISQL: LI-T4.0.0.1963
Lazarus 2.0.10 - FPC 3.2.0
bfuerchau
Beiträge: 185
Registriert: Mo 7. Mai 2018, 18:09

Do 2. Jul 2020, 17:50

Schon mal angesehen?
https://de.talend.com/products/talend-open-studio/

Lesen fremder DB's, import in beliebige DB's, Konvertierungen, Abläufe, Regeln und automatisierbar.
Warum immer das Rad neu erfinden. Einer meiner Kunden ist höchst zufrieden (von dem habe ich den Hinweis).
Gerd
Beiträge: 162
Registriert: Di 1. Okt 2019, 17:13

Mi 15. Jul 2020, 16:09

Hallo Volker und bfuerchau.
vr2 hat geschrieben:
So 28. Jun 2020, 03:01
..."csv-Import über externe Tabellen ist ein Kompromiss und mühsam,"...
Soweit ja. Dennoch, es ist hauseigen. Und ich benutze es dann, wenn es die Aufgabe(n) löst.

Der von @martin.koeditz angeführte Link http://www.firebirdfaq.org/faq209/ verweist ja auf "The Firebird FAQ".

Die dortige Frage (dt. etwa): ..."Gibt es Bulk-Load oder eine andere Möglichkeit, viele Daten schnell zu importieren?"...

Die dortige Antwort dt. etwa): ..."Das Hauptproblem bei externen Tabellen ist die Behandlung von NULLs und BLOBs. Wenn Sie damit umgehen müssen, sollten Sie besser ein Werkzeug wie FBExport verwenden." ...
(Anmerkung: Das genannte Tool würde sich auch für Import-Aufgaben eignen.)

Und da bin ich bei @bfuerchau angelangt - und sehe das so wie er:
bfuerchau hat geschrieben:
Do 2. Jul 2020, 17:50
... Warum immer das Rad neu erfinden. ...
Genau.
Ich arbeite hier mit einem Firebird Sponsoren Tool und bin bisher damit zufrieden. Das ließe sich dann auch einfach weiterempfehlen ...
vr2 hat geschrieben:
So 28. Jun 2020, 03:01
Ein Bordmittel wie https://mariadb.com/kb/en/load_file/ wäre natürlich cool und man hätte nicht diesen ganzen Aufriss, ...
Das 'Bordmittel' LOAD_FILE(bezeichner_datei) - mitgeliefert im DBMS MySQL / MariaDB - kenne ich.
Müsste man mal prüfen, ob das schon im Firebird RDBMS Issue Tracker als Feature-Wunsch erfasst wurde. Ich kann dem leider zurzeit nicht weiter nachgehen, weil dort (Firebird Issue Tracker) seltsamerweise mein Login nicht mehr funktioniert - keine Ahnung warum. :?:
vr2 hat geschrieben:
So 28. Jun 2020, 03:01
... Ab Firebird 3 wären UDRs eine Alternative, da Du damit Zugriff auf Filesystem *und* DB haben kannst, aber die sind ziemlich low-level und mager dokumentiert, ...
Mit dem Thema UDR (User Defined Routines dt.: Nutzer definierte Routinen) ab Firebird 3 habe ich mich bisher noch nicht auseinander gesetzt.
Ich weiß bisher nur, dass es ein neuer Typ von UDFs (User-Defined Functions dt.: Nutzer-definierte Funktionen) sein soll. Dessen Schnittstelle zwischen Firebird und dem eigenen geschriebenen Code soll jedoch etwas anders sein.
Persönlich werde ich mich zu den Schnittstellen-Unterschieden aus Paritätsgründen noch nicht schlau machen können, da UDF ab Firebird v4 standardmäßig deaktiviert ist. Ich nutze ausschließlich Firebird v4 Beta 1 und 2 und ich habe zurzeit nicht vor UDF zu aktivieren.
vr2 hat geschrieben:
So 28. Jun 2020, 03:01
... Wenn Du C++ kannst, ...
Schön wär's ...

Sobald sich etwas mit Lazarus bewerkstelligen lässt, könnte ich versuchen es damit tun.
Jedoch überlege ich mir immer, ob Aufwand und Nutzen im Verhältnis stehen und/oder, ob es eine fertige Lösung gibt.

Delphi benutze ich nicht. Es ist für mich einfach zu preis-intensiv. Auch würde ich damit vieles erwerben, was ich wohl nie brauchen werde.


Viele Grüße
Gerd
Linux Mint 20 Ulyana Cinnamon 4.6.6
Firebird 4.0 Beta 2, Superserver - ISQL: LI-T4.0.0.1963
Lazarus 2.0.10 - FPC 3.2.0
Gerd
Beiträge: 162
Registriert: Di 1. Okt 2019, 17:13

Mi 15. Jul 2020, 17:34

Gerd hat geschrieben:
Mi 15. Jul 2020, 16:09
Das 'Bordmittel' LOAD_FILE(bezeichner_datei) - mitgeliefert im DBMS MySQL / MariaDB - kenne ich.
Müsste man mal prüfen, ob das schon im Firebird RDBMS Issue Tracker als Feature-Wunsch erfasst wurde. Ich kann dem leider zurzeit nicht weiter nachgehen, weil dort (Firebird Issue Tracker) seltsamerweise mein Login nicht mehr funktioniert - keine Ahnung warum. :?:
Hatte den letzten - leider vergeblichen - Login-Versuch am 04.06.2020.
Gerade eben mal wieder versucht - und ich bin (wieder) drin. :D

Dort gibt es bereits einen Eintrag (+), der darauf abzielt, auch grafische Tools für Firebird anzubieten. Allerdings ist der Wunsch noch offen.


Viele Grüße
Gerd
Linux Mint 20 Ulyana Cinnamon 4.6.6
Firebird 4.0 Beta 2, Superserver - ISQL: LI-T4.0.0.1963
Lazarus 2.0.10 - FPC 3.2.0
Antworten