[eluser]Jelmer[/eluser]
Personally I try to put all kinds of data access into models. Libraries are in my view to process the information if that kind of processing is (potentially) needed in more than just one place.
You could put it all in one place, but that mostly leads to bloated classes that will become harder and harder to maintain. While seperating the different parts of such a library into multiple parts might be a little more work and a bit more uploading, it will payoff if you ever extend or fundamentally need to change how it works.
An example might be that I kept my Auth library pretty generic (only username, email, display name & password are referenced specificly), which makes sure that if I want to add fields to my user table I only have to edit the model and not the library.
Having said that, don't take it to extremes either. For instance my Caching library doesn't need a filesystem model to write and retrieve the cache files, that would be overkill. In the end where you draw the line between needing a model and putting it in the library is (of course) mostly up to you. It's a good thing to actively think about it every time you need data-access of any kind.