безлюдный движок_ Оглавление
05
Блок II · Глава 5 из 12

Слой данных

Мастер-данные и золотые записи, событийная история как первичный факт, архитектуры хранилищ, семантический слой и онтология предприятия — «язык», на котором LLM-агенты понимают бизнес, и почему «единый источник правды» — миф, который надо уметь готовить.

~2,5 тыс. слов~15 мин чтения8 схем

Безлюдный бизнес-движок стоит на данных так же, как обычная компания стоит на людях, которые «держат контекст в голове». Когда бухгалтер, операционный директор и аналитик — живые люди, противоречия в данных сглаживаются их здравым смыслом: человек видит, что «ООО Ромашка» и «Ромашка ООО» — один контрагент, что выручка в отчёте продаж и выручка в отчёте финансов посчитаны по-разному, и молча это исправляет. Агент так не умеет — точнее, умеет непредсказуемо, а непредсказуемость в учёте недопустима. Поэтому слой данных в безлюдном движке — не «подвал» архитектуры, а её несущая стена: именно здесь определяется, о чём вообще могут договориться несколько юрлиц, десятки процессов и сотни агентов. Эта глава даёт теорию и практику проектирования такого слоя: как устроены мастер-данные и золотые записи, зачем событийная история первичнее состояния, какие архитектуры хранилищ пережили сорок лет эволюции и что из этого пригодно сегодня, как семантический слой и онтология предприятия становятся «языком», на котором LLM-агенты понимают бизнес, и почему «единый источник правды» — полезный миф, который надо уметь правильно готовить.

98–100%
верных ответов агента через semantic layer против 84–90% в text-to-SQL (бенчмарк dbt, 2026)
17–21%
задач Spider 2.0 решали лучшие модели конца 2024 года — реальный корпоративный text-to-SQL на порядок труднее академического
11
областей знаний в DAMA-DMBOK — чек-лист, а не методология для внедрения целиком
2
независимых времени у каждого факта: valid time и transaction time (битемпоральность)
14 недель
— полный контур данных холдинга из 5 юрлиц: онтология → MDM → журнал → витрины → метрики → MCP
golden record — золотая запись: сборка лучших атрибутов сущности survivorship — поатрибутные правила выживания при слиянии Data Vault — хабы + линки + сателлиты, insert-only битемпоральность — valid time × transaction time CQRS — разделение моделей записи и чтения data contract — контракт на данные: схема + SLA + эволюция semantic layer — метрики как код, один раз для всех lineage — происхождение данных: из чего собрано
Онтология + MDM словарь сущностей · золотые записи Insert-only журнал / Data Vault событийная история · сырая правда источников Витрины-звёзды факты + конформные измерения из MDM Семантический слой метрики как код в git · «одна выручка» MCP-доступ права · лимиты · журнал обращений Агенты отчёты · процессы · действия порядок строительства неслучаен шаг 1: словарь и правда шаг 6: только теперь агенты Обратный порядок «сначала агенты, потом порядок» = быстро и уверенно неправильно
Рис. 5.1. Слой данных движка снизу вверх: онтология и золотые записи MDM — фундамент; над ними неизменяемая событийная история, витрины, семантика метрик и MCP-шлюз с политиками; агенты — только на вершине. Обратный порядок строительства производит систему, которая быстро и уверенно отвечает неправильно.

5.1. Три сорта данных и дисциплина Master Data Management

Первое различение, без которого невозможно проектировать слой данных, — это различение трёх сортов данных по их жизненному циклу и роли. Транзакционные данные (transactional data) — это записи о событиях бизнеса: выставлен счёт, проведён платёж, подписан акт, сотрудник списал восемь часов на проект. Их много, они рождаются непрерывно и после рождения не должны меняться — счёт от 12 марта останется счётом от 12 марта навсегда. Справочные данные (reference data) — это медленно меняющиеся классификаторы, чаще всего внешние по происхождению: коды валют ISO 4217, ОКВЭД, статьи затрат, страны, ставки НДС. Их мало, они стандартизованы, и главная задача — версионировать их изменения. Наконец, мастер-данные (master data) — это описания ключевых сущностей бизнеса, которые участвуют в транзакциях: клиенты, контрагенты, сотрудники, продукты, юрлица, договоры, проекты. Мастер-данные — самый проблемный сорт: они рождаются одновременно в нескольких системах (CRM, бухгалтерия, кадровая система, трекер проектов), живут годами, меняются (клиент переехал, компания переименовалась) и при этом должны означать одно и то же везде.

Дисциплина Master Data Management (MDM) отвечает на вопрос: как из нескольких конфликтующих записей об одной сущности получить одну достоверную — так называемую золотую запись (golden record). Механика состоит из трёх этапов, и каждый важно понимать в деталях.

Первый этап — матчинг и дедупликация (matching, deduplication): определить, что записи «ООО "Ромашка"», «Romashka LLC» и «Ромашка (ИНН 7701234567)» описывают одну организацию. Матчинг бывает детерминированным (совпадение по строгому ключу — ИНН, e-mail, паспорт) и вероятностным: записи сравниваются по нескольким атрибутам с весами, и пара получает суммарный скор похожести. Классическая математическая основа вероятностного матчинга — модель Феллеги–Сантера (Fellegi–Sunter, 1969), где для каждого атрибута оценивается вероятность совпадения при условии, что записи относятся к одной сущности (m-вероятность) и к разным (u-вероятность), а логарифм их отношения даёт вес атрибута. Практически это означает три зоны: скор выше верхнего порога — автоматическое слияние, ниже нижнего — точно разные сущности, между порогами — «серая зона», которую отправляют на ручной разбор. В классическом MDM серую зону разбирает человек-стюард; в безлюдном движке — LLM-агент, у которого, в отличие от старых правил, есть здравый смысл: он может понять, что «Сбербанк» и «СБЕР» — одно, а «Альфа-Банк» и «Альфа-Капитал» — разное.

Второй этап — правила выживания (survivorship rules): из совпавших записей собрать одну золотую. Типовые стратегии: приоритет источника (данные из ЕГРЮЛ надёжнее данных, введённых менеджером в CRM), свежесть (побеждает последнее обновление), полнота (побеждает непустое значение), частота (побеждает значение, встречающееся в большинстве источников). Ключевая тонкость: правила выживания задаются поатрибутно, а не позаписно — юридический адрес берём из госреестра, контактный e-mail из CRM, платёжные реквизиты из последнего подписанного договора. Золотая запись — это не «лучшая из записей», а сборка лучших атрибутов с указанием происхождения (lineage) каждого.

ООО «Ромашка» из CRM · e-mail свежий Romashka LLC из 1С · ИНН 7701234567 Вероятностный матчинг модель Феллеги–Сантера (1969) скор = Σ весов атрибутов Золотая запись поатрибутные правила выживания реквизиты ← госреестр e-mail ← CRM (свежесть) платёжные данные ← договор + lineage каждого атрибута скор высокий «Серая зона» скор между порогами: автослияние опасно LLM-агент-стюард «Сбербанк» = «СБЕР», но «Альфа-Банк» ≠ «Альфа-Капитал»
Рис. 5.2. Механика golden record: дубли из разных систем проходят вероятностный матчинг (Феллеги–Сантер), при высоком скоре собираются поатрибутными правилами выживания в золотую запись с lineage; «серую зону» вместо человека-стюарда разбирает LLM-агент с журналом решений.

Третий этап — выбор архитектурного стиля MDM, то есть решения, где живёт золотая запись и кто ей управляет. В стиле registry MDM-система хранит только кросс-ссылки: «запись 123 в CRM = запись 456 в 1С», а золотая запись собирается виртуально на лету; исходные системы остаются хозяевами данных. В стиле consolidation данные физически стягиваются в хаб, там очищаются и сливаются, но результат используется только для аналитики — обратно в операционные системы он не возвращается. В стиле coexistence золотая запись синхронизируется обратно в системы-источники, а в стиле centralized (transactional) MDM-хаб становится единственным местом создания и изменения мастер-данных: CRM и бухгалтерия только читают из него. Чем правее по этой шкале, тем чище данные и тем дороже и дольше внедрение — классическая рекомендация состоит в том, чтобы начинать с registry/consolidation и двигаться к centralized только для тех доменов, где боль реально велика (обзор стилей см., например, у Stibo Systems и Semarchy; механику survivorship — у Data Ladder).

