Базы данных. cap

27
Consistency, Availability and Partition Tolerance Курс Базы данных Цесько Вадим Александрович http://incubos.org @incubos Computer Science Center 16 сентября 2013 г. Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance 16 сентября 2013 г. 1 / 27

Upload: vadim-tsesko

Post on 25-Dec-2014

726 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Базы данных. CAP

Consistency, Availability and PartitionTolerance

Курс «Базы данных»

Цесько Вадим Александровичhttp://incubos.org

@incubos

Computer Science Center

16 сентября 2013 г.

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 1 / 27

Page 2: Базы данных. CAP

Содержание

1 Remembrance Inc.

2 CAP theorem

3 Транзакции

4 Материалы

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 2 / 27

Page 3: Базы данных. CAP

Remembrance Inc. Идея сервиса

Идея сервисаNever forget, even without remembering!a

ahttp://ksat.me/a-plain-english-introduction-to-cap-theorem/

Ever felt bad that you forget so much? Don’t worry. Helpis just a phone away!When you need to remember something, just call555-55-REMEM and tell us what you need to remember.For eg., call us and let us know of your boss’s phonenumber and forget to remember it. When you need toknow it back, call back the same number 555-55-REMEMand we’ll tell you what’s your boss’s phone number.Charges: only $0.1 per requestЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 3 / 27

Page 4: Базы данных. CAP

Remembrance Inc. Типичный диалог

Типичный диалог

Customer : Hey, can you store my neighbor’sbirthday?You: Sure... When is it?Customer : 2nd of JanYou: (write it down against the customer’s page inyour paper note book) Stored. Call us any time forknowing your neighbor’s birthday again!Customer : Thank you!You: No problem! We charged your credit card with$0.1

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 4 / 27

Page 5: Базы данных. CAP

Remembrance Inc. Растёт нагрузка

Растёт нагрузка

Нужен только блокнот и телефонОтлично работаетСарафанное радиоПолучили финансирование от YCombinatorСотни звонков в день

Проблемы подходаКлиенты висят в очереди на телефоне и злятсяВы заболели и пропустили рабочий день и деньоповещений

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 5 / 27

Page 6: Базы данных. CAP

Remembrance Inc. Масштабируемся

Масштабируемся

Берём жену в долюУ каждого добавочный номерКлиенты используют всё тот же 555–55-REMEMАТС балансирует клиентов между сотрудниками

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 6 / 27

Page 7: Базы данных. CAP

Remembrance Inc. Проблема

Проблема

Customer : Hey!You: Glad you called “Remembrance Inc!”. What canI do for you?Customer : Can you tell me when is my flight to NewDelhi?You: Sure... 1 sec, sir. (You look up your notebook.WOW! There is no entry for "flight date"incustomer’s page!!!)You: Sir, I think there is a mistake. You never told usabout your flight to Delhi.Customer : What?! I just called you guys yesterday!(Cuts the call!)

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 7 / 27

Page 8: Базы данных. CAP

Remembrance Inc. Чиним неконсистентность

Чиним неконсистентность

Перед тем как записать что-либо, говоримпартнёруТаким образом, обновления хранятся у нас обоихКогда клиент спрашивает, то вся информация подрукой

Проблемы подходаДольше операции обновления, но операцийчтения большинствоЕсли кто-то из нас заболеет — проблеманедоступности

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 8 / 27

Page 9: Базы данных. CAP

Remembrance Inc. Consistent & Available

Consistent & Available

Новая версия алгоритма:Перед записью говорим партнёруПартнёр недоступен — отправляем ему emailВ начале рабочего дня разбираем почту иобновляем блокнот

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 9 / 27

Page 10: Базы данных. CAP

Remembrance Inc. Partition Tolerance

Partition Tolerance

Жена обиделась, всё-таки пришла на работу, норешила не сообщать об обновленияхМожно реализовать partition tolerance, еслирешить не принимать запросы, пока невосстановится связность с женойНо тогда жертвуем availability

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 10 / 27

Page 11: Базы данных. CAP

CAP theorem

CAP theorem

E. Brewer. Towards Robust Distributed Systems, 2000.

СутьВыберите 2 из 3:

ConsistencyAvailabilityPartition Tolerance

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 11 / 27

Page 12: Базы данных. CAP

CAP theorem Пояснения

Пояснения

На самом деле1:Невозможность полного обеспечения C, A и PP in a distributed system is a MUST HAVEПартиции относительно редки — необязательножертвовать C/A при их отсутствииВыбор различного соотношения C/A для разныхподсистем, запросов, данных, пользователей и т. д.Свойства непрерывны, а не бинарны

1http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changedЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 12 / 27

Page 13: Базы данных. CAP

CAP theorem Latency

Latency

CAP проявляется во время таймаута:Отменить операцию = снизить доступностьПодтвердить операцию = снизить консистентностьПерезапрос = отложить решениеБесконечный перезапрос = выбираемконсистентность

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 13 / 27

Page 14: Базы данных. CAP

CAP theorem Обработка партиций

Обработка партицийОбнаружение партиционирования

Не все узлы могут признать партиционированиеМожно подбирать таймауты ⇒ false positives

Ограничение набора возможныхопераций/снижение консистентности

Можно запомнить и «отложить» операциюYahoo PNUTS: локальный мастер per user +асинхронная репликация ⇒ меньше задержкиFacebook2: мастер всегда один, запись в удалённыймастер и чтение 20 сек из мастера, затем излокальной реплики

