CouchDB视图,地图,索引和序列

时间:2009-12-03 18:26:14

标签: indexing view couchdb nosql sequence

我认为在某处请求查看时,“地图”仅在自上次请求后添加的文档中运行?这是如何确定的?我以为我看到了序列号的一些东西。这是你可以得到的东西吗?它不是_rev字段上UUID尾随的一部分吗?

任何方法强制整个视图的“重新计算”(跨所有记录)?

1 个答案:

答案 0 :(得分:1)

Technical Overview中有关查看索引的部分是一个很好的指南。

视图构建器使用数据库序列ID来确定视图组是否与数据库完全一致。如果不是,则视图引擎检查自上次刷新以来更改的所有数据库文档(按打包顺序)。文档按照它们在磁盘文件中出现的顺序读取,从而降低了磁头搜索的频率和成本。
检查文档时,如果它们存在,则会从视图索引中删除它们之前的行值。如果文档由视图函数选择,则函数结果将作为新行插入到视图中。

CouchDB首先使用序列ID检查整个数据库中是否有任何已更改(每当数据库中的任何文档发生更改时都会更新)。如果某些内容发生了变化,它会查找这些文档并在其上运行map函数。

确实不应该重建/重新生成您的视图,因为它会在您修改文档时逐步刷新(请注意,在您使用它之前它不会更新视图)。用帽子说一种方式(我确信有一种更好的方法)是删除描述视图的设计文档并再次插入它,因为设计文档与普通文档没有什么不同。