Chris Muller asqueaker at gmail.com
Thu Jun 7 01:06:15 UTC 2007

Yes, but not relational tables in the sense of a relational database.
OBDMS's still have to capture the shape of the object graph, and for
that "one big table" is typically used.

For example, one approach might try to keep the edges with one big
two-"column" table:

  oid | referencedOid

which would have to "join" to itself to render the graph (but might
not perform very well).

Magma uses variably-sized "records" that embody the nodes.  Every
object is represented by a first-class "MaObjectBuffer" with the
following fields:

  oid | class | referencedOid(1)..referencedOid(n)

You might be interested in the detailed documentation of Magma's file
format Brents team put together:


On 6/6/07, Blake <blake at kingdomrpg.com> wrote:
> I have a question for anyone who has worked on the internals of a OODB. To
> wit:
> Is the underlying data in an OODB typically stored in relational tables?
> If, for example, you had a "person" object, and then subclasses of
> "employee" and "customer", would there be three tables with the common
> info in "person" joined to "employee" and "customer" respectively?

More information about the Squeak-dev mailing list