Return-Path: X-Original-To: apmail-couchdb-user-archive@www.apache.org Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C8E6ED242 for ; Sun, 23 Dec 2012 10:06:57 +0000 (UTC) Received: (qmail 63618 invoked by uid 500); 23 Dec 2012 10:06:56 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 63347 invoked by uid 500); 23 Dec 2012 10:06:56 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 63302 invoked by uid 99); 23 Dec 2012 10:06:54 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Dec 2012 10:06:54 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of ciprian.craciun@gmail.com designates 209.85.215.180 as permitted sender) Received: from [209.85.215.180] (HELO mail-ea0-f180.google.com) (209.85.215.180) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Dec 2012 10:06:47 +0000 Received: by mail-ea0-f180.google.com with SMTP id f13so2488082eai.39 for ; Sun, 23 Dec 2012 02:06:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=7Wt0ry4bMdIahNqAswLawOcOmRThpu3XQ738VP5+oDU=; b=FLiTs7leu6YRd9/7+MMb/BBLm2CVKVQuZZUgEw2ATDG3cjLjwFtg1TLBa5TB0fRLgm /guLkpAhSwgX1x5aTrWhAf45f2nvoUDnbZIwNbKA2RtsRUMlLiguJytxFGOfGYIXvKxZ AdLatl1taFFTZUCuEMou9FPWV8eRi/1pGLBS7ld6VWQu68nhJ9i4MkvmJiL10Acp9CD/ 5sGwpCn4v8GLzZIWDVyXLaJ+T7pV4xwRRgFmQRNoWIiqBpbfn6VTQe0ItuvQhRZ3tL7A XVBsA1qqE93Lz+q8dXd1hu0SCATGvt7II9ZiVABl1U/2U3Q7ikmU+w06RJCAU/0ibM4i zK8g== MIME-Version: 1.0 Received: by 10.14.225.4 with SMTP id y4mr46779006eep.6.1356257185775; Sun, 23 Dec 2012 02:06:25 -0800 (PST) Received: by 10.14.129.202 with HTTP; Sun, 23 Dec 2012 02:06:25 -0800 (PST) In-Reply-To: References: <14FC9F1D-8CD8-46B5-BC84-703EEC4128C3@couchbase.com> Date: Sun, 23 Dec 2012 12:06:25 +0200 Message-ID: Subject: Re: Regarding `_bulk_docs` atomicity [Was: Re: How to find the change sequence of a document's revision] From: Ciprian Dorin Craciun To: user@couchdb.apache.org Content-Type: text/plain; charset=UTF-8 X-Virus-Checked: Checked by ClamAV on apache.org On Sun, Dec 23, 2012 at 11:06 AM, Robert Newson wrote: > It's been my view for some time that this option should be removed. > BigCouch doesn't support it, so unless some extraordinary effort is > made during the merge, it'll go away at that point. Couldn't the CouchDB team adopt a little different approach to such "items" (the (B) choice from below): (A) One direction which I feel CouchDB is going towards is going for the "common denominator" between most possible CouchDB-like implementations. That is because some things are hard to be implemented in a distributed environment (like BigCouch), or some other things might be hard to implement in an embedded environment (like TouchDB), such options are gradually being "eliminated" from the CouchDB API. (B) Another option -- one that I would prefer -- is going with something like "capabilities", where for some operations the user explicitly asks what "capabilities" to be enabled or disabled, and if a particular implementation doesn't support them it should fail the request. This would allow some implementations to expose more (or less) functionality than others. (Of course such a "solution" should be applied with care, or it'll generate a miriad of possible semantics.) Thus strictly related with the bulk operations atomicity, I would see it like this: * the `all_or_nothing` option should be kept; * its default value should be the most generic one -- the one giving the least promises; * each CouchDB implementation could choose to disallow certain values; (This is because in my particular case I want to use only the "standard" single-instance / no-replication CouchDB.) Ciprian.