and I think my idea is the same as yours, just allows more flexibility.
To help reconcile our perspectives, let's focus on the layers as they would be in my model...
layer 1: documents, chunks, templates, snippets, TVO's etc.
this is the layer for users to administrate and where ease of use is absolutely required -- between the existing Chunks, Snippets, TV's, Placeholders, and the existing aresenal of symbolic template substitions we have available, I think this is in good shape -- accessing what I'm talking about is invisible at this layer, other than when building TVO's (e.g. defining your object data providers, which could also be used internally to abstract the storage of etomite data)
layer 2: API
at this level, we are still abstrated from the data providers; all that matters here is interacting with the existing API (or whatever else we come up with to add to it); on the back-end, the API would simply make calls to the object abstraction layer to decide what access method to use in gathering the data, in the same way that TVO's would, since they are basically template level representations of API calls
layer 3: data access providers
here is the magic layer, where you can simply define where, how, etc. all data is going to be stored, retreived, and managed, through the administration interface; at this level there would be a provider to the actual storage repository that is the direct access code. This then allows us to author providers that use EZsql, or providers written directly to Oracle, or providers to an xml parser, etc. this does add a layer, but I think we can find a way to efficiently get from API to provider
if we can find the approach to this that doesn't detriment our incredible performance, I really think we have a winning idea here
I'll let this issue rest and let others digest it before continuing on with it -- it's obvious a big decision to make, but I'd like to conside this approach at least; the idea is getting clearer and more mature based on other discussions in these forums as well