TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Eric Brewer on Why Banks are BASE, Not ACID – Availability Is Revenue

134 pointsby abhijitrabout 12 years ago

13 comments

jeremyjhabout 12 years ago
&#62;If an ATM is disconnected from the network and when the partition eventually heals, the ATM sends sends a list of operations to the bank and the end balance will still be correct.<p>I don't think so. I support ATM client software for a large bank in the US and we certainly don't do this. This may be true for "remote" ATMs that are installed in convenience stores on POTS. I can't say I've ever actually heard of it though - the main problem with this idea is that cards cannot be authenticated without network access, and just spewing out money to every piece of plastic calling itself a card when your network connection has been dropped isn't really a recipe for success. Fraud is a real problem.<p>The ATM client software I support cannot do any transactions without a connection with its authorization system. That authorization system though, can stand-in for the various accounting systems and external networks up to pre-defined limits. So for example if for some reason we can't reach the checking account system we'll authorize up to $xxx total for the day on a stand-in basis. The transaction with the authorization system is definitely ACID; the ATM will not get a response code authorizing a withdrawal unless the transaction has been recorded in the authorization system. The account system may well be caught up later. The funny thing is, ACID is a property of individual database systems and it has absolutely nothing to with a question of whether two separate ledgers are guaranteed to be changed together or not at all. That would be the job of a distributed transaction coordinator - and those really are not used very much in banking. Instead there is a protocol of credits and debits and a settlement process to work out the exceptions. Maybe this is what the article was trying to say up to a point but they sort of confused the issue between the point of view of the ATM and the accounting systems of record.
评论 #5642581 未加载
评论 #5642558 未加载
评论 #5643057 未加载
评论 #5642930 未加载
评论 #5643497 未加载
评论 #5648503 未加载
评论 #5646598 未加载
评论 #5645047 未加载
评论 #5643772 未加载
exabrialabout 12 years ago
Sorry, but Eric Brewer is wrong. He seems to be implying that there was some sort of intelligent design behind the software at banks that lead them to choose BASE. This couldn't be further from the truth.<p>Banks are one software kludge after another in attempt to not rewrite something new or offer the consumer anything of value... while paying out the butthole to whatever vendor has his arm shoved so far up your ass you can't ever migrate from their platform without colon replacement surgery.<p>So while it's a nice thought "Hey look Banks/ATMs are BASE" this was by complete accident through years of incompetence and corporate bureaucracy, not by any sort of engineering choice.
评论 #5642664 未加载
评论 #5642941 未加载
评论 #5642936 未加载
aneth4about 12 years ago
This is a little misleading. Transactions are used primarily to prevent inconsistent data, not global data consistency.<p>The ATM network is distributed and eventually consistent, and financial transactions in general are not real time.<p>Within an ATM or within a bank you can be damn sure transactions are used widely to prevent inconsistent data.
jacques_chesterabout 12 years ago
This is one of those cases where deciding on whether the system is ACID or not depends entirely on where you draw the system boundaries.<p>If you draw it at the boundary of the central general ledger, it's going to be ACID.<p>If you look at the way transactions pass through several intermediate systems (each of which is ACID) en route, I guess it could be called BASE.
评论 #5642579 未加载
ryanobjcabout 12 years ago
I'd tend to agree on a general sense - yeah when faced with failure in a WAN environment, it makes sense to attempt to continue when at all possible.<p>However, banks are one of the biggest purchasers of ACID systems... They still bet heavily on oracle, and when they want their accounting systems to run, and balance transactions, they dont rely on "BASE" systems. Banks are also heavily dependent on business cycle and batch processing. Daily batches are common in credit card processing (end of business day settlement for example), and also in general bank systems.<p>Also eventual consistency means different thing. Some systems have a "eventually inconsistent" property to them (eg: Cassandra/Dynamo), and I'm pretty sure banks would NOT be ok with that.<p>I respect Brewer, he is a smart guy, but he is extrapolating too much from a small fact that is ATMs will sometimes dispense cash (of what amounts? $200? $1000? or maybe just $20?) when remote communications are interrupted or broken.
评论 #5642126 未加载
Aloisiusabout 12 years ago
Citation needed.<p>I've never heard of financial systems being eventually consistent, certain not ATMs which need to know your exact balance and how much money you've taken out already today.
评论 #5642512 未加载
评论 #5643151 未加载
评论 #5643174 未加载
stephenabout 12 years ago
A nit, but the remark of "auditing == everything is written down twice == double-entry accounting" is cute, but doesn't seem applicable to availability.<p>Double-entry is more of an internal (financial) system implementation detail, and so an orthogonal concern to intra-system audits.<p>(It's not like one side of the entry is in one bank's IT system, and the other side of the entry is in the other bank's IT system.)<p>(...speculating further, I really doubt the OLTP systems of banks are double-entry anyway.)
评论 #5643130 未加载
ExpiredLinkabout 12 years ago
The article is not entirely wrong but misleading. The two important aspects are authorization and limits.<p>Authorization: An ATM does not issue money without authorization which is done by some 'central authority', not the ATM.<p>Limits: In some corner cases you may be able to exceed your (daily, weekly, monthly) limits. But, as the article points out, this doesn't imply financial inconsistency.
jasomillabout 12 years ago
As someone who's had to dispute NSF charges for reordered transactions, I question the author's claim that ATM operations commute. Specifically, assume a $0 beginning balance. Then "withdraw $20 then deposit $200" might yield an error, $0 cash, and a $200 balance where "deposit $200 then withdraw $20" would net $20 cash and a $180 balance.<p>Or, as in my disputed case, $20 cash and a $140 balance, because the deposited check hadn't actually cleared by close-of-business, so end-of-day processing assessed a $40 negative balance fee despite the fact that the deposit "eventually" cleared. The first manager I discussed this with had the audacity to claim it was <i>my fault</i> for not somehow recognizing that the portion of the deposited funds the ATM made available for immediate withdrawal <i>by design</i> were not, in fact, available for immediate withdrawal.
trotskyabout 12 years ago
This seems like a pretty bad strategy to sell nosql etc. What are we supposed to believe, that every ATM downloads account numbers, pin hashes and balances for every account in their network?<p>Banks have chosen consistency over availability regularly as they've been able to rebuild their systems over the decades. 40 years ago, if you had a credit card the place just took it, copied it down and trusted you and the bank were good for it. Try to get anyone to take your credit card if the network is down now.<p>IMO banking culture and standards probably were direct motivators of many of the ways traditional systems were designed. They were some of the earliest adopters of IT. It may not be accurate to say banks or ACID. It may be more accurate to say ACID is banking.
EGregabout 12 years ago
Banks can have availability over consistency because we have enough laws and protections in place to reverse any fraudulent transactions.<p>With BitCoin, such an architecture could be abused rather badly.
rjempsonabout 12 years ago
This is an example of why analogies should never be used (except perhaps if trying to explain a concept, not something tangible).<p>ATM software has nothing to do with the backend storage of the data. My point is that I bet when the data is actually written to durable storage in the backend, the set of data being written will be wrapped in an ACID transaction.
chiphabout 12 years ago
I think it's funny that the photo in the article is of two guys <i>stealing</i> an ATM (note the pantyhose masks).