Registry

стиль MDM · старт

Хаб хранит только кросс-ссылки между записями систем; золотая запись собирается виртуально. Источники остаются хозяевами данных. Дёшево, быстро, минимальный риск.

кросс-ссылкиlow cost

Consolidation

стиль MDM · аналитика

Данные физически стягиваются в хаб, очищаются и сливаются — но только для аналитики: обратно в операционные системы результат не возвращается.

хабread-only

Coexistence

стиль MDM · синхронизация

Золотая запись синхронизируется обратно в системы-источники: чище данные везде, но нужна двусторонняя интеграция и правила разрешения конфликтов.

writeback

Centralized

стиль MDM · transactional

MDM-хаб — единственное место создания и изменения мастер-данных; CRM и бухгалтерия только читают. Самые чистые данные — и самое дорогое внедрение.

single writerдорого

Для холдинга из нескольких юрлиц мастер-данные — это ещё и вопрос периметра: контрагент один, а договоры с ним ведут три юрлица; сотрудник один, а оформлен в двух компаниях группы. Без общего слоя мастер-данных консолидированная отчётность холдинга превращается в ежемесячную ручную сверку Excel-файлов — ровно ту работу, которую безлюдный движок обязан устранить.

💡 Что взять для безлюдного движка RMR

Спроектировать реестр мастер-данных группы (контрагенты, сотрудники, юрлица, договоры, проекты, продукты) раньше, чем выбирать учётные системы. Стартовать со стиля registry + consolidation: единый хаб с кросс-ссылками на записи в 1С/CRM/трекере, поатрибутные правила выживания с фиксацией происхождения. Серую зону матчинга отдать LLM-агенту-стюарду с журналом решений и выборочным контролем человеком: это первое место, где агент дешевле и стабильнее человека.

5.2. Data governance и DAMA-DMBOK: управление данными без бюрократии

Если MDM — это конкретная инженерная дисциплина, то DAMA-DMBOK (Data Management Body of Knowledge) — это попытка профессионального сообщества DAMA International собрать весь свод знаний об управлении данными в одну книгу. Второе издание (2017, переработанное издание — 2024) описывает одиннадцать областей знаний, расположенных вокруг центральной — data governance: архитектура данных, моделирование, хранение и операции, безопасность, интеграция и интероперабельность, документы и контент, справочные и мастер-данные, хранилища и BI, метаданные, качество данных. Эту схему называют «колесом DAMA» (DAMA Wheel; см. обзор DMBOK и материалы DAMA). Ценность DMBOK не в том, что его надо внедрять целиком — это справочник, а не методология, — а в том, что он даёт полный чек-лист: проектируя слой данных, вы можете пройтись по одиннадцати областям и осознанно решить, какие из них в вашем масштабе схлопываются в ноль, а какие критичны.

Data governance (руководство данными) в терминах DMBOK — это система принятия решений о данных: кто имеет право определять, что такое «клиент», кто утверждает изменение схемы, кто отвечает за качество конкретного домена. Ключевая роль здесь — data steward (стюард данных): не владелец и не инженер, а человек (в нашем случае — всё чаще агент), операционно отвечающий за конкретный набор данных — за его определения, качество и разрешение конфликтов.

В корпорациях governance печально знаменит тем, что вырождается в бюрократию: комитеты по данным, которые собираются раз в месяц и через которые проходит каждое изменение схемы. Для компании в 180 человек и тем более для безлюдного движка такой формат — смерть. Противоядие, выработанное индустрией к середине 2020-х, называется computational governance (вычислительное руководство): правила существуют не в регламентах, а в коде и срабатывают автоматически. Изменение схемы проверяется CI-пайплайном на обратную совместимость; доступ к персональным данным определяется политикой-как-кодом (policy-as-code); качество проверяется тестами при каждой загрузке; определения метрик живут в git с код-ревью вместо комитета. Человеческое решение остаётся только там, где нужен trade-off, не формализуемый правилом. Практический принцип: governance должен быть тонким слоем стандартов, на которых все обязаны сойтись (идентификаторы сущностей, форматы событий, определения метрик), и полной свободой во всём остальном.

💡 Что взять для безлюдного движка RMR

Не создавать «комитет по данным» — вместо него завести репозиторий governance-as-code: схемы событий, определения метрик, политики доступа и правила качества как файлы с код-ревью. DMBOK использовать как чек-лист из одиннадцати областей при проектировании, назначив на каждый домен данных стюарда-агента с человеком-эскалацией. Изменение любого «словарного» артефакта (схема, метрика, справочник) — только через pull request, который могут делать и агенты.

5.3. Архитектуры хранилищ: Kimball, Inmon, Data Vault 2.0 и проблема времени

Аналитическое хранилище — место, где данные всех систем группы сходятся для отчётности, аналитики и обучения моделей, — можно строить тремя школами, и спор между ними длится с 1990-х. Понимать их механику нужно потому, что выбор определяет, насколько больно вам будет при каждом изменении бизнеса.

Kimball: звёзды и конформные измерения

Ральф Кимбалл (Ralph Kimball, «The Data Warehouse Toolkit», 1996; 3-е издание 2013) предложил строить хранилище как набор звёздных схем (star schema): в центре — таблица фактов (facts) с числовыми показателями транзакций (сумма счёта, часы, количество), вокруг — таблицы измерений (dimensions), описывающие контекст: дата, клиент, продукт, сотрудник, юрлицо. Запрос «выручка по клиентам за квартал» — это соединение фактов с двумя измерениями и агрегация; схема оптимизирована под чтение и понятна бизнес-пользователю. Ключевая идея Кимбалла, которую чаще всего упускают, — конформные измерения (conformed dimensions): измерение «Клиент» должно быть одним и тем же для витрины продаж, витрины финансов и витрины поддержки. Конформные измерения — это, по сути, проекция мастер-данных в аналитический мир: если MDM не сделан, конформности не будет, и «выручка по клиенту X» в двух отчётах разойдётся.

Кимбалл же систематизировал проблему изменяющихся измерений — slowly changing dimensions (SCD). Клиент сменил сегмент с SMB на Enterprise: что делать со старыми продажами? SCD Type 1 — перезаписать (история искажается: прошлогодняя выручка «переедет» в Enterprise). SCD Type 2 — завести новую версию строки с датами действия (valid_from/valid_to) и суррогатным ключом: старые факты остаются связаны со старой версией, новые — с новой. Type 2 — стандарт де-факто для всего, что влияет на отчётность. Механика проста, но дисциплина критична: каждое измерение при проектировании должно получить явную пометку, какие атрибуты историзируются.

Inmon: корпоративная фабрика информации

Билл Инмон (Bill Inmon, «Building the Data Warehouse», 1992) настаивал на обратном порядке: сначала единое нормализованное (3NF) корпоративное хранилище — интегрированная, предметно-ориентированная, неизменяемая, историческая база, — а уже из неё нарезаются витрины под задачи (архитектура Corporate Information Factory, CIF). Подход Инмона даёт целостность, но требует спроектировать модель всего предприятия заранее — в быстро меняющемся бизнесе это почти всегда проваливается по срокам. Исторический компромисс индустрии: ядро по мотивам Инмона там, где домен стабилен, витрины по Кимбаллу — везде, где потребляют данные.

Data Vault 2.0: устойчивость к изменениям

