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. Нашему приложению не требуются сложные транзакции или связи между данными. Хотя реляционные базы данных превосходно обеспечивают ограничения целостности данных и обрабатывают сложные транзакции, у нашего приложения таких требований нет. Документоориентированные базы данных могут обеспечить достаточные гарантии согласованности и долговечности для нашего случая.

Последствия

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

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