Клиентские функции NGA

Непосредственное считывание

Чтобы минимизировать накладные расходы на отправку ответных сообщений из базы данных клиенту (через backend-коннектор, frontend-менеджер, менеджер данных к клиенту), функция непосредственного считывания позволяет считывать исторические данные непосредственно из базы данных, избегая накладных расходов во время пересылки сообщений. Эта функция аналогична функции непосредственного считывания менеджера архива РБД. Эффективность непосредственного считывания (по отношению к ее обычному аналогу) это зависит от нескольких параметров, например от размера ответа и местоположения клиента (является он локальным или удаленным).

ПРИМЕЧАНИЕ

Эта функция может использоваться только при backend-коннекторов в «Единой системе» (см. 1.3.1.1 «Локальный backend-коннектор, Единая система»), а не для распределенных систем с локальными базами данных (см. 1.3.1.1 Распределенная система). Кроме того, непосредственное считывание пока что не работает с резервированными системами.

Для выполнения непосредственного считывания в NGA в библиотеке расширений языка Control “CtrlNgaFrontend” предусмотрены следующие функции:

  • alertGetPeriodNGA
  • dpGetAsynchNGA
  • dpGetPeriodNGA
  • dpQueryNGA

Используя конфигурационные записи “useNGADirectRead” (bool, в секции [general], [ui] или [ctrl]) поведение стандартных функций чтения исторических данных может быть изменено, чтобы всегда использовать их аналог для «NGA». Это означает, например, когда клиент вызывает dpGetPeriod(), вместо этого для непосредственного считывания будет вызываться dpGetPeriodNGA(). Примечание: функция alertGetPeriodNGA недоступен в NGA V1.0. Также установка конфигурационной записи в настоящее время доступна только в секции [general] файла config, для других секция она пока недоступна.

Используя функцию

bool setNGADirectRead(bool newState);

текущая настройка параметра queryNGAdirect может быть изменена во время выполнения непосредственно из сценария. Назначение идентично функции setQueryRDBdirect(), предназначенной для менеджера архива РБД.

С помощью функции

bool useNGADirectRead();

можно запросить текущее состояние параметра queryNGAdirect.

Разделение сообщений

В «КАСКАД Цифра» доступны специальные команды чтения, позволяющие использовать функцию разделения сообщений (т.е. не отправлять ответ для функций dpGetPeriod, dpAlertGetPeriod или dpQuery в одном сообщении, а разбивать его на сообщения поменьше и одинакового размера). Размер одного частичного сообщения можно определить на панели конфигурации backend-коннектора NGA «Общие».

Эти функции идентичны уже существующим функциям для HDB (историческая БД). Более подробное объяснение можно найти в документации по этим функциям. Примечание: функция alertGetPeriodSplit недоступна в NGA V1.0.

dpGetPeriodSplit(int &reqId, int &progress, time t1, time 
 t2, int count, string dp1, <dyn_type1> &xa1, dyn_time &ta1 [,string dp2, 
 <dyn_type2> &xa2, dyn_time &ta2]);
dpQuerySplit(int &reqId, int &progress, string query, dyn_dyn_anytype &tab);
alertGetPeriod-Split(int &reqId, int &progress, time t1, time t2, dyn_time ×, dyn_int &counts, string alert1, dyn_string &dpa1, <dyn_type1> 
 &vala1 [, string alert2, dyn_string &dpa2, <dyn_type2> &vala2 
 ...]);
dpCancelSplitRequest(int reqId); 

ПРИМЕЧАНИЕ

Доступны специальные версии этих функций для непосредственного считывания из NGA (см. раздел выше):

dpGetPeriodSplitNGA(int &reqId, int &progress, time t1, time t2, int count, string dp1, <dyn_type1> &xa1, dyn_time &ta1 [,string dp2, 
 <dyn_type2> &xa2, dyn_time &ta2]);
dpQuerySplitNGA(int &reqId, int &progress, string query, dyn_dyn_anytype &tab);
alertGetPeriodSplit-NGA(int &reqId, int &progress, time t1, time t2, dyn_time ×, dyn_int &counts, string alert1, dyn_string &dpa1, <dyn_type1> 
 &vala1 [, string alert2, dyn_string &dpa2, <dyn_type2> &vala2 
 ...]);
dpCancelSplitRequestNGA(int reqId); 

Функция useNGA() может быть использована для определения того, используется ли NextGen Archiver в текущем проекте:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *