

You Can't Sacrifice Partition Tolerance (response to Stonebraker) - benblack
http://codahale.com/you-cant-sacrifice-partition-tolerance/#errata10221010

======
johnrice
Stonebraker says real systems can obviously achieve "CA" when one node is
partitioned off. But he slyly switched out the theorem's definition of
"available" for a more colloquial definition. The CAP theorem definition
requires every live node, including the lone segregated guy, to respond to
clients. Real "CA" systems don't do that--they're "available" because the non-
partitioned nodes are still responding.

~~~
RickHull
> _Real "CA" systems don't do that--they're "available" because the non-
> partitioned nodes are still responding._

This sounds like a fencepost type of error to me. When you have a partition,
you are splitting a single set into two subsets. It may be live/dead or live-
net1/live-net2. The point is, in the presence of a partition, _there are no
non-partitioned nodes_.

------
riffraff
did anyone else notice we have 3 posts a week about the cap theorem? Maybe
it's about time we stop talking about it and start using some other
terminology.

~~~
moonpolysoft
Your right. All this talk of distributed systems is making hacker news too
nerdy. Lets go rate someone's startup and find a technical cofounder. Perhaps
we might also watch a video of a prominent investor trying to promote his
personal brand.

~~~
riffraff
you have misunderstood my point, which is that there is in my opinion too much
time spent trying to understand what X means when using a permutation of the
letters C,A,P,L,whatever, and we are not seeing enough of the nerdy stuff
(such as: new coordination protocols, failure detectors, workflow patterns).

------
foobarbazetc
"Even the canonical example of an isolated transaction—a transfer of funds
between bank accounts—happens with a 24-hour window of indeterminacy. In fact,
one of the few financial transactions which actually resembles a database
transaction is the physical exchange of cash for goods—a totally analog
experience."

With all due respect, that's a bunch of bullshit, and is a great example of
passing off how you think something works as how it does work.

My bank transfers between accounts happen instantly. Buying stuff online isn't
an analog experience, and happens instantly.

Let's not put banking into the same category as a Twitter-like app, because
they're nothing alike.

It's perfectly okay that two different solutions exist for two different sets
of problems, and there's no real need to argue that your world view applies to
all problems.

~~~
moonpolysoft
What is this wonderful bank you use where transfers between accounts at a
different bank happen instantaneously? Every time I've tried it the process
takes 1-2 days and most likely has to go through an ACH.

As for credit and debit charges, my bank always has two transaction histories.
Cleared transactions and pending transactions. Pending transactions are merely
funds that have been reserved against your account and they may or may not
clear after a period of time. Sounds like that fits pretty well with eventual
consistency.

~~~
foobarbazetc
Love the down votes -- he didn't say different bank, did he? Funnily enough,
money also moves between accounts at the same bank.

My bank transfers to other banks take a couple of hours, but I don't live in
the US. The money comes out of the account instantly though.

I think it's a bit of a stretch to say that a bank doesn't need transactions.

As for credit cards, that's great, but that doesn't address what he said,
which is that it's an analog experience, which it isn't. Also, it depends on
the bank, but there's generally an available balance and a credit limit.
Credit card payments come out of the available balance instantly. I'm pretty
sure that's running in a transaction. :)

What happens between then and actual acquisition is irrelevant.

Anyway, the point isn't the technical details, or how implementations differ.
The point is that the argument presented is flat out wrong (in this case).
Banks are a completely different beast to your web 2.0 startup. :)

~~~
benblack
"My bank transfers to other banks take a couple of hours, but I don't live in
the US. The money comes out of the account instantly though."

Within a single banking entity (and what you see as your bank might in fact be
a composite of numerous such entities), you may see this _apparently_
transactional behavior. Between banking entities you certainly don't. There is
no 2PC over SWIFT.

Crushed your dreams. Sorry.

------
tbrownaw
_Every failed Google search means fewer ads served and advertisers charged_

No, I just hit refresh a couple times or try again later. Same number of
(successful) pageviews, same number of ad impressions.

 _every item a user can’t add to their shopping cart means fewer items sold_

No, I try again later. Just like I do if something is out-of-stock.

 _every unprocessed credit charge risks a regulatory fine_

So what just happened to that 24 hour window you mentioned for banking
transactions?

 _The choice of availability over consistency is a business choice, not a
technical one._

Right. Because it's safer for Citibank to approve a transaction that they
shouldn't, than for them to process it five minutes late.

 _Given this economic context, it becomes clear why most practitioners at any
interesting scale meet their business needs using highly-available, eventually
consistent systems._

I thought it was because consistency usually costs a bit of performance, and
at "interesting scale" that translates into significant hardware costs. Plus
of course "interesting scale" apparently comes with "rockstar programmers",
who prefer eventual consistency because it's a fun exercise in minimalism.

~~~
aaronblohowiak
You do not exhibit the same behavior as users in aggregate. However, the
question of Opportunity Cost in development vs marginal cost of constructing
ca systems is open for debate and situationally dependent.

