Почему Upstart не создал ещё один «Bad CaRMa»
В статье на Habr ML раскрывается, как в CRM‑системе Vision компании Upstart попытались собрать 150+ бизнес‑сущностей в одну таблицу DATA с 240+ колонками, и почему такой подход считается плохой практикой.
В свежей колонке Habr ML «Почему мы не написали ещё один Bad CaRMa» авторы рассказывают о провальном эксперименте компании Upupstart, пытавшейся построить CRM‑систему Vision вокруг единой таблицы DATA. Идея была проста: собрать все бизнес‑сущности — более 150 — в одну таблицу, где каждый столбец получает нейтральное название вроде string82 или numeric31. Метаданные и реальные данные смешиваются в одном массиве, а схема обещает «никогда не придётся менять». На практике же получилась громоздкая структура: более 240 колонок, почти каждый запрос к базе превращается в тяжёлый SELECT *, а поддержка новых функций требует постоянных миграций и ручных правок кода. Авторы статьи сравнивают такой подход с известным «Bad CaRMa» — главой из книги Скотта Розенберга Dreaming in Code, где избыточная гибкость приводит к техническому долгу и падению производительности. В статье приводятся примеры запросов, которые из‑за такой схемы стали медленнее в 10‑20 раз, а также обсуждается, как отсутствие явных типизаций и смысловых названий колонок усложняет работу аналитиков и разработчиков. В итоге авторы советуют использовать более традиционный подход: отдельные таблицы для разных доменных сущностей, чёткую схему и строгий контроль над метаданными. Ссылка на оригинал: https://habr.com/ru/articles/1062550/
Для разработчиков и студентов это яркое предупреждение: гибкость без структуры приводит к хаосу. Лучше инвестировать в продуманную схему данных с явными связями, чем пытаться «запихнуть всё в одну таблицу». Такой подход ускорит разработку, упростит поддержку и снизит риск технического долга.


