只是想要一个意见,或者至少有一个经验规则,在CouchDB的数据库结构中哪个更好。最好是在一个文档中拥有一个项目的所有相关数据,还是在许多文档中包含所有项目的一部分?
让我举个例子来说明我的意思。目前,我从我们的系统中记录了4个事件,每隔1分钟,让我们将它们称为event_1、event_2、event_3和even_4。数据被存储在这4个事件中的每一个,而不管它们的值是多少(即使一切正常,您都会得到一个值)。
选项1:组事件,并在文档中附加新的时间戳/值.
{
event_1: [
{ timestamp, value },
{ timestamp, value },
{ timestamp, value },
...etc
]
},
{
event_2: [
{ timestamp, value },
{ timestamp, value },
{ timestamp, value },
...etc
]
},
{
event_3: [
{ timestamp, value },
{ timestamp, value },
{ timestamp, value },
...etc
]
}
...etc选项2:保存了大量的文档列表,其中包含了最新的值(这就是它们实际上是如何从系统中传递的)?
{
timestamp: {
{ event_1, value },
{ event_2, value },
{ event_3, value },
{ event_4, value }
}
},
{
timestamp: {
{ event_1, value },
{ event_2, value },
{ event_3, value },
{ event_4, value }
}
},
{
timestamp: {
{ event_1, value },
{ event_2, value },
{ event_3, value },
{ event_4, value }
}
}
...etc我目前正在使用第二个选项,但我只是好奇地看到人们对什么是最佳实践的看法……我开始认为选项1可能更好,因为我报告的方式,结果是按事件分组的(显示在每个事件的直线图中)。
发布于 2011-06-30 11:36:00
我绝对更喜欢你的第二种选择。
由于CouchDB保存其文档的所有修订版,因此使用选项1将消耗大量内存。因此,对于每个新值,您将存储新值以及旧值的副本。使用选项2,您只存储新值而不触及旧值。
https://stackoverflow.com/questions/6533895
复制相似问题