代码之家  ›  专栏  ›  技术社区  ›  BuddyJoe

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

  •  1
  • BuddyJoe  · 技术社区  · 15 年前

    有没有办法强制对整个视图(跨所有记录)进行“重新分析”?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Markus Olsson    15 年前

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

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

    任何东西 已使用序列id在整个数据库中更改(每当数据库中的任何文档发生更改时,该id都会更新)。如果某些内容发生了更改,它将查找这些文档并对其运行map函数。

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