RE : [mdr-dev] RE : [mdr-dev] RE : [mdr-dev] RE : [FwdT: Re: [mdr-dev] JDBC persistence]

"Olivier RICHAUD" <[email protected]> Thu, 29 Jan 2004 08:55:34 +0100
Newsgroups gmane.comp.java.netbeans.modules.mdr.devel
Message-ID <[email protected]>
My opinion is that the easiest way for people developping application which
integrates various transactional is to join a global transaction. With
application servers and EJB, this is easy if the transaction is container
managed. I mean, the transaction is started by the container before the
method of the bean, and unless setRollbackOnly is called, the container
commit resources upon completion. This not only works for entity beans but
for other systems too : for example, we let entity beans aside because they
didn't fit our needs and replaced them with hibernate's persistent object.
Because Hibernate seamlessly integrates with application containers.

Concerning DR, and as long as I have understood the way it works, the
MDRManager is sort of transaction and persistence manager (Martin correct
please if i'm wrong). It handles concurrency with internal mutex.
Transaction are demarcated and the repository locked either in read only
mode, or exclusively in read/write mode. Hopefully, the application we are
building is essentially oriented towards consulting data and few
modificiation occurs. 

Another approach might be, but I haven't enough experience to talk a lot
about this, to rely on a database and use JDBC. Maybe this could help
integrate a transactional system.

Concerning Farago, relying on a transaction manager managed by an
application server would help users a lot. Again, the transaction
demarcation would be easy to understand and users wouldn't have to get rid
of a new transactional model. Take our application :
- an XML database which servces as a cache : it stores XMI documents
contained datasets produced by MDR and we run Xpath queries on it (why :
because MDR/JMI doesn't support powerful query language and Xpath is easy
and powerful)
- MDR itself
- a RDMBS for some other persistent data (user accounts, system data, ...)
As of today, none except the RDBMS can join a global transaction managed by
the container. We had to develop our tiny manager wich commits this 3
components in the right order. 

Regards.

Olivier.

-----Message d'origine-----
De : John V. Sichi [mailto:[email protected]] 
Envoyé : mercredi 28 janvier 2004 20:41
À : [email protected]
Objet : Re: [mdr-dev] RE : [mdr-dev] RE : [mdr-dev] RE : [mdr-dev] RE :
[FwdT: Re: [mdr-dev] JDBC persistence]


I'm going to be facing a similar problem soon, since in the Farrago DBMS 
project, MDR manages the metadata and a separate component manages 
relational data storage.  The reason I developed the JDBC storage layer 
is so that I can unify the two.  Immutable boot metadata about system 
tables will be stored in an MDR btree file; user data and metadata about 
user tables will be stored in relational tables.  In order to be able to 
mix DDL and DML in one transaction, I'll need to make the MDR 
transaction boundaries match the Farrago transaction boundaries.  I can 
solve the problem since I have top-level control, but it would be 
simpler if the components could participate in a larger transactional 
context as you describe.

JVS

Olivier RICHAUD wrote:
> [Slight out of topic]
> Of course, this is far beyond a JDBC persitency layer, but this should
> be the right direction for MDR, especially in standalone mode. And 
> this is not only address Jboss, but any application server. This is 
> the problem of this kind of tool : none integrates a standard 
> transactional mechanism and all develops their transactional 
> mechanism. For example, this is the case in our tool : this would have 
> been so easy if the XML database, the persistent objects and the MDR 
> had a way to join the current transaction.