dbTalk Databases Forums  

Objectivity OID's flawed?

comp.databases.object comp.databases.object


Discuss Objectivity OID's flawed? in the comp.databases.object forum.



Reply
 
Thread Tools Display Modes
  #11  
Old   
Carl Rosenberger
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 04:34 AM






Corey Brown wrote:
Quote:
Our application
embeds a Java ODBMS and we need a pretty good price point in order to
keep the costs down and the margins higher.
Hi Corey,

judging from our customer database, you have also been
experimenting with db4o.

Since you still seem to be looking for other solutions,
would you mind posting a short comment what you liked
and disliked about our product?

Thanks.


I fully agree with Michael Wein:
Please ignore the distracting postings that have nothing
to contribute to this group.


I also found Paul DeWolf's explanation of Objectivity's
OIDs very interesting. Thanks Paul!


Here is how db4o does it:
A db4o ID is a physical pointer to a physical pointer.
We do not use any paging at all. Since the physical
pointers use comparatively little memory, it's possible
to cache them.

Objects are immediately written to the database file
when they are modified ( ObjectContainer#set() ).
Upon transaction commit, the second level pointers
of all modified objects are redirected to the newly
written object data. To make this system completely
fail safe, the database file is set to "commit mode"
and a list of all the pointers that are about to be
rewritten is written to the database file. If the
VM or the computer breaks down at any point in time,
commit is resumed when the database file is reopened.

Our ID- and file-system does not scale as nicely for huge
databases as the one that Objectivity or Versant uses
but direct object access will be faster for "small"
databases up to 1 GB, since less indirections are needed.


Cheers,
Carl
--
Carl Rosenberger
db4o - database for objects - http://www.db4o.com




Reply With Quote
  #12  
Old   
Corey Brown
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 08:50 AM







"Carl Rosenberger" <carl (AT) db4o (DOT) com> wrote

Quote:
Corey Brown wrote:
Our application
embeds a Java ODBMS and we need a pretty good price point in order
to
keep the costs down and the margins higher.

Hi Corey,

judging from our customer database, you have also been
experimenting with db4o.

Since you still seem to be looking for other solutions,
would you mind posting a short comment what you liked
and disliked about our product?
Hi Carl, nice to hear from you again. Yes, we have experimented with
db4o and we find your product very easy to use and quite robust. There
are
only two short comings for us at this point, the lack of scalability
beyond
a safe 1GB boundary and the lack of a set of "smart" collections. In our
app we often have to deal with very large collections of objects and we
need to be able to pull the collected objects from the database in a
very
controlled fashion. I know your team is currently working to correct the
smart collection problem so I understand that the problem will be going
away shortly. We're also still tied to our OEM agreement with our
current
supplier, so it may be awhile before we can change.

I really do like your product though and am very glad to see that you
have decided to stick with it. I know you're going to be very successful
in the PDA and embedded system markets.

Quote:
Thanks.


I fully agree with Michael Wein:
Please ignore the distracting postings that have nothing
to contribute to this group.


I also found Paul DeWolf's explanation of Objectivity's
OIDs very interesting. Thanks Paul!


Here is how db4o does it:
A db4o ID is a physical pointer to a physical pointer.
We do not use any paging at all. Since the physical
pointers use comparatively little memory, it's possible
to cache them.

Objects are immediately written to the database file
when they are modified ( ObjectContainer#set() ).
Upon transaction commit, the second level pointers
of all modified objects are redirected to the newly
written object data. To make this system completely
fail safe, the database file is set to "commit mode"
and a list of all the pointers that are about to be
rewritten is written to the database file. If the
VM or the computer breaks down at any point in time,
commit is resumed when the database file is reopened.
Carl, two things come to mind after reading your explanation
of how db4o works:

- How do you control the clean up of the objects that have already
been written out, if the resumed commit fails? You esentially have
a two phase commit. In the first phase (during normal processing of
objects) the individual objects are written to the db into areas
other
than their original slots (spaces). In the second phase of the
commit
process, the actual call to commit is responsible for fixing up the
pointers. What if you never make it to the call to commit, but yet
you
have objects written to the db. Does the transaction log take care
of
deleting the "newer" versions of the objects during the recovery
phase?

- During the fix up stage, is the physical location of the object
changed and
the old version removed? How do you fix up the other objects that
refer
to the updated objects?

Quote:
Our ID- and file-system does not scale as nicely for huge
databases as the one that Objectivity or Versant uses
but direct object access will be faster for "small"
databases up to 1 GB, since less indirections are needed.

Thanks again Carl for sharing the implementation details of your
product.
Keep up the good work.

--Corey
Quote:

Cheers,
Carl
--
Carl Rosenberger
db4o - database for objects - http://www.db4o.com





Reply With Quote
  #13  
Old   
Paul DeWolf
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 11:00 AM



Hi Michael,

Quote:
Having worked both with Versant and objectivity, I never had problems with
Versant's LOID concerning performance or even scalability (remember that
they are 64 bit splitted into 48 bit object and 16 bit database IDs). But
the same also holds for objectivity ;-) I believe that in reality it is
very easy to work with both realisations (probably objectivity's is a
little bit harder to live with because of its page server concept).
I'll admit very little knowledge of Versant's architecture and no experience
using it. All I know of the product is second-hand, so I shouldn't have put
that in.

