durusmail: durus-users: OODB basics
OODB basics
2005-10-08
2005-10-09
2005-10-09
2005-10-09
2005-10-09
2005-10-09
2005-10-09
2005-10-09
2005-10-09
2005-10-09
2005-10-11
2005-10-12
Re: OODB basics
2005-10-11
OODB vs SQL
2005-10-09
2005-10-09
2005-10-09
Re: OODB vs SQL
2005-10-10
Re: OODB vs SQL
2005-10-10
OT: Durus
2005-10-13
2005-10-13
2005-10-13
2005-10-09
2005-10-09
2005-10-09
2005-10-10
2005-10-11
2005-10-11
2005-10-11
2005-10-11
Re: OODB vs SQL
2005-10-11
2005-10-11
2005-10-11
2005-10-12
2005-10-12
2005-10-12
Demo application [was: Re: [Durus-users] Re: OODB vs SQL]
2005-10-13
Re: OODB vs SQL
2005-10-11
Durus basics
2005-10-09
2005-10-09
2005-10-10
2005-10-10
2005-10-10
2005-10-13
2005-10-13
2005-10-13
2005-10-13
Re: OODB basics
2005-10-13
OODB basics
Oleg Broytmann
2005-10-08
Hello!

   I have started to experiment with Durus. First, I'd like to understand
what are object-oriented databases in general. I have some (very little)
experience with ZODB; I did a search on papers on OODBs; I spent some time
reading the source code of some Zope Products that use ZODB, most notable
is TextIndexNG. Below is what I've found. Would you be so kind to look at
it and say if I get it right?
   Thank you in advance!

   My English is a bit rough, sorry. Any correction will be appreciated.
BTW, is "OODBs" the correct plural form?

Object-oriented databases.

An OODB stores objects; actually serialized images of objects, and
serializes and deserializes objects at needs. An OODB assigns every object
an OID (object ID) and stores a global mapping from OIDs to objects.

A user can and should create "indices" - mappings from keys to objects (or
OIDs). These indices help to fetch objects; they also are there to be
iterated over, so the user does not need to fetch and test an every object
in the loop (which can be quite memory- and time-consuming) - it is enough
to iterate over an index and fetch only those objects that the user really
needs; the index iteration is usually optimized time- and memory-wise.

Serialized objects are the only "things" in a database. Indices are also
such objects.

Storing and fetching objects are the only operations (beside administration
tasks, like packing) of an OODB. Removing objects is (sometimes? usually?
always?) implemented as a modification of the parent object - the OODB
breaks the link between the parent and the child, and stores the modified
parent object. Index iteration is not a task of the OODB - indices are just
special iterable objects (sequences or enumerators), usually implemented as
(binary) trees for efficiency.

Creating and deleting objects (including indices), and iterating over
indices are main (if not the only) tasks related to OODBs that a user
performs. All other manipulations with objects are outside the scope of
OODBs, though OODBs that support automatic persistence take notes when
objects are modified and store (serialize) new and modified objects at the
end of a transaction.

When developing programs a user is mainly confronted with the following 4
problems related to OODBs:

* devise an object scheme - classes, attributes, object hierarchies;
* name the objects (create indices);
* upgrade (change) the object scheme;
* remember to update all indices whenever an object is created, modified or
  deleted.

Oleg.
--
     Oleg Broytmann            http://phd.pp.ru/            phd@phd.pp.ru
           Programmers don't die, they just GOSUB without RETURN.
reply