Pull to refresh

Comments 70

То есть, по Вашему
C согласованность данных — состояние системы, когда действие внешних и внутренних факторов не приводит к ухудшению её функционирования.
A доступность — способность выполнять свои функции, несмотря на полученные повреждения.
P устойчивость к разделению — свойство выполнять свои функции во времени.
Статья хорошая, теоретический вывод — чушь. Извините.
То есть, по Вашему

Я не очень понял, откуда взяты эти определения. В моей статье их точно нет.


Извините.

Из определений этих понятий, Википедия устроит? Зачем понадобилась подмена смыслов — непонятно.
Зачем понадобилась подмена смыслов — непонятно.

А статью пробовали почитать? Говорят, иногда помогает.

Ответ в первом комменте. Все чаще на Хабре появляется «научпоп», где авторам даже значения терминов лень посмотреть.
Мудрость начинается с того, что вещи называют своими именами

Вы написали:


То есть, по Вашему

Это не по моему, а по вашему. Я такие определения не давал.


Все чаще на Хабре появляется «научпоп», где авторам даже значения терминов лень посмотреть.

Посмотреть в википедии? Вы это серьезно? Т.е. ссылки на серьезные научные публикации прошли мимо вас?

C: Безопасность
A: Живучесть
P: Ненадежная распределенная система

разве не ваш вывод, подменящий один смысл терминов другим? Серьезная научная публикация. :))

Т.е. по вашему, если я скажу, что "Ту-154 — это самолет", то это будет подмена понятий?


Оригинально! Пишите еще.

Недостаточно ясно? ОК, в Вашем выводе заменяем акронимы и термины их настоящими значениями. Получается чушь? Потому что она и есть. Впрочем, дисскуссия себя исчерпала. Статья, повторяю, хорошая, а выводы… как у «британских ученых» :)

Думаю, что стоит разъяснить подробнее, что имеется в виду.


  • C: Безопасность
  • A: Живучесть
  • P: Ненадежная распределенная система

Короткие и емкие определения:


Безопасность — плохое не происходит
Живучесть — хорошее происходит


Теперь попытаемся понять, что же такое консистентность? К чему её стоит отнести? Консистентность — это про сохранение внутренних инвариантов системы, т.е. плохое — это нарушение инварианта. Соответственно, его сохранение — это безопасность.


Что такое доступность? Это свойство системы отвечать на запросы. Если нет доступности, то система свои инварианты сохраняет, однако ничего полезного не делает. Поэтому доступность позволяет делать что-то хорошее, полезное. Следовательно, доступность — это свойство живучести системы.


Любые требования к распределенным алгоритмам можно отнести либо к живучести, либо к безопасности.


Как-то так.

А в чём хорошая???? Как на меня каша из эмоций
Про 2 пункт (P) странные выводы:
Таким образом, если мы рассматриваем систему, которая работает с реальной ненадежной сетью, то нарушения сетевой связности — это не исключительная ситуация, а то, с чем приходится иметь дело. И буква P в данном контексте всего лишь означает, что в системе возможно нарушение сетевой связности.
P тут означает не то, что расщепление возможно (ведь если в системе более 1 ноды, взаимодействующих по сети, то этой ситуации не избежать), а то, что система продолжит функционировать.

Продолжит или нет функционировать система — вопрос к алгоритму, а не к системе. С точки зрения системы — ей все равно, что там продолжит или не продолжит работать.


Буква P относится к системе. Про это в статье подробно разжевано. Иначе получится, что если система CP, то в случае пропадания majority система перестанет функционировать, т.е. P внезапно пропадет. Противоречие.

Так я и не говорил, что P относится к алгоритму. Если система заявлена как CP, то она должна справляться с расщеплением. А каким алгоритмом это достигается — вторично.

Что означает "справляться с расщеплением"?

Продолжит функционировать в том или ином виде.

Поясню свой вопрос.


Предположим у нас система CP. В таком случае разумно предполагать, что справиться с расщеплением — означает сохранение консистентности.


Если же система AP, то тогда справиться с расщеплением — это обеспечить полную доступность.


