Richard Jones' Log: Some comments on "Scary Rails vs Quixote Stats"
Ryan Tomayko compares the ZODB to RDBMSes, but I think he's got a few things wrong:
- A ZEO server can serve up multiple databases. My Zope systems serve up a main and a sessions database (one of these days I'll find the right non-journalling backend to put in the sessions store too).
- ZEO packing is trivial using the zeopack.py script (utilities/ZODBTools in the Zope source). As an aside, I also use repozo.py to back up my ZEO databases (same place in the source). I launch both from cron regularly.
I strongly agree with his overall point though - if you use the ZODB to store a large dataset that wants to be relational, or needs to be queried / accessed like a relational table, you'll find that your data is pretty much duplicated (or triplicated if index and meta-data) inside ZCatalogs to have any sort of speed. Just use an RDBMS in this instance. Well, unless your data schema is highly mutable (as ours is) in which case just accept that half your ZODB will be ZCatalogs.
Ryan sums up well when he says "making the decision between ZODB and relational has been less about what's better for the code and more about what's better for the data."