-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Diplomarbeit - ORM Benchmark - Problem mit Hibernate c3p0
PostPosted: Tue Jan 31, 2006 11:05 am 
Newbie

Joined: Mon Jan 30, 2006 10:53 am
Posts: 3
Hi,

ein Freund von mir und ich schreiben gerade unsere Diplomarbeiten an der RWTH Aachen. Unser Thema ist die Entwicklung eines Benchmarks für Datenbankzugriffsschichten (DBZ), wie z.B. Hibernate 3. Wir haben ein kritisches Problem mit Hibernate bei Verwendung von c3p0 als Connection Pool, da sich unser Logging Mechanismus nicht mit Multithreading im Connection Pool verträgt. Den in Hibernate eingebauten Pool wollen wir aus Performanz-Gründen nicht verwenden...


Systembild
Vlt zuerst eine kurz Übersicht zum Benchmark. Unser Benchmark simuliert ein multi-user System, deren Benutzer auf die DBZ Zugreifen. Jeder Benutzer wird auf einen eigenen Thread abgebildet. Die Benutzer nennen wir Zugriffsmuster (im Bild AccessPattern).

Image

Die Aufgabe des Loggers ist es, jeden Aufruf eines Benutzers and die DBZ zu loggen, und dabei nicht nur die benötigte Zeit innerhalb der DBZ zu messen, sondern auch die Zeit die in der DB benötigt wurde für diesen Aufruf. Dafür muss der Logger jeden aus einem DBZ Aufruf resultierenden DB Aufruf dem DBZ Aufruf und dem Benutzer des Aufrufes zuordnen können. Z.B.: ein Aufruf an session.beginTransaction() erzeugt einen DB Aufruf getAutoCommit(). Diese beiden muss der Logger nicht nur einander, sondern auch dem korrekten Benutzer zuordnen können.
Weiterhin muss unser logging nicht-invasiv sein, d.h. wir dürfen keinen bestehenden Sourcecode verändern. Deswegen haben wir uns für Adapter entschieden.


Das Problem
c3p0, der von Hibernate bevorzugte Connection Pool, hält seine Connections in seperaten Threads(ThreadPoolAsynchronousRunner). Dadurch finden wir keine Möglichkeit, wie wir einen DBZ Aufruf mit den den daraus resultierenden DB Aufrufen in Verbindung bringen können.

Mit dem in Hibernate eingebauten Connection Pool ist dies kein Problem, aber laut Dokumentation soll dieser ja nicht verwendet werden aus Gründen der Performanz. Was können wir also tun?


Vielen Dank für eure Hilfe.

Mit freundlichen Grüßen,
Firat Alagöz


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.