Представления против фильтров в CouchDB / PouchDB - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть проектный документ в CouchDB.Я настроил представления и фильтры.

{
  "_id": "_design/my_index_id",
  "_rev": "17-fa5c543fcc80f4420aa98d58f7a07130",
  "views": {

    "jobsbyid": {
      "map": "function (doc,req) {if  (doc.type === 'job') {emit(doc.id);}}"
    }
  },
  "filters": {
    "myfilter": "function (doc, req) {return req.query.type === 'job'}"
}

Чем отличаются представления и фильтры.С точки зрения производительности, вариантов использования и использования.Когда использовать Представления и когда использовать фильтры?

1 Ответ

0 голосов
/ 25 сентября 2018

В CouchDB у вас есть разные опции фильтрации для процесса репликации.Все они описаны здесь Параметры фильтрации CouchDB

О фильтрации. Следует иметь в виду, что фильтрация является одной из наиболее сложных операций в CouchDB, которая может привести к некоторым проблемам снижения производительности, так какдолго база данных растет.Вы можете проверить этот ответ Отфильтрованная синхронизация между CouchDB и PouchDB

Использование фильтров или представлений почти одинаково с точки зрения производительности, поскольку они фильтруют всю базу данных в каждом запросе на фильтрацию.Об этом говорится в документе

Использование фильтра _view не запрашивает файлы индекса представлений, поэтому вы не можете использовать общие параметры запроса представления для дополнительной фильтрации канала изменений по ключу индекса.Кроме того, CouchDB не возвращает результат мгновенно, как это происходит для представлений - он действительно использует указанную функцию карты в качестве фильтра.

Более того, вы не можете сделать такие фильтры динамическими, например, обработать параметры запроса запроса или обработать пользователяОбъект контекста - функция карты работает только с документом.

Преимущество использования представлений для фильтрации заключается в том, что вы повторно используете функции карты для фильтрации.

Так что используйте вариантыоба подхода очень похожи, за исключением того, что фильтры могут обращаться к параметрам запроса или контексту безопасности.

...