Что такое & ldquo; Linearizability & rdquo;?

  1. Резервное копирование
    $ mysqldump -A | gzip > mysqldump-A.gz
    
  2. Восстановление отдельной таблицы
    $ mysql -e "truncate TABLE_NAME" DB_NAME
    $ zgrep ^"INSERT INTO \`TABLE_NAME" mysqldump-A.gz | mysql DB_NAME
    
23
задан unnknown 21 March 2012 в 19:06
поделиться

3 ответа

Один объект считается линеаризуемым, если

(a) каждый из его методов является атомарным. Представьте их как синхронизированные методы Java, но подробнее ниже.

(b) может быть не более одной ожидающей операции от любого заданного потока / процессора.

(c) операции должны вступить в силу до их возвращения. Недопустимо, чтобы объект ставил их в очередь, чтобы выполнять их лениво.

Теперь, (а) можно ослабить намного больше. Линеаризуемость требует, чтобы эффект этой операции был атомарным. Таким образом, операция добавления в связанном списке без блокировки будет иметь одну точку в своем исполнении («точку линеаризации»), до которой этот элемент не был добавлен, и после которого этот элемент определенно находится. Это лучше, чем получение блокировок. потому что замки могут блокировать бесконечно.

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

И поскольку они вынуждены оказывать влияние когда-то во время вызова метода (стеки должны быть push / pop, множества должны быть добавлены / удалены и т. Д.), Объект может быть рассмотрен с помощью известных методов последовательной спецификации (pre и post). условия и т.д.).

В то время как мы находимся в этом, различие между линеаризуемостью и последовательной последовательностью состоит в том, что последнее не требует (c). Для последовательно согласованного хранилища данных метод не должен иметь эффекта сразу. Другими словами, вызов метода - это просто запрос к действию, но не само действие. В линеаризуемом объекте вызов метода - это призыв к действию. Линеаризуемый объект последовательно согласован, но не наоборот.

18
ответ дан Sriram Srinivasan 21 March 2012 в 19:06
поделиться

Как я объяснил в этой статье , картинка стоит 1000 слов.

enter image description here

Первый оператор SELECT считывает значение 50, а второй оператор SELECT читает значение 10, поскольку между двумя операциями чтения выполняется операция записи. был казнен.

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

Что произойдет, если у вас нет возможности линеаризации?

enter image description here

На этот раз у нас нет ни одного реестра или Единственный источник правды. Наша система использует асинхронную репликацию базы данных, и у нас есть основной узел, который принимает и чтение, и запись, и узел подписчика, используемый только для операций чтения.

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

Одно соединение с базой данных изменяет баланс счета с 50 на 10 и фиксирует транзакцию. Сразу после этого вторая транзакция считывает данные с узла Follower, но поскольку репликация не применяла модификацию баланса, читается значение 50.

Следовательно, эта система не является линеаризуемой, так как изменения, по-видимому, не происходят мгновенно. Для того чтобы сделать эту систему линеаризуемой, нам нужно использовать синхронную репликацию, и операция ОБНОВЛЕНИЕ основного узла не будет завершена, пока узел подписчика также не применяет ту же модификацию.

21
ответ дан Vlad Mihalcea 21 March 2012 в 19:06
поделиться

Возможно, путаница между линеаризуемостью и сериализуемостью.

Из этой статьи (P. Bailis) :

Линеаризуемость является гарантией отдельных операций над отдельными объектами [...] Линеаризуемость для чтения и записи Операции синонимичны с термином «атомная согласованность» и являются «С» или «согласованностью» в доказательстве Гилберта и Линча теоремы CAP.

Сериализуемость - это гарантия транзакций или групп из одной или нескольких операций над одним или несколькими объектами. Это гарантирует, что выполнение набора транзакций (обычно содержащих операции чтения и записи) над несколькими элементами эквивалентно некоторому последовательному выполнению (полному упорядочению) транзакций [...] Сериализуемость - это традиционное «I» или изоляция, в кислоте.

4
ответ дан mcoolive 21 March 2012 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: