On Fri, 2003-01-10 at 22:44, Schnitzer, Jeff wrote:

> > Which is probably why no-one has developed a commercial solution for
> the
> > problem.
> 
> Eh?  What was Gemstone/J?

I have no idea.  It is not a product that I am familiar with.  But if it
is as you suggest, a native CMP store such as the one I was describing,
I'd be grateful if you could post a URL with more information as it
might be something (as I have mentioned elsewhere) that I might be
interested in.

I had a look on their site and the only thing I could find was their CMP
accelerator, which still seems to use an underlying RDBMS and doesn't
seem to be what I was talking about.


> RDBMSes (and the myriad tools surrounding them) have evolved under
> real-world pressures over the last 30+ years.  The concept (and a
> half-dozen different implementations) are about as refined as enterprise
> software gets.  It will be a long time before it has been proven "safe"
> to store mission-critical data anywhere else.

I have to disagree here.
RDBMS technology is mature and been around for 30 years but that doesn't
mean anything.  C has been around for longer but would you suggest that
we write all of our new code in C?
Many seem to be confident programming in Java, C# or C++ which if you
like are the "next generation" of C.  Why should databases be any
different?  Postgres is based on RDBMS principles, but also contains
many object oriented features.  In fact the authors call it an Object
Relational database management system.
It is arguable that the reason why we have EJB and hibernate in the
first place is because RDBMSes have not evolved sufficiently enough.  

Many of the concepts in J2EE have been around for 30+ years as well but
J2EE itself is very new and still growing.  That hasn't prevented it
from becoming a market leading enterprise technology.

I will agree partially with your last point about data safety.  There
isn't a lot out there as an alternative to RDBMS (which I believe is
what I was saying anyway) but is that because it is technically not
possible? I doubt it.

> IMHO, trying to create a general-purpose persistence mechanism that
> abstracts both RDBMS and ODBMS data stores is foolish.

Why would you need to do this anyway? 
I was suggesting that CMP data is stored natively (i.e. no abstraction)
and RDBMS functionality is provided through an emulation layer.

If your database is to be used primarily as a CMP store, why not
optimise it for that job and provide emulated relational access as a
"legacy" layer?

This would be no different from an O/R mapped system, except it might be
considered R/O mapped - the roles are reversed.

>   One of the
> really frustrating things about EJB CMP (before I ditched it in favor of
> Hibernate, one of the best decisions I ever made) was how difficult CMP
> made it to sidestep the abstraction and use aggregation queries, outer
> joins, and other performance-enhancing techniques.

I will agree that there are some things which are a pain (if not
impossible) to do in CMP.
The biggest problem I see with the abstraction is performing efficient
operations on large blocks of data, such as bulk updates, deletes or
reports. This is probably similar to your complaint.

This is a tough problem I suspect.  It should be possible to create an
API that will do the job, but this would leave you in the cold for BMP
entities.  

There is a also a lack of run-time functionality; consider the
possibility of having runtime defined finder functionality for example.

Hibernate has some nice features in this area.  I also like the fine
control that you have over database locks (is there away of making
"read-only" finders in JBoss?).

However CMP beans do more than just persistance, they also have
per-method transactional and security control for one thing, not to
mention remote interfaces etc.  
Hibernate cannot therefore be viewed as a drop-in replacement for CMP in
all cases.


> If you are writing code and thinking to yourself "hey, maybe I'll move
> my datastore to an ODBMS sometime in the future" then you're writing a
> toy, not a serious enterprise application.  In the real world that
> doesn't happen.  It's tough (organizationally and technically) just to
> switch database vendors.

I hold my hand up and confess here, I build toys where future
reconfiguration and different deployment environments are taken into
account.  This is why I like to use abstraction layers so that I can
change database, J2EE container (or maybe just parts of it) without
having to rewrite my 600+ classes.
I note that SAP and Siebel like to have similar abstractions in their
toys.  
If I had the luxury of knowing that my database would always be the
same, my hardware platform and OS always the same, then I probably
wouldn't use J2EE at all.  I'd probably use C++, and write database code
using native libraries.  Why not, it would be much more efficient?



-- 
Peter Beck BEng (hons)  - Managing Director, Electrostrata Ltd.
http://www.electrostrata.com  --+-+--  Experts in e-business and e-commerce



-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to