Архітектура баз даних Master-master vs master-slave?


117

Я чув про два види архітектури баз даних.

  • майстер-майстер

  • хазяїн-раб

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

Ведучий-раб нагадує мені SVN (який мені не подобається), де у вас є один центральний блок, який обробляє річ.

Запитання:

  1. Які плюси і мінуси кожного?

  2. Якщо ви хочете мати у вашому мобільному телефоні локальну базу даних, як iPhone, яка з них є більш підходящою?

  3. Чи є вибір одного з цих найважливіших факторів ретельним?


1
Теорема CAP -> Послідовність Доступність Розділу Розділення стверджує, що не можна всіх трьох разом. Залежно від програми ви можете вибрати будь-яку.
Pritam Banerjee

Відповіді:


87

Ми торгуємо доступністю, послідовністю та складністю. Перше вирішити останнє питання: чи це має значення? Да дуже багато! Вибір щодо управління вашими даними є абсолютно принциповим, і немає "Кращої практики", що ухиляється від прийняття рішень. Вам потрібно зрозуміти ваші конкретні вимоги.

Існує принципова напруга:

Один примірник: консистенція проста, але якщо це трапляється вниз, всі виходять з води, а якщо люди віддалені, то можуть платити жахливі витрати на спілкування. Візьміть на малюнок портативні пристрої, для яких може знадобитися відключена робота, і одна копія не виріже.

Master Slave: послідовність не надто складна, оскільки кожен фрагмент даних має точно одного власника. Але тоді, що робити, якщо ти не бачиш цього майстра, потрібна якась відкладена робота.

Майстер-майстер: добре, якщо ти можеш змусити його працювати, то, здається, пропонують все, жодної точки відмови, кожен може працювати весь час. Проблема в тому, що дуже важко зберегти абсолютну консистенцію. Докладніше див. У статті Вікіпедії .

У Вікіпедії, здається, є хороший підсумок переваг та недоліків

Переваги

  • Якщо один майстер не працює, інші майстри продовжать оновлювати базу даних.

  • Майстри можуть розташовуватися на декількох фізичних сайтах, тобто розподілятися по всій мережі.

Недоліки

  • Більшість систем множинної реплікації лише послідовно послідовні, тобто ледачі та асинхронні, що порушують властивості ACID.

  • Системи гострої реплікації є складними і вводять деяку затримку зв'язку.

  • Такі питання, як вирішення конфлікту, можуть стати нерозв'язними, оскільки кількість залучених вузлів зростає і необхідна затримка зменшується.


CouchDB використовує MVCC. Чи спричиняє такий спосіб обробки узгодженості, з яким стикаються декілька майстрів, коли одного з них я знову привів в Інтернет, система версій обробляє узгодженість і цей майстер отримає правильні оновлені дані.
never_had_a_name

8
Але що відбувається, коли два користувачі роблять щось суперечливе - як, наприклад, два користувачі намагаються придбати останній товар на складі? Уявіть собі сценарій, коли у нас є два майстри, і кожен користувач потрапляє на іншого головного майстра, тоді ми отримуємо якусь проблему з поєднаннями - врешті-решт, буде або компроміс цілісності, або зменшення доступності - одному користувачеві скажуть "вибачте, товариш, Я дійсно не знаю, що відбувається, поки я не поговорю з іншим майстром ", або у нас виникає неприємний конфлікт, коли комісії відновляються - і це може стати справді складним.
djna

2
Для чого використовують фінансову торгівлю або фондові ринки? Вони б постійно стикалися з цією проблемою?
CMCDragonkai

3
Там, де вам потрібна єдина, оновлена ​​"правда" (як у фінансових системах), вам потрібен Master / Slave або взагалі просто Master. Там, де ви можете виправити правду пізніше (подумайте, злиття конфліктів у системі контролю ревізії, як Git), ви можете використовувати Master / Master.
djna

djna робить дуже помітне спостереження. Тепер база даних повинна мати якусь логіку "краватки". Що найважливіше? Найбільш "останні" дані? Це має сенс, якщо ви переписуєте поле, але це не має сенсу, якщо ви робите «лічильник» і вам потрібні всі процеси для збільшення (або зменшення) перед поверненням результату. Тим більше, що ви не продаєте товар, що не продається. Якщо у вас був мережевий розділ, що відбувається, коли він знову збирається? Все це - теорія CAP. Тут також можна створити такі алгоритми, як Paxos, щоб досягти консенсусу між різними машинами.
Пітер Корлес

95

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

  1. Реплікація головного раба
  2. Реплікація Master-Master
  3. Кластер MySQL

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

1. Реплікація головного раба

Плюси

  • Аналітичні програми можуть читати з підлеглого (-ів), не впливаючи на головного
  • Резервне копіювання всієї бази даних відносно не впливає на майстер
  • Раби можуть бути відведені в автономному режимі і синхронізуватися назад з ведучим без простоїв

Мінуси

  • У разі невдачі, раба повинно бути підвищено до господаря, щоб зайняти його місце. Немає автоматичного відмови
  • Простой час і можливо втрата даних, коли майстер не працює
  • Усі записи також повинні бути зроблені майстру в дизайні майстра-раба
  • Кожен додатковий ведений додає певного навантаження майстру, оскільки двійковий журнал повинен бути прочитаний і дані скопійовані до кожного веденого
  • Програму, можливо, доведеться перезапустити

2. Реплікація Master-Master

Плюси

  • Заявки можуть читати обидва майстри
  • Розподіляє навантаження запису по обох головних вузлах
  • Простий, автоматичний та швидкий відхід

Мінуси

  • Слабо послідовно
  • Не так просто, як майстер-підлеглий для налаштування та розгортання

3. Кластер MySQL

Новий хлопець у місті на основі дизайну кластерів MySQL. Кластер MySQL був розроблений з урахуванням високої доступності та масштабованості, і це ідеальне рішення для використання в середовищах, які не потребують простоїв, високої доступності та горизонтальної масштабованості.

Див MySQL Cluster 101 для отримання додаткової інформації

Плюси

  • (Висока придатність) Немає жодної точки відмови
  • Дуже висока пропускна здатність
  • 99,99% тривалості роботи
  • Авто-заточування
  • Реактивність в режимі реального часу
  • Он-лайн операції (зміни схеми тощо)
  • Поширені записи

Мінуси

Ви можете відвідати повний розбір мого блогу, включаючи діаграми архітектури, які детально описують 3 згадані архітектури.


2
Ви також можете написати щось про Галеру? Кластер Percona XtraDB?
Іванов

"Програму, можливо, доведеться перезапустити" як частина мінусів. Що це означає?
Лілія

1
Якщо вам доведеться змінити IP-адресу сервера БД, то його потрібно буде налаштувати в додатку, а також читати з нового обраного майстра. В результаті вам може знадобитися перезапустити додаток, щоб вибрати нові настройки конфігурації. Все залежить від вашої поточної установки. Ви також можете використовувати плаваючий IP для обходу цього. Просто щоб дати вам загальне уявлення
Skillachie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.