- Опубликовано
Несколько дней назад мы разбирали, почему...
- Автор
- Имя
- Максим | Системный анализ
- Telegram
- Максим | Системный анализ349 подписчиков59 постовКак войти в IT через системный анализ и получить оффер от 270к+. Опыт Senior аналитика из топ-банков. Разборы, практика, собесы, техника мышления аналитика. Бесплатная консультация - в закрепе.
Недавно мы разбирали, почему нельзя использовать триггеры баз данных для бизнес-логики. Но зачем же тогда нужны триггеры и когда их использовать?
Типовые случаи применения триггеров:
Автоматический журнал изменений: кто, когда и что поменял в важной таблице
Проверка хитрых условий, которые нельзя задать обычными CHECK или UNIQUE. Например, "нельзя добавить заказ на склад, который закрыт в этот день". Триггер проверит и выдаст ошибку, не дав записать
Автозаполнение/пересчёт. Например, при смене цены триггер сам обновляет сумму в связанном счёте, чтобы данные не расходились
Маскирование/шифрование. Например, при вставке номера паспорта триггер сам превращает его в хеш
Безопасность. Например, запретить удалять таблицы
Какие альтернативы нужно обязательно рассмотреть перед тем, как использовать триггеры:
⚖ Прикладной уровень: валидация и бизнес-логика в коде, перед записью
⚖ Хранимые процедуры
Хранимая процедура - это предварительно скомпилированный набор SQL-операторов и процедурной логики (ветвления, циклы), который хранится на сервере БД и вызывается отдельно, по имени. Она может принимать параметры и возвращать результаты. Дает преимущество в производительности, отладке и безопасности (закрывая прямой доступ к таблицам)⚖ Представления (view) с правилами ⚖ Констрейнты (PK, FK, UNIQUE, CHECK, EXCLUDE): они быстрее, предсказуемее, параллельнее Если без триггера не обойтись: Триггеры должны использоваться строго для контроля целостности данных (например, в кейсе, когда сумма долей не должна превышать 1, или нужна проверка на пересекающиеся интервалы дат) Триггер не должен менять данные, иначе сразу появляются долгие блокировки и deadlock'и Триггер не должен управлять транзакцией: такую логику невозможно отладить Обязательно ведите в документации общий граф вызовов триггеров, чтобы не получить сюрприз на проде под большой нагрузкой
@maximbelovmentor
Максим | Системный анализ
349 подписчиков
59 постов
Как войти в IT через системный анализ и получить оффер от 270к+.
Опыт Senior аналитика из топ-банков.
Разборы, практика, собесы, техника мышления аналитика.
Бесплатная консультация - в закрепе.
Закрепленные
Свежие посты
- Опубликовано
Замечаю, что начинающие системные аналитики...
Замечаю, что начинающие системные аналитики пугаются, когда с привычного REST нужно переключиться на gRPC. Чтобы снять этот страх и сделать...
- Опубликовано
RPC как архитектурный стиль
RPC как архитектурный стиль
Когда говорят о RPC, часто вспоминают конкретные фреймворки, но вообще-то это отдельный архитектурный стиль, который...
- Опубликовано
Застрял на задаче или идешь на собес?
Застрял на задаче или идешь на собес?
Рассказываю, как за один созвон подтянуть харды, вытянуть сложный проект и понять, как повысить грейд 🎧☝️ Пиши
- Опубликовано
Несколько дней назад мы разбирали, почему...
Недавно мы разбирали, почему нельзя использовать триггеры баз данных для бизнес-логики. Но зачем же тогда нужны триггеры и когда их...
- Опубликовано
Куда пихать бизнес-логику? Кажется, что ответ...
Куда пихать бизнес-логику?
Кажется, что ответ очевиден: бизнес-логика должна жить в коде. Но бывает, что приложение начинает тратить кучу времени...
- Опубликовано
Как аналитику использовать CJM?
Как аналитику использовать CJM?Customer Journey Map (CJM) принято считать инструментом продакт-менеджеров. Но и для аналитика это не "картинка с...
- Опубликовано
Зачем аналитику UX?
Зачем аналитику UX?Многие думают, что UX нужен только дизайнерам. Но что если нырнуть чуть глубже?UX расшифровывается как user experience...
- Опубликовано
🔠🔠🔠 🔠🔠🔠🔠🔠
«Сделал БД за минуту через нейронку»
Звучит неплохо. А потом тебе на ревью объяснять, почему именно такая схема.
В видео разобрал на примере, как...




