Разделение на домены
Внутренняя структура платформы подразумевает разделение на домены, никакие данные одного домена не могут быть получены из другого домена. Данные ограничения реализованы на низком платформенном уровне.
Структура хранения данных платформы
Оперативные данные сохраняются в базе данных Mnesia.
Данные настроек и категорий хранятся в Postgres.
Исторические данные и журналы транзакций сохраняются в Postgres в партиционированных таблицах по умолчанию, либо опционально в Kafka, или в комбинации Kafka и Clickhouse.
Mnesia представляет собой внутреннюю распределенную базу данных, к которой нет доступа извне.
Postgres организован по доменам: для каждого домена создается отдельная база данных в одном инстансе.
Часть данных, не относящихся к настройкам нижнего уровня платформы, для каждого домена может быть вынесена в отдельную базу данных в том же инстансе, с возможностью объединения доменов в одну базу данных опционально.
Kafka: для каждой коллекции создается отдельный топик, название которого включает имя домена.
Clickhouse: для каждого домена создается отдельная база данных в кластере, а для каждой коллекции — отдельная таблица.
Данные продуктового слоя платформы могут располагаться в других инстансах. Для этих данных применимо следующее: разные домены могут функционировать в различных инстансах Postgres, а также в разных кластерах Kafka и Clickhouse. Настройка выполняется в рамках конкретного домена и относится к нижнему (коммуникационному) уровню платформы.
Каждая коллекция модели данных представлена отдельной таблицей.
Все поля объектов соответствуют полям таблиц.
Список свойств всех коллекций доступен в справочной документации.
Некоторые конфиденциальные данные, такие как пароли, хранятся в хэшированном виде, причем тип хэша для паролей настраивается в конфигурации.
Другая часть конфиденциальных данных сохраняется с хэшированной контрольной суммой, исключая возможность загрузки системы с подмененными данными в базе данных.