Änderungen an der Firebird 'On-Disk Structure' (ODS)

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Antworten
Gerd
Beiträge: 114
Registriert: Di 1. Okt 2019, 17:13

Mi 25. Mär 2020, 19:57

Hallo.

Die Firebird Foundation Incorporated macht auf ihrer Website u.a. auf GUI-Werkzeug für die SQL-Entwicklung aufmerksam, mit denen ggfls. Firebird Datenbanken erstellt (CREATE DATABASE) werden können.
Solange die Versionen sowohl seitens Firebird als auch des jeweils benutzten Werkzeug im funktionalen Einklang sind, geht alles seinen Gang.

In der Publikation "Firebird 4.0 Release Notes" (Firebird-Projekt: Kern-Entwickler Herausgegeben von Helen Borrie) wird im Kapitel 4 "Changes to the Firebird API and ODS" (dt: Änderungen an der Firebird API und ODS) u.a. darüber informiert, dass Firebird 4.0 nun Datenbanken mit einer ODS (On-Disk Structure) Version von 13 erzeugt. Anmerkung: Zuvor war es die ODS Nummer 12.

Interessierte, die schon mit Firebird 4.0 Beta 1 arbeiten, sollte demzufolge auch darauf achten, dass so ein (gelistetes) Werkzeug auch tatsächlich schon die ODS Version 13 unterstützt. Tut es das nicht, dann erhält der Firebird-Anwender beim Versuch sich mit der Datenbank (ODS 12) zu verbinden, nämlich diese Meldung:

Code: Alles auswählen

gerd@gerd-MS-7641:~$ isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT '/home/gerd/Firebird/Datenbanken/test.fdb' USER sysdba PASSWORD 'geheimes_passwort';
Statement failed, SQLSTATE = HY000
unsupported on-disk structure for file /home/gerd/Firebird/Datenbanken/test.fdb; found 12.0, support 13.0
SQL> 
Wohl nicht jedes Werkzeug weist während des Vorgangs der Datenbankerzeugung darauf hin. Es gibt auch Werkzeuge, die zwei Möglichkeiten anbieten eine Firebird Datenbank zu erzeugen. Jedoch spätestens beim Verbinden wird die obige Meldung (zumindest im Firebird ISQL Tool) ausgegeben.

Man kann mit dem Firebird Tool gstat leicht ermitteln, welche ODS Version (z. B. 12 oder 13) Verwendung fand. Hier zwei mögliche Eingaben:
gstat -h alias (z.B.: adressen.fdb)
Oder auch so:
gstat -h /PfadZurDatenbank/adressen.fdb

Und so also im Terminal bei Verwendung des Alias:

Code: Alles auswählen

gerd@gerd-MS-7641:~$ gstat -h adressen.fdb

Database "/home/gerd/Firebird/Datenbanken/adressen.fdb"
Gstat execution time Wed Mar 25 14:02:23 2020

Database header page information:
...
	Page size		8192
	ODS version		13.0
	Oldest transaction	117
...
	*END*
Gstat completion time Wed Mar 25 14:02:23 2020

gerd@gerd-MS-7641:~$ 
Es wird hier also Version 13.0 verwendet.

Leider ist es so, dass man Geduld aufbringen und warten muss, bis der/die Werkzeug-Entwickler die Thematik ODS bei sich aktualisieren. Tja, und bis dahin muss halt die Firebird Datenbank mit dem Firebird ISQL Tool erzeugt werden - kann dann aber i.d.R. mit dem Werkzeug bearbeitet werden.
Und derjenige Einsteiger, der mit Firebird 4.0 Beta 1 startet, weiß jetzt, was es mit dieser Meldung (unsupported on-disk structure for file /home/gerd/Firebird/Datenbanken/test.fdb; found 12.0, support 13.0) auf sich hat.


Viele Grüße
Gerd
Linux Mint 19.3 Cinnamon 4.4.8
Firebird 4.0 Beta 1, Superserver - ISQL: LI-T4.0.0.1436
Lazarus 2.0.6 - FPC 3.0.4
bfuerchau
Beiträge: 147
Registriert: Mo 7. Mai 2018, 18:09

Do 26. Mär 2020, 09:47

Ich verwende die jeweils aktuellen .Net/ODBC-Treiber und verwende ausschließlich DDL-SQL's.
Somit ist die Erstellung und Verwaltung von Datenbanken vollkommen ODS-Neutral. Die ODS ist eine rein interne Angelegenheit der DB.
Natürlich muss ich beim Upgrade der FB per Save/Restore eine aktuelle Datenbank an die neue Version anpassen.
Aber auch das ist Sache der mitgelieferten "gbak"-Programme.

