Почему это плохо, чтобы восстановить документ из Couchbase View's


Я пытаюсь войти в мир Couchbase и узнать кое-что о взглядах. Несколько раз в презентациях и демо я слышал его плохо возвращать целым доком в вид:

emit(meta.id, doc);

Мой вопрос-почему? Что я должен вернуть тогда и как я могу захватить правильные значения документа?

2 3

2 ответа:

Это плохая идея, потому что на самом деле она контрпродуктивна. Запись документа в представление означает, что он будет сохранен на диске вместе с самим индексом представления. Вы платите цену ввода-вывода за повторную запись документа на диск (дубликат оригинального ключа / значения doc), и вы платите ее снова за чтение во время запроса. Поскольку запросы views обслуживаются с диска (или кэша файловой системы), вы никогда не сможете воспользоваться преимуществами интегрированного слоя кэша для быстрого извлечения документа. Короче говоря, в среднем это будет быстрее получить идентификатор документа из представления и получить документ по идентификатору, чем просто прочитать весь документ из представления. Это особенно верно для операций с несколькими документами.

Это плохо, потому что это большая утечка ресурсов, представления часто обновляют и перезаписывают индексы, поэтому, если вы пишете весь документ повторно, это потребует большого количества процессорного времени и дискового ввода-вывода (наряду с кэшем файловой системы).

Поэтому рекомендуется (и гораздо более эффективно), чтобы вид возвращал doc.id а затем используйте стандартную процедуру get, чтобы вернуть весь документ.