Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 77942 invoked from network); 15 Mar 2009 20:55:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Mar 2009 20:55:56 -0000 Received: (qmail 77270 invoked by uid 500); 15 Mar 2009 20:55:55 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 77234 invoked by uid 500); 15 Mar 2009 20:55:55 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 77223 invoked by uid 99); 15 Mar 2009 20:55:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Mar 2009 13:55:55 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of b.candler@pobox.com designates 208.72.237.25 as permitted sender) Received: from [208.72.237.25] (HELO sasl.smtp.pobox.com) (208.72.237.25) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Mar 2009 20:55:47 +0000 Received: from localhost.localdomain (unknown [127.0.0.1]) by a-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTP id 7A7236460; Sun, 15 Mar 2009 16:55:21 -0400 (EDT) Received: from mappit (unknown [80.45.95.114]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by a-sasl-quonix.sasl.smtp.pobox.com (Postfix) with ESMTPSA id 240EC645F; Sun, 15 Mar 2009 16:55:20 -0400 (EDT) Received: from brian by mappit with local (Exim 4.69) (envelope-from ) id 1LixMc-0002VF-Jb; Sun, 15 Mar 2009 20:55:18 +0000 Date: Sun, 15 Mar 2009 20:55:18 +0000 From: Brian Candler To: Antony Blakey Cc: dev@couchdb.apache.org Subject: Re: Bulk Docs Message-ID: <20090315205518.GA8755@uk.tiscali.com> References: <6E088A0D-B5E4-4852-B1E0-6E49266F8622@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <6E088A0D-B5E4-4852-B1E0-6E49266F8622@gmail.com> User-Agent: Mutt/1.5.17+20080114 (2008-01-14) X-Pobox-Relay-ID: 992D4DB6-11A3-11DE-BD1D-C5D912508E2D-28021239!a-sasl-quonix.pobox.com X-Virus-Checked: Checked by ClamAV on apache.org On Fri, Mar 13, 2009 at 11:03:30AM +1030, Antony Blakey wrote: > > On 13/03/2009, at 10:45 AM, Chris Anderson wrote: > >> It seems like most of these problems just go away if you >> put all the data that needs to be edited transactionally into a single >> document. > > There is a tradeoff between document granularity and concurrency. Indeed, and a subheading under "concurrency" is "ease of conflict resolution". I am tring to get around to writing up the "simple" and oft-quoted example of a replicated set of bookmarks. I don't think it's as simple as is claimed. If you keep all your bookmarks in one document it's easy as pie to program with, until you get a replication conflict, in which case couchdb gives you no help whatsoever. It just tells you that here are two different sets of bookmarks. People expect that a bookmark added on A will also be added on B, and a bookmark deleted on A will also be deleted on B. If you move to one-couchdb-object-per-bookmark then the replication becomes much easier to deal with. But then you have to deal with the relationships between documents - e.g. people expect their bookmarks to be ordered and nestable. Regards, Brian.