时间跟踪器应用程序的NoSQL困境

时间:2012-05-29 20:06:10

标签: mongodb nosql

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

  1. 我想创建一个项目。一个项目可以包括 一些元数据,如名称,网址等。
  2. 我想创建一个客户,我希望能够分配一个 客户到项目。
  3. 每个项目都可以完成各种步骤 直到完成。步骤属于一个项目。一步可以包括 更多事件,因为可能需要更多天才能完成一个步骤。
  4. 根据我希望能够执行的步骤中的信息 计算我在项目上花费的总时间并计算一个 我花在每一步上的总时间(例如发票)。
  5. 在研究了一下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吗?

    您的经验提示?

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题