Черновики

Глава 0: Архитектура системы

В Refinery используется надежная, распределенная архитектура для обеспечения стабильности и целостности данных в экосистеме Vibe. Эта архитектура разделяет хранение неизменяемых данных и управление длительными, сложными процессами.

Основные компоненты

PostgreSQL для целостности транзакций

Основной и неизменяемый источник данных в системе — это реестр Vibe, хранящийся в базе данных PostgreSQL. Все операции с Vibe (создание и изменение) выполняются как единые, неделимые транзакции. Это обеспечивает согласованность и безопасность данных.

Такая целостность транзакций гарантирует, что структура Vibe и их связи остаются правильными, даже когда с системой работает много пользователей одновременно. Ключевые операции, вроде базовой команды refine, построены на этой надежной основе. База данных обеспечивает надежное хранение и удобный поиск данных. Это позволяет вести реестр Vibe как постоянный архив всех взаимодействий, который можно проверить в любой момент.

Temporal для надежных процессов

Для длительных операций, сохраняющих свое состояние, — в частности, для выполнения Process Vibes — Refinery использует Temporal. Temporal управляет временными данными и сложной логикой процесса, обеспечивая его надежную работу даже в случае сбоев.

Когда выполняется Process Vibe, запускается процесс в Temporal для выполнения заданных шагов. Temporal отвечает за надежное выполнение процесса, а его конечный результат — Vibe с решением (solution) — сохраняется в базу данных PostgreSQL с помощью команды refine.

Такое разделение задач очень важно:

  • PostgreSQL — это система, где хранится «что»: неизменяемые факты и решения (solutions), представленные в виде Vibe.
  • Temporal — это система, где хранится «как»: надежное выполнение длительного процесса и его текущее состояние.

Такой подход с двумя системами позволяет Refinery выполнять сложные и длительные задачи, не нарушая целостность основного реестра Vibe. Он сочетает лучшие стороны управления данными с помощью транзакций и надежного управления процессами.