CouchDBにリビジョンが蓄積するのを避けようとしています。また、レプリケーションにTouchDBの「バルクプル」を使用できるようにしています(すべての最初のリビジョンでバルクプルします)。ドキュメントを削除するだけで、すべてのドキュメントをrev-1のままにするために、変更するのではなく再作成しますか?
2 に答える
ええと、あなたの提案は私を汚く感じさせると言いたいのですが、それはSOの答えではないので..
あなたは TouchDB と一括プルについて言及しているので、外部から変更できるデータを含むモバイルアプリがあり、それ自体のデータを変更できるようにしたいと考えています。したがって、私が考えることができる最大の問題は、更新の競合の解決です。すなわち。クライアントがオフラインのときに、クライアントとサーバーの両方でドキュメントへの変更をどのように処理しますか。カウチがあなたのために処理することを意図した多くの同期作業をしなければならなくなると思います..
CouchDB でドキュメントを削除しても、_rev はリセットされません。
CouchDB はドキュメントを削除することはなく、最後のリビジョンを削除済みとしてマークするだけです。圧縮すると、以前のリビジョンが削除され、最後のリビジョンのみが保持されます。これは、レプリケーションが正しく機能するために必要です。これが、ドキュメントの削除されたリビジョンにデータを含めるべきではなく、ドキュメントの _id と _deleted フラグのみを含める必要がある理由です。
削除されたドキュメントの痕跡を完全に削除する唯一の方法は、すべてのドキュメントを新しいデータベースにコピーすることです。ただし、レプリケーションへの影響に注意してください。