Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Yes, you can write some storage solution or yet another database without knowing ACID terms but you will still end up somewhere in the CAP triangle. Using common terms like these makes it easier to communicate with other engineers and makes it more obvious that a lot of things have already been solved and perhaps there’s a library that you can use. In the same spirit you should not write your own cryptographic algorithm and for example you could develop an API that is not RESTful but it’s more interoperable when you are using standards and prior knowledge. I personally would not hire a guy to work databases if he insists on not having to learn about ACID.


> you will still end up somewhere in the CAP triangle

Drop P and you'll end up with both consistency and availability, right? Right?

("This is a trade-off we are ready to accept")


I'm somewhat ashamed to say that, when I interview, a lot of people who claim "distributed systems experience" get some variant of a line of questions that ends in the user experience of systems that do not aim for partition-tolerance.


How do you drop P?


That's the point, you can't.

Put quite many people say "you cannot have all three of Conistency, Available, Partition Tolerance", which sounds like you can keep any two / drop one at will.

But the right starting point is: "Partitions will happen. When they do, do you drop A or C?"


You just assume network partition is never happening. If calls are synchronous, assume they always reach other side and finish. If async, also assume successful outcome immediately after initiating the call.

This "almost always" works.


That's the joke.


Yes




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: