Pull to refresh

Comments 13

Круто, лично мне, интересно пока только использоватение как standalone NoSQL хранилище.
UFO just landed and posted this here
Realm — это интересная замена Core Data, но там на текущий момент нет каких-либо средств репликации между мобильной и серверной базой данных. В документации есть примеры получения данных из REST-сервисов, но это не репликация. В нашем случае необходима была единая система синхронизации данных между мобильными и десктопными приложениями через централизованный серверсайд.
UFO just landed and posted this here
Насколько я понял связь между couchbase server и couchbase lite осуществляется через Couchbase Sync Gateway путем какого-то rest api. Что происходит в момент синхронизации? Поднимается 1 connect на все команды или 1 connect на команду? Можно ли сделать все через 1 сокет?
Да, репликация происходит через REST API. Там всё сделано не очень оптимально, и об этом я как раз собираюсь рассказать в следующей статье. На каждое обращение к REST-сервису создаётся отдельный NSURLConnection (т.е. даже не NSURLSession). Загнать всё в один сокет в такой схеме вряд ли получится.
Для нормальной синхронизации, конечно, нужен нормальный транспортный механизм (не поверх REST), оптимизированный под мобильные устройства и учитывающий их специфику. К сожалению, подобные решения мне попадались только в проприетарном софте. Сейчас как раз ищу что-то подобное или думаю над написанием своего решения.
Понятно. В общем нужно писать свой API поверх для нормальной синхронизации.
ввиду отсутствия подробного описания протокола CouchDB — из-за недостаточно подробной документации разработчикам Couchbase Lite пришлось отчасти реверсировать его.

Странно, я думал CouchDB — опенсорсный, потому они его и форкнули в своё время
Он опенсорсный, но проблема была именно в плохой документации — даже при наличии исходников восстановить протокол до полной совместимости непросто. Вот что пишут авторы Couchbase Lite:
Couchbase Lite’s replication protocol is compatible with Apache CouchDB. This interoperability is an important feature, but implementing it was challenging because much of CouchDB’s replication protocol is undocumented.
Спасибо, не знал.

Завидую вам, я давно приглядываюсь к Couchbase Lite. Даже скачивал какие-то примеры, смотрел что да как, но так пока и не придумал для себя задачи, чтобы её заюзать в мобильных приложениях. Хотя в вебе с удовольствием пользуюсь CouchDB.

С конфликтами не сталкивались? Когда ревизии в удалённой и локальной базе не совпадают. Или у вас только синхронизация без изменений данных на телефоне?
Синхронизация в обе стороны, изменения на телефоне тоже есть, но конфликты пока исключаются за счёт разделения по ролевой модели (какие-то данные правятся на десктопе, какие-то на телефоне). Средства для разрешения конфликтов в Couchbase Lite тоже есть, так как любое изменение в документе это новая ревизия, и при конфликте обе ревизии сохраняются. Но сами конфликты должны разрешаться в клиентском коде — удалением или слиянием ревизий. Пока что пробовать этот механизм не приходилось.
Спасибо, интересный доклад. Не знал про ForestDB.
Sign up to leave a comment.