Уже видно, что определение "справиться с расщеплением" плавает и зависит от того, что мы в итоге хотим получить. Но довершает всю абсурдность ситуации то, что есть системы просто P. Что тогда означает "справиться с расщеплением"? Непонятно.


Пример системы с P: Jepsen: MongoDB 2.4.3 stale reads

Хм. Может и у меня каша в голове из этих мифов. По CAP столько разной противоречащей друг другу информации, что уже и не знаешь, как на самом деле.

Предположим у нас система CP. В таком случае разумно предполагать, что справиться с расщеплением — означает сохранение консистентности
Для меня всегда P в контексте системы означало, что при разделении части по обе стороны продолжат работать. Для клиента в этом кейсе, по сути, ничего не поменялось. Но в таком случае рассинхрон данных будет и поддерживать консистентность кластера в целом не видится возможным.

Это вы AP описали. Если, например, только majority продолжило работать — тогда оно CP. Потому что ноды в minority работают, но отвечать отказываются.

P — система продолжает функционировать при netsplit.
функционировать — обеспечивать выполнение других требований.
Если нет требований C и A то функционирование лишь умозрительное, заключаещеся в том, что процесс просто не упал на ноде

Осталось лишь сделать следующий шаг. Вот зачем знание о том, что система продолжает функционировать? Ведь другие буквы как раз и будут говорить, как конкретно она будет функционировать. Зачем это знание еще раз дублировать в P, причем неявным способом?


Мне это совершенно непонятно.

Потому что не всегда знание о C, к примеру, вообще нужно. Если я использую БД для аналитики или статистики, мне важно, чтоб оно не падало, а то что там не консистентные данные будут — не критично.

Ну так тогда и стоит говорить: мне нужна система AP. Пока не вижу противоречий с тем, что я выше написал.

P имеет смысл при наличии других требований в виде C или А.
более того это явное требование к системе — функционировать при netsplit. вы можете построить C систему а можете построить CP систему. и это разные вещи, и P нельзя не принимать во внимание
P имеет смысл при наличии других требований в виде C или А.

Это откуда следует? В моей статье такого нет. Мы что обсуждаем? Для конкретности хочется иметь под рукой какие-нибудь ссылки.


более того это явное требование к системе — функционировать при netsplit

А это вообще к чему? Откуда берется это "явное требование к системе"? Тут явно нужен какой-то контекст, и я не могу его извлечь из данных суждений.

ссылки на что, на чье-то авторитетное мнение?
это следует из-того что определение «система функционирует» слишком абстрактно и без других требований или уточнений совершенно непонятно. P здесь это возможность выполнениях других требований в условиях netsplit
Имхо тут проблема с человеческим языком.
В статье Гилберта и Линч говорится следующее (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.6951&rep=rep1&type=pdf) —

2.3 Partition Tolerance
The above definitions of availability and atomicity are qualified by the need
to tolerate partitions. In order to model partition tolerance, the network
will be allowed to lose arbitrarily many messages sent from one node to
another. When a network is partitioned, all messages sent from nodes in
one component of the partition to nodes in another component are lost.

Речь тут о том, что сети разрешается терять сообщения. Точка. То есть это действительно свойство сети, а не системы и не алгоритма и tolerance означает что мы разрешем/терпим такое свойство сети, а не о каких-то гарантиях для этой ситуации.

Именно об этом я и пытался донести свою мысль.


Спасибо за ссылку!

Теорема не устарела, она никогда и не была актуальной, так как оперирует понятиями, совершенно не важными на практике. Именно поэтому её никогда не было смысла использовать. Славно, что это начали понимать.

То-то в кластере, обслуживающем десятки терабайт данных, при условии отсуствия сети «как у гугла» актуальность теоремы видно «невооружённым глазом».

Не расскажете про свои наблюдения?

Примерно как тут https://aphyr.com/posts/324-call-me-maybe-aerospike к сожалению не могу подробнее. При этом кластер на постгресе (в котором данных даже больше) потерей данных не страдает. (Там есть другие сложности конечно же, но не потеря данных)
CAP-теорема — интересное логическое представление, утверждающее что «идеал не достижим». Ну ок. При этом вполне себе могут появиться системы, которые каждую из составляющих CAP на практике доведут до 99.9...(тут 100 девяток)%, чего на практике (в масштабах нашей планеты, человеческой жизни и других практических вещей) будет абсолютно достаточно для того, чтобы считать систему полностью CAP. Да, мудрые математики в своих кабинетах будут рассказывать, что это не правда — но кого это будет волновать?
Spanner — просто ещё один шажок к такой системе, хороший, но далеко не последний.
Когда consistency начинают в процентах, то случается монга или аэроспайк. На неоктором масштабе /dev/null куда как лучше
Что плохого в consistency в процентах? Допустим система даст гарантию, что данные будут консистенты в 99.9(100 девяток)% случаев и консистентность на практике нарушится впервые где-то уже после термодинамической смерти Вселенной. Я думаю, такой системой вполне можно пользоваться.
UFO just landed and posted this here
Что плохого в consistency в процентах? Допустим система даст гарантию, что данные будут консистенты в 99.9(100 девяток)%

Такой можно пользоваться, конечно. Только как её получить? У вас есть готовые рецепты?
Очень похоже на то, что такое утверждение не очень далеко ушло от "логических представлений".


И как верно заметили выше, стрельнуть может в любую секунду. Одно дело, если у вас логи, другое — если баланс на карте. Сможете продать такую систему банку? Я почему-то сильно сомневаюсь.

Ну, стрельнет, и что? Те же банки пользуются кучей систем, надёжность которых не достигает 100%. Вообще трудно себе представить себе что-то, надёжное ровно на 100%. С какой-то степени вероятности система уже применима на практике. Да к любому прибору, даже критически важному, прилагается метрологическая справка насколько он точен и каковы его погрешности — и ни в одном таком документе 0% погрешности не написано.

Тут опять возникла путаница.


Не стоит путать надежность и консистентность. Надежность никогда не будет 100%, однако алгоритм должен быть на 100% консистентен. Пример: raft consensus.


Стоит внимательней относиться к используемому словарю.

монга прошла джепсен-тест. Транзакционности там нет, но с консистентностью уже всё ок.

Да, я знаю, молодцы, что починили. Выше речь всё таки о том, что когда консистентность «на глазок», то ничего хорошего выйти не может. Монга до недавнего времени и аэроспайк хорошие кмк примеры.

Ой, я не посмотрел кого учу, сорри :). Спасибо за ваш подкаст :)

Спасибо на добром слове :)

Есть такие ребята как GetIntent — им норм с аэроспайком. Ну то есть потеряли — ок. Но обычно не теряем и рубим на этом денег.

У нас похожая история. Я не говорю же, что аэроспайк не годен ни на что, я утверждаю, что 1) их маркетинг расходится с реальностью 2) консистентность «на глазок» это её отсуствие.

Очевидно, да. Оч хочется посмотреть на джепсен-тест аранги. Они всё обещают доточиться.

Нужно написать очень много букв, чтобы опровергнуть очевидное несоответствие, и тем больше, чем оно очевиднее. Потому лишь кратко упомяну, что если мы будем следовать выводу автора о невозможности построения живучей и безопасной системы, обладающей свойствами распределенности, то ни одна из действующих больших сложных технических систем не должна была бы существовать. Они существуют. Да, они не надежны на 100%, но этого никто и не требует. Да, они не живучи на 100%, но и этого никто не требует. Достаточно грамотно построенной поддержки жизненного цикла. То же самое относится и к распределенным сетям, вычислительным или иным.
Так ведь CAP абсолютна. Как только за любую букву вы прячете не 100% а чуть меньше, так сразу система становится возможной, но теорема уже будет не применимой.
При этом вводится новое понятие: effectively CA. Такое ощущение, что автор заигрался с понятиями и начал выдумывать новые без какого-либо определения, т.к. старые плохо описывали такую замечательную систему.

Я вот прочитал статью, и не увидел, чтобы там вводили такое понятие. Там используется фраза «effectively CA», но в кавычках и только после того, как прямым текстом сказано, что с точки зрения CAP теоремы Spanner — CP. А после этого идут долгие и упорные диферамбы Google и Spanner, в которых рассказывается как же они делают Partition-ы маловероятными, а если уж они происходят, то как уменьшить их влияние.
Там используется фраза «effectively CA», но в кавычках и только после того, как прямым текстом сказано, что с точки зрения CAP теоремы Spanner — CP

А зачем тогда писать «effectively CA», если к CAP теореме это не имеет отношения?

А разве каждое использование букв C и A обязательно должно иметь отношение к CAP теореме? В статьте объясняется, что в effectively CA означают C и A: C — означает консистентность как в CAP теореме, а A означает высокую доступность с 5-ю 9-ами, а не ту доступность, о которой идет речь в CAP теореме. И в статье это прямым текстом написано, так что я не понимаю, почему вы меня об этом прашиваете?
А разве каждое использование букв C и A обязательно должно иметь отношение к CAP теореме?

А разве в статье под заголовком "Spanner, TrueTime & The CAP Theorem." должно быть по-другому? Ну с учетом того, что многие люди, судя по комментариям, не знают определений. По-моему, явное использования других смыслов с мутным описанием — явный признак манипуляции.

Нет не должно, если один из пунктов статьи показать, что кроме A в терминах CAP теоремы, есть и другие «A» и что не нужно всегда подразумевать под A именно тот смысл, который в него вкладывает CAP теорема, тем более что он не отличается практичностью.

То, что многие люди чего-то не знают, не делает статьи, которые описывают вещи, которые эти многие люди не знают, неправдивыми или вводящими в заблуждение. С точки введения в заблуждение, я считаю ваши претензии не оправданными, так как автор прямым текстом написал, что он имеет ввиду под A в effectively CA, и обратил внимание на то, что это не то же самое A, что и в CAP теореме, более того сделал это на самой первой старнице.

Хорошо, объясните тогда следующий факт. Если A — это не A CAP теоремы, то почему бы тогда не назвать "effectively CAP", ведь есть все 3 буквы в наличии. Зачем потребовалось еще P переобозначать? Тем более, что явного переопределения буквы P в тексте нет.

Если A — это не A CAP теоремы, то почему бы тогда не назвать «effectively CAP», ведь есть все 3 буквы в наличии.
Где вы в этом предложении увидели факт и какой именно? Я вот вижу, только как вы пытаетесь угадать коварные планы автора (ключевой момент — ваша попытка гадать, чтобы вы потом не кидались в меня помидорами за то, что я выдрал цитату из контекста).

Зачем потребовалось еще P переобозначать?
Будьте конкретны, где и как автор переобозначил P?

Если вы хотите продолжать спор на основе ваших догадок о коварных планах автора, то делайте это без меня. Я, как вы могли заметить, придерживался выше исключительно текста статьи, и показал, что в статье автор прямым текстом говорит, что Spanner, строго формально, с точки зрения CAP теоремы — CP. При этом автор не зашифровал это сообщение, не спрятал его в сноску мелким шрифтом или еще что-то подобное. После этого автор указал, что Availability не должна ограничивается тем смыслом, который в него вкладывает CAP теорема, и, оказывается, есть жизнь и за пределами CAP теоремы. И только после этого пошел обсуждать как там космические корабли что-то бороздяд…
Где вы в этом предложении увидели факт и какой именно?

Факт в том, что было названо не "effectively CAP", а "effectively CA". Хочется услышать все-таки ответ на свой вопрос: почему в статье не назвали "effectively CAP"?

А почему вам не спросить об этом автора статьи? Еще раз повторяю, я не играю в угадайку — я не знаю, о чем думал автор статьи и не собираюсь гадать на эту тему, но я умею читать и понимаю прочитанное. Почему автор не написал CAP вместо CA — это гадание, то что автор написал CA и объяснил, что он имеет под этим ввиду (и что это не CA в терминах CAP теоремы) — это факт.

Я задаю эти вопросы в надежде, что вы увидите в рассуждениях автора статьи изъян. Но, судя по всему, вы его видеть в упор не хотите. Ваше право.


Вот давайте разберем ваши комментарии в качестве примера уровня дискуссии.


Я вот прочитал статью, и не увидел, чтобы там вводили такое понятие.

А я вот прочитал и увидел. Сразу вспоминается фраза: "как это — "жопа" есть а слова нет?".


Там используется фраза «effectively CA»