Meine Meinung:
Tools, die von der ODS-Version abhängig sind, sollten geradezu gemieden werden. Es gibt Alternativen.
Z.B. https://snapcraft.io/squirrelsql
Gerd
Beiträge: 114
Registriert: Di 1. Okt 2019, 17:13

Do 26. Mär 2020, 14:35

Hallo bfuerchau.
bfuerchau hat geschrieben:
Do 26. Mär 2020, 09:47
...
... Es gibt Alternativen. ...
Z.B. https://snapcraft.io/squirrelsql
Zwar nur oberflächlich, aber ich kenne bereits diese Alternative.
bfuerchau hat geschrieben:
Do 26. Mär 2020, 09:47
...
Meine Meinung:
Tools, die von der ODS-Version abhängig sind, sollten geradezu gemieden werden. ...
Wenn es 'nur' darum geht, dass ein Tool keine neue Firebird Datenbank 'createn' kann, weil es noch nicht die erhöhte ODS Version unterstützt, so sehe ICH das im großen und ganzen 'gelassen'. Dann wird es eben derweil mit dem ISQL Tool erledigt.

Es gibt aber noch eine andere Sicht. Der eine oder andere Softwarehersteller, der löblicher weise sogar Sponsor der Firebird Foundation ist und an bekannter Stelle ein kommerzielles Tool anbietet, sollte langsam realisieren, dass es seit längerem (20.02.2019) eine Firebird Version 4.0 Beta 1 gibt und sogar schon eine Beta 2 in der Pipeline liegt. Ich glaube, dass ich schlicht und ergreifend erwarten darf, dass mittlerweile die dahingehend angepasste Version eines dortigen Tools bereits verfügbar sein sollte. (Klingt hier vielleicht etwas hart - ist aber wirklich nicht so gemeint. Und es handelt sich hoffentlich um einen Einzelfall.) Nur dieser Einzelfall ist gerade das von mir favorisierte Werkzeug von dort, welches kostenpflichtig ist, deutlichen Mehrnutzen - also über Firebird hinaus - bietet und seit 2004 offensichtlich sehr mit Hingabe entwickelt wird.
Gerd, bitte erläutere 'Hingabe': Nö, das kann ich hier nicht so rüberbringen. :-)

Was ist denn so der Alltag?
Da besucht jemand die Firebird Download-Seite.
Lädt sich die Firebird v4.0 Beta runter.
Nimmt gleich noch ein grafisches Tool (Kommerziell / Frei) mit.
Möchte mit diesem Tool seine erste Firebird Datenbank erzeugen und bekommt obige sowohl abtörnende als auch vermeidbare Meldung.
Dieser Jemand ist nicht selten meilenweit von '.Net/ODBC-Treiber und ... DDL-SQL's' entfernt.
Es besteht die Möglichkeit, dass er aufgibt und eine Tabellenkalkulation auf seine Daten ansetzt.
Wem gibt er vermutlich Schuld? Nicht dem Tool - unverschuldet trifft es Firebird.

Nein, das soll kein Nörgeln meinerseits sein. Habe mich sogar mit dem Entwickler in Verbindung gesetzt. Er antworte: "I will add it to the next version." Er lässt allerdings offen, wann sie erscheinen wird. Und abschließend. Es geht um die obige Meldung, die, wenn sie auf einen Einsteiger trifft, durchaus ein KO-Kriterium sein kann. Und das es eigentlich vermeidbar wäre ...



Viele Grüße
Gerd
Linux Mint 19.3 Cinnamon 4.4.8
Firebird 4.0 Beta 1, Superserver - ISQL: LI-T4.0.0.1436
Lazarus 2.0.6 - FPC 3.0.4
Benutzeravatar
martin.koeditz
Beiträge: 169
Registriert: Sa 31. Mär 2018, 14:35

Do 26. Mär 2020, 21:03

N'Abend.

Die Problematik beim Erstellen der DB tritt nur auf, wenn das Tool die DB direkt erstellt bzw. eine alte FBClient-Bibliothek verwendet. Nutzt das Programm hingegen den Remote-Firebird-Service, sollte es keinerlei Probleme geben, da das CREATE DATABASE-Statement auf eben dem Remote-System ausgeführt wird. Und dort gibt es die passenden Bibliotheken.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 114
Registriert: Di 1. Okt 2019, 17:13

Do 26. Mär 2020, 21:47

martin.koeditz hat geschrieben:
Do 26. Mär 2020, 21:03
Die Problematik beim Erstellen der DB tritt nur auf, wenn das Tool die DB direkt erstellt bzw. eine alte FBClient-Bibliothek verwendet. ...
N'Abend Martin.

