Because of things beyond my control, I have to switch from a relational database to MongoDB for the advertising platform I'm helping to build. I've got a relational schema sketched out, but I'm unsure where to begin switching to nosql. I'd like to know what tables it makes sense to embed, and where it makes sense to denormalize.
Here's my current schema (as you can see, it's pretty normalized):
Users: id, name, email, paypal_email, password, balance, created_at, updated_at
Clicks: id, bid_id, server_id, origin_ip, valid, created_at
Ads: id, user_id, title, content, link, created_at, updated_at
Bids: id, ad_id, continent, current, auto, max, created_at, updated_at
Servers: id, user_id, ip, created_at, updated_at
People: id, username, ip, server_id, created_at, updated_at
Transactions: id, amount, transactable_id, transactable_type, created_at
We'll be making pretty heavy use of these tables. I expect to get many click creations, people updates, and transaction creations per second. We obviously want to be able to provide statistics like clicks per ad, impressions, etc. This information will be updated real-time on our site.
Finally, at the end of each day or two, we'll be performing large queries against clicks in relation to a couple of other tables.
Is this realistic to do with something like MongoDB?