Меню

Прикладная библиотека бизнес-функций BFL 81

|

SAP HANA In-Memory Computing Engine предлагает различные алгоритмы вычислений в оперативной памяти. Эту возможность обеспечивают несколько прикладных библиотек для разработчиков. Библиотеки динамически связаны с ядром базы данных SAP HANA. Вы можете значительно улучшить производительность, выполняя сложные вычисления в базе данных, а не на уровне сервера приложений. Библиотека прикладных функций называется AFL (Application Function Libraries).

Прикладные функции, как и процедуры базы данных, написаны на С++ и вызываются извне для выполнения сложных операций с данными. Функции сгруппированы в прикладные библиотеки AFL, такие как:

  • BFL — Business Function Library
  • PAL — Predictive Analysis Library

BFL (Business Function Library — Библиотека Бизнес-Функций) является одной из при- кладных библиотек, которая содержит встроенные функции для управления параметрами в финансовой сфере. Она предлагает вам гибкость и эффективность для разработки приложений на основе HANA с невероятной производительностью бизнес-функций.

Используя эту библиотеку можно добиться:

  • Значительного улучшения производительности для SAP-приложений
    • Используя новое оборудование (например, многоядерный процессор со встроенным векторным движком)
    • Массово распараллеливая процессы в памяти
  • Упрощения модели прикладного программирования
    • Используя расширенный SQL (SQLScript)
    • Используя широкие функциональные возможности в Calculation Engine

Для работы с прикладными библиотеками необходима:

  • установка SAP HANA SPS06;
  • установка AFL (Application Function Library), которая включает BFL.

AFL поставляет BFL плюс PAL. В настоящее время все AFL поставляются в одном архиве (то есть один SAR-файл с именем AFL<version_string> .SAR). Архив AFL не является частью приложения HANA и должен быть установлен отдельно администратором. Чтобы иметь возможность использовать алгоритмы BFL, необходимо установить AFL, которая соответствует номеру revision поставки HANA.

Revision AFL обязательно должна соответствовать revision SAP HANA. Каждый выпуск AFL имеет версию в виде: <revision_number>.<patch_level>. Например, AFL 40.01 относится к номеру revision 40 и патчу 01 и должна быть установлена с SAP HANA только revision 40.

Роль для работы с библиотекой BFL называется AFL__SYS_AFL_AFLBFL_EXECUTE. Обратите внимание: между AFL и SYS два символа подчеркивания.

После установки AFL появится новая схема в базе данных под названием _SYS_AFL. В этой схеме вы найдете все процедуры, которые реализуют различные финансовые алгоритмы, являющиеся частью BFL (см. Рис.1). Полный список функций BFL представлен в руководстве SAP HANA BFL Guide.

Рис.1

Чтобы просмотреть, какие BFL-функции можно использовать при создании BFL-процедуры, необходимо выполнить запрос:

SELECT * FROM “SYS“.“AFL_FUNCTIONS“ WHERE AREA_NAME = ‘AFLBFL’;

На Рис.2 представлен результат запроса. В столбце “FUNCTION_NAME” со- держатся имена встроенных BFL-функций, а столбцы “INPUT_PARAMETER_COUNT” и “RETURN_VALUE_COUNT” отображают количество входных параметров функции и количество возвращаемых значений соответственно.

Рис.2

Любой пользователь с привилегией EXECUTE для процедуры SYSTEM.AFL_WRAPPER_ GENERATOR может создать собственную процедуру для конкретной BFL-функции. Синтаксис создания процедуры выглядит следующим образом:

CALL SYSTEM.AFL_WRAPPER_GENERATOR (‘<procedure_name>’, ‘<area_
name>’,’<function_name>’, <signature_table>);

где

  • <procedure_name> — имя процедуры BFL. Оно может быть любым и задается пользо вателем;
  • <area_name> — всегда устанавливается AFLBFL;
  • <function_name> — имя встроенной BFL–функции;
  • <signature_table> — таблица с параметрами, определенная пользователем. В таблице содержатся записи для описания типов входных таблиц и тип результирующей таблицы.

Таблица с параметрами имеет аналогичный вид, как на Рис.3.

Рис.3

Примечание.