Дэн Линстедт (Dan Linstedt; книга «Building a Scalable Data Warehouse with Data Vault 2.0», 2015 — O'Reilly) предложил третью школу, спроектированную специально под два свойства: источники постоянно меняются, а аудит должен быть полным. Модель раскладывает данные на три типа таблиц. Хабы (hubs) хранят только бизнес-ключи сущностей (ИНН контрагента, номер договора) и ничего больше. Линки (links) — только связи между хабами (договор ↔ контрагент ↔ юрлицо группы). Сателлиты (satellites) — все описательные атрибуты, привязанные к хабу или линку, с меткой времени загрузки и указанием источника. Всё хранилище — insert-only: ничего не обновляется и не удаляется, новая версия атрибутов — новая строка сателлита.

Kimball · 1996 звёздные схемы Факты дата клиент продукт юрлицо оптимизирован под чтение; понятен бизнесу и агентам → витрины для потребления Inmon · 1992 Corporate Information Factory Ядро 3NF модель всего предприятия витрина А витрина Б целостность, но модель всего предприятия нужна заранее → ядро стабильных доменов Data Vault 2.0 · 2015 хабы + линки + сателлиты Хаб Хаб Линк Сателлит v1 Сателлит v2 insert-only: новая версия — новая строка, аудит полный → сырое ядро при потоке изменений компромисс индустрии: сырое ядро по Data Vault / Inmon + витрины-звёзды по Кимбаллу сверху
Рис. 5.3. Три школы хранилищ. Kimball: звёзды и конформные измерения — для потребления; Inmon: нормализованное ядро CIF — для стабильных доменов; Data Vault 2.0: insert-only хабы-линки-сателлиты — когда источники постоянно меняются, а аудит должен быть полным.

Почему это устойчиво к изменениям: когда у источника появляется новый атрибут или подключается новая система, вы не перестраиваете существующие таблицы — вы добавляете новый сателлит к существующему хабу. Когда меняется бизнес-правило слияния данных, сырая история в сателлитах не тронута — пересчитывается только слой представления. Data Vault явно разделяет «сырую правду» (raw vault — что именно сказал источник и когда) и «бизнес-правду» (business vault — что мы из этого вычислили), и это разделение — та же идея, что в event sourcing, но в мире хранилищ. Плата — большое число таблиц и соединений; поэтому Data Vault почти всегда прячут за слоем витрин по Кимбаллу, а рутинную генерацию таблиц автоматизируют (в экосистеме dbt — пакеты вроде AutomateDV; обзор модели — в Wikipedia: Data Vault modeling).

Битемпоральность: два времени каждого факта

Последний механизм этого раздела — самый недооценённый. У любого факта в учёте есть два независимых времени: valid time — когда факт был истинен в реальности (сотрудник повышен с 1 марта), и transaction time — когда система об этом узнала (кадровик внёс приказ 15 марта). Битемпоральная модель хранит оба, и только она позволяет честно ответить на вопрос аудитора: «что система знала на 10 марта?» — и корректно обработать задним числом исправленную ошибку, не переписывая историю. Для финансовой консолидации холдинга это не роскошь: перепроведение документов задним числом — ежедневная реальность российского учёта, и если хранилище фиксирует только одно время, каждый пересчёт прошлых периодов делает старые отчёты невоспроизводимыми. Формальную основу заложил Ричард Снодграсс (Richard Snodgrass, «Developing Time-Oriented Database Applications in SQL», 1999); стандарт SQL:2011 ввёл поддержку temporal-таблиц, а Мартин Фаулер популяризовал паттерн в заметке Bitemporal History. Заметьте: SCD Type 2 — это однотемпоральная историзация, Data Vault с load_date — тоже; полная битемпоральность требует явного проектирования обеих осей.

valid time — когда факт истинен в реальности transaction time — когда система узнала 1 марта 10 марта 10 марта 15 марта «Сотрудник повышен с 1 марта» valid time: с 1 марта · transaction time: внесено 15 марта Взгляд системы на 10 марта о повышении ещё неизвестно приказ внесён задним числом: старая строка не переписывается, добавляется новая с двумя осями — ответ аудитору «что знали 10 марта» воспроизводим всегда
Рис. 5.4. Битемпоральность: факт «повышен с 1 марта» внесён 15 марта. Одна ось — когда истинно в реальности (valid time), вторая — когда узнала система (transaction time). Только обе оси вместе позволяют перепроводить документы задним числом, не делая старые отчёты невоспроизводимыми.
💡 Что взять для безлюдного движка RMR

Ядро хранилища — insert-only по мотивам Data Vault (бизнес-ключи + история атрибутов с указанием источника), поверх — тонкие витрины-звёзды по Кимбаллу для отчётов и агентов. Конформные измерения строить прямо из MDM-хаба — это одна и та же сущность «Контрагент». Для всех финансовых и кадровых фактов — битемпоральность с первого дня: valid time + transaction time; это дёшево при проектировании и почти неисправимо задним числом.

5.4. Event sourcing и CQRS: событие как первичный факт

Битемпоральность и insert-only-хранилища — частные проявления более общего принципа, который в мире прикладных систем оформился как event sourcing (событийное происхождение состояния). Классическая система хранит текущее состояние: в таблице invoices лежит строка счёта со статусом «оплачен». Event sourcing переворачивает это: первичным хранимым фактом является событие — «счёт выставлен», «счёт отправлен», «поступила оплата», — а текущее состояние есть производная, результат последовательного применения всех событий. Грег Янг (Greg Young), оформивший паттерн вместе с CQRS в конце 2000-х, формулировал это так: текущее состояние — это левая свёртка (left fold) предыдущих поведений системы (его канонический доклад — «CQRS and Event Sourcing», Code on the Beach 2014; текстовая расшифровка — на kurrent.io).

Механика такова. События пишутся в журнал событий (event store) строго последовательно и никогда не изменяются — только добавляются. Чтобы получить состояние агрегата (счёта, договора, заказа), система проигрывает его события; чтобы не проигрывать тысячи событий каждый раз, периодически сохраняются снимки (snapshots). Из того же журнала строятся проекции (projections) — материализованные представления под конкретные запросы: список неоплаченных счетов, дебиторка по контрагенту, лента активности клиента. Проекция — это одноразовая, пересоздаваемая вещь: изменилось требование к отчёту — вы пишете новую проекцию и проигрываете через неё весь журнал с начала времён. Это свойство, невозможное в state-based системах, называют retroactive query: вопрос, заданный сегодня, получает ответ по всей истории, как будто его задали в первый день.

Журнал событий — истина (append-only, ничего не меняется) счёт выставлен 12.03 10:02 счёт отправлен 12.03 10:05 поступила оплата 19.03 14:41 + только append Остатки и статусы проекция · пересоздаваема Неоплаченные счета проекция · пересоздаваема Отчёты и дебиторка новая проекция = replay журнала replay Состояние — производная, кэш left fold всех событий · снимки (snapshots) для скорости Бонус безлюдного движка: аудит-трейл бесплатно журнал и есть юридически осмысленный след «кто, что, когда, на каком основании» — для действий агентов это условие выживания
Рис. 5.5. «Истина — журнал, состояние — кэш»: события пишутся только вперёд, а остатки, статусы и отчёты — пересоздаваемые проекции. Изменилось требование к отчёту — новая проекция проигрывает весь журнал с начала времён (retroactive query); аудит-трейл получается бесплатно.

CQRS (Command Query Responsibility Segregation — разделение ответственности команд и запросов) — парный паттерн: модель для записи (команды, проходящие через бизнес-правила и порождающие события) отделяется от моделей для чтения (проекций). Мартин Фаулер, описавший оба паттерна в своём каталоге (Event Sourcing, CQRS), настойчиво предупреждает: CQRS — не архитектура всей системы, а локальный паттерн для отдельного ограниченного контекста (bounded context), и применённый повсеместно он добавляет сложности больше, чем пользы.

Чем event sourcing ценен именно для безлюдного движка — три свойства. Первое: аудит-трейл бесплатно. Журнал событий и есть полный, неизменяемый, юридически осмысленный след того, что произошло, — в компании, где действия совершают агенты, это не приятный бонус, а условие выживания: любое действие агента должно быть восстановимо («кто, что, когда, на каком основании»). Второе: события — естественный интерфейс для агентов и автоматизации. Подписка «когда появляется событие "акт подписан" — запусти процесс выставления счёта» выражается тривиально; в state-based системе для этого пришлось бы опрашивать таблицы или навешивать триггеры. Третье: событие фиксирует намерение (intent): «клиент сменил адрес доставки» и «оператор исправил опечатку в адресе» дают одинаковое конечное состояние, но совершенно разную информацию — и для аналитики, и для LLM-агента, читающего историю клиента, разница огромна.

Теперь о том, когда event sourcing — оверкилл. Опыт индустрии 2015–2025 годов дал ясный список ловушек. Схемы событий эволюционируют, и через три года вы держите в журнале пять версий события «счёт выставлен» — нужна стратегия версионирования (этому Янг посвятил отдельную книгу «Versioning in an Event Sourced System»). Проекции асинхронны — читатели видят состояние с задержкой (eventual consistency), и UX/процессы должны это учитывать. Команде, привыкшей к CRUD, паттерн даётся тяжело. Поэтому зрелая рекомендация: event sourcing — для ядровых доменов с богатой историей и требованиями аудита (финансовые операции, договорной цикл, действия агентов), обычный CRUD с журналом изменений (change data capture, CDC) — для всего остального. Важный практический нюанс: брокер сообщений Kafka сам по себе — не event store (нет чтения потока событий одного агрегата и оптимистичных блокировок); специализированные хранилища — EventStoreDB/Kurrent, Axon, либо журнал событий поверх обычной PostgreSQL, чего в масштабе холдинга на 180 человек более чем достаточно.

Отметим симметрию, которая делает эту главу цельной: event sourcing в приложениях, insert-only-сателлиты в Data Vault, immutable-журнал в бухгалтерском учёте (проводки не стирают — делают сторно) и лог транзакций в СУБД — это одна и та же идея: истина — это журнал, состояние — это кэш. Бухгалтерия практикует event sourcing пятьсот лет; цифровой движок просто возвращает учёту его исходную форму.

«Истина — это журнал, состояние — это кэш. Бухгалтерия практикует event sourcing пятьсот лет; цифровой движок просто возвращает учёту его исходную форму».
сквозной принцип главы: event store, Data Vault, сторно и лог транзакций СУБД — одна идея
💡 Что взять для безлюдного движка RMR

Сделать событийный журнал первичной формой операционной истории группы: каждое значимое бизнес-событие (договор, счёт, акт, платёж, кадровое действие, действие агента) — неизменяемая запись с типом, временем, источником и основанием. Состояния в учётных системах считать проекциями. Полный event sourcing применять точечно (финансовый контур, действия агентов), для остального достаточно CDC-потока из существующих систем в общий журнал. Аудит-трейл действий агентов — не отдельная подсистема, а тот же журнал.

5.5. Data mesh: данные как продукт, доменное владение — и откат хайпа

В 2019 году Жамак Дегани (Zhamak Dehghani), тогда — консультант ThoughtWorks, опубликовала на сайте Мартина Фаулера статью о data mesh — распределённой альтернативе централизованному озеру данных, а в 2022-м выпустила книгу «Data Mesh: Delivering Data-Driven Value at Scale» (O'Reilly). Диагноз был точен: центральная команда данных становится бутылочным горлышком — она не знает предметных областей, тонет в заявках, а доменные команды, которые данные порождают, не отвечают за их качество («перебросили через забор — дальше не наша проблема»). Data mesh предложил четыре принципа: доменное владение (данные принадлежат команде домена, а не центральной платформе), данные как продукт (data as a product: у датасета есть владелец, SLA, документация, потребители — «клиенты»), самообслуживаемая платформа данных (домены публикуют данные сами, без тикетов в центральную команду) и федеративное вычислительное руководство (общие стандарты применяются автоматически, кодом — тот самый computational governance из раздела 5.2).

К 2024–2025 годам по хайпу прокатился откат: посты «data mesh мёртв» стали жанром (характерный пример — разбор на Medium; взвешенную позицию «проблема была не в идее, а в реализации» см. у Billy Newport). Причины отката поучительны. Во-первых, data mesh — организационная трансформация, а её продавали как архитектуру: компании покупали «инструменты для data mesh», не меняя ответственности команд, и получали тот же хаос, но распределённый. Во-вторых, полный mesh требует, чтобы в каждом домене жила своя дата-инженерная компетенция, — это посильно компаниям масштаба Zalando или Intuit и разорительно для всех остальных. В-третьих, LLM-волна 2023–2025 сместила бюджеты и внимание: рынку стало не до реорганизаций аналитики.

Что из data mesh выжило и стало мейнстримом — это важнее некролога. Выжила идея «данные как продукт»: у каждого значимого датасета должен быть владелец, документация, гарантии качества и понятные потребители. Выжил computational governance. И выжили data contracts (контракты на данные) — формализованное соглашение между производителем и потребителем данных: схема, семантика полей, SLA по свежести и полноте, правила эволюции (какие изменения обратно совместимы), канал уведомления о breaking changes. Контракт живёт в git, проверяется в CI производителя: изменил тип поля — сборка падает до того, как сломались дашборды потребителей. Главный евангелист подхода — Чед Сандерсон (Chad Sanderson, бывший руководитель платформы данных Convoy, соавтор книги «Data Contracts» у O'Reilly); появился и открытый стандарт описания контрактов — Open Data Contract Standard (ODCS) проекта Bitol под эгидой Linux Foundation AI & Data (непроверено в деталях версий).

Для холдинга Алексея мораль двойная. Полный data mesh — очевидный оверкилл: при 180 сотрудниках нет ни десятка доменных команд, ни ресурсов на федерацию. Но принципы стоит применить к другому разрезу: домены = юрлица и функции холдинга, а «команды-владельцы» — это связки «системный владелец + агент-стюард». Каждый бизнес-актив публикует свои данные в общий слой как продукт с контрактом; управляющая компания потребляет их для консолидации. Контракты при этом важнее вдвойне: потребителем данных выступает не человек, способный заметить странность, а агент, который честно построит отчёт на сломанных данных.

💡 Что взять для безлюдного движка RMR

Не внедрять data mesh как архитектуру, но забрать три выживших элемента: (1) каждый датасет, пересекающий границу юрлица или функции, — продукт с владельцем и документацией; (2) на каждой такой границе — data contract в git: схема, SLA свежести, правила эволюции, проверка в CI; (3) governance — только вычислительный. Контракты — это API безлюдного движка на уровне данных: агенты могут полагаться на них так же, как код полагается на типы.

5.6. Semantic layer и metrics layer: «одна выручка» для людей и агентов

Каждая компания рано или поздно обнаруживает у себя «проблему трёх выручек»: финансы считают выручку по актам, продажи — по оплатам, продуктовая команда — по MRR, и на планёрке три числа не сходятся. Причина не в данных, а в определениях: метрика «выручка» нигде не определена формально, и каждый инструмент BI, каждый SQL-аналитик и каждый Excel переопределяют её заново. Semantic layer (семантический слой) — это архитектурный ответ: отдельный слой, в котором бизнес-понятия (сущности, измерения, метрики и связи между ними) определены один раз, декларативно, и из которого любой потребитель — дашборд, SQL-запрос, LLM-агент — получает одно и то же вычисление.

Механика на примере современного стека. В LookML (язык Looker, придуман около 2012 года и купленный Google вместе с Looker в 2019-м за $2.6 млрд) аналитик описывает views с измерениями (dimensions) и мерами (measures) и explores со связями-джойнами; когда пользователь щёлкает «выручка по месяцам», Looker генерирует SQL из этих определений — руками SQL никто не пишет. dbt Semantic Layer на движке MetricFlow (dbt Labs купила компанию Transform в 2023-м) делает то же поверх dbt-моделей: метрика описывается в YAML — тип агрегации, мера, фильтры, допустимые измерения, — а MetricFlow компилирует запрос «metric: revenue, group by: month, region» в корректный SQL с правильными джойнами и гранулярностью. Cube — независимый semantic layer с кэшированием и API (REST, GraphQL, SQL), который в 2024–2026 годах прямо позиционирует себя как «семантический слой для AI-агентов». Общий принцип один: определение метрики — это код, живущий в git, с ревью и версионированием, а не формула, зашитая в дашборд.

До 2023 года semantic layer был «гигиеной для BI» — полезной, но необязательной. LLM-волна сделала его критической инфраструктурой, и тут есть жёсткие цифры. Бенчмарки dbt Labs показывают: в 2023 году GPT-4, генерируя SQL напрямую по схеме базы, отвечал верно лишь на 32.7% аналитических вопросов, тогда как через семантический слой — на 60.5%; к 2026 году модели уровня Claude Sonnet 4.6 и GPT-5.3 на хорошо смоделированных данных дают 84–90% в режиме text-to-SQL и 98–100% через semantic layer (dbt Semantic Layer vs. Text-to-SQL: 2026 Benchmark). Но проценты — не главное. Главное — режим отказа: text-to-SQL ошибается правдоподобно (запрос выполнился, число выглядит разумно, но джойн раздул строки вдвое), а semantic layer ошибается прозрачно — либо метрика определена и посчитана детерминированно правильно, либо запрос явно невозможен. Для автономного агента, чьи отчёты никто не перепроверяет, разница между «тихо неверно» и «громко невозможно» — это разница между катастрофой и штатной эскалацией.

Вопрос агента «выручка за квартал?» Semantic layer метрика определена людьми, вычисление детерминировано верный ответ (98–100%) можно отправлять в отчёт «запрос невозможен» громкий отказ → штатная эскалация Text-to-SQL модель пишет SQL по схеме, запрос «как-то» выполняется верный ответ (84–90%) но кто это проверит? правдоподобное неверное число тихий отказ → катастрофа в отчёте центральный критерий для агентов: не процент точности, а режим отказа — «громко невозможно» против «тихо неверно»
Рис. 5.6. Громкий против тихого отказа. Semantic layer либо считает метрику детерминированно верно, либо явно отвечает «запрос невозможен»; text-to-SQL ошибается правдоподобно — джойн раздул строки, а число выглядит разумно. Для автономного агента это разница между штатной эскалацией и катастрофой.

Отсюда практический паттерн 2025–2026 годов: агент получает не доступ к базе, а доступ к семантическому слою (через API или MCP-сервер), где «выручка», «маржа», «загрузка производства» уже определены финансовым директором и закреплены ревью. Свободный text-to-SQL остаётся для исследовательских ad-hoc-вопросов с обязательной пометкой «неверифицированный расчёт». В 2026 году dbt Labs, по её анонсу, открыла MetricFlow под лицензией Apache 2.0 (непроверено; исторически движок жил под BSL), мотивируя это тем, что управляемые метрики — основа доверия к AI-агентам (анонс dbt Labs).

💡 Что взять для безлюдного движка RMR

Завести единый реестр метрик группы (выручка, валовая маржа, утилизация, LTV, runway — с формулами, гранулярностью и владельцем) как код в git — это самый дешёвый шаг всей главы с самым высоким возвратом. Любой отчёт для людей и любой запрос агента — только через этот слой; прямой text-to-SQL — лишь для разведки с явной маркировкой. «Одна выручка» — это не лозунг, а YAML-файл с ревью финдиректора.

5.7. Онтологии предприятия и knowledge graphs

Семантический слой отвечает на вопрос «как посчитать метрику», но не отвечает на вопрос «как устроен мир компании»: что такое договор, чем заказчик отличается от плательщика, может ли один сотрудник работать в двух юрлицах, что происходит с проектом при расторжении договора. Формальное описание понятий предметной области, их свойств и связей называется онтологией (ontology), а её наполненная данными реализация — графом знаний (knowledge graph).

Классический технологический фундамент пришёл из Semantic Web начала 2000-х: RDF (Resource Description Framework) представляет знания как триплеты «субъект — предикат — объект» («Договор_42 — заключён_с — Контрагент_7»), OWL (Web Ontology Language) задаёт классы, свойства и аксиомы (например, «у договора ровно один плательщик», «дочерняя компания — транзитивно часть группы»), а язык SPARQL позволяет запрашивать граф. Сила подхода — в выводе (reasoning): из аксиом и фактов машина выводит неявные факты. Слабость — в пороге входа: полноценные OWL-онтологии требуют редкой квалификации, и за пределами фармы, финансов и оборонки они приживались плохо. Показательный отраслевой пример — FIBO (Financial Industry Business Ontology) от EDM Council: открытая онтология финансовой индустрии, формализующая тысячи понятий — от юридических лиц и долей владения до деривативов, — используемая банками для регуляторной отчётности и интеграции данных; это доказательство, что онтология масштаба целой отрасли возможна, и одновременно иллюстрация её цены (FIBO развивается консорциумом с 2010-х).

Коммерческий образец другого рода — Palantir Foundry Ontology, самый успешный пример «операционной онтологии» на рынке. В Foundry онтология — это не документация, а исполняемый слой из трёх элементов: объекты (object types — «Завод», «Заказ», «Партия», «Сотрудник» с их свойствами, привязанными к источникам данных), связи (link types — «Заказ размещён на Заводе»), и — ключевое отличие от академических онтологий — действия (action types — «перенести заказ», «остановить линию»), то есть операции с правилами валидации и правами, через которые единственно и можно менять мир. Онтология Palantir двунаправленна: она не только читает данные (semantic layer), но и записывает решения обратно в операционные системы (kinetic layer, слой записи обратно, writeback). Поверх этого работает AIP (Artificial Intelligence Platform): LLM-агент видит мир через объекты и связи, а действовать может только через типизированные действия с валидацией — онтология одновременно служит агенту картой мира и клеткой безопасности (сопоставление парадигм Semantic Web и Palantir — см. разбор Pebblous; первоисточник — документация Palantir Ontology). Именно эта конструкция — самый прямой из существующих на рынке прообразов безлюдного бизнес-движка.

LLM-агент думает и действует Онтология = карта мира + клетка безопасности Объекты Заказ · Завод · Партия свойства ← источники Связи «заказ размещён на заводе» Действия «перенести заказ» валидация + права Операционные системы (1С, CRM, MES…) чтение свойств ↑ · запись решений обратно (writeback, kinetic layer) ↓ видит мир объекты + связи меняет мир только через типизированные действия ✕ прямой доступ агента к базам мимо онтологии — запрещён
Рис. 5.7. Palantir-паттерн операционной онтологии: агент видит мир через объекты и связи, а меняет его только через типизированные действия с валидацией и правами; запись уходит обратно в операционные системы (writeback). Карта мира и клетка безопасности — одна и та же конструкция.

Интерес к графам знаний резко вырос с приходом GenAI, и это не совпадение. Gartner в исследованиях 2024–2025 годов устойчиво называет knowledge graphs ключевой технологией заземления (grounding) генеративных моделей: граф даёт LLM проверяемую структуру фактов вместо статистической догадки, снижая галлюцинации и позволяя объяснить ответ цепочкой связей (см. обзоры Gartner о семантических технологиях 2025 и CIO: Knowledge graphs — the missing link in enterprise AI). Практическое воплощение — паттерн GraphRAG (Microsoft Research, 2024): вместо поиска по кускам текста агент обходит граф сущностей и связей, извлечённый из корпоративных документов, что радикально улучшает ответы на вопросы, требующие соединения фактов из разных мест.

Важная прививка от перфекционизма: онтология предприятия для холдинга из 180 человек — это не OWL-монумент на три года работы. Это прагматичный словарь из 20–40 типов объектов (юрлицо, контрагент, договор, заказ, счёт, акт, сотрудник, роль, проект, продукт, метрика…), их связей и допустимых действий, записанный в машиночитаемой форме (хоть YAML, хоть property graph в Neo4j) и связанный с мастер-данными: узел графа «Контрагент_7» — это та же золотая запись из раздела 5.1. Онтология — то место, где MDM, семантический слой и агентный доступ сходятся в одну конструкцию.

💡 Что взять для безлюдного движка RMR

Онтология группы — центральный проектный артефакт движка, а не побочная документация. Начать с 20–30 типов объектов и главное — с типизированных ДЕЙСТВИЙ над ними (по образцу Palantir: действие = валидация + права + запись в журнал событий). Агентам запрещено менять данные мимо действий онтологии. RDF/OWL не обязательны; обязательны машиночитаемость, версионирование и привязка каждого объекта к золотой записи MDM.

5.8. Modern data stack и его судьба: от кембрийского взрыва к консолидации

Чтобы принимать инструментальные решения, нужно понимать двадцатилетнюю траекторию рынка. До 2010-х аналитические данные жили в дорогих on-premise хранилищах (Teradata, Oracle), и данные перед загрузкой преобразовывали снаружи — ETL (extract, transform, load). Облачные хранилища — Snowflake (отделение хранения от вычислений, эластичность), BigQuery (serverless), ClickHouse (открытая колоночная СУБД с экстремальной скоростью, российского происхождения — вырос из Яндекс.Метрики) — сделали вычисления дешёвыми, и порядок сменился на ELT: грузим сырьё как есть, преобразуем внутри хранилища. Вокруг этой идеи в 2016–2021 годах вырос modern data stack (MDS): Fivetran/Airbyte таскают данные из SaaS-систем в хранилище, dbt превратил преобразования в инженерную дисциплину (SQL-модели в git, тесты, документация, lineage), BI-инструменты читают витрины, а reverse ETL (Census, Hightouch) возвращает вычисленные данные обратно в операционные системы — сегменты клиентов в CRM, скоринг в маркетинг. Параллельно Databricks развивал альтернативную линию lakehouse («озёрный дом»): данные лежат в открытых табличных форматах (Delta Lake, Apache Iceberg, Hudi) в дешёвом объектном хранилище, а движки — SQL, Spark, ML — подключаются сверху; покупка Databricks компании Tabular (создатели Iceberg) в июне 2024 года за сумму, оцениваемую свыше $1 млрд, зафиксировала победу открытых форматов: теперь и Snowflake, и BigQuery, и Databricks читают Iceberg-таблицы, и данные перестали быть заложниками вендора.

Дальше случилось то, что случается со всяким кембрийским взрывом: вымирание и консолидация. Стек из «лучших в своём классе» инструментов означал для покупателя десяток контрактов, интеграционный клей и размазанную ответственность — а с 2023 года бюджеты и внимание ушли в AI. Рынок 2024–2026 годов сжался в несколько платформ: Salesforce купила Informatica (сделка ~$8 млрд, анонсирована в мае 2025-го) ради данных для агентной платформы; Fivetran за 2025 год поглотила Census (reverse ETL) и Tobiko Data (SQLMesh — главный open-source-конкурент dbt; пресс-релиз), а в октябре 2025-го Fivetran и dbt Labs объявили о слиянии в единую компанию (сделка all-stock, оценка объединённой компании порядка $6 млрд (непроверено); анонс dbt Labs, разбор Everest Group). Инвестор Томаш Тунгуз назвал это фазой бандлинга: маятник «разъединение → объединение» качнулся обратно. Показательно, как объединённая компания себя называет: не «modern data stack», а «data layer for AI» — слой данных для ИИ. Хайповое имя умерло, инженерное содержание (ELT, версионируемые преобразования, открытые форматы) стало скучным стандартом.

Для проектировщика движка из этой истории следуют три урока. Первый: выбирать надо не инструменты, а открытые интерфейсы — SQL, Iceberg/Parquet, git-версионируемые преобразования, стандартные протоколы; инструменты будут куплены и переименованы, интерфейсы останутся. Второй: в масштабе 180 человек не нужен «стек из десяти вендоров» — достаточно одного хранилища (для российского контура естественный кандидат — ClickHouse или Postgres-семейство, для международного — Snowflake/BigQuery), dbt-подобного слоя преобразований и семантического слоя. Третий: reverse ETL — концептуально важная деталь: слой данных в безлюдном движке не только «смотрит назад» (отчётность), но и «действует вперёд» — вычисленные сигналы (скоринг контрагента, прогноз кассового разрыва) должны возвращаться в операционный контур, где по ним сработают агенты.

💡 Что взять для безлюдного движка RMR

Ставка на открытые интерфейсы, а не на вендоров: данные — в открытых форматах, преобразования — как код в git, доступ — через SQL и стандартные протоколы. Минимальный состав: одно аналитическое хранилище + слой преобразований с тестами + семантический слой; никакого зоопарка из десяти SaaS. Заложить обратный контур (reverse ETL): вычисленные данными сигналы должны возвращаться в операционные системы и триггерить агентов, иначе слой данных останется зеркалом заднего вида.

5.9. Data quality и data observability: данные как контракт

Классическая теория качества данных (data quality) измеряет его по измерениям: точность (accuracy), полнота (completeness), согласованность (consistency), своевременность (timeliness), валидность (validity), уникальность (uniqueness). Инженерная практика 2010-х дала инструменты проверок: тесты dbt (уникальность ключа, отсутствие NULL, ссылочная целостность), декларативные ожидания Great Expectations. Но тесты ловят только то, о чём вы догадались спросить. Категорию data observability (наблюдаемость данных) — мониторинг здоровья данных по аналогии с мониторингом приложений (Datadog для данных) — создала компания Monte Carlo; её основательница Барр Мозес (Barr Moses) ввела термин data downtime: периоды, когда данные неполны, ошибочны или устарели, а бизнес об этом не знает и принимает решения. Monte Carlo сформулировала пять столпов наблюдаемости: свежесть (freshness — обновилась ли таблица вовремя), объём (volume — не пришло ли вдвое меньше строк, чем обычно), распределение (distribution — не дрейфуют ли значения: доля NULL, средние, диапазоны), схема (schema — кто и когда изменил структуру: переименованное поле в источнике — самая частая причина тихих поломок), происхождение (lineage — из каких таблиц собрана эта витрина, чтобы при инциденте мгновенно увидеть радиус поражения). Ключевой приём — не ручные правила, а машинное обучение на истории: система сама выучивает, что таблица платежей обновляется к 6 утра и содержит 10–15 тысяч строк в день, и поднимает тревогу при аномалии.

В безлюдном движке смысл этой дисциплины меняется качественно. Человек-аналитик — это встроенный детектор аномалий: он заметит, что выручка за вчера подозрительно нулевая, и не понесёт отчёт директору. Агент не заметит — точнее, заметит только то, что ему велели проверять. Поэтому правило безлюдного движка формулируется жёстко: агенту можно давать только данные, находящиеся под контрактом и мониторингом. Свежесть и полнота из «метрик качества» превращаются в предусловие исполнения: процесс «подготовить платёжный календарь» должен начинаться с машинной проверки «данные банка свежее 24 часов, контракт не нарушен», и при нарушении — останавливаться и эскалировать, а не считать по тухлым данным. Это соединяет наблюдаемость с data contracts из раздела 5.5: контракт декларирует гарантии, observability их непрерывно проверяет, а нарушение автоматически блокирует зависимые процессы (паттерн circuit breaker — «предохранитель» на пайплайне). Показательно, что сама Monte Carlo к 2025–2026 годам переименовала категорию в «Data + AI Observability»: следить теперь надо не только за таблицами, но и за выходами моделей и агентов.

💡 Что взять для безлюдного движка RMR

У каждого датасета, который читают агенты, — паспорт: свежесть, объём, дрейф распределений, изменения схемы, происхождение. Проверка паспорта — предусловие каждого агентного процесса; нарушение — автоматический стоп и эскалация человеку, никогда не «посчитаем как есть». Начать можно без покупки платформы: тесты dbt + простые проверки свежести/объёма по расписанию закрывают 80% риска.

5.10. Single source of truth: почему это миф и как устроено на самом деле

«Единый источник правды» (single source of truth, SSOT) — самое частое требование заказчика к слою данных и самое опасное, если понимать его буквально: «одна база, где лежит всё, и все читают только оттуда». В буквальном смысле SSOT — миф, и вот почему. Во-первых, разные потребители физически требуют разных представлений: операционная запись счёта (нормализованная, транзакционная), аналитическая витрина (денормализованная звезда), поисковый индекс и событийный журнал — это четыре копии одних данных, и ни одну нельзя устранить. Во-вторых, «правда» зависит от момента и точки зрения: правда бухгалтерии — по проведённым документам, правда продаж — по подписанным договорам, и обе легитимны (вспомните битемпоральность: даже время у правды двоится). В-третьих, любая попытка загнать все системы в одну базу воспроизводит монолит, который слой за слоем обрастает выгрузками в Excel — теневыми копиями, худшими из всех.

Реалистичная формула, к которой пришла индустрия, звучит иначе: не единый источник правды, а единственный авторитетный источник для каждого элемента данных — «одно место правды на домен». Инженерно это раскладывается на четыре правила. Правило первое: для каждой сущности и каждого атрибута явно назначена система записи (system of record, SOR) — место, где данные рождаются и правятся: кадровые данные — в HR-системе, юридические реквизиты — в MDM-хабе (с подпиткой из госреестров), сделки — в CRM, проводки — в учётной системе; всё остальное — производные копии, которым запрещено становиться источником правок. Правило второе: производные копии создаются только управляемыми потоками (CDC, событийный журнал, ELT) с известным происхождением (lineage) и задержкой — тогда копий может быть сколько угодно, они дешёвые и одноразовые. Правило третье: правда о смыслах централизуется даже тогда, когда правда о данных распределена: реестр определений (онтология, семантический слой, справочники) — один на группу. Правило четвёртое: расхождения не «исключаются», а непрерывно сверяются машиной — реконсиляция между системой записи и копиями с автоматическим инцидентом при расхождении (в бухгалтерии это называется сверкой и практикуется веками; движок лишь делает её непрерывной).

Заметьте, как собирается конструкция главы: MDM даёт одно место правды о сущностях, событийный журнал — о происходившем, семантический слой — о метриках, онтология — о понятиях, data contracts — о гарантиях на границах. «Единый источник правды» существует, но это не база данных, а дисциплина адресации: на любой вопрос «где правда об X?» у движка есть однозначный, машиночитаемый ответ.

«Единый источник правды существует, но это не база данных, а дисциплина адресации: на любой вопрос "где правда об X?" у движка есть однозначный, машиночитаемый ответ».
итог раздела 5.10 — реалистичная формула SSOT
💡 Что взять для безлюдного движка RMR

Составить и поддерживать карту «сущность/атрибут → система записи» для всей группы — это документ на две страницы, который предотвращает годы хаоса. Запретить правки данных в копиях технически, а не регламентом. Ежесуточная автоматическая реконсиляция ключевых цифр (выручка, деньги, задолженность) между системой записи и витринами — с инцидентом, а не с молчаливой поправкой.

5.11. Слой данных под LLM-агентов: RAG, text-to-SQL, MCP, семантика

Всё, что описано выше, к 2024–2026 годам получило нового главного потребителя: не аналитика-человека, а LLM-агента. Разберём четыре механизма, через которые агент получает доступ к корпоративным данным, и что каждый из них требует от слоя данных.

RAG (retrieval-augmented generation — генерация с дополнением поиском) — базовый паттерн для неструктурированных данных: документы компании режутся на фрагменты, превращаются в векторные представления (embeddings), складываются в векторный индекс; на вопрос агента система достаёт релевантные фрагменты и подаёт их модели в контекст вместе с вопросом. RAG хорошо отвечает на вопросы «что написано в договоре с X о неустойке», но плохо — на вопросы, требующие соединения фактов из многих документов; здесь его усиливает GraphRAG из раздела 5.7 (обход графа сущностей вместо поиска по кускам) и гибридный поиск (векторный + ключевой + фильтры по метаданным из MDM: агенту, работающему на юрлицо А, не должны выпадать документы юрлица Б — это вопрос не качества, а безопасности периметра).

Text-to-SQL — для структурированных данных. Здесь важно откалибровать ожидания эмпирикой. На академическом бенчмарке Spider модели давно показывают за 90% точности, но бенчмарк Spider 2.0 (ICLR 2025), собранный из реальных корпоративных задач — тысячи таблиц, диалекты BigQuery/Snowflake, многошаговые запросы, — отрезвил индустрию: лучшие модели конца 2024 года решали лишь около 17–21% задач. К 2026 году модели стали заметно сильнее (см. цифры dbt-бенчмарка в разделе 5.6: 84–90% на хорошо смоделированной схеме), но выводы устойчивы: точность text-to-SQL — это функция качества слоя данных, а не только модели. Понятные имена таблиц и колонок, описания в каталоге, малое число хорошо документированных витрин вместо тысяч сырых таблиц, примеры запросов — всё это «дизайн данных под читателя-LLM», и он поднимает точность сильнее, чем смена модели.

Semantic layer как язык агента — самый надёжный режим для бизнес-метрик, разобранный в 5.6: агент не пишет SQL, а формулирует запрос в терминах метрик и измерений, определённых людьми. По сути, семантический слой и онтология образуют язык, на котором агент думает о бизнесе: словарь сущностей (онтология), словарь показателей (метрики), грамматика допустимых действий (actions). Чем полнее этот язык, тем меньше агент фантазирует.

MCP (Model Context Protocol — протокол контекста моделей) — транспортный стандарт, замкнувший конструкцию. Представленный Anthropic в ноябре 2024 года и в течение 2025-го принятый остальными вендорами (OpenAI объявил о поддержке в марте 2025-го), в декабре 2025 года протокол был передан в фонд Agentic AI Foundation под эгидой Linux Foundation и стал вендор-нейтральным стандартом (состояние на 2026 год). MCP-сервер описывает набор инструментов (tools) и ресурсов, которые агент может вызывать; для слоя данных это означает, что хранилище, семантический слой и каталог публикуют агенту типизированные операции: «список метрик», «запросить метрику», «описание таблицы», «выполнить читающий запрос». Такие серверы к 2026 году штатно поставляют и Snowflake (managed MCP servers), и dbt (dbt MCP server), и большинство каталогов данных. Критически важно, что MCP-сервер — это точка применения политик: именно здесь проверяются права агента (какие юрлица, какие домены, только чтение), режется контекст, пишется журнал обращений. Прямой доступ агента к базе по JDBC — антипаттерн по всем осям: без семантики, без прав, без журнала.

Собирая четыре механизма вместе, получаем эталонную архитектуру агентного доступа к данным безлюдного движка: неструктурированное — через RAG/GraphRAG с фильтрами периметра; метрики — через semantic layer; исследовательские запросы — через text-to-SQL по документированным витринам с пометкой неверифицированности; всё — через MCP-серверы с политиками, и никогда — мимо них.

💡 Что взять для безлюдного движка RMR

Проектировать доступ агентов к данным как трёхуровневую пирамиду доверия: (1) метрики через семантический слой — можно отправлять в отчёты без проверки; (2) text-to-SQL по витринам — с автопроверками и пометкой; (3) RAG по документам — с обязательной ссылкой на источник. Весь доступ — через MCP-серверы, где живут права (в разрезе юрлиц!), лимиты и журнал. Бюджет на «дизайн данных под LLM» (имена, описания, каталог, примеры) окупается быстрее бюджета на модели.

5.12. Сквозной кейс: слой данных для холдинга из пяти юрлиц

Соберём теперь материал главы в проектное упражнение, максимально близкое к задаче Алексея. Дано: управляющая компания (УК) и четыре бизнес-актива — сервисная разработка, два продуктовых юрлица, новое AI-направление. Учёт в нескольких базах 1С (по юрлицу), продажи в CRM, проекты в трекере, кадры в HR-системе, банковские выписки из четырёх банков. Требуется слой данных, позволяющий УК видеть консолидированную картину и дающий агентам почву для операционной работы, — командой в одного дата-инженера с агентами.

нед. 1 нед. 5 нед. 9 нед. 14 1. Онтология + карта правды недели 1–2 · словарь до кода 2. MDM-хаб (registry) недели 2–6 · золотые записи 3. Событийный журнал недели 4–8 · CDC + аудит агентов 4. Хранилище и витрины недели 6–10 · dbt + звёзды 5. Метрики + контракты недели 8–12 · YAML + CI 6. Агентный доступ (MCP) недели 10–14 итог: один хаб · один журнал · одно хранилище · один реестр метрик · три MCP-сервера — за 14 недель
Рис. 5.8. Сквозной кейс: контур данных холдинга из пяти юрлиц за 14 недель. Этапы перекрываются, но порядок жёсткий: онтология и карта правды — до инструментов, мастер-данные — до витрин, семантика и контракты — до подключения агентов.

Шаг 1. Онтология и карта правды (недели 1–2). Прежде любого кода — словарь группы: типы объектов (юрлицо, контрагент, договор, заказ, счёт, акт, платёж, сотрудник, назначение, проект, продукт, метрика), их связи и действия над ними; параллельно — карта «сущность/атрибут → система записи» из раздела 5.10. Уже на этом шаге вскрываются главные развилки: сотрудник в двух юрлицах — одна сущность «человек» с двумя «назначениями»; внутригрупповые договоры — отдельный тип связи, который при консолидации элиминируется.

Шаг 2. MDM-хаб в стиле registry/consolidation (недели 2–6). Лёгкий хаб (достаточно PostgreSQL): таблицы сущностей с глобальными идентификаторами, кросс-ссылки на записи в 1С/CRM/HR, матчинг по ИНН+нечёткое имя, поатрибутные правила выживания (реквизиты — из госреестра-провайдера, контакты — из CRM). Серая зона матчинга — очередь агента-стюарда с журналом решений; человек выборочно проверяет первые месяцы. Выход шага — золотые записи контрагентов и людей, на которые дальше ссылается всё.

Шаг 3. Событийный журнал группы (недели 4–8). Insert-only журнал бизнес-событий в общем хранилище: из 1С и CRM события снимаются CDC/выгрузками («проведён документ», «сделка передвинута»), из новых агентных процессов пишутся нативно («агент сформировал платёжный календарь», основание, версия данных). Каждое событие несёт transaction time и valid time. Полный event sourcing не внедряется — существующие системы остаются системами записи; журнал — это общая событийная история группы и аудит-трейл агентов.

Шаг 4. Хранилище и витрины (недели 6–10). Одно аналитическое хранилище; сырьё — insert-only с фиксацией источника (по мотивам Data Vault, без фанатизма: хабы/сателлиты — только для контрагентов, договоров, людей); поверх — dbt-преобразования с тестами и звёздные витрины: консолидированная выручка (с элиминацией внутригрупповых оборотов), денежный поток по группе, утилизация людей, юнит-экономика продуктов. Измерения витрин строятся из MDM-хаба — конформность бесплатно.

Шаг 5. Семантический слой и контракты (недели 8–12). Реестр из первых 15–20 метрик группы в YAML с владельцами (выручка — финдиректор, утилизация — операционный директор), скомпилированный в semantic layer. На границах «актив → УК» — data contracts: схема, свежесть (например, «управленческие данные актива — T+1 до 9:00»), правила эволюции; проверка в CI. Наблюдаемость — тесты dbt + мониторинг свежести/объёма с алертами.

Шаг 6. Агентный доступ (недели 10–14). MCP-серверы: семантический слой (метрики — для еженедельного отчёта УК, который собирает агент), каталог витрин (text-to-SQL для ad-hoc вопросов партнёров с пометкой неверифицированности), RAG по договорам с фильтром юрлица. Права агентов — в разрезе юрлиц и доменов; каждый вызов — в событийный журнал.

Итог — не «платформа данных» в корпоративном смысле, а компактный контур: один хаб, один журнал, одно хранилище, один реестр метрик, три MCP-сервера. Существенно, что порядок шагов неслучаен: онтология и карта правды до инструментов, мастер-данные до витрин, семантика до агентов. Обратный порядок — «сначала подключим агентов к данным, потом наведём порядок» — гарантированно производит систему, которая быстро и уверенно отвечает неправильно.

Источники и куда копать глубже

книга
Ralph Kimball, Margy Ross. The Data Warehouse Toolkit, 3rd ed. (Wiley, 2013)

Канон размерного моделирования: звёзды, конформные измерения, SCD.

книга
Dan Linstedt, Michael Olschimke. Building a Scalable Data Warehouse with Data Vault 2.0 (Morgan Kaufmann, 2015)

Первоисточник по хабам-линкам-сателлитам и insert-only-хранилищу.

книга
DAMA International. DAMA-DMBOK, 2nd ed. (Technics Publications; переработанное издание 2024)

Свод знаний из одиннадцати областей; использовать как чек-лист, не как методологию.

книга
Zhamak Dehghani. Data Mesh: Delivering Data-Driven Value at Scale (O'Reilly, 2022)

Первоисточник четырёх принципов data mesh; читать вместе с критикой 2024–2025 годов.

книга
Barr Moses, Lior Gavish, Molly Vorwerck. Data Quality Fundamentals (O'Reilly, 2022)

Data downtime и наблюдаемость данных от создателей категории.

книга
Chad Sanderson, Mark Freeman. Data Contracts (O'Reilly, 2025)

Контракты на данные как инженерная практика.

видео
Greg Young. «CQRS and Event Sourcing» — Code on the Beach 2014

Канонический часовой ввод в event sourcing от автора паттерна; расшифровка на kurrent.io.

видео
Martin Fowler. «The Many Meanings of Event-Driven Architecture» — GOTO 2017

Четыре разных смысла «событийности» и почему их смешение опасно.

видео
Записи конференции Data Council (YouTube)

Лучший поток практических докладов о судьбе modern data stack, semantic layer и данных для агентов за 2023–2026 годы.

статья
Ivan P. Fellegi, Alan B. Sunter. «A Theory for Record Linkage» (JASA, 1969)

Математическая основа вероятностного матчинга записей.

статья
Lei et al. «Spider 2.0: Evaluating Language Models on Real-World Enterprise Text-to-SQL Workflows» (ICLR 2025)

Отрезвляющий бенчмарк: реальный корпоративный text-to-SQL на порядок труднее академического.

статья
Zhamak Dehghani. «Data Mesh Principles and Logical Architecture» (martinfowler.com, 2020)

Компактная и бесплатная версия идей data mesh.

статья
Martin Fowler. «Event Sourcing» и «Bitemporal History»

Эталонные описания паттернов с примерами; Bitemporal History.

блог
dbt Developer Blog: «Semantic Layer vs. Text-to-SQL: 2026 Benchmark Update»

Измеренная разница между «агент пишет SQL» и «агент говорит на языке метрик».

блог
Barr Moses. «Introducing the 5 Pillars of Data Observability»

Свежесть, объём, распределение, схема, lineage.

блог
Palantir Foundry Ontology — документация

Как выглядит промышленная «операционная онтология» (объекты, связи, действия).

блог
Tomasz Tunguz. «The Data Pendulum Swings to Consolidation»

Рыночная логика консолидации стека 2024–2026.

блог
Chad Sanderson (LinkedIn/Substack «Data Products»)

Главный евангелист data contracts и «shift left» в качестве данных.

сообщество
dbt Community Slack · r/dataengineering · DAMA International

dbt Slack; Data Engineering subreddit — честные разборы хайпа; DAMA и локальные отделения — по governance и MDM.

← Назад
Глава 4. ERP и системы записи