The centralized LOID lookup that I've heard about probably comes from the 16
and 48 bit division versus our 4 16-bit fields. I can see advantages to
both.

Quote:
Thank you for the very detailed and precise description of OIDs! Please
ignore Bob and other trolls.
Thanks!

Paul

"Michael Wein" <MichaelWein (AT) web (DOT) de> wrote

Quote:
On Wed, 17 Dec 2003 20:03:17 GMT, Paul DeWolf wrote:

Versant's problem (in my opinion) is that there's a single centralized
logical to physical indirection, which leads to performance and
scalability
limitations.

Having worked both with Versant and objectivity, I never had problems with
Versant's LOID concerning performance or even scalability (remember that
they are 64 bit splitted into 48 bit object and 16 bit database IDs). But
the same also holds for objectivity ;-) I believe that in reality it is
very easy to work with both realisations (probably objectivity's is a
little bit harder to live with because of its page server concept).

Thank you for the very detailed and precise description of OIDs! Please
ignore Bob and other trolls.
--
Michael Wein



Reply With Quote
  #14  
Old   
Carl Rosenberger
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 11:10 AM



Corey Brown wrote:
Quote:
Hi Carl, nice to hear from you again. Yes, we have experimented with
db4o and we find your product very easy to use and quite robust. There
are only two short comings for us at this point, the lack of scalability
beyond a safe 1GB boundary
We do have a couple of customers that use db4o for way more data.
What they do is split data up into multiple databases. You can open
as many databases as you want at the same time. In client/server
mode a client can request access to another database from the client
side. We also provide the possibility to store blobs in separate files
outside of the main database file.

The only usecase where the above approach will not work nicely:
If you have a huge number of objects of one class ( > 1 GB) and if you
want fast queries within this set.


Quote:
and the lack of a set of "smart" collections.
Agreed, this feature really is very important and it's right on the top
of the "what's next" list.


Quote:
I know you're going to be very successful
in the PDA and embedded system markets.
Thanks, that's where we are headed.

db4o also is a good fit for real-time systems. I am quite sure
that there is no comparable product with a storage performance
(INSERT) that comes close to ours.


Quote:
- How do you control the clean up of the objects that have already
been written out, if the resumed commit fails?
If VM or computer crash after writing objects and before commit,
this space in the database file will be lost. You can get your
database file back down to minimum size by running the Defragment
tool.

The above is a trade-off that we chose in favour of speed and
stability.

We could also write records of our freespace-management system
back to disc with every object that we write, but to keep these
writes failsafe also, would require a couple of more file write
cycles and file syncs.


Quote:
Does the transaction log take care of deleting the
"newer" versions of the objects during the recovery
phase?
No, but since these new versions are not referenced anywhere,
they only take up "dead" space in the database file and do
no harm otherwise.


Quote:
- During the fix up stage, is the physical location of the object
changed and the old version removed?
During the fix-up the physical location of new objects is not
changed, only the pointer that has previously been pointing
to the old version is modified to point to the new version.
Yes, the old version is "removed", it's added to the
"freespace" entries.


