Меню

ABAP для HANA (HA400)

SAP HANA (High Performance Analytic Appliance) — это высокопроизводительная платформа для хранения и обработки данных. Кроме собственно базы данных, платформа включает в себя и другие составные части, но в контексте данной статьи это не существенно. Применение высокопроизводительной базы данных может быть весьма полезно.

SAP HANA (High Performance Analytic Appliance) — это высокопроизводительная платформа для хранения и обработки данных. Кроме собственно базы данных, платформа включает в себя и другие составные части, но в контексте данной статьи это не существенно. Применение высокопроизводительной базы данных может быть весьма полезно. База данных SAP HANA не волшебная палочка, а мощный инструмент. Как отметил еще Иван Андреевич Крылов (басня «Мартышка и очки»), чтобы от инструмента был толк, нужно уметь им пользоваться. Именно такому правильному применению посвящен семинар HA400. Программирование для SAP HANA на ABAP. Продолжительность семинара 4 дня. Семинар предназначен для ABAP-разработчиков и консультантов по разработке, может быть полезен специалистам по сопровождению и безопасности. Знание тем, затронутых в семинаре, нужно всем, кому придется серьезно программировать на ABAP на базе данных SAP HANA. Значительная часть материала семинара касается платформено-независимых возможностей и будет полезна при ABAP программировании и на других базах данных. Необходимыми предпосылками семинара являются владение материалом семинаров BC400 и BC401 и опыт программирования на языке ABAP.

Язык ABAP позволяет создавать многоплатформенные приложения. В настоящее время можно работать с девятью различными СУБД. Со времени появления языка ABAP прошло уже более трети столетия. За это время технологии вычислительной техники претерпели существенное развитие: появилась многоядерная многопроцессорная архитектура, выросла тактовая частота, подешевела память, появились сначала 32- а теперь и 64-разрядные операционные системы. Все это позволяет создать высокопроизводительные базы данных, одной из которых является SAP HANA. Очевидно, что главный способ повышение производительности приложения, работающего с высокопроизводительной базой это максимальный перенос вычислений на сторону базы данных. Ряд средств, рассмотренных в семинаре, касается именно многоплатформенных возможностей такого переноса. Многоплатформенность приложения автоматически означает, что специфические «изюминки» конкретных баз данных вовсе не используются или используются с существенными ухищрениями. Если же ограничиться одной конкретной базой (в нашем случае SAP HANA) то можно воспользоваться этими базо‑специфическими возможностями. В ряде случаев при разработках как платформенно-независимых, так специфических для SAP HANA используется инструментарий ADT (ABAB Development Tools) в среде Eclipse. Создание некоторых артефактов (CDS, AMDP, Внешних ракурсов, Прокси хранимых процедур, Транспортного контейнера HANA) возможно только в ADT.

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

CONNECTION Имя_Соединения.

 

Можно использовать дополнительное соединение и при обращении к базе данных на ее «родном» SQL внутри операторных скобках EXEC SQL … ENDEXEC, или при использовании классов ABAP DataBase Connectivity (ADBC).

При миграции на SAP HANA могут встретиться определенные затруднения. Базо‑специфические синтаксические конструкции и компоненты функциональности – будь то в операторных скобках EXEC SQL … ENDEXEC, или при использовании ADBC – могут быть непосредственно использованы только в тех СУБД, где они актуальны. Соответствующую проверку можно сделать с помощью анализатора кода (Code Inspector, транзакция SCI). В результате будут выявлены проблемные команды.

Как уже отмечалось, для эффективного использования HANA нужно, чтобы вычисления были в максимальной степени перенесены на сторону базы данных. В реальных проектах внедрения могут быть созданы тысячи и десятки тысяч программ, самостоятельно разработанных пользователем или партнерами. Переписывать все это изобилие сразу представляется весьма затруднительным, хочется выделить те разработки, которые наиболее существенно влияют на общую производительность. SQL монитор (транзакция SQLM) позволяет собрать статистику обращений к базе данных, выявить те места, которые наиболее сильно загружают базу данных, отделить «агнцев от козлищ», сохранять и администрировать снэпшоты измерений. Транзакция SWLT позволяет сопоставить результаты прямых измерений с результатами статических проверок анализатора кода и увидеть не только, какие команды оказались наиболее тяжелыми для базы данных, но и почему это случилось.

Существует несколько платформенно-независимых возможностей перенести вычисления с приложения на базу данных. Фильтрация по WHERE-условию, вычисление агрегатных функций, группировка и последующая фильтрация по HAVING-условию в базе данных обычно более экономичны, чем подведение итогов, группировка и фильтрация в приложении. С версии 7.40 появился новый синтаксис Open SQL и соответственно новый парсер. Наряду с косметическими улучшениями (запятая для разделения полей во всех фразах, явное обозначение ABAP хост-переменных с помощью символа “@”) новый синтаксис Open SQL допускает определение вычислимых полей, например так:   

SELECT price * discount AS final_price…

 

В арифметических выражениях допустимы сложение, вычитание, умножение и деление, числовые функции ABS, CEIL, FLOOR, DIV, MOD, ROUND. В строковых выражениях возможен оператор конкатенации &&, можно использовать строковые функции CONCAT, LPAD, LENGTH, LTRIM, REPLACE, RIGHT, RTRIM, SUBSTRING. Как в числовых, так и в символьных вычислимых полях можно использовать селекторные выражения CASE … END, в том числе и вложенные. В выражениях вычислимых полей доступна опция приведения типов CAST.

ABAP Open SQL включает в себя подмножество команд языка манипулирования данными (DML, Data Manipulation Language), являющегося частью стандартного SQL. Другие части стандартного SQL: язык определения данных (DDL, Data Definition Language), язык управления доступностью данных (DCL, Data Control Language) – в Open SQL не реализованы, лишь из языка управления транзакциями (TCL, Transaction Control Language) реализованы команды COMMIT WORK и ROLLBACK WORK. Возможности DDL частично реализованы в транзакции SE11, позволяющей создавать, изменять и удалять таблицы и ракурсы базы данных, но с весьма существенными ограничениями: например, недоступно создание вычислимых полей; источниками данных для ракурсов могут быть только таблицы базы данных, но не ракурсы; невозможно объединение (UNION). Новая категория объектов репозитария – Core Data Services (CDS), позволяет создавать DDL и DML описания. DDL описания позволяют определить ракурсы (View), используя поля таблиц и ракурсов и вычислимые поля. Между таблицами и ракурсами могут быть определены соединения (JOIN), объединения (UNION), ассоциации; ракурсы могут иметь входные параметры, которые можно использовать как для фильтрации, так и в выражениях для вычислимых полей; доступны селекторные выражения CASE … END.

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

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

Войти

Обсуждения Количество комментариев1

Комментарий от  

Илья Ковальцун

  |  26 августа 2021, 11:02

Большое спасибо, очень познавательная статья!