Architecture Decision Record

Active theme: Light

← Приклади записів рішень

Запис архітектурного рішення: вибір технології бази даних

Статус

Прийнято

Контекст

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

Реляційні бази даних зберігають дані в таблицях із фіксованими схемами та забезпечують суворі обмеження цілісності даних. Вони підходять для застосунків, яким потрібні складні зв’язки між даними та транзакції. Приклади: MySQL, PostgreSQL і Oracle.

Документні бази даних зберігають дані в документах, схожих на JSON, і не мають схеми. Вони добре підходять для застосунків, яким потрібні гнучкі моделі даних і горизонтальне масштабування. Приклади: MongoDB, Couchbase і Amazon DynamoDB.

Бази даних подій зберігають дані як послідовність подій, фіксуючи кожну зміну даних. Вони підходять для застосунків, яким потрібні аудит, event sourcing і складна обробка даних. Приклади: Apache Kafka, Apache Pulsar і AWS Kinesis. Рішення

Ретельно оцінивши вимоги та обмеження нашого застосунку, ми вирішили використовувати документну базу даних.

Обґрунтування

Ми обрали документну базу даних, тому що:

  1. Нашому застосунку потрібна гнучка модель даних, яка може еволюціонувати з часом. Документні бази даних дозволяють зберігати дані у форматі без схеми, а це означає, що ми можемо додавати нові поля чи змінювати структуру наявних документів, не змінюючи схему бази даних.

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

  3. Нашому застосунку потрібне швидке й ефективне отримання даних. Документні бази даних надають потужні можливості індексування та запитів, які дозволяють отримувати дані швидко й ефективно.

  4. Нашому застосунку не потрібні складні транзакції чи зв’язки між даними. Хоча реляційні бази даних відмінно забезпечують обмеження цілісності даних і обробляють складні транзакції, наш застосунок таких вимог не має. Документні бази даних можуть забезпечити достатні гарантії узгодженості та довговічності для нашого випадку.

Наслідки

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

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