Т.е. для вас, судя по всему, крайне принципиально, что это не понятие, а именно фраза. Это, безусловно, все в корне меняет, т.е. описывать, что означает фраза — не нужно. Ведь это не понятие, верно? А значит можно просто ее использовать, если очень хочется. Такая логика, да?


А разве каждое использование букв C и A обязательно должно иметь отношение к CAP теореме?

А разве нет? Ведь статья называется: "Spanner, TrueTime & The CAP Theorem". Все, кто использует просто отдельные буквы, используют её в контексте CAP теоремы. С этого и начинается статья. И если начать использовать по-другому назначению, то стоит явно указать, что мы эти буквы хотим переопределить, и стоит указать как именно. Ну это если ты хочешь, чтобы тебя поняли. А если не хочешь — то тогда можно писать как попало, все равно схавают. Тем более, прецедент имеется.


В статьте объясняется, что в effectively CA означают C и A: C — означает консистентность как в CAP теореме, а A означает высокую доступность с 5-ю 9-ами, а не ту доступность, о которой идет речь в CAP теореме. И в статье это прямым текстом написано.

И тут хочется спросить: а вы читали мою статью? Ну это где я обсуждал про то, сколько же девяток надо, чтобы называться A "по новому"? Или это не надо специфицировать, и так сойдет?


Для меня тут видится крайне очевидная штука: в рамках CAP теоремы система получается CP. Но тогда сразу возникает вопрос у обывателя: а как же высокая доступность? Чтобы утихомирить обывателя, ему объясняется, что на самом деле доступность — это доступность в рамках девяток. И 5 девяток — это та самая доступность, когда можно сказать "effectively CA".


Разумный человек сразу спросит:


  1. а почему 5 девяток достаточно, а не 6 или 10?
  2. а куда делать буква P?

Меня, например, эти вопросы крайне волнуют. А еще волнует вопрос: а с какого перепугу надо переопределять понятия в CAP теореме? Ведь она сформулирована только для определенных понятий, для других понятий нет смысла говорить о CAP теореме. Надо что-то выбрать одно: либо про теорему, либо про другое. Если же совмещать все вместе, то сразу возникает вопрос: а зачем? И это тот вопрос, который меня мучал на протяжении всей статьи? Ведь если убрать ссылку на CAP теорему и связанное с ней обсуждение, то ничего в статье не поменяется.


И я еще не сказал, что автор просто привел неправильные определения, даже в рамках CAP теоремы.


Если вам нравятся такие статьи — на здоровье. Я хочу сказать лишь следующее. В контексте обсуждений CAP теоремы ходят множество мифов. Как правило, все они связаны с неверным толкованием определений. Добавлять в обсуждение новые толкования без нормального объяснения старых — занятие крайне странное и недальновидное, которое может неподготовленного читателя ввести в заблуждение.


Я лишь попытался обнажить некоторые аспекты, связанные с этой теоремой, на основе современных представлений. И к своему прискорбию могу сообщить, что ни один комментарий не был конструктивен, за исключением этого. Т.е. была приведена правильная ссылка и цитата, из которой был сделан вывод. Все остальное — это толчение в ступе собственных мыслей без понимания простого факта: утверждение должно иметь основу.

Я задаю эти вопросы в надежде, что вы увидите в рассуждениях автора статьи изъян. Но, судя по всему, вы его видеть в упор не хотите. Ваше право.
А я вам указываю на то, что ваши вопросы — это гадание, но вас это не интересует — вам нравится гадать.
Т.е. для вас, судя по всему, крайне принципиально, что это не понятие, а именно фраза. Это, безусловно, все в корне меняет, т.е. описывать, что означает фраза — не нужно. Ведь это не понятие, верно? А значит можно просто ее использовать, если очень хочется. Такая логика, да?

Нет, не такая. Ваши слова:
Почему их не устроило CP с высокой доступностью — мне неведомо.
При этом вводится новое понятие: effectively CA.

