Different databases/formats/etc have different strengths. While it's nice to say your program to store to any kind of datastore, it's much more practical to have it optimized for the kind that's best for it.
I think this is very arguable. For the cases where you want to do some query optimization, thats what the Clojurize protocol's prompt function is intended for.
(prompt
[adapter expression]
"Execute a native database expression")I think there's definitely a place for libraries that add things like validation to models. But the more functionality you include, the more specific your library needs to be.
[edit] OT to this thread: didn't clojure-dbm have some similar ideas to Clojurize? I remember forking it from your github repository early last year some time and doing some cool stuff with it.