Я только начинал на новой работе в качестве разработчика базы данных для компании среднего размера, основанной на технологии Microsoft. Ранее я заметил, насколько практики отличаются от того, чему меня учили в школе в отношении лучших практик, шаблонов проектирования, тестирования и управления проектами.
Больше всего меня беспокоит то, как наш основной разработчик базы данных (далее «Джон») хранит схему модели в базе данных! Мы делаем это, имея 3 "волшебных" стола; один для баз данных-схем, один для таблиц и один для столбцов.
Вставка записи в таблицу « Таблицы » создает (через триггер базы данных) фактическую соответствующую таблицу. Вставка строки в « Строке » -столы обновления родительской таблицы с этой строкой. Они, в свою очередь, читаются его самодельной C # -программой для генерации моделей C #, которые используются разработчиками frontend для контроллеров и для внешних целей.
Кроме того, большая часть разработки выполняется в соответствии с инфраструктурой ASP.NET MVC .
Я вижу пару недостатков с этим подходом:
- Мы нуждаемся в нем, чтобы поддерживать ORM, и у него редко есть время, чтобы сделать это (безопасность работы хороша!)
- Триггеры для таблиц «Столы» и «Строки» имеют недостатки. Они не поддерживают обновления таблиц, не проверяют ограничения или более «продвинутые» функции. Хотя мы, безусловно, могли бы их улучшить, я еще не уверен, стоит ли идти этим путем.
- Хранение программной логики в базе данных кажется странным и ограничительным (хотя возможно расширить его модели с помощью C #).
- Его генератор моделей C # должен запускаться вручную одним из 3 человек (среди которых я один), и он еще недостаточно зрел, чтобы быть включенным в автоматизированный процесс сборки.
Несколько человек предложили поэтапно внедрить настоящий и проверенный продукт, такой как Entity Framework , но он отклонил его, заявив, что сохранение бизнес-логики на уровне кода подходит только для небольших приложений и проектов начальной загрузки для стартапов.
Этот пост ведет к чему-то, что может выглядеть как самоуверенное обсуждение, но это не мое намерение. Я просто хочу получить разъяснения относительно нашего архитектурного подхода.
Может ли сохранение доменных моделей в базе данных быть устойчивым решением для растущей компании?