I saw two presentations on the second day of PyCon which interested me
in combination, one on Schevo and another on Durus. I've always
been reluctant about object databases. ZODB... well, it works, and
I'm sure it works well -- I haven't really had problems -- but it
doesn't make me feel safe.
This isn't because of integrity or stability issues as much as data
stability, portability, upgradability, queriability (is that a word?)
I want to be able to ask questions about my data (like, say, how many
people registered in a certain date range), questions that I didn't
think about when I was setting up my data. And I want to control how
my data changes as my application and the data itself evolves;
generally it should be easy, and it should always be possible --
ALTER TABLE and other operations (like multi-record UPDATE)
mostly do that well in an RDBMS.
Schevo is a fairly restricted object model built on top of a database.
It builds indexes and relations and maintains integrity for you, and
seems to have some conventions to control upgrades. These are all the
aspects of an RDBMS that I care about... well, at least most of the
things I care about.
Schevo is really just the schema -- it builds on top of an object
database (Pypersyst, Durus, or ZODB). Which is where Durus comes into
play -- Durus is kind of a simpler reimplementation of ZODB. The only
real way that ZODB sounded better was that it's threadsafe, so you can
run it in process in a threaded environment. But Durus is
client-server -- like ZEO (the client-server extension to ZODB) -- and
that's good enough for me.
I like an RDBMS for many of its practical advantages -- it's really
good infrastructure. But I'm not in love with them. I want data that
can last for years and across systems; that doesn't have to be an
RDBMS. Right now that's practically the only good option -- XML
persistence is another option, or some other simple flat-file systems,
but those are painful to work with. I still don't feel good about
object databases, but at least this feels like a move in the right
direction.