AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Transaction-Management
Thema durchsuchen
Ansicht
Themen-Optionen

Transaction-Management

Offene Frage von "smudo"
Ein Thema von smudo · begonnen am 7. Okt 2008 · letzter Beitrag vom 7. Okt 2008
Antwort Antwort
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#1

Transaction-Management

  Alt 7. Okt 2008, 14:07
Datenbank: Interbase/Firebird • Version: 6.2/2.0 • Zugriff über: IBX
Ist-Analyse: Wir benutzen Datenzugriffsklassen welche auf eine DB-Connection und eine dazugehörige Transaction zeigen. Nachteil: Alle Klassen nutzen die selbe Transaktion. Das wirkt sich negativ aus, wenn beispielsweise über COM auf das Programm zugegriffen wird, da keine getrennte Transactionsteuerung möglich ist.

Ziel: Die Datenzugriffsklassen sollen aus einem Transactions-Pool eine freie Transaction zugewiesen bekommen, sodass eine getrennte Transaction-Steuerung für unterschiedliche Prozesse möglich wird.

Eine Möglichkeit wäre das Zuweisen einer Transactionreferenz beim Create einer Klasse. Die oberste Klasse bekommt über einen Manager beim Create eine freie Transaction zugewiesen. Jede weitere durch diese Klasse erzeugte Datenzugriffsklasse bekommt diese Referenz weitergegeben.

Problem: Es wäre ein kaum zu bewältigender Aufwand, das Create umzustellen. Es müsste der Constructor jeder Klasse angepasst werden, sowie jeder Aufruf des Constructors geändert werden. Gibt es eine andere Möglichkeit, dieses Problem zu lösen?

Vielen Dank im Voraus
René
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Transaction-Management

  Alt 7. Okt 2008, 14:46
Wie referenziert ihr denn eure Transaction? Wie wollt ihr die Bereiche, die auf die gleiche Transaction gehen sollen kennzeichnen bzw. die Bereiche, die unterschiedliche verwenden sollen trennen?
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Transaction-Management

  Alt 7. Okt 2008, 14:55
Vielen Dank, dass Du meine Fragestellung nochmal auf 2 Zeilen gekürzt hast
Wie geschrieben: Die Transaction soll aus jeder Datenzugriffsklasse referenziert werden. Der zuerst erzeugten Klasse wird diese Referenz über einen Manager zugewiesen. Diese Referenz soll dann an jede von dieser Klasse erzeugten Klasse weitergegeben werden.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Transaction-Management

  Alt 7. Okt 2008, 15:07
Also wenn ich das richtig verstehe habt ihr irgendwo eine globale(?) Variable für eure Transaction und auf die greifen alle Klassen zu? Oder liegt die auf nem DM?

Es läuft also derzeit eine Instanz der Anwendung und alles greift auf die gleiche Transaction zu. Zukünftig soll dann die erste erstellte Datenklasse sich ne Transaction schnappen und an die "children" weitergeben?

Gibt es irgendwelche sonstigen Informationen, die ihr durch die Klassen durchschleift? Also irgendwas an dem man erkennen könnte, dass sie zusammen gehören?
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Transaction-Management

  Alt 7. Okt 2008, 15:46
Die Transaction liegt auf einem DM.

Mitgeschliffen wird momentan leider nichts.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.465 Beiträge
 
Delphi 12 Athens
 
#6

Re: Transaction-Management

  Alt 7. Okt 2008, 17:33
Ein möglicher Ansatz für Anwendungsfälle, die mit einer eigenen Transaktion arbeiten sollen:

Die Datenmodule werden nicht über eine globale Variable referenziert, sondern jeder Anwendungsfall erzeugt sich bei Bedarf ein fachliches Transaktionsobjekt und fordert benötigte Datenmodule von diesem an. Das Transaktionsobjekt erzeugt und verwaltet intern z.b. eine IBX-Transaction und die Datenmodule. Wird ein Datenmodul erzeugt, wird die IBX-Transaction über Components jeder Komponente zugewiesen. Bei Freigabe des Transaktionsobjekts werden auch alle Datenmodule freigegeben (alternativ ist auch ein Pool für Datenmodule denkbar).
  Mit Zitat antworten Zitat
squetk

Registriert seit: 29. Aug 2004
Ort: Cottbus
118 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Transaction-Management

  Alt 7. Okt 2008, 18:00
Zitat:
sondern jeder Anwendungsfall erzeugt sich bei Bedarf ein fachliches Transaktionsobjekt und fordert benötigte Datenmodule von diesem an
Das will smudo ja - ich habe das so verstanden, dass er dieses Transactionsobject jeder Datenzugriffsklasse mitgeben will, aber nicht den Constructor anpassen möchte, um sie durchzuschleifen.

Die Frage ist, ob man das Transaktionsobject oder eine zuständiges Managerobject z.B. anhand der Thread-ID innerhalb der Datenzugriffsklasse ermitteln kann. Wobei es so zu sein scheint, dass die COM-Automatisierung nicht in einem Extra-Thread läuft - oder ist dies eine Einstellungssache?

Ich denke mal jeder Thread benötigt im Normalfall nur eine Transaction.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
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