Поле push: глобальные сигналы

В реактивной архитектуре Vega взаимодействие между данными, сценой и интерактивностью строится через систему сигналов (signals), формирующих направленный граф зависимостей. Сигналы представляют собой именованные значения, которые могут обновляться в ответ на пользовательские события, изменения данных или вычисления в других сигналах.

Одним из ключевых механизмов управления распространением изменений в этой системе выступает поле push, определяющее стратегию доставки обновлений, включая сценарии глобальных сигналов.


Механизм сигналов и модель распространения изменений

Сигналы в Vega образуют реактивную сеть, где каждое изменение значения инициирует каскадное обновление зависимостей. Внутренне граф сигналов опирается на принцип:

  • узлы графа — сигналы, данные и вычисляемые выражения;
  • ребра графа — зависимости между ними;
  • обновление распространяется от источника изменения к зависимым узлам.

В классическом режиме обновления изменения передаются через локальные зависимости, минимизируя область пересчёта.

Однако при работе с интерактивными сценами возникает необходимость управления глобальным распространением событий, особенно когда сигнал должен влиять на множество независимых компонентов сцены или даже на несколько визуализаций.


Поле push как механизм управления распространением

Поле push определяет стратегию доставки обновлений сигнала по графу зависимостей. Оно управляет тем, каким образом изменения «проталкиваются» (push) к подписчикам.

Основные режимы поведения:

  • локальное распространение (по зависимостям);
  • ограниченное распространение (с фильтрацией узлов);
  • глобальное распространение (broadcast-подобная модель).

Глобальные сигналы в этом контексте представляют собой сигналы, изменения которых должны быть видны максимально широкой части системы независимо от локальной структуры зависимостей.


Глобальные сигналы и их семантика

Глобальный сигнал в Vega — это сигнал, чьи изменения не ограничиваются локальным подграфом зависимостей. Вместо этого он инициирует обновление всех узлов, которые явно или косвенно могут быть затронуты.

Такая модель используется в случаях:

  • синхронизации нескольких визуальных представлений;
  • управления общим состоянием интерактивной сцены;
  • глобальных параметров взаимодействия (масштаб, фильтры, режимы отображения);
  • координации событий между слоями графики.

Глобальность в данном случае не означает отсутствие структуры, а означает расширенную область влияния при обновлении.


Поведение push в контексте глобальных сигналов

При включении глобального режима push изменяет стратегию распространения следующим образом:

  1. Обновление сигнала инициирует событие изменения.
  2. Система сигналов помечает зависимые узлы как потенциально устаревшие.
  3. Вместо локального пересчёта выполняется расширенное распространение по графу.
  4. Все подписанные выражения и трансформации получают уведомление об изменении.

В отличие от классического режима, где пересчёт строго оптимизирован по зависимостям, глобальный push допускает более широкую зону инвалидирования.


Влияние на граф вычислений

Граф вычислений в Vega можно рассматривать как ориентированный ациклический граф (DAG), в котором сигналы являются вершинами, а зависимости — рёбрами.

При глобальном push:

  • увеличивается количество затронутых узлов;
  • возрастает стоимость пересчёта;
  • уменьшается сложность анализа локальных зависимостей;
  • повышается предсказуемость синхронизации состояния.

Это создаёт баланс между производительностью и согласованностью состояния визуализации.


Применение в интерактивных сценариях

Глобальные сигналы особенно важны в интерактивных визуализациях, где одно действие пользователя должно влиять на множество элементов сцены.

Типичные сценарии:

Синхронизация масштабирования

Изменение масштаба (zoom) одного графика должно отражаться на нескольких координированных представлениях.

Общие фильтры данных

Сигнал фильтрации может воздействовать на несколько независимых слоёв данных, включая агрегаты и вспомогательные визуализации.

Координация курсора

Положение курсора мыши часто используется как глобальный сигнал, влияющий на tooltip, подсветку и вспомогательные маркеры.


Различие между локальным и глобальным push

Характеристика Локальный push Глобальный push
Область влияния Подграф зависимостей Расширенный граф
Производительность Выше Ниже
Согласованность Частичная Максимальная
Использование Изолированные взаимодействия Скоординированные сцены

Локальный push оптимизирует вычисления, тогда как глобальный обеспечивает согласованность состояния при сложной интерактивности.


Влияние на производительность

Глобальные сигналы увеличивают нагрузку на систему обновлений, так как:

  • возрастает число пересчитываемых выражений;
  • снижается эффективность кеширования промежуточных результатов;
  • увеличивается частота перерисовки сцены.

Для компенсации этого эффекта Vega использует:

  • ленивые вычисления выражений;
  • дедупликацию обновлений;
  • пакетную обработку изменений (batching);
  • оптимизацию графа зависимостей.

Связь push и реактивной модели данных

Сигнальная система Vega тесно связана с реактивной моделью данных, где изменения состояния автоматически отражаются в представлении.

Поле push в этом контексте выполняет роль механизма распространения событий в реактивной цепочке:

  • сигнал изменяется;
  • push определяет стратегию уведомления;
  • зависимые узлы обновляются;
  • визуализация пересчитывается.

Таким образом, push является частью инфраструктуры реактивного обновления, а не просто параметром сигнала.


Композиция глобальных сигналов

Глобальные сигналы могут взаимодействовать между собой, образуя сложные композиции:

  • объединение нескольких глобальных сигналов в единый управляющий поток;
  • приоритизация обновлений при конфликтующих значениях;
  • каскадная передача изменений между уровнями абстракции.

В таких системах важную роль играет детерминированность порядка обновлений, поскольку от него зависит согласованность сцены.


Особенности реализации в Vega runtime

В runtime Vega сигналы обрабатываются через внутренний планировщик обновлений:

  • сигнал регистрируется в графе;
  • изменение значения помещается в очередь обновлений;
  • push-стратегия определяет область распространения;
  • планировщик выполняет пересчёт зависимых узлов.

Глобальный push влияет на этап определения области инвалидирования, расширяя его до множества узлов графа.


Практическая роль в архитектуре визуализаций

Глобальные сигналы становятся фундаментом для построения:

  • интерактивных дашбордов;
  • связанных визуальных представлений (linked views);
  • систем аналитики с синхронным управлением параметрами;
  • интерфейсов с централизованным состоянием визуализации.

Их использование позволяет формировать единое состояние сцены, в котором все компоненты реагируют согласованно на изменения пользовательского ввода или данных.