2012-01-23 5 views
5

CouchDBのフィルター処理された複製は、すべてのドキュメントの最新バージョンだけでなく、各ドキュメントの最新の100個のリビジョンを複製するように設定できますか?CouchDBのフィルター処理された複製は、文書の最新の100個のリビジョンを複製できますか?

各アプリケーションインスタンスがどの最新のリビジョン(複数のソースから来ており、それぞれが異なる精度/信頼性のレベルを持つ)を選択できるようにしたいので、この機能が必要です。各データベースインスタンスで使用できるリビジョンは1つです。次のように

特定のユースケースは、次のとおり

CouchApp 1は、1つの改革金種のすべての集会にデータのデータベースを含みます。

CouchApp 2には、世界中のすべての改革派のすべての集会のデータのデータベースが含まれています。

CouchApps 1 & 2は、双方向で複製を維持するように設定されていますが、CouchApp 1はCouchApp 2の金額複製フィルタから1つの金額のデータのみを要求します。

ユーザ1は匿名であり、比較的信頼性が低く、ユーザ2はCouchApp2の管理者であるため、高い権限/信頼性があります。両方のCouchAppsは信頼できるデータより2/3以上最近のデータを信頼するように設定されています。

最初に(時間の順序で)、信頼できるユーザ2は、会衆1に関する集会データの修正をCouchApp 2(すべての宗派)に入力します。 2番目(時間の順序で)、匿名ユーザー1は、会衆1に関する集会データの10の改訂版をCouchApp 1(1宗派)に入力します。

双方向レプリケーションが発生します。

CouchApp 2(all denominations)は、ユーザー1のデータをデフォルトで表示します。これは、そのデータがより新しいためです。しかし、ユーザ1は、集会1のデータの一部のフィールドのみを入力したため、CouchApp 2は、他のすべてのフィールドのユーザ2のデータを表示します。

アプリが複数のリビジョンを複製したり、複製後にユーザーの入力の正確さを評価したり(代わりに複製前に行うことができる)、またはその精度を評価する価値はないと言われていますまったく。

答えて

2

申し訳ありませんが、古いリビジョンを直接複製することはできません。 _rev番号の唯一の目的はMVCCのためであり、改訂履歴の追跡用には設計されていません。つまり、それは不可能ではないこれを行うには。

古いリビジョンをドキュメント自体にJSON添付ファイルとして保存することを検討してください。これにより、それらは文書の残りの部分と一緒に複製されます。さらに、人々がこの問題を克服するために考案したother strategiesがあります。 (Googleの周りとあなたはおそらくもっと見つけることができます)

+0

ありがとうございます。 http://blog.couchbase.com/simple-document-versioning-couchdb(あなたが参照したページにリンクされていました)のように、私が必要とするものを提供するかもしれないように見えます。 – timblack1

関連する問題