Delphi-PRAXiS
Seite 6 von 9   « Erste     456 78     Letzte »    

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)

hoika 29. Aug 2007 08:27

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hallo,

auch wenn mschaefer die Werbetrommel rührt ;)
ne, im ernst.

ZEOS war für mich auch in der Pipeline.
Nur : Es gibt bisher kein HardCommit, nur SoftCommits.

Und das ZEOS-Team sagt, mal sehen, wenn Zeit ist.

Wer jetzt sagt na und, hat die MGA Firebird nicht verstanden.

Das Umstellen auf andere DB's kann man auch über bridge pattern machen.


Heiko

phlux 29. Aug 2007 08:39

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Ich verfolge den Thread hier schon ne weile, eine Frage am Rande (bin ja noch Azubi :mrgreen: ) was sind denn harte und softe Commits?

mkinzler 29. Aug 2007 08:52

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Bei harten Commits, wird die Transaktion richtig abgeschlossen, bei Softcommits werden die Änderungen zwar zurückgeschrieben aber nicht endgültig abgeschlossen (CommitRetaining)

phlux 29. Aug 2007 09:13

Re: CRLab oder FIBPlus als BDE-Ersatz
 
ah, comprendo! :dp:

hoika 29. Aug 2007 09:33

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hallo,

naja, das ist die technische Erklärung.

Der Vorteil ist, eine SoftCommit ist schneller
(auf Cleint-Seite) als ein hardcommit.

Nun zum Problem damit.

FB führt ja eine Liste der laufenden Transaktionen mit,
bei softcommits bleibt die Transaktionsnummer gleich,
die "Transaktionsmaske" auf dem Server wird immer grösser,
weil FB immer alle aktiven Transaktionen im Auge behalten muss.
-> der Speicherverbrauch wird immer grösser.


Das äussert sich dann in solchen Sätzen wie
"Mein Programm wird mit der Zeit immer langsamer,
wenn der Server neu gestartet wird,
geht es wieder ganz schnell, aber mit der Zeit wird es wieder langsam"

Die Ursache können nat. auch lang laufende Transaktionen sein
(jaja, in IB7 wurde zumindestens bei read-only was dagegen getan).

Das ganze lässt sich schön bei Andreas Kosch nachlesen.


Heiko

alex517 29. Aug 2007 10:21

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hi,

@Hansa
Zitat:

Zitat von Hansa
Einer der besten IB/FB - Spezialisten (Alex517) was benutzt der ? FIBPlus.

Da kommt man nichts ahnend aus dem Urlaub und wird auch noch so gebauchpinselt!:oops:
Als beste Spezialisten würde ich Holger Klemt(IBExpert) oder Thomas Steinmaurer nennen.
Bis zu denen fehlt mir noch eine ganze Menge. Aber trotzdem vielen Dank. :-D

@Hagen
Zitat:

Zitat von negaH
Alex benutzt FIBPlus und Firebird und er hat mich vollständig überzeugt.
zZ. muß ich mich mit MS-SQL7 rumschlagen kein Vergleich zu FIBPuls+IBExpert+Firebird.
Und wer mich kennt weiß wie schwer es ist mich so zu überzeugen.

Hagen, die 3 Wochen in Eisenach habe ich noch in lebhafter Erinnerung!
Und "Schwer" ist in diesem Zusammenhang durchaus diplomatisch ausgedrückt. :-D
Wir müssen mal wieder telefonieren.


Jetzt zur Fragestellung:
Gleich vorweg, CrLab habe ich nie getestet.
Ich habe vorher mit IBO gearbeitet und kann mich da nur der Meinung von RavenIV anschließen.
In Zeos, bitte mich zu korrigieren, ist nur eine Transaction pro Connection möglich.
Damit kann man die Vorteile, die die Verwendung des Transactionmanagement bietet, nur eingeschränkt nutzen.

FibPlus hingegen unterstützt die Arbeit mit Transaction.
Z.B kann das FibDataSet zum Lesen und Schreiben unterschiedliche Transactionen verwenden.
Vorteil:
- schreibende Transactionen auf die Dauer des Scheibens begrenzt
- Änderungen können Hard-Committet werden(schönes Denglish), während das Dataset weiter offen bleibt
- lesende Transactionen laufen mit accessmode Readonly , damit wird die Last auf dem Server verringert.
Siehe Access modes


Eine weiter nützliche Sache ist die Unterstützung von Macros.
Damit kann man sehr flexibel UND bequem Abfragen "von Hand" zusammenbauen.
z.B.
SQL-Code:
 
  select ID, NachName, Vorname, Typ
  from Person
  @@Filter@
  @@Order@
Delphi-Quellcode:
  case AFiterArt of
  1: begin
       dtsPerson.ParamByName('Filter').AsString := 'where NachName like :NachName';
       dtsPerson.ParamByName('NachName').AsString := ANachName+'%';
     end;
  2: begin
       dtsPerson.ParamByName('Filter').AsString := 'where Typ = :Typ';
       dtsPerson.ParamByName('Typ').AsInteger := ATyp;
     end;
  3: begin
       dtsPerson.ParamByName('Filter').AsString := 'where Typ in (:Typen)';
       dtsPerson.ParamByName('Typen').AsString := ATypenListe;
     end;
  else
    dtsPerson.ParamByName('Filter').Clear; // Nicht vergessen!!
  end;

  if AOrder <> '' then dtsPerson.ParamByName('order').AsString := AOrder
    else dtsPerson.ParamByName('order').Clear; // Nicht vergessen!!
Verwendet man die SQLMonitor von FibPlus, so werden die gesetzten Parameter ebenfalls protokolliert,
was bei der Fehlersuche sehr von Vorteil ist.

Nicht zu vergessen ist auch die Möglichkeit der lokalen Sortierung im FibDataSet nach
ein oder mehreren Feldern, ohne dass die Datenmenge nochmal vom Server mit einem geänderten "Order by.." geholt werden muss.

Noch was zu der häufig erwähnten Möglichkeit, mit den gleichen Komponenten
verschiedene Datenbanken ansprechen zu können (z.B. Zeos):
Bisher kenne ich keinen Kunden (erst Einzelhandel, jetzt Pflegedienste),
der mir vorgeschrieben hätte, welche Werkzeuge (Compiler/DBs)
ich zur Erreichung der Funktionalität der Software verwenden soll.
Wichtig ist nur das Ergebnis.
Damit entscheide ich als Entwickler was sinnvoll ist und was nicht.
Mir sind Komponenten die genau auf die Datenbank zugeschnitten und alle Funktionalitäten der
DB unterstützen wichtiger, als die welche die nur den kleinsten gemeinsamen Nenner verschiedene DB bieten.


Also, wenn jemand Komponenten für den Zugriff auf IB/FB sucht
kann ich FibPlus nur empfehlen:
-schnell
-stabil
-komfortabel
-immer auf dem neuesten Stand der Entwicklung
-guter Support
-entsprechen dem Borland/CodeGear-Standard
-gut dokumentiert
-sind ihren Preis wert



alex

hoika 29. Aug 2007 12:12

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hallo,

stuemmt, eine Transaction pro Connection,
das hatte ich noch vergessen, zu erwähnen.
Bei einer Umstellung Bde-ZEOS ist das sogar ganz nützlich:

TDataBase.StartTransaction -> TZConnecon.StartTransaction

Wenn man FB allerdings richtig ausreizen will,
sind mehrere Transactionen pro Connection natürlich schön.

Ein anderes nettes Feature ist das Wiederherstellen
des Status, wenn mal die Verbindung weg war.
Und mit Status sind auch offene Queries gemeint.


Heiko

alex517 29. Aug 2007 12:57

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Zitat:

Zitat von hoika
Hallo,
Ein anderes nettes Feature ist das Wiederherstellen
des Status, wenn mal die Verbindung weg war.
Und mit Status sind auch offene Queries gemeint.

Irgendwo habe ich gelesen das zu diesem Zweck
mit CachedUpdates gearbeitet werden muss.
Durch das Verlieren der Connection wird zwangsläufig
auch die Transaktion beenden.
Durch CachedUpdates bleibt die lokale Datenmenge trotz
beendeter Transaktion offen und kann nach einem Reconnect
weiter verwendet werden.
Damals hat mich der Zusätzliche Aufwand der CachedUpdates
abgeschreckt, so das ich mich nicht mehr darum gekümmert habe.
Allerdings ist das schon eine ganze Weile her, gibt es in
zwischen neue Erkenntnisse?

alex

hoika 29. Aug 2007 13:00

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Hallo,

ich meinte mit dem netten Feature FIBPlus,
und so wie ich das gelesen habe, geht das automatisch.


Heiko

alex517 29. Aug 2007 13:28

Re: CRLab oder FIBPlus als BDE-Ersatz
 
Zitat:

Zitat von hoika
ich meinte mit dem netten Feature FIBPlus,
und so wie ich das gelesen habe, geht das automatisch.

ich auch. Hast du mal einen Link?

alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.
Seite 6 von 9   « Erste     456 78     Letzte »    

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