Couchdb密钥对结构



我是一个来自SQL后台的noob。请提前原谅我的SQLness。

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

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

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

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

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

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

这两种方法都可以。Couchdb支持链接文档,您可以在其中创建一个文档并在其他文档中引用它,然后使用include_docs=true编写一个视图,该视图可以emit原始文档和链接文档的内容。

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

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

我认为这取决于您想要如何访问数据。

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

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

[ {vin as key}, {datestamp}]

使用视图的startkey/endkey参数,您可以非常快速地访问给定vin/date的所有条目。类似地,您可以查看vin的最长日期戳。

谢谢大家,所以最好的存储方式似乎与我想要如何检索数据有关。

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

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

从SQL的角度来看,我最常见的查询如下:选择*FROM emp_vehicledata ORDER BY datetimestamp DESC(有时我可能有一个介于日期之间的)

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

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

最新更新