为我的沙发数据库设计两种不同的结构,我想知道哪一种最适合我。
按类(class)列出的文档:
{
"_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"
}
]
}
]
我制作了一份独特的文档,其中保存类(class)、类(class)费用以及每门类(class)的折扣(具体取决于形式),我想知道这两种形式中的哪一种对管理更有用
{
"_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"
}
]
}
]
}
]
}
最佳答案
由于您没有提供任何关于您打算如何实际使用数据的线索,因此很难提供比一般建议更多的信息。然而...
遵循第一种方法通常更容易从 CouchDB/Cloudant 中获得良好的性能 - 每个类(class)都有一个单独的小文档,而不是一个包含所有类(class)数据的大文档。这取决于您的应用程序将展示的使用模式。我猜测类(class)数据很少会更改(有利于性能,并且冲突的可能性很小),并且应用程序主要需要按类(class)访问类(class)数据。
我会采用第一种方法,并构建一个 View 来按名称提供对所有类(class)的访问。这样,您就永远不需要加载所有类(class)数据来简单地公开有关您的 JavaScript 类(class)的数据。
关于javascript - 在 couchdb 上构建数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47066456/