Ich gehe davon aus, dass das so ist.
Nun die Überlegung: Ist das so ein Akt, das entsprechend zu aktualisieren?


Viele Grüße
Gerd
Linux Mint 19.3 Cinnamon 4.4.8
Firebird 4.0 Beta 1, Superserver - ISQL: LI-T4.0.0.1436
Lazarus 2.0.6 - FPC 3.0.4
Benutzeravatar
martin.koeditz
Beiträge: 169
Registriert: Sa 31. Mär 2018, 14:35

Do 26. Mär 2020, 23:15

Naja, ein Hersteller wird versuchen, Geld mit seinem Tool zu erwirtschaften und Kosten zu sparen. Die werden die passenden Bibliotheken erst einbinden, wenn diese aus dem Beta-Stadium heraus sind. Andernfalls müssen die Hersteller diese ständig aktualisieren. Möglicherweise wird die eigene Software instabil. Das wiederum will kein Kunde.

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 147
Registriert: Mo 7. Mai 2018, 18:09

Fr 27. Mär 2020, 09:57

Ich bleibe dabei;-).
Eine DB zu erstellen geht natürlich immer mit ISQL.
Ab da kann ich dann auch im Legacy-Mode mit alten Treibern auf die neue DB zugreifen.
Man muss sich halt nur damit beschäftigen.

Übrigens nutze ich heute noch immer die letzte kostenlose Version IBExpert-Personal. Die funktioniert immer noch bestens da sie auf der jeweils aktuellen FBClient basiert.
Benutzeravatar
martin.koeditz
Beiträge: 169
Registriert: Sa 31. Mär 2018, 14:35

Fr 27. Mär 2020, 10:02

bfuerchau hat geschrieben:
Fr 27. Mär 2020, 09:57
Eine DB zu erstellen geht natürlich immer mit ISQL.
Ab da kann ich dann auch im Legacy-Mode mit alten Treibern auf die neue DB zugreifen.
Man muss sich halt nur damit beschäftigen.
Da kann ich nur zustimmen.
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 114
Registriert: Di 1. Okt 2019, 17:13

Fr 27. Mär 2020, 10:12

Hallo.
martin.koeditz hat geschrieben:
Do 26. Mär 2020, 23:15
Naja, ein Hersteller wird versuchen, Geld mit seinem Tool zu erwirtschaften und Kosten zu sparen. Die werden die passenden Bibliotheken erst einbinden, wenn diese aus dem Beta-Stadium heraus sind. Andernfalls müssen die Hersteller diese ständig aktualisieren. Möglicherweise wird die eigene Software instabil. Das wiederum will kein Kunde.
So könnte sich das Ganze in etwa abspielen.
Auf alle Fälle scheint man da vieles richtig zu machen, denn sonst wäre man nicht 16 Jahre mit der Software am Markt.


bfuerchau hat geschrieben:
Fr 27. Mär 2020, 09:57
...
Eine DB zu erstellen geht natürlich immer mit ISQL.
Ab da kann ich dann auch im Legacy-Mode mit alten Treibern auf die neue DB zugreifen.
Man muss sich halt nur damit beschäftigen.
Korrekt!


Ich hoffe, dass alle, die im Internet nach der Meldung "unsupported on-disk structure for file /home/.../.../.../datenbank.fdb; found 12.0, support 13.0" gesucht haben und hier gelandet sind, weitergeholfen werden konnte.


Vielen Dank für Themenbeiträge von @bfuerchau und @martin.koeditz


Viele Grüße
Gerd
Linux Mint 19.3 Cinnamon 4.4.8
Firebird 4.0 Beta 1, Superserver - ISQL: LI-T4.0.0.1436
Lazarus 2.0.6 - FPC 3.0.4
jhoehne
Beiträge: 21
Registriert: Di 11. Dez 2018, 09:19

Mo 30. Mär 2020, 10:59

martin.koeditz hat geschrieben:
Do 26. Mär 2020, 23:15
Naja, ein Hersteller wird versuchen, Geld mit seinem Tool zu erwirtschaften und Kosten zu sparen. Die werden die passenden Bibliotheken erst einbinden, wenn diese aus dem Beta-Stadium heraus sind. Andernfalls müssen die Hersteller diese ständig aktualisieren. Möglicherweise wird die eigene Software instabil. Das wiederum will kein Kunde.
Es kann aber auch sein, dass der Hersteller seinerseits auf Fremdbibliotheken angewiesen ist, die FB4 noch nicht unterstützen. Beispielsweise unterstützt DevArt IBDAC FB4 nicht. Auf Anfrage bei DevArt hieß es, unterstützt wird erst dann, wenn FB4 offiziell veröffentlicht wird.
--
Joachim
Antworten