Дополнительные действия
AZykov (обсуждение | вклад) Нет описания правки |
AZykov (обсуждение | вклад) Нет описания правки |
||
Строка 57: | Строка 57: | ||
|Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса) | |Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса) | ||
|} | |} | ||
[[Файл:Раздел Data.png|мини|Блок Data]] | |||
=== Data === | === Data === | ||
Строка 73: | Строка 74: | ||
* <code>runtime</code> - хранение в распределенной объектной БД (mnesia on disc+ram). Сохраняет данные на диск и под нагрузкой значительно загружает дисковую подсистему на запись. Производительность операций доступа по ключу и операций записи ~10000 в секунду в расчете на один свободный поток обработчик. | * <code>runtime</code> - хранение в распределенной объектной БД (mnesia on disc+ram). Сохраняет данные на диск и под нагрузкой значительно загружает дисковую подсистему на запись. Производительность операций доступа по ключу и операций записи ~10000 в секунду в расчете на один свободный поток обработчик. | ||
* <code>category</code> - хранение в реляционной БД postgresql без партицирования. Скорость до 10000 операций в секунду в режиме параллельной обработки, ~3000 операций в секунду в синхронном режиме. | * <code>category</code> - хранение в реляционной БД postgresql без партицирования. Скорость до 10000 операций в секунду в режиме параллельной обработки, ~3000 операций в секунду в синхронном режиме. | ||
* <code>history</code> - хранение в реляционной БД postgresql с партицированием по дате. Требует указания размерности партишена (год, месяц, день), и поля со значением для патицирования. | * <code>history</code> - хранение в реляционной БД postgresql с партицированием по дате. Требует указания размерности партишена (год, месяц, день), и поля со значением для патицирования. | ||
* <code>transactionlog</code> - отправка данных в кластер Kafka. При обнаружении storage с type=<code>clickhouse</code> с тем же значением instance автоматически генерирует таблицу-приемщик из Kafka в ClickHouse (ReplicatedReplacingMergeTree), и делает доступными операции чтения. | |||
|- | |- | ||
|storageInstance | |storageInstance | ||
| | | | ||
| | |Используется только для storage_mode = <code>category</code>, <code>history</code>, <code>transactionlog</code> | ||
Данным параметром задается ключ инстанса для хранения данных. | |||
При отсутствии настроенного хранилища с кодом 'auto' класс автоматически привязывается к модельной базе ('era_model_DOMAIN'), созданной через основное подключение к БД Postgres домена). | |||
|- | |- | ||
|section | |section | ||
| | | | ||
| | |Имя секции для выбора экземпляра DMS | ||
|- | |- | ||
|integrityMode | |integrityMode | ||
| | |<code>sync_fast_notify</code> | ||
| | |Режим обеспечения целостности (приоритетность применения изменений в хранилище и рассылки уведомлений) | ||
* <code>async</code> - N(=10) очередей чтения с распределением по хешам идентификаторов, очередь чтения не используется. | |||
* <code>sync</code> - одна очередь записи, одна очередь чтения. | |||
* <code>sync_fast_read</code> - N(=10) очередей чтения с распределением по хешам идентификаторов, M(=10) очередей чтения. Отправка уведомления после сохранения в БД. Читатели ждут завершения более ранних операций записи. | |||
* <code>sync_fast_notify</code> - N(=10) очередей чтения с распределением по хешам идентификаторов, M(=10) очередей чтения. Отправка уведомления об изменении перед сохранением в БД. Читатели не ждут завершения более ранних операций записи. | |||
|- | |- | ||
|partitionPropertyName | |partitionPropertyName | ||
| | | | ||
| | |Используется только для storage_mode = <code>history</code>, <code>transactionlog</code> | ||
Является опциональным для режима history, и обязательным для transactionlog | |||
В данном параметре определяется имя поля (с типом datetime), которое будет использоваться для построения партиции в Postgresql / префикса ключа в Kafka+Clickhouse | |||
|- | |- | ||
|maxLimit | |maxLimit | ||
| | | | ||
| | |Максимальное количество строк при чтении одной страницы. Используется в API при пагинации данных | ||
|- | |- | ||
|realtime | |realtime | ||
| | | | ||
| | |Обеспечение обновлений данных в реальном времени (путем подписки на изменения). Данный параметр в том чилсе, влияет на работу в интерфейсе (когда два пользователя пытаются изменять один и тот же объект этого класса). | ||
|- | |- | ||
|serverCacheMode | |serverCacheMode | ||
| | |none | ||
| | |Режим кэширования данных на сервере (слой платформы, роль DMS) | ||
* <code>full</code> - кэшируется весь объем данных. Применимо только для type=<code>category</code>. Чтение производится из кэша - поиск по идентификатору в кэше быстрый, но выборка при большом объеме может быть медленнее чем в оригинальном движке БД. Не применяется для storage_mode = 'transactionlog' | |||
* <code>temp</code> - кэшируется последнее используемое в ограниченном объеме. Удаляется автоматически при переполнении кэша. Поиск по идентификатору в кэше быстрый, выборка всегда производится в оригинальном хранилище БД. | |||
* <code>none</code> - кэш не используется. | |||
|- | |- | ||
|clientCacheMode | |clientCacheMode | ||
| | |temp | ||
| | |Режим кэширования данных на клиенте (в приложениях и микросервисах продуктового слоя). | ||
Возможные значения аналогичны serverCacheMode | |||
|- | |- | ||
|classDataSource | |classDataSource | ||
| | |model | ||
| | |Источник данных класса | ||
Возможные значения: | |||
* model - данные из хранилища | |||
* view - данные из представления (только в режиме category и history) | |||
* root - данные из сервиса | |||
|- | |- | ||
|restURL | |restURL | ||
| | | | ||
| | |URL сервиса для получения данных. Используется только при dataSource = root | ||
|- | |- | ||
|dataFactoryServiceName | |dataFactoryServiceName | ||
| | | | ||
| | |Имя сервиса, который используется в качестве фабрики данных (вместо классического REST) | ||
|- | |- | ||
|dataFactoryMethodName | |dataFactoryMethodName | ||
| | | | ||
| | |Имя метода сервиса, который используется в качестве фабрики данных (вместо классического REST) | ||
|- | |- | ||
|tuningOptions | |tuningOptions | ||
| | | | ||
| | |Дополнительные опции (opts) для design/classes | ||
Полный список опций доступен в [https://vendor.era-platform.ru/docs/era/latest/entities/design/class.html документации к классу] | |||
|} | |} | ||
[[Категория:Курс "Разработка приложений"]] | [[Категория:Курс "Разработка приложений"]] |
Версия от 12:52, 17 января 2025
Предыдущая статья курса: Быстрый старт
Общая информация
Классы являются основой всех систем и приложений, разрабатываемых на платформе Эра. Набор классов в пакетее реализует структуру данных, с которой взаимодействуют остальные элементы пакета. Каждый класс определяется набором параметров, полей и действий. Параметры класса определяют его наименование, поведение, способ хранения данных, структуру наследования и т.д. Обзор параметров класса будет произведен ниже в данной статье.
Набор полей определяет структуру данных класса, а также формирует связь объектов этого класса с другими классами (в рамках всех пакетов системы).
Набор действий может определять некоторые операции, которые могут производиться над объектами данного класса. С помощью действий может реализовываться часть логики работы с классом. Также для реализации логики работы с данными можно использовать обработчики (handlers) и сервисы (services).
Для каждого класса, после активации пакета создается хранилище, соответствующее настройкам класса.
Хранилище может размещаться в оперативной памяти, в распределенной объектной БД, в реляционной БД Postgres (с партициями для исторических данных и без), в брокере Kafka, а также сохранять данные в аналитической колоночной БД Clickhouse.
Параметры класса
У класса достаточно большой набор настраиваемых параметров. Для удобства, рассмотрим их в порядке группировки в окне редактирования.
Name and Location
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
package | [текущий выбранный пакет] | Определяет, к какому пакету будет относиться данный класс |
folderName | Определяет имя папки для группировки классов | |
name | Системное наименование класса в единственном числе (используется в API) | |
multiName | Системное наименование класса во множественном числе числе (используется в API) | |
fullName | [package]/[folderName]/[name] | Формируется автоматически, используется для доступа к данным через API |
fullMultiName | [package]/[folderName]/[multiName] | Формируется автоматически, используется для доступа к данным через API |
caption | Заголовок класса, используется для отображения данных пользователю (напр., при отображении карточки редактирования) | |
multiCaption | Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса) |
Data
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
storageMode | category | Определяет тип хранилища, создаваемого для класса
ram/runtime/category/history
|
storageInstance | Используется только для storage_mode = category , history , transactionlog
Данным параметром задается ключ инстанса для хранения данных. При отсутствии настроенного хранилища с кодом 'auto' класс автоматически привязывается к модельной базе ('era_model_DOMAIN'), созданной через основное подключение к БД Postgres домена). | |
section | Имя секции для выбора экземпляра DMS | |
integrityMode | sync_fast_notify
|
Режим обеспечения целостности (приоритетность применения изменений в хранилище и рассылки уведомлений)
|
partitionPropertyName | Используется только для storage_mode = history , transactionlog
Является опциональным для режима history, и обязательным для transactionlog В данном параметре определяется имя поля (с типом datetime), которое будет использоваться для построения партиции в Postgresql / префикса ключа в Kafka+Clickhouse | |
maxLimit | Максимальное количество строк при чтении одной страницы. Используется в API при пагинации данных | |
realtime | Обеспечение обновлений данных в реальном времени (путем подписки на изменения). Данный параметр в том чилсе, влияет на работу в интерфейсе (когда два пользователя пытаются изменять один и тот же объект этого класса). | |
serverCacheMode | none | Режим кэширования данных на сервере (слой платформы, роль DMS)
|
clientCacheMode | temp | Режим кэширования данных на клиенте (в приложениях и микросервисах продуктового слоя).
Возможные значения аналогичны serverCacheMode |
classDataSource | model | Источник данных класса
Возможные значения:
|
restURL | URL сервиса для получения данных. Используется только при dataSource = root | |
dataFactoryServiceName | Имя сервиса, который используется в качестве фабрики данных (вместо классического REST) | |
dataFactoryMethodName | Имя метода сервиса, который используется в качестве фабрики данных (вместо классического REST) | |
tuningOptions | Дополнительные опции (opts) для design/classes
Полный список опций доступен в документации к классу |