Использование PouchDB с MongoDB

#mongodb #couchdb #pouchdb

#mongodb #couchdb #pouchdb

Вопрос:

Я никогда не использовал CouchDB. Я хочу использовать PouchDB в своем клиентском приложении, но я не уверен, можно ли его интегрировать с MongoDB, потому что Pouch был разработан для использования с CouchDB. Хотя мой API написан на PHP, я не использую какой-либо REST API, как в CouchDB, для подключения к БД.

Существует ли эквивалент PouchDB, который можно использовать с MongoDB? Или я никуда не денусь?

Ответ №1:

Вкладчик PouchDB здесь. 🙂 На самом деле это вопрос, который мы часто задаем, и это понятно, учитывая популярность MongoDB.

Короткий ответ: нет, нет способа получить PouchDB, который вы можете просто подключить к существующей базе данных MongoDB. Возможно, вы захотите попробовать Meteor.js вместо этого.

Длинный ответ заключается в том, что CouchDB и MongoDB не эквивалентны, и, в частности, CouchDB разработан снизу вверх для использования для синхронизации. Есть хорошая статья Яна Ленхардта, в которой объясняется, как это работает. Часть магии синхронизации PouchDB / CouchDB исходит из этого дизайна, которого нет в Mongo.

На самом деле, даже если бы PouchDB использовала Mongo в качестве серверной части (что вполне возможно; мы уже поддерживаем Redis и Riak), вы не смогли бы использовать существующую базу данных как есть, поскольку PouchDB потребовалось бы реконструировать эту схему обработки изменений поверх Mongo. Следовательно, вам придется переписать свое приложение, чтобы использовать API PouchDB / CouchDB.

Обновление: PouchDB скоро будет поддерживать монго-подобный язык запросов с помощью плагина pouchdb-find.

Комментарии:

1. Интересно. приятно знать все прямо из источника. 🙂

2. Я не уверен, что понимаю, почему Redis и Riak могут поддерживаться, но не MongoDB. Во всяком случае, MongoDB звучит как гораздо меньше работы для реализации под капотом для сервера, подобного CouchDB, такого как pouchdb-server.

3. Redis и Riak «поддерживаются» в том смысле, что PouchDB может использовать их в качестве механизма хранения. Однако это действительно интересно только по академическим соображениям; вы бы не хотели использовать его в производстве, потому что PouchDB в основном использует их как тупые хранилища значений ключей, и вы не можете напрямую использовать эти базы данных — вместо этого вам нужно использовать абстракцию PouchDB над ними. Приведенная выше ссылка объясняет концепции.

4. Вау, обновление кажется интересным, поскольку Azure Cosmos также может использовать Mongo API для доступа к нему… #goodtimes

Ответ №2:

Я видел проект minimongo. Я еще не пробовал. Насколько я понимаю, это тот же minimongo, который используется в проекте meteor. В описании проекта говорится, что он синхронизируется с сервером по протоколу http. Но у него нет постоянства, индексов.