CouchDB просто не подходит для больших наборов данных?

Я изучаю CouchDB. Если я правильно понимаю, вы не можете просто отправить «запрос» в cockDB и сделать частичное обновление.

Например, этот документ называется «пользователи» (упрощено для ясности):

{
   allusers: [
      {"id": 1, "username":"myuser1", "pass":"secret"},
      {"id": 2, "username":"myuser2", "pass":"password"},
      {"id": 3, "username":"myuser3", "pass":"crypto"}
   ]
}

Правда ли, что на самом деле нет способа обновить пароль пользователя 3, вместо этого мне нужно загрузить весь документ, выполнить обновление в javascript на клиенте, а затем отправить весь объект обратно с помощью запроса PUT?

Я надеюсь, что я просто не совсем понимаю, как работает CouchDB, и хочу, чтобы все было сделано.

Как обновить одну часть возможно очень большого объекта?


person tim    schedule 08.04.2015    source источник


Ответы (2)


Документы в хранилище документов (например, CouchDB) концептуально похожи на строки в таблице СУБД или файлы в файловой системе, не таблицы.

В вашем примере у вас будут отдельные документы для myuser1, один для myuser2 и один для myuser3, каждый из которых будет небольшим, автономным и поэтому легко и быстро будет обновляться. В идеале, все ваши документы должны быть такими.

В руководстве по CouchDB есть отличная глава о том, что такое CouchDB и почему (и когда!) это полезно.

person Wander Nauta    schedule 08.04.2015
comment
Ах! Это важно. Спасибо. Так что, если мне нужно делать массовые обновления, я в конечном итоге отправляю отдельный запрос PUT для каждого обновления? Это может сделать простое обновление 10 000 документов довольно трудоемким делом... верно? - person tim; 09.04.2015
comment
Да, это было бы не очень хорошо. Вы можете использовать Bulk Document API, чтобы объединить некоторые запросы PUT или выполнить обновление. на стороне сервера с помощью обработчиков обновлений, но нет UPDATE как в SQL. - person Wander Nauta; 09.04.2015

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

У вас будет доступ к отправленным вами данным и к текущей версии, если файл doc. Затем вы изменяете документ и возвращаете его CouchDB.

person Ingo Radatz    schedule 09.04.2015