At ploneconf, Kapil gave an interesting talk on a project called contentmirror (http://code.google.com/p/contentmirror/). It allows you to serialize your plone content into a relational database, in a pretty transparent way. It does this by hooking into the zope3 lifecycle events, and pushes the data out to the database synchronously in the same thread.
Although I haven’t tried it myself, the process looked easy, simple, and straightforward. Kapil made a conscious effort to keep it simple, and work for the most common use cases. Other scenarios will require using custom adapters.
It is a one way sync however. Any writes back to the relational database will not be reflected in the plone site. And, by default it will only catch archetypes. If you have other content types, you’d have to write custom adapters to get it working.
Using contentmirror can be useful for plone sites where you’d like to share the data with other applications. This opens up some exciting possibilities, like being able to use the django admin to look at the plone data. Anything that works with sql should be workable. It’s fairly new, but it’ll be interesting to see what people do with it.
