Які міркування теореми CAP?


21

http://en.wikipedia.org/wiki/CAP_theorem

http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf

Я думаю , що це не дуже просто , чому тільки два з

  1. Послідовність
  2. Доступність
  3. Толерантність до розділів

може містити будь-яку систему розподілених баз даних. Ця гіпотеза була доведена, але чи є простіший спосіб зрозуміти, чому, ймовірно, це може відбутися?

Я не шукаю доказів, просто гарний спосіб зрозуміти, чому ця теорема може мати сенс. Яке міркування?

Відповіді:


23

Добре, давайте уявимо, що у вас є розподілена база даних. Скажімо, у вас є вузол в Орегоні та один у Каліфорнії. Теорія CAP говорить, що у вас виникнуть проблеми при створенні цього типу баз даних.

Наприклад, якщо ви запитуєте дані з однієї бази даних, вони повинні бути такими ж, як дані в іншій базі даних. Це гарантує, що будь-яке значення, яке ви маєте в одній базі даних, гарантовано знаходиться в іншій ( Узгодженість теорії CAP). Це дозволяє оновлювати дані в одній базі даних та запитувати їх в іншій, отримуючи однакові результати.

Комп'ютер, що оновлює дані в Орегоні, передає дані в Каліфорнію

Коли ми оновлюємо дані у вузлі Орегон, вони надсилаються в вузол Каліфорнії, щоб бази даних були узгодженими. Щоб по-справжньому зберегти узгодженість, ми маємо гарантувати, що обидві бази отримують оновлення до того, як дозволяється по-справжньому зберігати дані (двофазна фіксація з використанням розподілених транзакцій). Іншими словами, якщо база даних у Каліфорнії не може зберегти дані з якихось причин (наприклад, поломка жорсткого диска), то база даних в Орегоні не збереже дані і не виконає транзакцію.

Проблема з розподіленими транзакціями на зразок вище, виникає, коли ми хочемо мати високу доступність. У цьому вище сценарії процес спроби синхронізувати обидві бази даних є дуже-дуже повільним процесом. . часи високого попиту. (Це доступність теореми CAP.)

Зазвичай для забезпечення високої доступності ми використовуємо реплікацію замість розподілених транзакцій. Тож замість того, щоб гарантувати, що Каліфорнія може прийняти дані, ми просто продовжуємо і зберігаємо їх у вузлі штату Орегон, а потім надсилаємо дані до Каліфорнії, коли ми їх обходимо. Це гарантує, що ми завжди можемо зберігати дані, незалежно від того, готовий він зберігати дані в Каліфорнії чи ні.

Вузол Орегону оновлює дані, поки Каліфорнія зчитує їх.  Пізніше дані переміщуються до Каліфорнії

Це покращує доступність, але ціною послідовності. Дивіться, якщо хтось оновлює дані в Орегоні, а потім хтось (одночасно) читає дані в Каліфорнії, вони не отримують нових даних - бази даних більше не відповідають. Насправді вони не будуть послідовними, поки Орегон не надсилатиме дані до Каліфорнії!

Отже, це доступність -vs- компромісність.

Толерантність розділів є третім аспектом теорії CAP. У цьому контексті розділення - це думка про те, що база даних (або інша розподілена система) може розбиватися на окремі розділи і все ще функціонувати правильно.

Постає питання, що станеться, коли обидві бази даних працюють правильно, але зв’язок від Орегона до Каліфорнії розірвано?

Орегон оновлюється під час читання вузла Каліфорнії.  Мережа між вузлами розірвана.

Якщо ми оновлюємо базу даних в Орегоні, нам потрібно так чи інакше доставити дані до Каліфорнії (розподілена транзакція чи реплікація). Однак якщо зв’язок між ними розірваний, система стала розділеною і бази даних більше не пов’язані між собою.

Коли це станеться, ваш вибір полягає у припиненні дозволу оновлень (для підтримання послідовності) ціною доступності або дозволу оновлень (для підтримки доступності) ціною послідовності.

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


Очевидно, це більше, ніж це, але це кілька прикладів того, як ці три основні аспекти розподілених систем працюють один за одного і проти. Пояснення Джуліана Брауна теорії CAP - прекрасне місце, щоб дізнатися більше.



З набагато красивішою картиною в цьому!
Річард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.