Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 24969 invoked from network); 18 Feb 2009 23:48:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Feb 2009 23:48:56 -0000 Received: (qmail 91147 invoked by uid 500); 18 Feb 2009 23:48:55 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 91108 invoked by uid 500); 18 Feb 2009 23:48: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 91097 invoked by uid 99); 18 Feb 2009 23:48:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Feb 2009 15:48:55 -0800 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.221.21 as permitted sender) Received: from [209.85.221.21] (HELO mail-qy0-f21.google.com) (209.85.221.21) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Feb 2009 23:48:46 +0000 Received: by qyk14 with SMTP id 14so287169qyk.11 for ; Wed, 18 Feb 2009 15:48:25 -0800 (PST) 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=eXzvAPrkIsHcG87kte6nu2b+n9az+vJj+B846IVB5Os=; b=K5Mu/twsQmPyjk3yYWImg/9fLpU6SldSou2ltqvpVZ9UJBS4ojmzmW6gyJ56tqfkOE JEUz3W21OxQ03qwYNKIo62BAO0aw1SIZCYjFkALO02iz9dkRVtarHjLAuwzY6pvekzwR RMKoevDaZKL3/BSLo6nQ5oqubKe24+oru6X7o= 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=nCfrupIVDjdBMIqMbxdTcmAZzsM3b+DbwE9ZJHOfLGf8jXXQKyQfDDBPd4r8ZKOylv AHryN9ZYJZ3k1M3CZFAjULJYBI6yS6OgTbJKSPQ1yhaaSFScndDlhtgXst/K+uNNkIvl PBYk/svod0aJxCALedXR2jqNQCSyscnGOjNc4= MIME-Version: 1.0 Sender: jchris@gmail.com Received: by 10.224.73.140 with SMTP id q12mr9776907qaj.308.1235000457364; Wed, 18 Feb 2009 15:40:57 -0800 (PST) In-Reply-To: References: Date: Wed, 18 Feb 2009 15:40:57 -0800 X-Google-Sender-Auth: dc3ac31f1310f26d Message-ID: Subject: Re: Peer Commit 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, Feb 18, 2009 at 3:24 PM, Paul Davis wrote: > On Wed, Feb 18, 2009 at 6:09 PM, Chris Anderson wrote: >> I don't know the literature, but I have an idea for a shared >> data-space across peer nodes (not in a cluster). >> >> A replication helper, which tracks all known replicas, and their last >> successfully replicated sequence num can provide to the user a list of >> remote nodes that have knowledge of each update. >> >> I think this works better with POST than GET replication... but by >> logging GET replications we could have a rough idea as well. >> >> If we track sequence id progress of all known replicas, we know with >> what confidence local updates have been propagated to the network. >> >> We can add secure messaging eventually, but for starters even a good >> public data flow can get us a long way. The next step here is >> peer-discovery. >> >> It makes sense to me that distributed applications should expose their >> replication state to the end user. Peer commit, or maybe eventual peer >> commit, on an individual document update basis, does not make any >> guarantees beyond the most basic, but still provides the ability to >> publish content to a wide audience via a distributed network. >> >> Example: When a user in a p2p mesh can see that N remote nodes are >> keeping roughly up to date with her blog, it gives the proper >> granularity of feedback. In the CouchDB Web, we don't count page hits, >> we count replication streams. >> >> I think it's the simplest metaphor, and avoids false abstractions like >> bulk commits and order guarantees. >> >> Chris >> >> -- >> Chris Anderson >> http://jchris.mfdz.com >> > > Chris, > > Two questions. > > What happens when we move beyond a star topology into a true mesh. Ie, > You've replicated Jan's blog, and I replicate from you? I guess this provides only a minimum guarantee. Eg, a user knows that nodes A, B, and C have the update. Node D could have the update without the user knowing. > > Also, the number of replicas is essentially unbounded, assuming that > we were even just keeping a list of (UUID, update_seq) tuples, we'll > eventually have some headaches in terms of storage (depending on the > answer to the first question). Though there may be other ways to track > this information with bloom filters or some such. > I wonder if the current _local replication records could support this view? -- Chris Anderson http://jchris.mfdz.com