So it's absolutely possibly for you to structure your data this way. Splitting each of your collections into their own database would definitely get you around DB-level write locks, but there would obviously be an additional cost incurred in disk space pre-allocation.
Additional disadvantages of putting every collection in its own database include:
- Monitoring: Commands like listDatabases() become significantly slower and services like MMS (10gen's monitoring service) will collect stats less frequently for each database. If you have over 100 databases, MMS won't work at all.
- Preallocation: Even though this is a background process, it's still an operation that competes with others for resources. As you add more databases, the need for preallocation to run will become more common and as a result demand more resources.
Considering the trade-offs, this approach is probably not too harmful on a small number of write-heavy collections, but its likely not suitable if you're looking at doing this for 100s of collections.