---
search:
  exclude: true
---

# Svarog

В данном разделе приведены сведения о
[Svarog](https://git.picodata.io/picodata/Svarog), плагине для
СУБД Picodata.

!!! tip "Picodata Enterprise"
    Функциональность плагина доступна только в коммерческой версии Picodata.

## Общие сведения {: #intro }

Svarog — это low-code-платформа для сбора и обогащения данных из различных источников
в реальном времени и представления их в виде высокодоступных витрин. Платформа основана
на распределенной высокопроизводительной базе данных [Picodata](https://picodata.io/picodata/).

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

## Основные возможности {: #features }

### Хранение данных {: #storage }

В качестве хранилища данных используется высокопроизводительная, высокодоступная, распределенная
база данных Picodata. Это позволяет создать слой хранения данных с высокой доступностью и
возможностью горизонтального расширения. БД Picodata позволяет хранить данные как в памяти, так
и на диске, используя два разных движка хранения данных. Первый эффективен при высоких нагрузках,
второй при хранении неких архивных данных с небольшой скоростью доступа к ним.

Svarog предоставляет возможность версионированного хранения данных.(ссылка на руководство админа)
Это может быть полезно для хранения счета клиента, когда бывает необходимо узнать состояние записи на момент времени.

Помимо этого платформа предоставляет возможность версионировать схему данных при помощи Apache Avro Schema. (ссылка на руководство админа)
Это позволяет менять схему данных не нарушая совместимости с текущими потребителями данных из платформы.

### Обработка данных {: #data }

Обработку данных можно разделить на два способа:
1. Обработка данных в реальном времени. При использовании этого способа можно данные, полученные из того или иного источника
изменить "на лету", смержить их с другими данными или обогатить тем или иным образом. Для этого платформой предоставляются
как готовые компоненты, так и возможность написать свои функции обработки данных на языке lua.
1. Пакетная обработка данных. Для этого способа платформа так же предоставляет возможность создания своих функций-обработчиков
и библиотеку готовых компонентов. В дополнении к этому платформа позволяет гибко сконфигурировать периодичность таких обработок
или событие, по происшествии которого, необходимо вызвать пакетную обработку данных. Например ETL система завершила выгрузку файла
и хочет сообщить платформе через вызов restful API о том, что данные из файла необходимо потребить.

Функции-обработчики задаются в конфигурации платформы, что не приводит к деплою новой версии платформы в продуктовую среду.

### Интеграция с источниками и потребителями данных {: #integration }

Интеграцию с платформой можно условно разделить на два вида:
1. Интеграция с источниками данных. При этой интеграции платформа получает данные из "внешнего" мира.
   На данный момент существуют следующие интеграции:
  - odbc
  - Oracle Database
  - PostgreSQL
  - Kafka
  - IBM MQ
  - Debezium
  - Oracle Golden Gate
  - Hive, в том числе через потребление данных из Parquet файлов
  - Получение данных через различные rest API
  - iproto
2. Интеграция с потребителями данных. При этой интеграции платформа отдает данные во "внешний" мир.
   На данный момент существую следующий интеграции:
  - jdbc
  - pgproto - протокол PostgreSQL
  - kafka
  - restful API
  - graphQL
  - iproto

### Безопасность {: #security }

Безопастность обеспечивается за счет следующих возможностей платформы:
- Ролевая система доступа к данным и функциям платформы
- Интеграция с SSO системой предприятия
- Получение списка пользователей из ldap(Active Directory)
- Журнал аудита событий

### Низкая сложность эксплуатации {: #low_cost }

Платформа может работать как на виртуальных машинах, куда она может быть развернуто при помощи playbook ansible,
который входит в поставку платформы, так и в kubernetes. Это позволяет службам эксплуатации использовать привычные
для себя инструменты, что, в свою очередь, уменьшает затраты на сопровождение.

Платформа предоставляет:
- телеметрию в формата Prometheus;
- трассировку запросов в формате openTelementry. Есть возможность гибко задавать какие запросы будут трассироваться,
  а какие - нет;
- журналы событий в структурированном формате(json), что позволяет удобно интегрировать платформу с системой агрегации
  и визуализации журналов, такой как loki. При этом возможность получать журналы в плоском формате так же присутствует;
- автоматическое переключение на резервные компоненты при выходе основных из строя;
- репликацию данных между плечами инсталляции, расположенными в разных ЦОД;
- UI управления кластером с возможностью настройки параметров Svarog.

### Практическое применение {: #application }

Платформа применяется для решения следующих задач:
- витрина данных, в том числе в конфигурации с прозрачным кешем(throughput cache);
- шина данных предприятия;
- обработка текущего баланса клиентов;
- формирование и хранение золотой записи абонента(MDM-система);
- оперативный быстрый кеш для аналитических запросов.
