Navgation and/or query approach (was Re: Flamewar object databases vs. relational databases)

From: Marten Feldtmann <marten_at_toppoint.de>
Date: Sat, 21 Jul 2001 23:30:20 GMT
Message-ID: <3B1D5334.3662C4BD_at_toppoint.de>


Carl Rosenberger schrieb:
>
> ? ? ...by using WeakReferences for all "handed out" objects for instance.
>
> This refers to what the object database engine might use internally to keep
> track of objects.

 Ok, but your application code held the root objects to start navigation and there you would not use weak references and because of this you still have this problem of building up a mirror of your database objects in memory over the time.

 Therefore one must throw away parts of the object network in in regular (matter of time or application logic) way and build up the object network again and again via navigation. The garbage collector is not able to help you here, because of your root objects you have strong references to the object network.

 Now consider a GUI with several windows possible showing the same object structure ... making things much more complicated.

 We tried so solve this problem in a general way, but it was very, very difficult to decide when (application logic) one would like to refresh to whole object network and to rebuild it again.

 Another problem is object identity and I decided not to be dependent on object identity in object memory. Therefore I may have too different objects representations of the same object at the same time.

 In the first sight this may seem to be not nice, but actually you just have the same problems within your application as one would have between applications on different computers. If I solve my internal problem I also solve the network concurrency problem.

 In general I go via queries nearest to the objects I want to show, after reaching this state I switch to navigation.

 On the other hand I *per definition* decide NOT to navigate via special (speak important) relations between objects but only via query.

 But all this requires one to think about the usage of "==" (object identity) or just "=" (value equality) or to test objects against their OID.

 Marten Received on Sun Jul 22 2001 - 01:30:20 CEST

Original text of this message