Delphi-PRAXiS
Seite 9 von 9   « Erste     789   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CRLab oder FIBPlus als BDE-Ersatz (https://www.delphipraxis.net/97846-crlab-oder-fibplus-als-bde-ersatz.html)

alex517 22. Okt 2007 12:47

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hallo Peter,

Zitat:

So jetzt habe ich Fibplus im Haus und den direkten Vergleich zu IBObjects und IBX.
Mein erster Eindruck:
Beim Vergleich mit den anderen beiden Tools benötigen Fibplus Abfragen etwas mehr Zeit.
Zu diesem Vergleich gibt es ein ganzes Buch (Titel/Autor muß ich erst nachsehen).
Dort wird festgestellt, dass die Komponenten für die Operationen wie Prepare, Open, Fetch, Close, Commit,
Rollback usw sehr unterschiedlich viel Zeit benötigen. Es kommt also sehr auf den konkreten Fall an.
Häufig war jedoch FibPlus am schnellsten.
Ein erster Eindruck wird da wahrscheinlich nicht reichen.

Zitat:

Es kann Zufall sein, aber ich bin am Anfang gleich über 2 Bugs gestolpert.
z.B. pFIBDatabase1.GetTableNames(Tiel,System);
Ist System false, dann werden nur Usertabellen aufgelistet.
Fragt man im folgenden Schritt nach Systemtabellen (System=true), dann erhält man eine leere Liste.
Schaut man in den Quelltext dann sieht man, das die Filterclausel Params[0] zugewiesen wird.
Bei einer erneuten Abfrage mit System=true wird diese nicht gelöscht.
Workaround Filter vor Abfrage manuell löschen.
Kann ich nichts dazu sagen, da ich GetTableNames() noch nie benötigt habe.

Zitat:

Dann habe ich noch ein kleines Verständnisproblem.
Der Parametereditor läßt die Auswahl des Datenprotokolls zu. (NETBUI, TCP/IP).
Die getroffene Auswahl wird aber nirgendwo gespeichert.
In DbParams wird kein Eintrag generiert.
Das wird nicht in in den DbParams sondern im DBName gespeichert.
TCP/IP: server:lw:\pfad
NetBEUI: \\server\lw:\pfad
Novel SPX: server@lw:\pfad

Zitat:

Eine Datenbank läßt sich im Komponenteneditor nur über NETBUI öffnen.
Der Dateiname wird in Server und Dateiname gesplittet und dann nicht immer korrekt zusammengesetzt.
Gebe ich die Parameter aber nur im Objectinspector ein (Databasename und dann Connected) funktioniert es.
Kann ich nicht nachvollziehen, läuft bei mir korrekt über TCP/IP und NETBUI.

Zitat:

Query und Dataset sind im Vergleich etwas gewöhnungsbedürftig.
Was vergleichst du und was ist gewöhnungsbedürftig?

Zitat:

Eine SQL Abfrage ohne Transaction scheint nicht zu gehen.
Es gibt keine SQL Abfrage ohne Transaction, auch ein SELECT läuft immer in einem Transaction-Context!
Wenn du explizit keine Transaction verwendest, so wird auf jeden Fall implizit durch die
Componenten eine benutzt.

Eine Transaction ist in erster Linie die Sicht auf die Daten.
ReadCommitted: es werden nur Daten gesehen die Committed sind.
RepeatableRead: es werden nur Daten gesehen zum Start der Transaktion Committed sind.
....


Zitat:

IbObjects ..
Zitat:

.. überladen und etwas undurchsichtig.
Als größten Mangel sehe ich aber inzwischen die fehlende Compatibilität zu dem Standard Dataset an.
Der probitäre Ansatz verhindert den Einsatz von Drittanbieter-Componenten.
Das war u.a ein Grund für mich von IbObjects zu FibPlus umzusteigen.


alex

hanspeter 22. Okt 2007 13:40

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Die Einstellung im Dateinamen war mir nicht mehr geläufig. Jetzt wo ich es lese, hätte ich es auch wissen können.
Bei IBO und dem Net Provider erfolgt das ja über den Connect-String.
Also danke für den Tip.
Bei mir scheint der Zugriff über TCP/IP nicht zu funktionieren.
Das kann aber daran liegen, dass ich aus einer VM über das virtuelle Netzwerk auf den Server(Host PC) zugreifen will.
Ich ersetze IBO in einem vorhandenen Projekt. Da war das Einlesen von Readonly Daten nicht in Transactionen gekapselt.
Mit Gewöhnungsbedürftig meine ich übrigens nicht unbedingt schlechter.
Bisher habe ich halt eine Query nicht mit ExecQuery geöffnet.

Die Abfragezeiten bestimme ich in einem Projekt. Hier generiert ein Druckgenerator für Fastreport 4 die Druckdaten und
benötigt im konkreten Fall pro Druckzeile 3 bis 4 SQL Abfragen.
IBObjects schwankt im Bereich 2 - 3 ms pro Abfrage und Fibplus im Bereich 3 - 4 ms.
Ist aber von zweitrangiger Bedeutung.

Mit Gruß
Peter

Hansa 22. Okt 2007 13:53

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Lese gerade, Du benutzt FIBQuery ? Warum das ? IMHO ist das eigentlich überflüssig und nur aus irgendwelchen Kompatibilitätsgründen überhupt miit dabei. Würde mich nicht wundern wenn es wegen überflüsigem Code etwas langsamer ist, als FIBDataSet. Zum Rest : kann das auch nicht nachvollziehen. Unter dem Aspekt, dass sogar IBExpert mit FIBPlus programmiert ist : Bug eher unwahrscheinlich. Falls doch Bug würde ich den mal melden !

hanspeter 22. Okt 2007 14:34

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Zitat:

Zitat von Hansa
Lese gerade, Du benutzt FIBQuery ? Warum das ? IMHO ist das eigentlich überflüssig und nur aus irgendwelchen Kompatibilitätsgründen überhupt miit dabei. Würde mich nicht wundern wenn es wegen überflüsigem Code etwas langsamer ist, als FIBDataSet. Zum Rest : kann das auch nicht nachvollziehen. Unter dem Aspekt, dass sogar IBExpert mit FIBPlus programmiert ist : Bug eher unwahrscheinlich. Falls doch Bug würde ich den mal melden !

Doch der Effekt ist reproduzierbar.
An der Stelle jedoch nicht so wichtig könnte sich an anderer Stelle aber auswirken.
Im Modul TpFIBDatabase.GetTableNames(...

Delphi-Quellcode:
if not WithSystem then
    Params[0].asString:='and RDB$SYSTEM_FLAG = 0'
Beim erneuten Verwenden der Query wird Params[0] nicht gelöscht.
Nach Aufruf mit WithSystem = false ist die Einstellung nicht mehr rücksetzbar.

Hier reicht ein else Zweig.

Delphi-Quellcode:
if not WithSystem then
    Params[0].asString:='and RDB$SYSTEM_FLAG = 0'
else Params[0].asString:='';
da die Query hier mit
Delphi-Quellcode:
qry := GetQueryForUse(vInternalTransaction,TablesSQL);
global bereitgestellt wird, weis ich noch nicht, wo sich der Effekt noch auswirken kann.

Query und/oder Dataset ist sicherlich eine interessante Diskussion.
Ich verwende die Query nur dort, wo ich eine einzelne SQL Anweisung oder einen einfachen Cursor benötige.
Da in der Query einiges an Overhead fehlt, meine ich das die Abarbeitung schneller ist.
FIBPLUS geht übrigens intern den gleichen Weg.


Gruß
Peter

Boro 29. Okt 2007 11:46

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hallo,

hat jemand Erfahrung wie geht FIBPlus mit Turbo Delphi Pro ?

Mit der Instalation der 6.7 Trial Version hatte ich Schwierigkeiten. Mit der 6.8 war Installation schon Problemlos.
Viele der example Projekte haben aber Probleme, wie z.B.
Zitat:

[Pascal Fatal Error] Unit1.pas(39): F1026 File not found: 'pFIBDataSetOptions.dcu'
. Diese Datei (und uberhaupt keine pFIBDataSetOptions.*) gibt es nicht in der trial Version sowohl und auch an der ganzen Festplatte nicht. Auf der Support Ticket bieten dazu keine Lösung, aber bestädigen mir die Idee das es die Fehler mit der Vollversion (mit Source Datein) nicht gäbe und das mit der Turbo Version gab es immer Probleme mit der Verwendung der precompiled .dcu files.

Kann jemand bestätigen gute Erfahrung mit FIBPlus und Turbo Pro ?

Boro

mkinzler 29. Okt 2007 11:55

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Aber wenn eine benötigte dcu nicht vorhanden ist kann es eigentlich nicht an der verwendeten IDE liegen.

Boro 29. Okt 2007 12:45

Re: CRLab oder FIBPlus als BDE-Ersatz
 
mkinzler, die Unabwesenheit der Datei vieleicht hangt nicht von der IDE ab. Aber vieleicht ist die Instalation IDE abhängig.

Es gibt aber auch andere Fehler wie z.b. bei der individuellen Offnung eines example Projektes (Events)
Zitat:

Error reading dt.ReceiveEvents.Strings: Property ReceiveEvents does not exist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
Seite 9 von 9   « Erste     789   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz