Вибір бази даних для бекенд-застосунків за допомогою теореми CAP

Що таке теорема CAP?

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

  1. Консистентність (Consistency) — Кожен запит на читання до будь-якого вузла в кластері отримує найновіше записане значення або помилку.
  2. Доступність (Availability) — Кожен запит, отриманий ненесправним вузлом у кластері, має призвести до відповіді.
  3. Толерантність до розподілу (Partition Tolerance) — Система продовжує працювати, незважаючи на випадкове скидання або затримку повідомлень у мережі між вузлами кластера.

Перші дві властивості — Консистентність та Доступність — зазвичай бажані в системах, тоді як збої мережевого розподілу не є бажаними. Однак, збої мережевого розподілу в розподілених системах неминучі, хоча й можуть бути мінімальними.

Щоб система задовольняла третю властивість (Толерантність до розподілу), потрібно вибрати між забезпеченням Консистентності або Доступності під час збоїв мережевого розподілу, щоб зробити систему Толерантною до розподілу.

Розподілені бази даних RDBMS

Розподілені бази даних RDBMS (системи управління реляційними базами даних), більшість з яких використовують стандарт SQL і спроектовані з гарантіями ACID, обирають Консистентність замість Доступності. Деякі приклади: CockroachDB (варіант Postgres), TiDB (варіант MySQL).

Розподілені NoSQL бази даних

Розподілені бази даних NoSQL, як правило, спроектовані з філософією BASE, обирають Доступність замість Консистентності. Деякі приклади — CouchDB, Cassandra.

Деякі розподілені NoSQL бази даних, такі як HBase та MongoDB (в налаштуваннях за замовчуванням), обирають Консистентність замість Доступності під час збоїв мережевого розподілу, хоча MongoDB можна налаштувати так, щоб вона обирала Доступність замість Консистентності у разі збоїв мережевого розподілу.

pic

Теорема CAP — приклади розподілених баз даних

Бази даних з Консистентністю та Доступністю

Розподілені бази даних, які задовольняють властивості консистентності та доступності, не існують, тому що саме це і описує теорема CAP. Лише бази даних, що працюють на одному сервері (відсутність збоїв мережевого розподілу), можуть задовольняти властивості доступності та консистентності згідно з визначенням теореми CAP. Традиційні реляційні бази даних є чудовим прикладом таких систем, наприклад: Postgres, MySQL, OracleDB, SQL Server та MariaDB.

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

Перекладено з: Using the CAP theorem to pick a database for backend applications

Leave a Reply

Your email address will not be published. Required fields are marked *