data-infra
Словарь ↗Дрейф схемы
Дрейф схемы — это постепенное расхождение между структурой, которую потребитель ожидает от источника данных, и структурой, которую источник на самом деле выдаёт. Колонку переименовали, поле, всегда бывшее целым числом, начало приходить строкой, необязательный ключ перестал появляться, вложенный объект получил ещё один уровень. Ни одно из этих изменений не является ошибкой на стороне источника — это обычные продуктовые изменения, — но каждое ломает допущение, зашитое где-то ниже по потоку: в конвейере, дашборде, таблице хранилища или наборе признаков модели. Отличительная черта дрейфа в том, что он обычно не поднимает исключение. Конвейер, читающий переименованную колонку, чаще получает null, а не ошибку, поэтому джоб отрабатывает успешно, таблица наполняется, а числа оказываются неверными так, что это выглядит как бизнес-тренд. Именно поэтому дрейф обычно обнаруживает человек, усомнившийся в графике недели спустя, а не алерт, и поэтому цена — не в самом исправлении, а в периоде, когда решения принимались на тихо испорченных данных. Обнаружение живёт на границе. Самый надёжный вариант — валидировать полезную нагрузку по ожидаемой схеме в точке приёма и громко падать при нарушении: это превращает молчаливую проблему данных в шумную проблему конвейера, которую заметить куда дешевле. Более слабые, но полезные сигналы — отслеживание наличия колонок и распределения типов во времени, алерты на резкое изменение доли null или кардинальности, сверка числа строк с ожиданием. Реестр схем решает ту же задачу раньше, делая контракт явным и версионированным, так что несовместимое изменение производителя отклоняется при публикации, а не обнаруживается потребителем. По сути дрейф — организационная проблема в техническом костюме: он случается потому, что команда, владеющая источником, не знает, кто зависит от его формы. Практическое замечание: версионируйте схемы явно и считайте любое изменение ломающим, пока не доказано обратное, и храните сырые принятые полезные нагрузки в течение окна хранения. Когда дрейф найден поздно, единственный путь исправить историю — бэкфилл, а он возможен, только если исходные данные сохранены в исходной форме.
Похожие термины