Восстановление консистентности и устранениеошибок

2http://www.facebook.com/note.php?note_id=23844338919&id=9445547199Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 14 / 27

Page 15: Базы данных. CAP

CAP theorem Картинка

Картинка

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 15 / 27

Page 16: Базы данных. CAP

CAP theorem Трюки

Трюки

Вся система недоступна — есть, например,HTML5 on-client persistent storageРазличные области консистентности припартициях (primary partition, quorum)Шардирование

Нет глобальных инвариантовНо возможен прогресс даже при партициях

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 16 / 27

Page 17: Базы данных. CAP

CAP theorem Восстановление консистентности

Восстановление консистентности

Нужно знать инварианты (не всегда очевидно)Почти то же, что параллельные обновления вмногопоточном программированииВекторные часы для обнаружения конфликтовОткат ошибок (желательно иметь лог операций —см. DVCS)Commutative Replicated Data Types (CRDTs)34

3M. Shapiro et al. Conflict-Free Replicated Data Types. 20114M. Shapiro et al. Convergent and Commutative Replicated Data Types.

2011Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 17 / 27

Page 18: Базы данных. CAP

CAP theorem Пример: ATM

Пример: ATM

Инвариант: баланс больше 0Выбираем availabilityСвязь пропала — лимит на снятие наличныхОперация коммутативнаСвязь восстановилась — считаем баланс,возможно, штраф за overdraftСм. Check kiting5

5http://en.wikipedia.org/wiki/Check_kitingЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 18 / 27

Page 19: Базы данных. CAP

CAP theorem Use Case: Ebay

Use Case: Ebay

Principles for Scaling6:Partition Everything

Vertical, horizontal, no session stateAsynchrony Everywhere

Events, multicastAutomate Everything

Adaptive configuration, machine learningRemember Everything Fails

Failure detection, rollback, graceful degradationEmbrace Inconsistency

Eventual consistency, no distributed transactions

6Randy Shoup at LADIS 2008, http://www.cs.cornell.edu/projects/ladis2008/materials/eBayScalingOdyssey%20ShoupTravostino.pdfЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 19 / 27

Page 20: Базы данных. CAP

Транзакции Определение

Определение

ТранзакцияA unit of work performed against a database, and treatedin a coherent and reliable way independent of othertransactionsa

ahttp://en.wikipedia.org/wiki/Database_transaction

Две философии:ACID7 — focus on consistencyBASE — focus on high availability

7Name was coined (no surprise) in California in 60’sЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 20 / 27

Page 21: Базы данных. CAP

Транзакции ACID-транзакции

ACID-транзакцииAtomicity — «либо всё, либо ничего»

commit/rollback, undo-log, атомарные операции, ...Consistency — переход из одного «корректного»состояния в другое

Индексы, форматы, ссылки, ограничения, триггеры,...

Isolation — иллюзия последовательноговыполнения транзакций

Уровни изоляции: Read uncommitted / dirty reads,Read committed / non-repeatable read, Repeatablereads / phantom reads, Serializable, MVCC8, ...

Durability — надёжное долговременное хранение8http:

//en.wikipedia.org/wiki/Multiversion_concurrency_controlЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 21 / 27

Page 22: Базы данных. CAP

Транзакции Распределённый commit

Распределённый commit

Two-phase commit protocol9Three-phase commit protocol10Paxos11Возможно, рассмотрим позже

9http://en.wikipedia.org/wiki/2PC10http://en.wikipedia.org/wiki/3PC11http://en.wikipedia.org/wiki/Paxos_(computer_science)

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 22 / 27

Page 23: Базы данных. CAP

Транзакции ACID in CAP

ACID in CAPAtomicity

Используется во всех партицияхУпрощает восстановление

ConsistencyНевозможна при партиционированииЗапрет некоторых операцийВосстановление инвариантов впоследствии

IsolationМожно работать только с одной партициейЛибо более слабая корректность, компенсируемаявосстановлением

DurabilityDurable history позволяет исправлять ошибки привосстановленииИногда ослабляют из-за дороговизны

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 23 / 27

Page 24: Базы данных. CAP

Транзакции BASE

BASE

Dan Pritchett. BASE: An Acid Alternative12. 2008:Basically AvailableSoft StateEventually consistent

12http://queue.acm.org/detail.cfm?id=1394128Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 24 / 27

Page 25: Базы данных. CAP

Материалы Чтение на ночь

Чтение на ночьFallacies of Distributed Computing1314:

The network is reliableLatency is zeroBandwidth is infiniteThe network is secureTopology doesn’t changeThere is one administratorTransport cost is zeroThe network is homogeneous...

13http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing

14Arnon Rotem-Gal-Oz. Fallacies of Distributed Computing Explained,http://www.rgoarchitects.com/Files/fallacies.pdfЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 25 / 27

Page 26: Базы данных. CAP

Материалы Библиотечка

Библиотечка

Google. Distributed Systems and ParallelComputing15

Quora: What are the top startup engineering blogs?16

15http://research.google.com/pubs/DistributedSystemsandParallelComputing.html

16http://www.quora.com/What-are-the-top-startup-engineering-blogsЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 26 / 27

Page 27: Базы данных. CAP

Вопросы?

Вопросы?

http://incubos.org/contacts/Общие вопросы — в Twitter: @incubosВопросы по лекциям — в комментариях:http://incubos.org/blog/Частные вопросы — в почту[email protected]

Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 27 / 27