Subversion is literally a filesystem; that is all it is. Most of Subversion's problems come from the fact that the metaphor doesn't fit the task very well.
The fact that Git clients store full histories is one of the things that makes it less like a filesystem; it is, instead, a system for managing overlapping patch streams.
Check out the core svn C APIs (nb: our product is built on them); it's basically an open/close/read/write/readdir system with one additional "history" option (which history snapshots an entire filesystem, not just individual files (like CVS) or patches (like git).