После некоторых исследований и относительно новой темы я подумал, что было бы интересно поделиться своим опытом, отвечая на мой собственный вопрос:
В чем разница между использованием PouchDB и CouchBase Lite с новым подключаемым модулем LiteGap?
PouchDB может создать локальную базу данных (websql
или IndexedDB
) на устройстве и реплицировать ее с помощью внешней CouchDB. Также может использоваться в качестве клиента для внешней CouchDB.
Couchbase Lite создает базу данных iOS/Android на устройстве, доступную по умолчанию на http://localhost:5984
. Затем вы можете реплицировать локальный Couchbase Lite с другими внешними сервисами Couchbase/CouchDB. LiteGap позволяет создавать и использовать базу данных Couchbase Lite в проекте PhoneGap.
Оба решения доступны для использования в проекте Phonegap.
Это два разных решения одной и той же проблемы?
Короче говоря, нет.
PouchDB является кроссплатформенным, поэтому вы можете использовать его в веб-проекте, а также в гибридном приложении. Также он предоставляет полезный API для прямого взаимодействия с локальной базой данных или внешней CouchDB. Поскольку вы основаны на технологиях websql/IndexedDB, у вас есть ограничения на хранение, которые постоянно просят пользователя предоставить больше места для хранения вашего веб-сайта/приложения.
Couchbase Lite — это собственное решение для iOS/Android, которое устанавливает базу данных Couchbase на локальном хосте устройства. Вместе с плагином LiteGap вы можете использовать его в проекте Phonegap.
Можно ли использовать API PouchDB для взаимодействия с локальной базой данных CouchBase Lite?
Да, но в моих тестах некоторые функции не работали должным образом.
Во-первых, в Couchbase Lite нет javascript HTTP API
, поэтому я решил использовать Pouch в качестве клиента. PouchDB может использовать внешние сервисы Couch, поэтому мы настроили Pouch для использования устройства Couchbase Lite на localhost:5984
.
Теперь с помощью Pouch вы можете create
создать базу данных, put()
или replicate
из локального хранилища в облако. Однако я обнаружил проблемы с репликацией из облака в локальную сеть с использованием метода Pouch replicate.from
. Одним из способов обхода этого является настройка двусторонней репликации с использованием старого доброго $.ajax
для публикации на устройстве http://localhost:5984/_replicate
, как если бы вы использовали узел curl
(передавая данные объекта с помощью source
, target
, continous
и т. д.).
Я надеюсь, что это поможет кому-то принять решение о том, какие технологии использовать при создании гибридного приложения с синхронизацией в автономном и онлайн-режиме.
person
TMichel
schedule
27.08.2013