You are also very mistaken about there being "no need" for consistency guarantees. Even systems that don't provide consistency for every data update, do enjoy consistency for some more rare events (like cluster membership). Without strong consistency at all, the range of distributed programs we can build is much reduced. The need for a greater range of distributed programs arises not from geographically separated applications (like ATMs), but from the mere fact that distributed computing is currently our only way to scale computational power (within that data center). If we cannot have consistent distributed computations, our computational power and the range of applications we can build in general would be greatly reduced.
They provide 3 approaches in the paper: SDN node, programmed hardware, and software-only. Software-only approach lost some of the latency-gains, as might be expected.
The tradeoffs are quite seductive, in my experience most companies do not operate their software on a scale where they really have to scale out, but they run multiple instances simply to increase availability.
But then those are probably the same kind of companies that will probably not have the required network hardware, and won't for many years to come.
I'm thinking about stuff like Redis or distributed caches like Hazelcast, maybe even Zookeeper and friends. Any ideas where this could shine?
Cloud vendors could manage the hardware part, but is this model attractive to them, essentially being constrained to single-node performance?
I think cloud vendors would definitely charge a pretty high premium for this, since it requires more than zero work on their part.
Also, aren't most simply-distributed databases constrained to single node performance (for writes, assuming one master)? I feel like you could work in fast reads to this scheme too, if you required replicas to have a complete log in order to respond to a read, since it's all or nothing. The possibility of a slightly (1 op) stale read is possible though.
Your bank account isn't being used for even nearly the same things distributed data stores like this are being used for. And even then they have to make workarounds to ordering issues, otherwise if there were a day when my salary comes in and my rent went out I'd be hit with overdraft charges if they happened in the wrong order.
That's why I'm real cautious about debit cards.
But what they did do was to process the largest debit first, then the next largest, and so on. You have $100 in the account, and completed four transactions at $4, $8, $15, and $90? In that order? Too bad, 90 goes first, followed by three overdrafts.
What fee are you talking about? If you use a debit card, and you don't have the money it will simply refuse the transaction right?
American perspective here—I feel safer using a credit card because it's not my money. If someone fraudulently bills my credit card, it's the bank that they're stealing from, not me. There are legal protections in place which limit my personal liability.
With a debit card, if someone fraudulently uses it, the money is gone and you have to fight to get it back. There are legal protections which limit my liability here too, but when I invoke those protections I'm starting from an inferior position (the money is already missing from my account), and those protections are a little better for credit cards.
Our accounts are also often reconciled with ACH, which is not as fast as it could be. So it's not always true that the transaction will be refused if you don't have the money. It's often true, but credit cards are safer because there's not really a penalty for going over your line of credit.
At the very least, I'd recommend that you have a separate debit card account that is used for store purchases and such. This gets filled (manually!) from another account which you also use only for really important stuff like utility payments, housing, car payments, etc.
Credit cards are always overdrawn in the sense that the bank has extended you a line of credit, but they don't have a fee associated with typical use.
I've worked through a lot of the same reasoning as these people, and as technically correct as PAXOS might be, in the real world, causality at high frequency is a blur at best, and there is absolutely no need to impose the hard constraints that PAXOS and others imply.
The only cases where guaranteed constraint systems are needed are when you don't have traffic and at each time step all parties are capable of asking each other to confirm that from all frames of reference they all agree who and why someone committed first. Which is great, but makes zero sense in the real world.
At scale transactions are and should be committed on a best effort basis.
You don't look at your bank account and wonder why the T-Mobile payment went out slightly after your ATM withdrawal.
Why? Because... shrug. God said so. He works in mysterious ways.
This is awesome. Sign me up.