Quote:
How do you fix up the other objects that refer
to the updated objects?
That's not necessary. They always point to the one-level
redirection pointer.


Cheers,
Carl
--
Carl Rosenberger
db4o - database for objects - http://www.db4o.com




Reply With Quote
  #15  
Old   
Bob Badour
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 12:27 PM



"Michael Wein" <MichaelWein (AT) web (DOT) de> wrote

Quote:
On Wed, 17 Dec 2003 20:03:17 GMT, Paul DeWolf wrote:

Versant's problem (in my opinion) is that there's a single centralized
logical to physical indirection, which leads to performance and
scalability
limitations.

Having worked both with Versant and objectivity, I never had problems with
Versant's LOID concerning performance or even scalability (remember that
they are 64 bit splitted into 48 bit object and 16 bit database IDs). But
the same also holds for objectivity ;-) I believe that in reality it is
very easy to work with both realisations (probably objectivity's is a
little bit harder to live with because of its page server concept).

Thank you for the very detailed and precise description of OIDs! Please
ignore Bob and other trolls.
DeWolf is already in my twit filter so I have not read his full post. If you
prefer to listen to twits give longwinded dispositions on inconsequentials,
by all means, ignore me and listen to DeWolf.

A physical pointer is a physical pointer even if it points to a physical
pointer.




Reply With Quote
  #16  
Old   
Paul DeWolf
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 12:39 PM




"Corey Brown" <corey (AT) spectrumsoftware (DOT) net> wrote

Quote:
Thanks for the excellent write up on Objectivity's OID implementation.
It's
been a fairly long time since I had a look at Objectivity or Versant
for
that
matter, so my remaining knowledge on both databases has become quite
rusty. I've been concentrating on small embedded Java ODBMS
implementations
for the last few years and find them very acceptable for most of the
work that
we have been doing. Does Objectivity have a product that works in this
space? Not just a Java binding for your enterprise offering, but a
true
100%
Java ODBMS?
Sorry, we only have our Java binding to our C++ libraries. It's faster that
way, and we don't want to try to maintain two code bases.

I'm glad you're finding new acceptable products. I used to think that there
was a database holy grail that would be found someday, but now I realize
that there are way too many variables in application requirements for that
to happen.

If there really was a mathematical model that represented real life, the
equations would not converge on a single solution.

Quote:
We played with Poet's J2 (FastObjects) implementation a
little while ago but couldn't come to grips with the pricing
structure.
Our application
embeds a Java ODBMS and we need a pretty good price point in order to
keep the costs down and the margins higher.

Thanks again for the refresher course Paul :-) :-)
Thank you. Good luck with your product!

Paul




Reply With Quote
  #17  
Old   
Corey Brown
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-18-2003 , 03:39 PM




"Bob Badour" <bbadour (AT) golden (DOT) net> wrote

Quote:
"Michael Wein" <MichaelWein (AT) web (DOT) de> wrote in message
news:95c3m0t13f5y.1iio4q0eevnhs.dlg (AT) 40tude (DOT) net...
On Wed, 17 Dec 2003 20:03:17 GMT, Paul DeWolf wrote:


DeWolf is already in my twit filter so I have not read his full post. If
you
prefer to listen to twits give longwinded dispositions on
inconsequentials,
by all means, ignore me and listen to DeWolf.
Inconsequential? In what context? Given the context of the conversation
that we were having, Mr. DeWolfs contribution to this post was certainly
relevant and useful.


Quote:
A physical pointer is a physical pointer even if it points to a physical
pointer.





Reply With Quote
  #18  
Old   
Lee Fesperman
 
Posts: n/a

Default Re: Objectivity OID's flawed? - 12-20-2003 , 08:28 PM



Paul DeWolf wrote:
Quote:
If there really was a mathematical model that represented real life, the
equations would not converge on a single solution.
There is a mathematical model of the real world --- the relational data model.

I assume you think you've disproved relational theory.

--
Lee Fesperman, FirstSQL, Inc. (http://www.firstsql.com)
================================================== ============
* The Ultimate DBMS is here!
* FirstSQL/J Object/Relational DBMS (http://www.firstsql.com)


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.