1

我有一个非常简单的视图来测试索引包含大约 4400 万个文档的 CouchDB 数据库。视图如下所示:

function(doc) {
  if (doc.type_) { // I added a type_ property to each doc
    emit(doc.type_, 1);
  };
};

这个结果(使用 _count reduce 函数)是:

+---+----------+
| a |   154716 |
| b |   162353 |
| c |   170626 |
| d |   180893 |
| e |     7590 |
| f |     8419 |
| g | 44420508 |
+---+----------+

我在 Windows 10(Surface Pro i7)上使用 CouchDB 2.1,索引总共花费了大约 3 个小时(我在索引期间关闭和打开计算机,但我认为这不需要重建索引刮)。

上面写的视图必须“接触”数据库中的每个文档。考虑到这一点,我如何才能对更复杂的视图将如何执行进行某种定性估计?

即,由于索引已经触及数据库中的每个文档,对每个文档的属性进行一些操作会极大地影响性能吗?

在我看来,它不会——那个时间仍然会被测量为 O(n)ish。那是对的吗?

在这种情况下,我应该能够估计触及每个文档的视图索引应该花费与我上面写的简单视图相同的时间,+/-

  1. 允许对“type_”属性的每个文档进行线性扫描需要多长时间(因此具有更多属性的文档会增加索引构建时间)
  2. 允许“发射”函数调用需要多少步;每一个都需要对文档对象进行线性扫描和其他计算。即更长的文档 == 更长的索引构建时间。
4

0 回答 0