Which NoSQL database do you recommend and how would the schema look for the following web application requirements.
There can be lot of users (500k+)
Every user can enter his/her documents
Every user will probably create 10-200 documents per month
Every document will be small (around 100 words)
User can tag documents with his/her own tags
Data from different user does NOT interact with other users and their data
User can search his entries by tags
Fast access to all entries from one user
user can create complex dynamic queries to query his / her data
My idea is to use MongoDB. But the problem that I see is that there would be just two collections: users and entries.
Searching by tags through one gigantic collection looks like a bad idea to me. I am afraid that the size of indexes will be really large, since every user can have his own tags. MongoDB will create tag indexes for the whole collection, but I will always search by tags only through entries from one user and not from all.
Thus a collection per user idea seems more suitable, but there seems to be a limit on how many collections one can create, also this approach appears to be undesired.
CouchDB does not support dynamic queries,...
How should I implement this in MongoDB? Or name a more appropriate NoSQL database.
Examples of similar applications: rememberthemilk, Trello, ...