@Web__Devel

Почему иногда практикуется отсутствие связей в БД?

В некоторых проектах с микросервисной архитектурой замечал, что в БД не используются внешние ключи и другие способы связывания таблиц. Связи есть только в самом коде веб-приложения. Кто-нибудь знает об этом подходе? Хотел погуглить зачем это и в чем польза.
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Не связано с микросервисами никак. Может встретиться в любых приложениях, работающих с базой.

Кто-то забывает делать ограничения в схеме БД. Кто-то может вовсе не знать, что FK и check constraints существуют. Кто-то считает что проверки на приложении достаточно. (в этом случае бывает забавно показать примеры уже лежащих в БД данных, невозможных с точки зрения логики приложения)

Сознательный, реально обоснованный отказ от FK - штука крайне редкая
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@bacon
Микросервисы это про слабую связанность, зачем ему знать что-то кроме своей задачи, которую пытаются реализовать как можно проще. Так же стремятся чтобы у каждого микросервиса была своя бд, из-за слабой связанности это часто приводит к одной плоской таблице, зачем ей внешние ключи? А еще, все это приводит к увеличению производительности БД.
Ответ написан
Комментировать
Griboks
@Griboks
Просто лень делать реляционную бд, поэтому делают нереляционную. Иногда это даже эффективнее, если связи не используются.
Ответ написан
Комментировать
@mayton2019
Bigdata Engineer
Есть несколько задач когда от реляционности отказываются сознательно.

- Bigdata
- Загрузка сырых или неспецифицированных данных для дальнейшей обработки
- Загрузка документов имеющих нереляционную природу (XML/JSON)
- Логгирование событий или просто запись данных из внешнего датасорса

По такой слабо-связной базе нельзя делать JOINS но брать по ключу можно key-value или можно
делать анализ крашей и аварий.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы