Couchdb密钥对结构

Couchdb密钥对结构,couchdb,nosql,Couchdb,Nosql,我是一个来自SQL背景的noob。请事先原谅我的愚蠢 目前正在进行一个新的客户机项目,其中我需要存储大量的数据,这相当简单,但我不确定在Couchdb中实现这一点的最佳方法是什么 这是用于员工车辆跟踪的。我需要存储VIN(车辆识别号)、GPSLat、GPSLong、DateTimeStamp VIN永远不会改变,但会有大量与之相关的GPS数据 在SQL结构中,它将非常简单—VIN表,然后是另一个数据关系表 在Couchdb密钥对中,您建议反复存储VIN,还是我创建1个VIN作为密钥对并以某种方式

我是一个来自SQL背景的noob。请事先原谅我的愚蠢

目前正在进行一个新的客户机项目,其中我需要存储大量的数据,这相当简单,但我不确定在Couchdb中实现这一点的最佳方法是什么

这是用于员工车辆跟踪的。我需要存储VIN(车辆识别号)、GPSLat、GPSLong、DateTimeStamp

VIN永远不会改变,但会有大量与之相关的GPS数据

在SQL结构中,它将非常简单—VIN表,然后是另一个数据关系表

在Couchdb密钥对中,您建议反复存储VIN,还是我创建1个VIN作为密钥对并以某种方式存储GPS数据?如果是这样,我应该如何将GPS数据作为密钥对存储


提前感谢您在密钥对存储方面的专家。

您可以用两种方法来完成。Couchdb支持一次创建一个文档并在其他文档中引用它,然后编写一个视图,该视图可以使用
include\u docs=true
发出原始文档和链接文档的内容

但由于您的数据非常小,只有一个json字段,因此我建议您将该字段存储在文档本身中,因为您必须将
vin
id与包含其余车辆详细信息的文档链接起来


当父文档中有许多字段要与子文档一起检索时,链接文档策略非常有用

我认为这取决于您希望如何访问数据

如果您定期访问所有链接数据,但很少更新,则可以修改文档。但是请记住,当您不断更新同一文档时,每次都必须检索它,这可能会因为文档可能变得相当大而变得较慢

我可能会为每个时间戳存储一个文档。您可以使用它进行非常快速的访问。您的视图可以支持列表,因此如果您有:

[ {vin as key}, {datestamp}]
使用视图的startkey/endkey参数,您可以非常快速地访问给定vin/日期的所有条目。
类似地,您可以查看vin的最大日期戳。

谢谢各位,所以听起来最好的存储方式与我检索数据的方式有关

根据上面的答案,听起来最好每次都存储VIN

一旦插入数据,就不会再次更新

从SQL的角度来看,我最常见的查询是: 从emp_vehicledata ORDER BY Date Timestamp DESC中选择*(有时我可能会有一个日期之间的间隔)

所以我不需要通读文档修订历史来获得一组特定的日期,看起来一个带有VIN的新密钥对最适合每个条目


我是否正确理解Couchdb存储?再次感谢

我想你是的。我有两种类型的数据:类型1是vehicledata,类型2是positiondata,其中包含vin。然后,我会有一个使用[vin,timestamp](如果您的SQL等价物在vin上有WHERE子句,请使用这个)或[timestamp[,vin]]的视图,如果您真的只需要vin数据。我很少看到链表的好处,但我会在我的车辆上设置钥匙,以便我可以直接了解vin访问文档,或者有第二个视图,仅在获取车辆数据的地方由vin键入。