2012-05-29 35 views
0

我正试图编写一个基于Web的应用程序进行时间跟踪。我仍在研究我想用来构建应用程序的工具集,但我希望它是NoSQL数据库驱动的(我的情况是MongoDB)。我没有使用NoSQL数据库的经验,所以我的问题。假设以下情况:时间跟踪器应用程序的NoSQL困境

  1. 我想创建一个项目。一个项目可以包括像一些名元数据的 网址等
  2. 我想创建一个用户(一个或多个),我希望能够给客户 分配给项目(一个或多个)。
  3. 每个项目可以有不同的步骤完成 ,直到完成。 Step属于一个项目。一步可以包含更多事件,因为它可能需要更多天才能完成一个步骤。
  4. 基于来自步骤的信息,我希望能够 计算我在项目上花费的总时间,并计算我花在每个步骤上的总时间(例如,用于发票的时间) 。

研究一点关于MongoDB的我的第一种方法看起来或多或少像后:

客户收集

{ 
    "_id": 4e91bcb40b7aab256c000000, 
    "name": "Example", 
    "address": "Some street" 
} 

项目集合

{ 
    "name": "My new Project", 
    "customers_id": 4e91bcb40b7aab256c000000, 
    "steps": [ 
     { 
      "name": "Design", 
      "desctiption": "Frontend design", 
      "time_tracker": [ 
       { 
        "description": "designed home page" 
        "start": 2012-05-28 10:10:10 
        "end": 2012-05-28 15:15:15 
       }, 
       { 
        "description": "designed home page buttons" 
        "start": 2012-05-29 10:10:10 
        "end": 2012-05-29 15:15:15 
       } 
      ] 
     } 
    ] 
} 

这是一个好的数据库吗?设计?我应该使步骤正常化吗?我可以期待一路上遇到的任何问题(例如计算大型项目的总计等性能问题)?在这种情况下,我应该坚持使用RDBMS吗?

来自您的经验的任何提示?

回答

0

这取决于你的用例,你的应用程序和你的数据。

为了避免重复,以前在Stackoverflow上进行了相当广泛的讨论 - When to use MongoDB or other document oriented database systems?When to use MongoDB

关于上面提到的设计,这对我来说看起来很好。

+0

感谢您的回答。我想我没有正确地制定我的问题。我想知道,如果我的设计适合我描述的场景。我只想避免稍后在开发过程中可能对我的应用程序产生影响的缺陷。 –