项目管理Web应用程序:关系型或面向文档的DB?

时间:2010-02-06 15:57:56

标签: database-design relational-database document-database

有很多帖子讨论关系与文档数据库,但它们都非常通用。

我想了解他们在一个具体例子中的不同之处。

让我们假设我们正在构建另一个面向Scrum的项目管理Web应用程序。

虽然我们想尝试新技术,但我们不想牺牲设计并增加整体复杂性,只是为了做一些新的炒作。我们希望做出正确的决定,即使这意味着使用旧技术。

所以,想想PivotalTracker。我们将存储项目,故事,故事评论,可能是罕见的附件,也可能是子任务(故事分为实际任务)。

也支持迭代,因此每个任务实际上属于一个项目,并且可以迭代。在迭代内部,任务需要按特定顺序排列。用户可以通过上下拖动来重新排列故事。

对于每个故事,我们还希望使用单独的时间条目跟踪花在其上的时间。

我可能想要生成报告,但没有太多花哨的东西(燃尽,也许与时间有关)

您会使用哪种数据库,关系或文档?还是其他一些?为什么?

你会如何设计它的结构?例如,如果你要使用文档DB,你会进行标准化吗?

1 个答案:

答案 0 :(得分:0)

NoSQL和Relational DB之间的基本权衡是报告功能。对于关系数据库,这是通过set操作完成的,而关系dbs实际上非常适合于报告。这需要严格的模式,以便数学运作正常。使用NoSQL dbs,这是通过MapReduce完成的,分布式计算和灵活的模式会受到阻碍。从本质上讲,NoSQL,您的报告始终是专门构建的,并且临时报告几乎不存在。出于这个原因,我很喜欢你应该始终以RDBMS 开头,然后根据需要添加NoSQL附件。

对于项目管理尤其如此,企业所有者可能希望不时提出新的报告。