Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 8760 invoked from network); 25 Mar 2009 11:44:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 25 Mar 2009 11:44:38 -0000 Received: (qmail 86945 invoked by uid 500); 25 Mar 2009 11:44:37 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 86887 invoked by uid 500); 25 Mar 2009 11:44:37 -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 86877 invoked by uid 99); 25 Mar 2009 11:44:37 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Mar 2009 11:44:37 +0000 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 jchris@gmail.com designates 209.85.198.239 as permitted sender) Received: from [209.85.198.239] (HELO rv-out-0506.google.com) (209.85.198.239) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Mar 2009 11:44:28 +0000 Received: by rv-out-0506.google.com with SMTP id k40so2714971rvb.35 for ; Wed, 25 Mar 2009 04:44:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to :content-type:content-transfer-encoding; bh=0wrSeXhKyomsq0q5jZ9jyWRpPN5spANAOSQ3PjKA6b8=; b=mm0He9KodJ8HREL3T8/k4vsqOsJ4vMx8HxrX54PmfkN/kvRBDee5rtAroi0K+nNk3J MFj8t/8oEtHIz5euPnrkF5m4B/NJAq7peuuNBySw5PJ354dV/RoovJGMVjCxvLpc5Aci zPKoHJxdNToD67/aP51fm5KpwfNP4z2exbZu4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; b=rJoLkt3wOHjbT0CctW1kFKN2pYebUX+Uyozwrd2rgTSxftSI0hgDJnRZDFP/eWvUIR 00pf2LdNv+tDnmdDBJMLPSug0AtPj+HNTuqwC5UCvPHc8SEMMM3cD3hqWQEEEfmJsbVM 3izfCTLhoMv72aiIhY1yraqHU1NjksQnyhUyE= MIME-Version: 1.0 Sender: jchris@gmail.com Received: by 10.142.173.8 with SMTP id v8mr3892631wfe.55.1237981447880; Wed, 25 Mar 2009 04:44:07 -0700 (PDT) In-Reply-To: <49CA1307.7060300@timparkin.co.uk> References: <20090324140050.GA17574@tumbolia.org> <49C9776E.1060804@timparkin.co.uk> <49CA1307.7060300@timparkin.co.uk> Date: Wed, 25 Mar 2009 12:44:07 +0100 X-Google-Sender-Auth: a05fdf6a4a1f19a4 Message-ID: Subject: Re: [VOTE] Apache CouchDB 0.9.0 release From: Chris Anderson To: dev@couchdb.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org On Wed, Mar 25, 2009 at 12:18 PM, Tim Parkin wrote: > Chris Anderson wrote: >>> I'd be interested in knowing what happened to the community discussion >>> around the removal of the bulk_docs 'feature'? I've tried to raise this a >>> couple of times but had little reaction. Am I right in understanding this >>> lack of reaction as meaning there is going to be no discussion? >> >> >> We've been concentrating on bulk docs documentation. In my experience, >> most people who understand that the unit of consistency is the >> document start to see ways of solving problems that work in a >> key/value world. Some use-cases don't fit, but for the 80% case we're >> better off with the simpler consistency model. >> > > I think the real issue is one of misunderstanding.. I personally just > want a way to rollback changes in order to deal with user interface > issues. The document I posted discusses the issue and highlights the > fact that the problem is not about consistency, it's about providing a > way to rollback changes if part of them fails so that a user can apply a > change by clicking submit and get a success/fail response. > I think I understand the issue. I think there are two ways to approach a solution. One is to confine end-user updates to a single key. This approach is the classic model for key/value stores. If your domain requires that edits are saved in multiple documents, the complexity grows. If you can control replication, and ensure that each user has a node to themselves, then you can treat edits between replications as a transaction, and the application can roll back any thing that has happened since the last outbound replication. It would require a library between the UI and storage if you want to make that simple for the user. If you are working in an environment where the application can't treat replication as a (soft) transaction boundary (hot-swap, or multiple concurrent users) then you'll need to break updates out into individual documents. A user can start an interactive transaction, and mark all updates with the transaction id. Then you can use a view to show only updates that are associated with a closed transaction. In this explicit-transaction use case, non-committed updates may be replicated, and it is the responsibility of the application to read data through a view which only shows updates that belong to finished transactions. The upshot is that bulk_docs can't and shouldn't give you any powers that you don't have available with the individual document APIs, but that doesn't mean your application can't provide those sorts of interfaces. > ... snip ... >> >> I think the general understanding is that CouchDB is built with a >> certain minimalist simplicity in mind. We appreciate that some of our >> users have demands that exceed our out-of-the-box functionality. I >> think once we have a solid understanding of how to use CouchDB in a >> distributed manner, we'll be on steady footing for more ambitious >> consistency guarantees. >> > > Just to reiterate.. it's not about consistency, it's about showing users > a logical success/fail rather than saying to them.. "well a part of your > change worked, part of it didn't - what would you like to do now?". > > The document I posted (I'll write a blog post about it if it helps) > details the issue. > > Tim > -- Chris Anderson http://jchrisa.net http://couch.io