Why the atomic reference here? I know that provides CAS but if we're talking about a single writer aren't you okay to just replace things anyway?
1,311 karma · joined June 13, 2012
Why the atomic reference here? I know that provides CAS but if we're talking about a single writer aren't you okay to just replace things anyway?
Some highlights:
* when a client first makes requests store their version, so that they don't have to worry about it * decouple features from versions, by using 'gates' (allowing for far more versions than would otherwise be possible)
Wikipedia has a good source of protocols used across the Internet - you'll recognise a lot as they have significant usage:
In fact, they simply upgraded their version of Play and yielded some performance wins (which the article then explains more fully).
I suspect most people (HN people) hold pretty strongly the belief that everything can be quantified. However, within reasonable limits and current stats and science, lots of things in practice cannot - yet at least.
A lot of advertising probably falls under this. To verify effectiveness we'd need, as the article notes, to control for so many other factors that it would often be too difficult.
So we often guess, or leverage past knowledge and apply it to what we hope are similar circumstances.
If you take the point to be that marketing is not a hard-science, than it's true. Some cases sure, but plenty not.
Although to be fair, he quotes me generously. Later on in that discussion I give up my wisdom and get confused again.
Re: the debate about CA vs CP, I've seen this too, but I think it reflects confusion rather than genuine options. The 'P' of CAP takes effect whenever you have two or more processes which clients can communicate with. So even if you are running within the same datacenter when using ES, provided clients can communicate with more than one ES node, CAP still applies.
Once you are distributed, P is not an optional. Rather, in the case of network failure, consistency or availability is what suffers. A system cannot be both CA and distributed.
So, for example, Elasticsearch is not a 'CA' solution despite the diagram in the article, but is actually closer to PC (although, in practice it is far more subtle than even that as it is not perfectly consistent, and configuration options allow for some trade-offs between availability and consistency in the case of communication errors.
http://www.elasticsearch.org/guide/
Admittedly they were pretty poor early on, but they've matured with the product.
For example:
- I struggle to visualise feet or inches, we always used metric units at school so metres and cms are what I understand - kilograms for weight is much more natural to me than stones or ounces (really, I have no idea how much an ounce is, although I kind of know a pound is a small bag of sugar-ish) - miles are probably the only imperial unit I'd use, but even still, I find km much easier to reason about, perhaps because I have lived in Europe in the past. - oh, and the trusty pint of course!
'The FT journalists evidently did not read carefully the technical research papers and excel files that I have put on-line.'
It's not useful to focus only on pure monopoly. From an economics perspective, there are plenty of other market structures which can be damaging for consumers.
Prior to this backing up was a messy process.
- downtime (lack of availability) is very expensive to them, both directly and also reputationally
- traditional ACID stores don't scale with writes whereas an eventually consistent store can achieve this
So I completely agree with you in short: Amazon have great reasons to pursue approaches based on eventual consistency.
One thing that surprised me though was the lack of a key player: Amazon. Their Dynamo paper was hugely significant and as a company they use eventually consistent stores for a whole swathe of products at scale.
Why mention Facebook and Google but omit this other major player, especially are their experiences tell a different story.
Decoupling has loads of benefits - for example, it gives separate development cycles, and in this case provides a point of scalability too - not all REST dbs cache brilliantly or aggressively enough for all use cases.
The point about using delayed syncing between client and server is separate. I can see how it can help in certain use cases (Google docs doesn't auto-save every single letter you type in for example I suspect, but probably bulks them up into a save every x seconds) but at other times this kind of strategy sounds like it will add unnecessary complication.
Anyone else experiencing this?
Much better to explain the bug/problem and let them fix it.