On 3/28/07, James Edward G. II [email protected] wrote:
On Mar 28, 2007, at 7:54 PM, Austin Z. wrote:
There’s no theory behind OODBs, much less relational theory. OODBs are
ways to serialize your object graph.
OK Austin, I’ll give you 100% of that statement. Let’s say you are
completely right.
Who says that isn’t useful?
James, if you look over what I’ve said in this thread, you’ll note
that I have explicitly said that you can successfully store your
data. The moment you need to access the data in a different direction,
you’re completely screwed.
Heck, I use Marshal in PDF::Writer because I need to store a
specific object graph and never query the data structures in a
different way.
Persistent data – especially that which belongs to businesses – is
often very different, though. Remember the maxim I postulated early in
the thread: data is king. The data you have is far more important than
your program, and OODBs fall down because they typically tie you to a
single object model.
As I was discussing with someone off-list, the data that I need for a
customer report is very different than the data that I need for a
summary of how many customers bought a particular widget and how often
in which locale. Object databases force you to query for a full object
even if you need a tiny portion of that object. In the putative
example I describe above, I only need to know a customer’s locale
(state or province, if you prefer) – but with an object database I
have to restore the entire customer object before I can then whittle
down the data to exactly what I need. Worse, because most people don’t
know anything about data modelling (and thus make pretty bad object
modellers, too), there’s a good chance that all of my orders are
reachable through my customers, meaning that to get to the orders, I
have to query through the customer object in the first place!
Pascal (or Date) had a good definition of the relational data model.
The relational model is tuples and attributes with associations
(relations); yes, I’m paraphrasing here.
Ruby includes Marshal, YAML, and PStore for these uses, right?
Arguably one of their biggest weaknesses is that they have to restore
the entire graph before they can do anything with it right? If an
OODB can eliminate that one restriction, wouldn’t that put it leaps
and bound ahead of all three of these libraries?
It’d put it a couple of steps ahead, not leaps and bounds, because
you’re still stuck with your single query path. If that’s all your
data needs, fine. But most data needs much more than that, and it
must be dealt with by more than one application ultimately.
I have said a lot of things about this and how one would work with
both application and integration databases as Martin F. has talked
about them (and wrapping the databases in services) – and that’s
often a good thing to deal with, too, but it’s sometimes not
applicable.
I don’t know about you, but I use all three of those a lot. So it
seems a simple OODB has some value for me.
I rarely use those in real applications. They’re good for
checkpointing, as far as I’m concerned, and that’s about it. I
certainly wouldn’t store a customer’s persistent data in them, or in
an OODB. Period.
-austin