2016-07-13 16 views
4

Ich arbeite an einem Projekt, das Couchbase Server und Sync Gateway verwendet, um den Inhalt eines Buckets mit iOS- und Android-Clients zu synchronisieren, die Couchbase Lite ausführen. Ich brauche auch Lese- und Schreibzugriff auf den Couchbase Server von einer Node.js Server-Anwendung. Aus den Recherchen, die ich gemacht habe, ist die Verwendung von Shadowing verpönt (https://github.com/couchbase/sync_gateway/wiki/Bucket-Shadowing), was mich dazu gebracht hat, in die Sync Gateway API zu schauen, um den Bucket von der Node.js Anwendung zu aktualisieren. Das Aktualisieren vorhandener Dokumente über die Sync Gateway-API scheint die letzte Revisions-ID des zu übergebenden Dokuments zu erfordern. Dies erfordert ein separates Lesen vor der Änderung (http://mobile-couchbase.narkive.com/HT2kvBP0/cblite-sync-gateway-couchbase-server), was möglicherweise ineffizient ist. Was ist der beste Weg, um dieses Problem zu lösen?Couchbase Sync Gateway - Server und Client API vs Bucket Shadowing

Antwort

0

Ich bin nicht sicher, warum Ihre Frage abgelehnt wurde, da es eine vernünftige Frage scheint. Sie sind richtig, der Couchbase-Bucket, der von Sync Gateway verwendet wird, sollte am besten als "undurchsichtig" betrachtet werden, Sie sollten nicht darin herumstochern und Dinge verändern. Es gibt eine Reihe von Implementierungen von Couchbase Lite, beispielsweise für Java, .NET und Mac OS X. Haben Sie überlegt, einen Webdienst zu erstellen, der auf der einen Seite Ihre Anwendung bereitstellt und auf der anderen Seite selbst eine ist? Couchbase Lite-Client? Sie sollten Ihre Daten nach Bedarf mithilfe von Channels trennen können.

1

Das Aktualisieren eines Dokuments (das wirklich eine neue Revision erstellt) erfordert die Revisions-ID. Andernfalls kann Couchbase das Update nicht mit einem übergeordneten Element verknüpfen. Dies bricht den gesamten Ansatz zur Konfliktlösung. (Couchbase verwendet eine Methode, die als Multiversions-Concurrency-Steuerelement bekannt ist.)

Die Erwartung ist, dass Sie den vorhandenen Inhalt eines Dokuments aktualisieren. Dies bedeutet, dass Sie das Dokument bereits gelesen haben, einschließlich der Revisions-ID.

Wenn Sie aus irgendeinem Grund die alten Inhalte nicht benötigen, um das Dokument zu aktualisieren, benötigen Sie weiterhin die Revisions-ID. Wenn Sie damit umgehen (z. B. indem Sie ein Dokument über Sync Gateway löschen und dann Ihre neue Version hinzufügen), können Sie zwei Dokumentversionen im System ohne Verbindung haben, was zu einem besonderen Konflikt führt.

Also die kurze Antwort ist nein, es gibt keine Möglichkeit, dies zu vermeiden (ohne sich selbst andere Kopfschmerzen zu verursachen).