Indexing CouchDB视图、映射、索引和序列

Indexing CouchDB视图、映射、索引和序列,indexing,view,couchdb,nosql,sequence,Indexing,View,Couchdb,Nosql,Sequence,我想你在什么地方读到过,当一个视图被请求时,“映射”只会在上次请求后添加的文档中运行?这是如何确定的?我想我看到了一些关于序列号的东西。这是你能得到的东西吗?它不是跟踪_rev字段的UUID的一部分,是吗 有什么方法可以强制“重新引用”整个视图(跨所有记录)?中有关视图索引的部分是一个很好的指南 视图生成器使用数据库序列ID来确定视图组是否与数据库完全同步。如果没有,视图引擎将检查自上次刷新以来更改的所有数据库文档(按打包顺序)。文档是按照它们在磁盘文件中出现的顺序读取的,从而减少了磁头查找的频

我想你在什么地方读到过,当一个视图被请求时,“映射”只会在上次请求后添加的文档中运行?这是如何确定的?我想我看到了一些关于序列号的东西。这是你能得到的东西吗?它不是跟踪_rev字段的UUID的一部分,是吗


有什么方法可以强制“重新引用”整个视图(跨所有记录)?

中有关视图索引的部分是一个很好的指南

视图生成器使用数据库序列ID来确定视图组是否与数据库完全同步。如果没有,视图引擎将检查自上次刷新以来更改的所有数据库文档(按打包顺序)。文档是按照它们在磁盘文件中出现的顺序读取的,从而减少了磁头查找的频率和成本。 检查文档时,将从视图索引中删除它们以前的行值(如果存在)。如果视图函数选择了文档,则函数结果将作为新行插入视图中。 CouchDB首先使用序列id检查整个数据库中是否有任何更改(只要数据库中的任何文档发生更改,序列id就会更新)。如果某些内容发生了更改,它将查找这些文档并对其运行map函数


实际上不需要重建/重新生成视图,因为它会在您修改文档时以增量方式刷新(请注意,在您使用它之前,它不会更新视图)。根据hat的说法,一种方法(我相信还有更好的方法)是删除描述视图的设计文档,然后再次插入,因为设计文档与普通文档没有什么不同(几乎不同)。

中关于视图索引的部分是一个很好的指南

视图生成器使用数据库序列ID来确定视图组是否与数据库完全同步。如果没有,视图引擎将检查自上次刷新以来更改的所有数据库文档(按打包顺序)。文档是按照它们在磁盘文件中出现的顺序读取的,从而减少了磁头查找的频率和成本。 检查文档时,将从视图索引中删除它们以前的行值(如果存在)。如果视图函数选择了文档,则函数结果将作为新行插入视图中。 CouchDB首先使用序列id检查整个数据库中是否有任何更改(只要数据库中的任何文档发生更改,序列id就会更新)。如果某些内容发生了更改,它将查找这些文档并对其运行map函数


实际上不需要重建/重新生成视图,因为它会在您修改文档时以增量方式刷新(请注意,在您使用它之前,它不会更新视图)。hat说,一种方法(我相信还有更好的方法)是删除描述视图的设计文档,然后再次插入,因为设计文档与普通文档没有什么不同(几乎不同)。

好的,这比我在脑海中想象的方式更有意义+我相信CouchDB的最新版本(例如10.1)使用了设计文档的视图功能来决定是否重建视图。因此,重新插入设计文档可能不会刷新视图。当然,用一个新的视图函数进行更新也会有帮助。@barry,这很有趣,对你来说很有意义。你有什么链接可以让我读到更多关于视图函数散列的内容吗?好的,这比我想象的更有意义+我相信CouchDB的最新版本(例如10.1)使用了设计文档的视图功能来决定是否重建视图。因此,重新插入设计文档可能不会刷新视图。当然,用一个新的视图函数进行更新也会有帮助。@barry,这很有趣,对你来说很有意义。你有没有链接到我可以阅读更多关于视图函数散列的内容?