12  /  97

Архитектура Базы данных

Просмотров: 21724
Дата последнего изменения: 05.06.2024
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5

  Схемы работы с БД

Работа напрямую через PHP-функции. Обеспечивает скорость разработки, гибкость, но вызывает сложность поддержки и неудобство использования. Подходит для простых проектов, не рекомендуется для больших и средних.

Работа через прослойку на основе паттерна TableModule. Работа с базой данных идёт через класс (объект), предоставляющий собой интерфейс доступа к таблице. Преимущество подхода в том, что работа с БД инкапсулируется в каком-то классе, сущности. Любые модификации идут через эту сущность. При этом упрощается развитие, поддержка и эксплуатация проекта. Недостаток: реализация сложнее, если проект разрабатывается без фреймворка, где это уже реализовано.

ORM для сложных проектов. На проектах со сложными предметными областями и сущностями иногда полезно использовать паттерны:

  • ActiveRecord — объект представляет собой запись в таблице, позволяющую успешнее решать задачи большой и сложной предметной области со связями. Недостаток: большой объём кодирования, но можно использовать библиотеки.
  • DataMapper — объекты не знают о БД ничего, есть только объекты и их свойства. Программисту легко реализовывать бизнес-логику в таких условиях, а за работу с БД отвечает слой DataMapper.
Внимание! Любые библиотеки для работы с БД увеличивают расходы. У TableModule накладные расходы минимальные, у DataMapper — максимальные. Поэтому DataMapper рекомендуется только для сложных областей, но не для высоконагруженных проектов.

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

  • Репликация: решаемая и несложная задача.
  • Кластеризация кода: сложнее всего кластеризовать сессии и кеш. Сессии можно хранить в базе данных или memcache.
  • Нагрузка и распределение: возможно через NGINX или другим способом.
  • Хранение и отдача статики. Использовать CDN?
  • Авторизация.
  • Шардинг: может потребоваться для очень больших проектов.

  Что выбрать?

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

Сильные команды с большим опытом могут решиться на разработку «с нуля», если это позволит клиент по срокам и финансированию.




6
Курсы разработаны в компании «1С-Битрикс»

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