PhiFlow

Движок инкрементальных вычислений для реального времени на иерархических данных


Что такое PhiFlow?

PhiFlow — это промышленная .NET библиотека, созданная для задач, где небольшие изменения во входных данных должны мгновенно распространяться через многослойные вычислительные конвейеры с сохранением возможности реального времени отвечать на аналитические запросы. Будучи встраиваемым (in-process) движком, PhiFlow обеспечивает детерминированные инкрементальные вычисления с точным индексированием — никаких приближений, вероятностных структур данных или внешних зависимостей.

Проблема: Традиционные подходы пересчитывают всю иерархию при каждом изменении (O(Слои × Ширина)). Это становится неприемлемо дорого с ростом данных.

Решение PhiFlow: Отслеживание точного «конуса влияния» каждого обновления через кэш-эффективные интервалы, пересчёт только затронутых узлов и поддержка инкрементальных индексов для молниеносных запросов.

csharp
// Моделируйте ваш конвейер как слои
var flow = new PhiFlowRuntime(width: 5000, layers: 60, domainSize: 1024);

// Подключайте индексы для запросов в реальном времени
flow.AttachIndex(queryLayer, new FenwickCountIndex(domainSize));
flow.AttachIndex(queryLayer, new HistogramTopKIndex(domainSize, width));

// Подавайте обновления - пересчитываются только затронутые узлы
flow.ApplyInputUpdates(updates, kWork: 50);

// Запросы выполняются по живым индексам
long topKSum = flow.TopKSum(queryLayer, k: 50);
long countGt = flow.CountGreater(queryLayer, threshold: 500);


Базовая технология и архитектура

Встраиваемый подход (Embedded Philosophy)

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

Области применения

  • Системы потоковой обработки, требующие обновления агрегатов за субмиллисекунды

  • Игровые движки и симуляции со сложными каскадными механиками

  • Платформы финансового риска, нуждающиеся в пересчёте экспозиции в реальном времени

  • Наблюдаемость и мониторинг с иерархическими метриками

  • Промышленный интернет вещей, обрабатывающий потоки данных с сенсоров


Ключевые возможности

1. Движок инкрементальных вычислений

Базовый алгоритм: Отслеживание конуса влияния через интервалы

  • Интеллектуальное распространение: При изменении входных данных PhiFlow вычисляет минимальные затронутые интервалы для каждого слоя, используя циклическую интервальную арифметику

  • Кэш-эффективность: Интервалы обеспечивают последовательный доступ к памяти при пересчёте

  • Пакетные обновления: Обработка нескольких дельт одновременно со слиянием интервалов

csharp
// Одиночное или пакетное обновление - одинаково эффективно
flow.ApplyInputUpdates(new[] 
{
    new InputUpdate(index: 10, value: 512),
    new InputUpdate(index: 123, value: 7),
    new InputUpdate(index: 2048, value: 999)
}, kWork: 50);

2. Точные индексы запросов (без аппроксимаций)

PhiFlow работает с ограниченным дискретным доменом значений (0..DomainSize-1), что позволяет использовать точные структуры данных:

Тип индекса Поддерживаемые запросы Стоимость обновления
Дерево Фенвика CountGreater, RangeCount O(log DomainSize)
Гистограмма TopKSum O(1) на обновление, O(DomainSize) на TopK
Суммарный индекс Sum, Avg O(1)

Все индексы обновляются инкрементально во время ApplyInputUpdates — никакого перестроения с нуля.

csharp
// Подключаем индексы один раз при старте
rt.AttachIndex(queryLayer, new FenwickCountIndex(domainSize));
rt.AttachIndex(queryLayer, new SumIndex(width));
rt.AttachIndex(queryLayer, new HistogramTopKIndex(domainSize, width));

// Позже: запросы автоматически используют индексы
long count = rt.CountGreater(queryLayer, 500);  // O(log DomainSize)
long topK = rt.TopKSum(queryLayer, 50);        // O(DomainSize) или O(k log n) с оптимизацией
long sum = rt.Sum(queryLayer);                  // O(1)

3. Два режима обновлений

SetValue (Production/Бизнес-логика)

  • Прямое присваивание: new InputUpdate(index: 10, value: 512)

  • Предсказуемо, удобно для бизнес-логики

  • Рекомендуется для большинства production сценариев

Mutation (Симуляции/Тестирование)

  • Детерминированное преобразование: Phi.MutateInputInDomain(oldValue, domainSize)

  • Полезно для Монте-Карло, игровой механики, нагрузочного тестирования

  • Воспроизводимо от запуска к запуску

4. Движок запросов

Тип запроса Описание Индексная поддержка
CountGreater(threshold) Количество элементов > t Fenwick
RangeCount(lo, hi) Количество элементов в [lo, hi) Fenwick
Sum() Сумма всех элементов Бегущая сумма
Avg() Среднее арифметическое Бегущая сумма
TopKSum(k) Сумма k наибольших значений Гистограмма

Все запросы возвращают точные результаты — никаких вероятностных структур данных.


Характеристики производительности

Бенчмарки пропускной способности (Intel i5-11400F, .NET 8)

Сценарий Базовый (Полный пересчёт) PhiFlow (Инкремент + Индексы) Ускорение
DeltaCount=1, KWork=50 10,706 ms 195 ms 55× быстрее
DeltaCount=4, KWork=50 10,799 ms 748 ms 14× быстрее
DeltaCount=1, KWork=10 1,834 ms 35 ms 52× быстрее
DeltaCount=4, KWork=10 1,812 ms 129 ms 14× быстрее
TopK запросы (K=50) 1,743 ms 34 ms 51× быстрее

Особенности памяти

  • Zero-Allocation на горячих путях: Ядро распространения обновлений избегает аллокаций в куче

  • Пул интервалов: Внутренние наборы интервалов переиспользуют память между шагами

  • Предсказуемое GC давление: Подходит для 24/7 сервисов со строгими требованиями к задержкам

Масштабируемость

  • Линейное масштабирование: Производительность линейно зависит от размера дельты и KWork

  • Постоянный фактор: Накладные расходы не зависят от общего размера графа при малых дельтах

  • Кэш-эффективность: Интервальный доступ максимизирует использование кэша CPU


Технические спецификации

Целевой фреймворк

  • .NET 8.0+ (оптимизирован под последние возможности рантайма)

  • Платформы: Windows, Linux, macOS

  • Архитектуры: x64, ARM64

Требования к интеграции

  • Нет внешних зависимостей: Самостоятельное развёртывание

  • Не требует БД: Чисто in-memory вычисления

  • Нет сетевых вызовов: Полностью локальное выполнение

Опыт разработчика

  • Полный IntelliSense: Исчерпывающая XML документация

  • Source Link: Прямая отладка исходного кода библиотеки

  • Набор бенчмарков: Воспроизводимые тесты производительности


Сценарии использования (с конкретными примерами)

1. Финансовые технологии (приоритетный сегмент)

Управление рисками (VaR/экспозиция)

text
Слой 0: Цены инструментов, ставки, волатильности
Слой 1: Риск-метрики на уровне инструментов (дельта/гамма)
Слой 2: Агрегация по секторам
Слой 3: Агрегация по портфелям
Слой 4: Общебанковские лимиты риска

При поступлении рыночных тиков обновляются только затронутые ветки. CountGreater запросы питают алерты реального времени.

Алгоритмическая торговля

text
тик → свечи → признаки → сигнал → торговое решение

TopK запросы мгновенно выявляют наиболее активные инструменты.

Антифрод

text
транзакция → пользователь → счёт → кластер → флаг риска

RangeCount проверяет превышение порогов в реальном времени.

2. Игровая индустрия и симуляции

Экономические симуляторы (4X)

text
налог → доход провинции → счастье → продуктивность → мощь армии

«Что если изменить этот налог?» становится мгновенным пересчётом с быстрыми запросами для UI.

Баланс в MMO

text
действие игрока → статистика класса → глобальный баланс → предложения по тюнингу

TopK мгновенно показывает самые несбалансированные регионы/классы.

3. Промышленный интернет вещей и телеметрия

Предиктивное обслуживание

text
сенсор → станок → линия → цех → регион

Выброс одного сенсора обновляет только релевантные агрегаты.

Умные сети

text
потребитель → трансформатор → район → региональная нагрузка

CountGreater генерирует алерты при превышении порогов.

4. AdTech и маркетинг

Торги в реальном времени

text
показ → пользователь → сегмент → кампания → бюджет

Действия пользователя распространяются; пороговые запросы управляют темпом кампании.

Атрибуция

text
клик → визит → конверсия → воронка → ROI

Дашборды в реальном времени обновляются с каждой конверсией.

5. Наблюдаемость и DevOps

SLA мониторинг

text
запрос → инстанс → сервис → граф зависимостей → общий SLA

Всплеск задержки мгновенно обновляет затронутые агрегаты.

Метрики инфраструктуры

text
процесс → под → нода → кластер → регион

CountGreater эффективно управляет порогами алертов.

6. Научные вычисления

Сеточные методы

text
граничные условия → локальные ячейки → региональные агрегаты

Интервальное распространение естественно сочетается с локализованным влиянием.

Моделирование эпидемий

text
сущность → район → регион → страна → мир

Живой what-if анализ с мгновенными агрегатами.


Сравнение с конкурентами

Позиционирование

PhiFlow занимает уникальную нишу между:

Категория Примеры Преимущество PhiFlow
Потоковые процессоры Flink, Kafka Streams Лёгкий, in-process, оптимизирован для иерархического пересчёта
OLAP базы данных ClickHouse, Druid Обновления на каждое событие, а не батчами
In-Memory кэши Redis + Lua Встроенные инкрементальные индексы, гарантированная точность
Самописный код Триггеры с нуля Проверенное ядро + индексы, ускорение разработки в 50-100 раз

Конкурентные преимущества

Аспект Традиционный подход PhiFlow
Сложность обновления O(Слои × Ширина) O( Δ × Слои × KWork)
Задержка запросов Полное сканирование O(Ширина) Индексировано: O(log Domain) или O(1)
Точность Часто аппроксимации 100% точность (дискретный домен)
Время выхода на рынок 6-12 месяцев разработки 1 неделя интеграции
Стоимость владения $200k+/год (команда) $15k-$75k/год

Лицензирование и коммерческие предложения

Ознакомительное использование

Бесплатно для разработки: Неограниченное использование в непродакшн средах
Полный доступ к функциям: Никаких искусственных ограничений при оценке
Без ограничений по времени: Оценивайте в своём темпе

Коммерческие тарифы

Тариф Цена Включено Для кого
Startup 500$/мес 10k узлов, все запросы, email поддержка MVP, растущие проекты
Business 2,000$/мес 100k узлов, приоритетная поддержка, SLA 99.9% Средний бизнес, продакшн
Enterprise от 7,000$/мес Без лимитов, on-prem, 24/7 поддержка, обучение Крупные институции

OEM / Встраиваемое лицензирование

Для производителей ПО, встраивающих PhiFlow в свои продукты:

  • OEM Starter: $50,000 единоразово + опции роялти

  • OEM Enterprise: Индивидуальные условия для крупных вендоров

Enterprise возможности

  • On-Premise развёртывание: Поддержка изолированных сред

  • Индивидуальные контракты: Адаптированные SLA и compliance пакеты

  • Обучение команд: Архитектурные воркшопы (очно или удалённо)

  • Приоритетная поддержка: Прямая связь с командой разработки


Быстрый старт

Установка

bash
dotnet add package PhiFlow --version 0.1.1

Полный пример

csharp
using PhiFlow;

// Сконфигурируйте ваш конвейер
var width = 5000;
var layers = 60;
var domainSize = 1024;
var queryLayer = layers - 1; // Последний слой

var rt = new PhiFlowRuntime(width, layers, domainSize);
rt.Reserve(maxDeltaCount: 16); // Предварительное выделение буферов

// Подключите индексы для быстрых запросов
rt.AttachIndex(queryLayer, new FenwickCountIndex(domainSize));
rt.AttachIndex(queryLayer, new SumIndex(width));
rt.AttachIndex(queryLayer, new HistogramTopKIndex(domainSize, width));

// Инициализируйте входной слой
var input = new int[width];
var rnd = new Random(42);
for (int i = 0; i < width; i++)
    input[i] = rnd.Next(domainSize);

rt.SetInput(input);
rt.BuildAll(kWork: 50); // Полное построение один раз

// Обработайте обновления
var updates = new[]
{
    new InputUpdate(index: 100, value: 512),
    new InputUpdate(index: 200, value: 256),
    new InputUpdate(index: 300, value: 128)
};

rt.ApplyInputUpdates(updates, kWork: 50);

// Получите результаты запросов - точные и мгновенные
long count = rt.CountGreater(queryLayer, threshold: 400);
long topK = rt.TopKSum(queryLayer, k: 50);
long sum = rt.Sum(queryLayer);
long avg = rt.Avg(queryLayer);
long range = rt.RangeCount(queryLayer, lo: 100, hi: 500);

Console.WriteLine($"Количество >400: {count}");
Console.WriteLine($"Сумма Top-50: {topK}");
Console.WriteLine($"Сумма: {sum}, Среднее: {avg}");
Console.WriteLine($"Элементов в [100,500): {range}");


Почему профессионалы выбирают PhiFlow

  1. Для архитекторов: Проверенное ядро заменяет 12 месяцев кастомной разработки

  2. Для тимлидов: Неделя интеграции вместо найма 3-5 разработчиков на полгода

  3. Для бизнеса: Решения на основе данных в реальном времени вместо отчётов с минутной задержкой

  4. Для разработчиков: Чистый API, отличная документация, предсказуемая производительность

Главный итог: PhiFlow превращает пересчёт, занимавший минуты, в инкрементальные обновления за миллисекунды — открывая путь новому классу приложений реального времени.


Ресурсы и экосистема

Официальные каналы

Поддержка

  • Telegram: @vipvodu (прямая связь с разработчиками)

  • Документация: Полный API reference с примерами использования

  • Бенчмарки: Воспроизводимый набор тестов производительности

Коммерческие вопросы

Для запросов цен, enterprise соглашений или OEM лицензирования:

  • Telegram: @vipvodu


PhiFlow — Инкрементальные вычисления, аналитика реального времени, точные результаты.