【问题标题】:NoSQL dilemma for time tracker application时间跟踪器应用程序的 NoSQL 困境
【发布时间】:2017-07-08 15:23:00
【问题描述】:

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

  1. 我想创建一个项目。一个项目可以包括 一些元数据,如名称、网址等。
  2. 我想创建一个客户并且我希望能够分配一个 项目的客户。
  3. 每个项目可以有不同数量的步骤来完成 直到完成。步骤属于一个项目。一个步骤可以包括 更多事件,因为完成一个步骤可能需要更多天。
  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 吗?

您的经验有什么建议吗?

【问题讨论】:

    标签: mongodb nosql


    【解决方案1】:

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

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

    关于你上面提到的设计,我觉得很好。

    【讨论】:

    • 感谢您的回答。我想我没有正确地提出我的问题。我想知道我的设计是否适合我描述的场景。我只是想避免在开发过程后期可能对我的应用程序产生影响的陷阱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多