
Системы (т.е. базы данных), управляющие целостностью своих данных, звучат как здравый смысл, и в простых сценариях это действительно здравый смысл. Однако когда бизнес-правила становятся сложными, становится труднее валидировать данные в центральном месте.
Когда система (т.е. база данных) больше не может обеспечивать форму данных, что-то другое должно взять на себя эту задачу. Когда это может произойти?
Формат номера телефона в США: (код области) (префикс) – (номер), вот пример: (734) 555-3212. Для простоты в этой статье мы будем говорить о базе данных, но хранилище данных не обязательно должно быть базой данных.
Номера телефонов в США всегда имеют десять цифр (мы игнорируем международную цифру). Номера телефонов могут поступать в различных форматах:
- xxx.xxx.xxxx
- xxx-xxx-xxxx
- (xxx) xxx-xxxx
- (xxx) xxx.xxxx
Большинство баз данных ограничены типами данных (т.е. числа, строки, даты и т.д.) и не поддерживают форматирование. Многие приложения выбирают использование строкового типа данных для хранения номера телефона. Однако строковый тип данных принимает ЛЮБУЮ строку. Чтобы убедиться, что номер телефона действителен, нам нужен дополнительный уровень валидации.
В одном приложении, подключающемся к одной базе данных, валидация данных обычно обеспечивается в приложении.
Когда ваша архитектура растет до двух или более приложений, использующих общую базу данных, могут произойти две вещи:
1. Каждое приложение имеет свою собственную валидацию данных:
2. Существует центральный сервис, который приложения вызывают для валидации данных и сохранения данных:
Риск валидации данных в нескольких местах заключается в том, что валидации могут быть не синхронизированы. Действительный формат для одного приложения может быть недействительным в другом приложении. В худшем случае неправильный формат вызовет ошибку или, в крайних случаях, приведет к сбою приложения.
Лучший случай — централизовать валидацию данных, чтобы формат, хранящийся в базе данных, был согласованным для всей организации. Конечно, есть исключения, и я предполагаю, что несколько приложений читают и записывают в общую базу данных.
Автор: Чак Конвей специализируется на разработке программного обеспечения и генеративном ИИ. Свяжитесь с ним в социальных сетях: X (@chuckconway) или посетите его на YouTube.