Я вам, просто, указал, на то, что авторов вполне устраивает называть Spanner CP в терминах CAP теоремы (цитату я вам привел, вы, просто, ее почему-то игнорируете) и никакого нового понятия они не вводят, никакой новой модели не определяют. А effectively CA используют объяснив, что они подразумевают под effectively, C и A, уж не говоря о том, что effectively CA взято в кавычки (явный признак того, что слова используются не в их обычном смысле). Т. е. авторы подчеркивают всеми доступными грамматическими средствами + прямым указанием в тексте, что CA в данном контексте не является CA в терминах CAP теоремы, а Spanner в терминах CAP теоремы является CP системой.
И тут хочется спросить: а вы читали мою статью? Ну это где я обсуждал про то, сколько же девяток надо, чтобы называться A «по новому»? Или это не надо специфицировать, и так сойдет?
Я то читал, а вы мои комментарии читали? Еще раз повторю, авторы объяснили, что они имеют ввиду под A, и прямым текстом написали, что это не A в терминах CAP теоремы. Такое употребление слова availability имеет право на существование, потому как слово availability — это не слово, которое за пределами CAP теоремы не имеет смысла или никогда не используется.
Разумный человек сразу спросит:

1. а почему 5 девяток достаточно, а не 6 или 10?
2. а куда делать буква P?

Меня, например, эти вопросы крайне волнуют.
Я эти вопросы никоим образом не считаю бессмысленными. Если вам эти вопросы интересны — задайте их автору статьи, а не кидайтесь на него за то, что он не ответил на все мыслимые и немыслимые вопросы в короткой записке. Автор статьи рассказывает, что для использования внутри Google-а, им такого количества 9-ок достаточно, чтобы пользователи Spanner-а не задумывались о возможных отказах сервиса. Того, что этого достаточно всем, на сколько я вижу, в статье не утверждается.

Более того, касательно исчезнувшей P. В статье этому посвящен целый раздел. Где говорится, что на самом деле, строго формально, P никуда не исчезла, и более того эта самая P реально происходила на практике. НО благодаря их героическим усилиям и куче вложенных в инфраструктуру бабок, вероятность этого P настолько низкая, что на фоне всех других ошибок она не выделяется. Подчеркну, в статье сначала прямым текстом говорится, что P есть, а потом уже автор идет в пространные обсуждения о влиянии этого самого P.

А еще волнует вопрос: а с какого перепугу надо переопределять понятия в CAP теореме?
Повторюсь еще раз, авторы не переопределяли понятия CAP теоремы, а прямым текстом указали на то, что они не используют понятия CAP теоремы. Так уж сложилось, что слова availability и consistency — перегруженные слова, они имеют очень много смыслов, и это не вина автора статьи — так сложилось за долго до того, как вышла статья. Более того на сколько я вижу, автор приложил все усилия к тому, чтобы availability и consistency в терминах CAP теоремы не спутали с тем, о чем он говорит большую часть статьи.

Ведь она сформулирована только для определенных понятий, для других понятий нет смысла говорить о CAP теореме.
Автор говорит, что есть CAP теорема, в которой availability имеет строго определенный смысл. А потом говорит, что есть вообще-то еще и high availability, которая не подпадает под определения CAP теоремы, но важна с практической точки зрения (т. е. говорит то же самое что и вы — когда речь идет о high availability, то это уже не подпадает под влияние CAP теоремы). Одно из утверждений статьи, как раз заключается в том, что кроме мира CAP теоремы с ее понятиями C, A и P, имеет смысл рассматрвать availability и по-другому. Вы оспариваете, то что оценка количества девяток для практического использования имеет смысл? Или вы просто по религиозным соображениям запрещаете обсуждать high availability с ее девятками и availability в терминах CAP теоремы в одной статье (даже при условии, что статья четко разделяет эти смыслы и явно указывает, где и какой используется)?
Более того, касательно исчезнувшей P. В статье этому посвящен целый раздел. Где говорится, что на самом деле, строго формально, P никуда не исчезла, и более того эта самая P реально происходила на практике. НО благодаря их героическим усилиям и куче вложенных в инфраструктуру бабок, вероятность этого P настолько низкая, что на фоне всех других ошибок она не выделяется. Подчеркну, в статье сначала прямым текстом говорится, что P есть, а потом уже автор идет в пространные обсуждения о влиянии этого самого P.

Если я правильно истолковал ваши слова, то она вроде как есть, но вроде как и нет. Т.е. она должна быть, но ее нет. Не находите это несколько странным? Это вопрос к вам.


Вы оспариваете, то что оценка количества девяток для практического использования имеет смысл?

Нет. Я оспариваю качество определений, вводимые в статье. И как следствие, качество самой статьи.


Для конструктивного общения было бы неплохо, чтобы каждое высказывание типа "Автор статьи рассказывает, что ...", "Автор говорит, что" и т.д. были бы приведены прямые цитаты, доказывающие эти тезисы. Так как большинство таких тезисов спорно.

Если я правильно истолковал ваши слова, то она вроде как есть, но вроде как и нет. Т.е. она должна быть, но ее нет. Не находите это несколько странным? Это вопрос к вам.
Нет, не правильно. Нет, не нахожу. Прямым текстом в статье говорится, что P есть точка. Подтверждаю цитатой:
The purist answer is “no” because partitions can happen and in fact have happened at Google, and during
(some) partitions, Spanner chooses C and forfeits A. It is technically a CP system. We explore the impact
of partitions below.

Нет. Я оспариваю качество определений, вводимые в статье. И как следствие, качество самой статьи.
До сих пор вы, более или менее, оспаривали определение Availability. В статье говорится что они подразумевают под Availability 5 девяток и больше — конкретное численное значение, вам оно может не нравится, вам может быть не достаточно 5 девяток, но определили для целей статьи они Availability вполне конкретно и не двусмысленно. Итого: считаю претензии к качеству необоснованными.
Для конструктивного общения было бы неплохо, чтобы каждое высказывание типа «Автор статьи рассказывает, что ...», «Автор говорит, что» и т.д. были бы приведены прямые цитаты, доказывающие эти тезисы. Так как большинство таких тезисов спорно.
Для конструктивного общения было бы полезно, если бы вы указали, какие тезисы выглядят спорно, чтобы я мог их защищать.
Нет, не правильно. Нет, не нахожу. Прямым текстом в статье говорится, что P есть точка.

У вас проблемы с удержанием контекста. Речь про "effective AC", в этой фразе нет P, хотя она должна быть, согласно определениям.


Для конструктивного общения было бы полезно, если бы вы указали, какие тезисы выглядят спорно, чтобы я мог их защищать.

Это работает в другую сторону. Тот, кто приводит аргументацию, её и подкрепляет. Например, я в своей статье сначала привожу дословную цитату, а затем начинаю её разбирать.


Если же приписывать статье всякое без ссылок — то это очень странный способ вести дискуссию.

У вас проблемы с удержанием контекста. Речь про «effective AC», в этой фразе нет P, хотя она должна быть, согласно определениям.
Это у вас проблемы с удержанием контекста, или памятью, или чтением, или не знаю еще с чем… Потому как я вам уже несколько раз упоминал, что «effectively CA» не использует термины CAP-теоремы. Вы цитат подтверждающих свою позицию не привели, а я привел.

Это работает в другую сторону. Тот, кто приводит аргументацию, её и подкрепляет. Например, я в своей статье сначала привожу дословную цитату, а затем начинаю её разбирать.

Если же приписывать статье всякое без ссылок — то это очень странный способ вести дискуссию.

1. Я отказывался подкреплять аргументацию? Нет я попросил вас указать, подкрепления каких именно утверждений вы хотите услышать. Вам стоит быть внимательнее, чтобы не начать оспаривать утверждения, которых я не делал (как вы уже это делали относительно стаьти).
2. Советую вам воспользоваться вашим же советом и перестать гадать, а начать приводить цитаты из статьи. Начните с цитаты, которая подвердит, что «effectively CA» и использует определения CAP-теоремы, чтобы ваши доводы о необходимости P, согласно определениям CAP-теоремы, имели разумное подкрепление в статье.
«effectively CA» не использует термины CAP-теоремы.

Допустим. Не могли бы вы привести тогда:


  1. Прямую цитату, подтверждающую ваши слова о том, что они не используют термины CAP-теоремы.
  2. Цитату, где бы определялось понятие «effectively CA», т.е. раскрывался бы ясный смысл букв C и A, используемые в понятии.
1. Утверждение, что Spanner CP с точки зрения CAP-теоремы, и значит не CA с точки зрения CAP-теоремы:
The purist answer is “no” because partitions can happen and in fact have happened at Google, and during (some) partitions, Spanner chooses C and forfeits A. It is technically a CP system.

2. Прямое утверждение, что под A не подразумевается тотальная доступность, а вместо этого имеется ввиду высокая доступность с каким-то там количеством девяток:
This does not imply 100% availability (and Spanner does not and will not provide it), but rather something like 5 or more “9s” (1 failure in 10^5 or less).

Теперь про цитату про определение «effectively CA», как я уже упоминал выше — это не определение, автор не вводит новых понятий. Но цитата выше явно указывает на то, что подразумевается под A. Конкретного указания на используемую модель консистентности нет, кроме того, что она строгая:
As with most ACID databases, Spanner uses two-phase commit (2PC) and strict two-phase locking to ensure isolation and strong consistency.

А слову effectively собственно посвящена большая часть статьи:
If its actual availability is so high that users can ignore outages, then Spanner can justify an “effectively CA” claim.

Далее автор рассказывает как достигается высокая доступность при наличии P, я не буду приводить конкретные цитаты, потому что этому посвящена большая часть статьи. Я приведу только тезисы, если вы не согласны с тем, что в статье присутсвует такой тезис, то укажите, я подберу цитаты из статьи:
1. P случаются, но редко, благодаря супер-пупер крутой Google-овой сети и наученным инженерам;
2. даже если P произошел, все еще можно обслуживать какие-то запросы, даже на стороне minority;
3. если произошел P, то есть вероятность, что сетевая инфраструктура так повреждена, что пользователь просто не может послать запрос;
4. статистика по инцидентам со Spanner-ом показывает, что проблемы с сетью не являются самым частым инцидентом при работе Spanner.
Прямое утверждение, что под A не подразумевается тотальная доступность, а вместо этого имеется ввиду высокая доступность с каким-то там количеством девяток:

Изначальный ваш тезис был "«effectively CA» не использует термины CAP-теоремы". Мне не очень понятно, как он в конце концов свелся к изменению определения для A. Т.е. я не вижу утверждения о том, что буква C используется в другом контексте. Или С использует термин из CAP теоремы? Хочется тут большей определенности, т.е. все ли буквы в контексте «effectively CA» не используют термины CAP-теоремы или только некоторые?


Теперь про цитату про определение «effectively CA», как я уже упоминал выше — это не определение, автор не вводит новых понятий.

Для меня «effectively CA» — это новый термин, т.к. до этого я слышал CA в рамках CAP теоремы. Если мне теперь вводят нечто типа «effectively CA», то я хочу понимания, что означает C и A. Сюда по вашим цитатам, вы так и не смогли найти явного объяснения этих букв и привести соответствующую цитату, объясняющую, что означает буква C из «effectively CA».

Изначальный ваш тезис был "«effectively CA» не использует термины CAP-теоремы". Мне не очень понятно, как он в конце концов свелся к изменению определения для A. Т.е. я не вижу утверждения о том, что буква C используется в другом контексте. Или С использует термин из CAP теоремы? Хочется тут большей определенности, т.е. все ли буквы в контексте «effectively CA» не используют термины CAP-теоремы или только некоторые?
Ок, поясничайте дальше.
Для меня «effectively CA» — это новый термин, т.к. до этого я слышал CA в рамках CAP теоремы. Если мне теперь вводят нечто типа «effectively CA», то я хочу понимания, что означает C и A. Сюда по вашим цитатам, вы так и не смогли найти явного объяснения этих букв и привести соответствующую цитату, объясняющую, что означает буква C из «effectively CA».
Судя по всему, вам стоит для начала прочитать статью.

То что подразумевается под A было указано явно — цитату я вам привел. Под C подразумевается одна из форм строгой консистентности — цитату я вам привел. Про effectively я вам тоже цитату привел.

Но если вы хотите поясничать, а не вести конструктивную дискуссию — ваше право. Только я в этом участвовать не буду.

Очень аргументированно и конструктивно, спасибо.

Имхо гугл всё правильно написал — они реализовали на _практике_ CP систему, но не остановились на этом, а приблизились к доступности на столько, на сколько возможно + добились высочайшей производительности. Это многого стоит.
Sign up to leave a comment.

Articles