2

There're quite a few posts discussing relations vs document databases, however they are all quite generic.

I'd like to understand their differences in a specific example.

Let's imagine we're building another scrum-oriented project management web app.

While we'd like to experiment with a new technology, we don't want to sacrifice design and increase overall complexity just to do something new that's hype. We want to make the right decision, even if that means using an old technology.

So, think of PivotalTracker. We'll be storing projects, stories, story comments, maybe rare attachments, and maybe sub-tasks (story split into actual tasks).

There's support for iterations as well, so each task actually belongs to a project and can be in iteration. Inside iteration, tasks need to be arranged in specific order. User can rearrange the stories by dragging them up and down.

For each story we also want to track time spent on it, using separate time entries.

I might want to generate reports, but nothing too fancy (burndown, maybe something related to time)

Which DB would you use, relational or document? Or some other? And why?

How would you design its structure? For example if you would use document DB, would you normalize at all?

Sumrak
  • 3,740
  • 7
  • 31
  • 37
  • @Omus: Would you be so kind as to put Capital Letters at the start of sentences? That would make it easier to read. – S.Lott Feb 06 '10 at 16:00

1 Answers1

0

The basic tradeoff between NoSQL and Relational DBs is in the reporting capabilities. With relational databases, this is done with set operations and relational dbs are really very well optimized for reporting generally. This requires rigid schemas so that the math works right. With NoSQL dbs this is done via MapReduce, and distributed computing, and flexible schemas get in the way. In essence with NoSQL, your reporting is always purpose-built and ad-hoc reporting is virtually non-existent. For this reason I a fan of the idea that you should always start with an RDBMS and then add NoSQL adjuncts as needed.

This is particularly true with project management where business owners may want to come up with new reports from time to time.

Chris Travers
  • 25,424
  • 6
  • 65
  • 182