10 ms·
Sounds cool, post it on HN when you're done. Along the same lines, Pat Helland's paper "Building on Quicksand" says we should take inspiration from the paperwo
by chubot 14y ago
Sounds cool, post it on HN when you're done.
Along the same lines, Pat Helland's paper "Building on Quicksand" says we should take inspiration from the paperwork used in business processes (like carbon copies, etc.):
http://masterthefundamentals.rstata.org/2011/10/10/building-on-quicksand/ http://masterthefundamentals.rstata.org/2011/10/10/building-...
Real life doesn't have distributed transactions! I'm sort of convinced that in 10 years, distributed transactions will be viewed as naive in the way that RPC is (or is starting to be). Both are trying to make distributed computing look like single-machine computing. But they're just inherently different.
Oh also there is "starbucks doesn't used 2 phase commit": http://www.eaipatterns.com/ramblings/18_starbucks.html http://www.eaipatterns.com/ramblings/18_starbucks.html
EDIT: Regarding your last point, I don't think it's inherently difficult to come up with these kinds of systems. Programmers just have to let go of the idea that there's a single truth and they control it all. That the program knows all. They have to have "empathy" with individual actors in the system. Each actor is dealing with participants it doesn't necessarily trust. The programmer has to put himself in the position of each actor when writing that code.
- einhverfr 14y agoBy engineering, of course, I mean engineering from scratch. On that last point though (splitting this off), I think there are two difficulties in engineering it. First these are fundamentally more complex systems. The more complex a system is the harder it is to spot all points of failure. Additionally more complexity fundamentally means that that failure cases are more complex. Instead I think that the way most of these systems develop is through progressive, evolutionary invention. Ok, I have tally sticks. I can write about them in a journal and use arithmetic to track the totals. I will write the stock on the left, referring to the thing owed (Latin "Debit") and the smaller foil on the right, referring to what is loaned to me (Latin "Credit"). Ok, now I need to categorize these. So I will start putting a code by each one. Now I have a chart of accounts! Now I need to total each of my accounts so I transcribe into another book and now I have a ledger. Do the books balance? Let me add them up and find out. Let's call this a trial balance. And so forth. The utility arises largely from a large number of different people working with real issues to find other uses for the system. We see this with the evolution of SQL over a period of time as well. SQL today may not have changed in its outlines since it was developed but the standards have evolved a lot to meet needs. So the challenge is for something like a disconnected POS. Again a system like the real world invoice and cash voucher system might work best.
- einhverfr 14y agoRegarding distributed eventually consistent transactions consider several employees buying urgently needed office supplies out of petty cash. Every step of the way you end up with two authoritative records which must equal if there is a question. You have cash dispersement vouchers, receipts, final cash vouchers, and the like. Reconciliation and basic management are handled by different people and the material is eventually transcribed from a set of carbon copies into a general journal and eventually a general ledger. What's interesting here though is that this is a very different approach than people usually do with regard to BASE.
- einhverfr 14y agoAs a note, I submitted it but didn't get any upvotes. Here is a link to the blog http://ledgersmbdev.blogspot.com/2012/08/a-software-architects-view-of-design-of.html http://ledgersmbdev.blogspot.com/2012/08/a-software-architec...