В любом обнаружении NoSQL баз данных кто-нибудь обязательно вспомнит о CAP-«теореме». Я не случайно пишу слово «теорема» в кавычках. CAP-«теорема» вовсе не теорема в математическом понимании этого слова. Это неформальное утверждение, сделанное Эриком Брюером в докладе на конференции Principles of Distributed Computing (PODC) в 2000 году. Эрик утверждал, что невозможно создать распределенное (состоящие из нескольких равноценных экземпляров — звеньев) веб-приложение, которое будет одновременно обладать тремя свойствами:
согласованность (
consistency),
доступность(
availability) и
устойчивость к разделению(
partition tolerance), сокращенно CAP. Неформальность утверждения заключается в том, что Брюер не дал определения этим трем понятиям.
Спустя два года Сет Гилберт и Ненси Линч опубликовали исследование, где дали определения понятиям CAP а также формализовали "
отложенную согласованность" (
Delayed Consistency), которую потом прозвали "
согласованность в конечном счете" (
Eventual Consistency) и доказали CAP-«теорему» в терминах указанных определений. Если вы еще не читали исследование, то это обязательно стоит сделать —
lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf
Эта «теорема» так бы и не была никому нужна, если бы её не взяли на вооружение маркетологи NoSQL.