![]() |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Vorab : Zeos ist bei mir ziemlich schnell aus dem Rennen gewesen, und zwar hauptsächlich wegen der Multi-DB Unterstützung. Ich kann mir nicht vorstellen, daß in einer der unterstützten Datenbanken eine optimale Performance erreicht werden kann und alle Funktionen überhaupt implementiert sind. Da ein Endanwender nur selten nach der DB frägt ist das IMHO Blödsinn :mrgreen: Habe das jedenfalls noch nicht erlebt. Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Zum Thema Performance kann dir z.B. verraten das Zeos (zumindest beim Firebird) eine Top-Platzierung schafft. Vergleichen wir Zeos mit den IBObjects, eine Sammlung nur für die Verbindung mit dem Firebird, ist Zeos überlegen/schneller. In einigen Belangen/Konstellationen sogar deutlich schneller. Nehmen wir mein weiter oben erwähntes Open-Problem: Zeos ist eine ganze Sekunde schneller. Ein anderer Vertreter UIB hingegen lässt auch Zeos weit hinter sich. Aber die Ursache dafür liegt wohl nicht an der Spezialisierung, sondern am Komfort. Die IBO's haben viel "Komfort-SchnickSchnack", was die IBO's wohl etwas träge macht. UIB konzentriert sich auf das Wesentliche. Funktionsumfang könnte ein Punkt sein. Aber Zeos beherscht alles was du auch mit den Standard-Komponenten in Verbindung mit der BDE kannst. Zumal die Anforderung bei einem einfachen Programm nicht so hoch sein können. SQL-Anweisungen kannst du mit jeder DB-Sammlung absetzen. Und damit hast du alle Funktionen implementiert. Möchtest du ein Wartungstool oder ähnliches machen, sieht es natürlich anders aus. Du hast keine Backup/Restore-Komponenten, kannst keine Benutzer verwalten oder Performance-Analysen machen. Wobei sich gbak, gfix und gsec problemlos in das eigene Programm "integrieren" lassen Zitat:
edit: Nachdem ich mir UIB und Zeos angesehen habe, möchte ich doch noch meine Meinung zum Ursprung des Themas kund tun. Zitat:
UIB konnte mich durch die Geschwindigkeit und durch das stetig wachsende Zubehör begeistern. Schade finde ich es das keine Query existiert welche Daten bearbeitet und datensensitive Steuerelemente bedient. Vermissen tue ich auch die Möglichkeit gejointe Datenmengen zu bearbeiten. Beides kann zwar durch ein zusätzliches Packages, in Form einer weiteren Komponente, nachgerüstet werden, aber das wirft bei mir Fragen auf: Warum ist es ein extra Package? Kommt es von einem Dritten? Wie gut ist es integriert und wie Update2Date wird es gehalten? Mein Fazit: Sehr interessant. Aber einsetzen würde ich sie nur in kleinen Programmen oder in Modulen in denen es auf Geschwindigkeit ankommt (zumindest bis sie mein Vertrauen erweckt haben). Ignoriert man das Commit-Retaining, kann ich zu Zeos nichts negatives berichten. Sie sind schnell und lassen nichts vermissen. Begeistert hat mich die Möglichkeit gejointe Datenmengen bearbeiten zu können. Aber nicht nur die Hauptdatenmenge sondern auch die gejointen Daten. Mit einer Query und auf einen Schlag. Ebenfalls erfreulich: Multi-DB. Es bleibt, bei einer DB-Umstellung, natürlich jede menge Arbeit zu erlerdigen (Trigger, SP's, DB-Dialekte), aber ein anderer Teil an Arbeit entfällt. Mein Fazit: Ich würde es auf ein Versuch ankommen lassen. |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Da ist ja noch mehr : Zitat:
Delphi-Quellcode:
Transaction.SetSavePoint ('SAVEPOINT1');
... // weitere Eingaben Transaction.SetSavePoint ('SAVEPOINT2'); ... // weitere Eingaben Transaction.RollbackToSavePoint ('SAVEPOINT1'); // uff, verhauen->zurück. Am besten sogar zu Savepoint1 ... // ab da wieder weitermachen Transaction.Commit; // endlich fertig |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
nette Diskussion habe ich angestossen. Aber wie ich schon selbst festgestellt habe, werde ich erst mal die Finger von ZEOS lassen. Zu Transaktionen: ja ein TConnection (also eine Client-Verbindung zur Datenbank, also eine TDataBase der BDE) kann unter ZEOS nur eine Transaktion gleichzeitig bedienen. Eine TConnection -> TTransaction -> TQuery gibt es nicht, es wird alles über die TConnection angestossen, wie man es halt von der BDE gewohnt. Natürlich können mehrere Transaktionen gleichzeitig laufen, dann aber über je eine TConnection (also DB-Verbindung). Apropos BDE, ich weiss, dass sie tot (deprecated) ist. Aber ich habe hier ein Programm mit ~ 900000 Zeilen Code zu warten, dass läuft halt noch damit. Zum damaligen Zeitpunkt (1995) gab es weder ibx, noch fiblus usw ;( Für mich KO-Kriterium ist allerdings, dass es keine HardCommits gibt, jedes Conn.Commit erzeugt ein Commit Retaining ! Schön für die Performance, wenn man die Connection nach getaner Arbeit sofort wieder schliesst. Lasse ich die aber offen, weil ein Connect ohne Connection-Pool lange dauert, steigt der FB irgendwann aus. Die Lösung im ZEOS-Forum heisst "Mache ab- und zu die Connection zu und wieder auf" Das schlimme ist, es lässt sich hält nicht einstellen. Die BDE hatte immer ein hardcommit gemacht (es sei denn, man benutzt die driver flags). Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Die Frage verstehe ich nicht:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
ja ich hätte gern 2 Transaktionen :-D In diesem Fall ist es so, dass ich mit pessimistischen Sperren arbeiten möchte, also z.B. Person wird gesperrt, bevor sie bearbeitet werden kann. Jetzt könnte man das per select for lock (oder so ähnlich machen) oder man schreibt innerhalb einer Transaktion update person set id=:id um das innerhalb der Transaktion schon zu sperren. Ich schreibe aber ein Sperrprotokoll mit, wie drinsteht personalid=5 ist gesperrt. Die Sperre wird per Timer (oder Thread) alle 1 min aktualisiert. Und da isses :wall: Diese Aktualisierung soll natürlich in einer eigenen Transaktion (mit read committed) laufen und darf andere DB-Sachen nicht beeinflussen. Per BDE und ZEOS muesste ich jetzt eine neue Connection (TDataBase/TConnection) erzeugen. Per IBX/UIB wird einfach eine 2. Transaktion erzeugt. Das heisst, kein neues Connect. Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Das hat doch alles nichts mit einer einzigen möglichen Transaktion zu tun ? Und ob. Nur kurz : es geht um Deadlocks, Datenkonsistenz usw. Natürlich kann man sofort Committen, aber dann kann man jegliches Rollback vergessen. Habe nicht umsonst nach RollBackToSavePoint gefragt. Vermute mal, daß bei Zeos verstärkt CommitRetaining zum Einsatz kommt. Nur, was soll man denn mit sowas auf Dauer ? Gut, kann jetzt nur genau sagen, wie es bei FibPlus aussieht. Woanders (außer bei Zeos) dürften zumindest aber mehrere Transactions möglich sein. Handelt es sich sogar um viele Netzwerk-User, dann ist es unbedingt nötig zumindest 2 Transactions zu benutzen. Eine lesende und eine schreibende. Die lesende kann ruhig länger dauern (die berühmte Kaffeepause, die viel länger wird als geplant). Dann stellt man die Isolation-Levels der Transactions nach jeweiligem Bedarf ein und irgendwann gehts dann wie gewünscht. Aber auch im Netz zu 100 %. Wichtig hierbei ist jedoch, daß alle DB-Aktivitäten im Kontext dieser beiden Transaktionen laufen. In FIBplus hat man bei einem Dataset z.B. außer der Standard-Transaction im OI auch eine UpdateTransaction. Die muß man eben den Datasets zuordnen. Eine weitere Database-Komponente mit anderer Transaction nützt da überhaupt nichts. Aber ich verstehe auch einiges nicht. 8) Z.B. das : Zitat:
Und hoika, bei 900000 Zeilen dürfen die DB-Zugriffskomponenten keinen Cent kosten, oder wie ? :shock: Was kostet es denn, 4 Wochen das Programm abzuändern auf Zeos, dann zu merken, daß es nicht geht, dann nochmals 3 Monate für UIB aufzuwenden, wo die Hälfte fehlt ? Nur, um 200 EUR zu sparen ? :gruebel: Kurz noch zu Deinem beabsichtigten Locking. Guck Dir mal die Transaction-Isolation-Levels genauer an. Locking braucht man eigentlich bei einer MGA-Architektur nur selten. Habe einen Fall, da wirds wohl verwendet werden. In FIBplus habe ich hierzu eine function Dataset.LockRecord und fertig. Guck Dir das doch auchmal an. Die Trial ist zeitlich unbeschränkt und in der Funktionalität bei relativ unwichtigem eingeschränkt. Falls Du damit anfängst, das Programm zu modernisieren und Dich stört beim konkreten realen Einsatz der Splash-Screen, der bei der Trial kommt, dann treibe bis zur Fertigstellung irgendwie die 200 EUR auf. :mrgreen: Sehe gerade IBX ? FB-Locking ? Sie habens doch gesagt, nix FB ! Also besser gleich vergessen. |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
ZEOS benutzt nur Commit Retaining. Es ist nichts anderes einstellbar ! Zum Locken. Ich will ja gar nicht den Datensatz physisch locken, ich locke über eine Sperrtabelle. Lock heisst, dass das Programm z.B. eine Person sperrt, damit ein anderer Client nicht gleichzeigt schreibend auf Daten zugreifen kann. Eine Person wird auch dann gesperrt, wenn z.B. ihre Urlaubsdaten bearbeitet werden, obwohl die in einer ganz anderen Tabelle sind. Das mit dem select for update war ja nur so eine ähnliche Sache. Naja, muss ich wohl die 200 EUR am Bahnhof erschnorren ;) 3 Monate zum Umstellen sind ilosorisch (sieht komisch aus das Wort ;) ) Das geht eh nur im laufenden Betrieb, also bridge pattern einbauen. Das dumme ist, es sind ein "paar" TTable auf Forms dabei ... Ich hatte mir dass so gedacht TBaseQuery = class end; TBdeQuery = class(TBaseQuery) end; TFIBPLusQuery = class(TBaseQuery) end; und dann über class factory die gewünschte Query erzeugen. Ich muss in Notfällen immer schnell zur BDE zurückkommen können. Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Besser ist es so: illusorisch Ich weiß, sprachliche Feinheiten :roll: Nix für Ungut :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
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