这是在couchdb上构建数据的最佳方法?

时间:2017-11-02 02:06:21

标签: javascript json ionic-framework nosql couchdb

为我的沙发数据库设计两种不同的结构,我想知道哪一种最适合我。

当然

文档:

    {                   
  "_id": "e11b862c9939f9d0de39f3aa28036c96",
  "_rev": "4-e1245399d2f074ef5710d6bcbb0aa7f7",
  "nombre": "JavaScript",
  "descripcion": "curso basico de javascript",
  "horas": 50,
  "costo": 500000,
  "modalidades": [
    {
      "nombre": "online",
      "descripcion": "cursos en linea",
      "descuentos": [
        {
          "descuento": 0.2,
          "fecha caducidad": "2017-11-20"
        },
        {
          "descuento": 0.1,
          "fecha caducidad": "2017 - 12 - 30 "
        }
      ]
    },
    {
      "nombre": "privada",
      "descripcion": "cursos privados",
      "descuentos": [
        {
          "descuento": 0.2,
          "fecha caducidad": "2017-11-20"
        }
      ]
    }
  ]

我制作了一份独特的文件,其中我保留课程,课程费用以及每门课程的折扣取决于模式,我想知道这两种形式中的哪一种对管理更有用

{
  "_id": "e11b862c9939f9d0de39f3aa28034b9e",
  "_rev": "3-87278a7404c9f458be9beec1808aafb7",
  "cursos": [
    {
      "nombre": "Javascript",
      "descripcion": "curso basico de javascript",
      "horas": 50,
      "costo": 500000,
      "modalidad": [
        {
          "nombre": "online",
          "descripcion": "cursos en linea",
          "descuentos": [
            {
              "descuento": 0.2,
              "fecha caducidad": "2017-12-20"
            }
          ]
        },
        {
          "nombre": "privada",
          "descripcion": "cursos privados",
          "descuentos": [
            {
              "descuento": 0.15,
              "fecha caducidad": "2017-12-20"
            }
          ]
        }
      ]
    },
    {
      "nombre": "HTML5",
      "descripcion": "curso basico de HTML5",
      "horas": 60,
      "costo": 400000,
      "modalidad": [
        {
          "nombre": "online",
          "descripcion": "cursos en linea",
          "descuentos": [
            {
              "descuento": 0.3,
              "fecha caducidad": "2017-12-20"
            }
          ]
        },
        {
          "nombre": "privada",
          "descripcion": "cursos privados",
          "descuentos": [
            {
              "descuento": 0.2,
              "fecha caducidad": "2017-12-20"
            }
          ]
        }
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

由于您未提供有关如何实际使用数据的任何线索,因此很难提供比通用建议更多的信息。然而...

通过第一个方法从CouchDB / Cloudant中获得良好性能通常更容易 - 每个课程都是一个单独的小文档,而不是一个包含所有数据的大型文档课程。这取决于您的应用程序将展示的使用模式。我猜想课程数据很少会发生变化(对性能有好处,冲突的可能性很小),并且应用程序主要需要访问每门课程的课程数据。

我会选择第一种方法,并构建一个视图,以按名称提供对所有课程的访问。这样,您就永远不需要加载所有课程数据来简单地公开有关JavaScript课程的数据,例如。