1. Пользователь, создающий BFL-процедуру, должен предоставить привилегию SELECT на signature_table пользователю SYSTEM, который определяет SYSTEM.afl_wrepper_ generator. Например, если имя пользователя USER1, то выполните следующий SQL-код:

GRANT SELECT ON user1.<signature_table> to SYSTEM

2. Записи в signature_table должны следовать приведенному ниже порядку:

  • Типы входных таблиц
  • Тип выходной таблицы

3. Таблица signature_table должна быть создана перед созданием BFL-процедуры. Имена типов таблицы определяются пользователем.

4. Вы должны добавлять имя схемы <schema_name>перед именем типа таблицы в signature_table.

5. Имена процедур должны быть уникальными.

6. Если вы хотите удалить существующую процедуру, а затем сгенерировать ее снова, то вам нужно вызвать процедуру SYSTEM.afl_wrapper_eraser для удаления процедуры.

Например: CALL SYSTEM.

AFL_WRAPPER_ERASER (‘<procedure_name>’);

Если вы решите создать свою собственную процедуру, а не воспользоваться стандартной, то потребуется создавать свои типы таблиц для каждой входной и выходной таблицы.

Например, для функции DELAY имеется три входных параметра и одна выходная та- блица, поэтому необходимо создать три типа таблиц:

SET SCHEMA MELNIK;

CREATE TYPE BFL_DELAY_PRIME_T AS TABLE (“VALUE“ DOUBLE);

CREATE TYPE BFL_DELAY_INVOICE_T AS TABLE (“INVOICE“ DOUBLE);

CREATE TYPE BFL_DELAY_PAID_T AS TABLE (“PAID1“ DOUBLE, “PAID2“ DOUBLE,

“PAID3“ DOUBLE, “PAID4“ DOUBLE);

CREATE TYPE BFL_DELAY_DELAY_T AS TABLE (“OPENING“ DOUBLE, “PAID“ DOUBLE, “CLOSING“ DOUBLE);

Затем требуется отдельно создать таблицу, в которой будут указаны все созданные типы:

CREATE column table BFL_DELAY_PDATA_TBL (“ID“ INT,“TYPENAME“ VARCHAR

(100),“DIRECTION“ VARCHAR (100));

insert into BFL_DELAY_PDATA_TBL values (1,’MELNIK.BFL_DELAY_PRIME_T’, ‘in’);

insert into BFL_DELAY_PDATA_TBL values (2,’MELNIK.BFL_DELAY_INVOICE_T’, ‘in’);

insert into BFL_DELAY_PDATA_TBL values (3,’MELNIK.BFL_DELAY_PAID_T’, ‘in’);

insert into BFL_DELAY_PDATA_TBL values (4,’MELNIK.BFL_DELAY_DELAY_T’, ‘out’);

Далее надо предоставить полномочия на эту таблицу пользователю SYSTEM:

GRANT SELECT ON MELNIK.BFL_DELAY_PDATA_TBL TO SYSTEM;

После чего можно вызвать процедуру создания BFL-процедуры:

CALL SYSTEM.afl_wrapper_generator (‘AFLBFL_DELAY_PROC’,’AFLBFL’,’DELAY’, BFL_DELAY_PDATA_TBL);

Все AFL-объекты принадлежат пользователю _SYS_AFL и находятся в схеме _SYS_AFL. Для вызова BFL-процедуры у пользователя должна быть роль AFL__SYS_AFL_AFLBFL_ EXECUTE. Пользователь может вызвать уже имеющуюся процедуру BFL из схемы _SYS_ AFL либо созданную им самим процедуру. Синтаксис вызова существующей BFL-проце- дуры выглядит следующим образом:

CALL _SYS_AFL.AFLBFL_<function_name>_PROC ({inputTab1,…}, <output_tab>) with overview;

где:

  • _SYS_AFL — имя схемы, в которой была создана функция BFL;
  • AFLBFL — имя библиотеки BFL;
  • <function_name> – имя BFL-функции;
  • {inputTab1,…} — имя входной таблицы, определенное пользователем для текущей процедуры.
  • <output_tab> — имя выходной таблицы, определенное пользователем для текущей процедуры.

Если пользователь самостоятельно

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти