Оригинал статьи:

‘ABAP for SAP HANA’ Points to remember

Эта страница представляет собой заметку новичка в SAP HANA, который пытается понять и запомнить новые термины.

Wiki говорит нам, что SAP HANA (High Performance Analytic Appliance) — это in-memory СУБД, которая использует поколоночное хранение данных, разработанная и продаваемая SAP SE. Архитектура HANA обеспечивает как высокоскоростную обработку транзакций, так и работу со сложными аналитическими запросами.

Инновации в оборудовании (многоядерная архитектура центральных процессоров и 64-разрядное адресное пространство) позволили SAP разработать HANA.

Аналогично, инновации в программном обеспечении (постолбцовое хранение данных, улучшенные алгоритмы сжатия) способствовали ее эволюции.

HANA поддерживает комбинации интерактивной обработки транзакций (OLTP) и интерактивной аналитической обработки (OLAP).

Читайте также: SAP HANA. Взгляд изнутри

SAP NetWeaver 7.4, доступный с мая 2013 года, представляет собой версию, которая в настоящее время полностью оптимизирована для HANA. Он также облегчает разработку приложений для современных браузеров и мобильных устройств из-за встроенного инструментария разработки пользовательского интерфейса для HTML5 (адаптация SAP стандарта HTML5, известного как SAPUI5) и возможностей SAP NetWeaver Gateway.

Как уже было сказано выше в основе HANA лежит высокопроизводительная in-memory база данных. Она может управлять структурированными и неструктурированными данными, поддерживает как транзакционные, так и аналитические варианты использования.

Имеются стандартные интерфейсы баз данных, такие как JDBC и ODBC. Короче говоря, SAP HANA — это реляционная система управления БД (RBDMS), предлагающая интерфейс SQL и изоляцию транзакций.

Постолбцовое хранилище данных

Таблица базы данных концептуально представляет собой двумерную структуру данных, организованную в строках и столбцах. Компьютерная память, напротив, организована как линейная структура. Таблица может быть представлена ​​в порядке строк или столбцов. Строковая организация хранит таблицу в виде последовательности записей. И наоборот, в хранилище столбцов записи столбца хранятся в смежных ячейках памяти. Для запроса выбирается только соответствующий столбец, что уменьшает количество обрабатываемых данных.

С помощью столбчатых данных операции над отдельными столбцами, такие как поиск или агрегация, могут быть реализованы как циклы над массивом, хранящимся в смежных ячейках памяти. Такая операция имеет высокую пространственную локальность и может эффективно выполняться в кэше ЦП. С хранилищем, ориентированным на строки, такая же операция будет намного медленнее, поскольку данные одного и того же столбца распределяются по всей памяти, а CPU замедляется ошибками кеша. HANA поддерживает оба варианта, но особенно оптимизирована для хранения столбцов.

Постолбцовое хранилище данных обеспечивает высокоэффективное сжатие. Если столбец отсортирован,  смежные значения часто повторяются. HANA использует высокоэффективные методы сжатия, такие как кодирование длин серий, кластерное кодирование и словарный метод кодирования. При словарном кодировании столбцы хранятся в виде последовательностей битовых целых чисел. Это означает, что проверка на равенство может выполняться по целым числам; например, во время операций сканирования или объединения. Это намного быстрее, чем сравнение, например, строковых значений.

Постолбцовое хранилище во многих случаях устраняет необходимость в индексах. Хранение данных в столбцах функционально аналогично наличию встроенного индекса для каждого столбца. Скорость сканирования столбцов в in-memory хранилище и механизмы сжатия, особенно словарный метод сжатия, позволяют выполнять операции чтения с очень высокой производительностью. Во многих случаях необязательно иметь дополнительные индексы. Устранение дополнительных индексов уменьшает сложность и устраняет усилия по определению и поддержанию метаданных.

В HANA используется сжатие со словарем, которое реализуется для таблиц с постолбцовым хранением данных путем сортировки словаря по отдельными значениями столбца. Каждый столбец использует массив целочисленных значений, которые представляют позиции фактических значений в словаре.

Таблицы с постолбцовым хранением данных рекомендуется использовать тогда, когда в них содержится огромное количество данных, которые часто просматриваются или агрегируются, а также когда таблица содержит много столбцов, а типичные запросы имеют доступ только к нескольким из них.

Транспортный контейнер SAP HANA (HTC):

С помощью SAP NetWeaver 7.4 приложения, содержащие объекты разработки ABAP и HANA, теперь могут легко разрабатываться, обновляться, исправляться и расширяться. Как обычно делается по соображениям обеспечения качества, различные сущности ABAP и HANA должны переноситься через системный ландшафт; как правило, от системы разработки до тестирования, а затем до продуктивной системы. Здесь стоит рассказать о SAP HANA Transport Container (HTC).

HTC — это объект разработки ABAP. Он необходим для интеграции содержимого репозитория HANA в стандартную систему изменений и транспорта (CTS).

Начиная с AS ABAP 7.4, HTC легко интегрируется в транспортный органайзер AS ABAP и интегрирует содержимое хранилища HANA в CTS. Это обеспечивает эффективный процесс доставки приложений, построенных на ABAP (скажем, метода) и контента HANA (например, AMDP), или просто ABAP для приложений SAP HANA между системами SAP с помощью проверенного транспортного механизма ABAP.

ABAP в Eclipse

Инструменты разработки ABAP для SAP NetWeaver идеально сочетаются с технологией SAP HANA Studio и SAP in-memory, позволяя выполнять высокопроизводительную разработку приложений поверх SAP HANA. Они значительно увеличивает производительность разработчика ABAP благодаря богатому опыту и гибкости Eclipse, новым возможностям для реализации сложного исходного кода, ориентированного на задачи бизнеса и тестирование. Также, они позволяют кросс-платформенную разработку приложений, интегрируя средства разработки ABAP и другие в одну среду IDE на основе Eclipse.

Open и Native SQL

Open SQL позволяет нам получить доступ к таблицам баз данных, объявленных в ABAP Dictionary независимо от базы данных, которую использует система R/3.

Native SQL позволяет нам использовать SQL-запросы в программе ABAP. Это означает, что мы можем использовать таблицы базы данных, которые не используются в ABAP Dictionary, и, следовательно, интегрировать данные, которые не являются частью системы R/3.

Как правило, программа ABAP, содержащая SQL-запросы, специфичные для базы данных, не будет работать в разных системах баз данных. Если ваша программа будет использоваться на нескольких платформах базы данных, используйте только инструкции Open SQL.

Обратите внимание на то, что любой ABAP-код не будет демонстрировать резкое повышение производительности автоматически. Чтобы максимально использовать потенциал SAP HANA, наш пользовательский код должен соответствовать расширенным рекомендациям по производительности SQL.

ABAP Test Cockpit (ATC)

ATC может использоваться для проверки ABAP кода — поиска проблем и их исправления (если необходимо) перед переходом на HANA. Чтобы избежать проблем, проверка интерфейса ADBC ​​(ABAP Database Connectivity) в Code Inspector должна быть выполнена до перехода на SAP HANA. Монитор проверки (SRTCM) можно использовать для получения дополнительной информации во времени выполнения. Проверка PERFORMANCE_DB может использоваться для анализа возможности оптимизации производительности до перехода на HANA.

SQL Monitor (SQLM) можно использовать для захвата SQL-профиля системы ABAP. Данными SQL Monitor’а можно обменивать между двумя системами, создавая моментальный снимок данных, экспортируя его в файловую систему, а затем импортируя его в целевую систему. SQL-профиль бизнес-процессов в продуктивной системе может быть захвачен потому, что SQL Monitor вводит только минимальные издержки на производительность.

Рабочий список настройки производительности SQL (SWLT) позволяет сопоставить результаты анализа исходного кода ABAP с данными времени выполнения SQL. В отчете приведен список с потенциальными проблемами. Мы должны начать исследовать те, которые находятся наверху. Нам нужно установить, насколько мы хотим оптимизировать код. Работая с этими настройками проверьте, соответствуют ли исправления/оптимизации нашим определенным требованиям или определенным бизнес-требованиям.

Средство просмотра списка SAP со встроенным доступом к данным (ALV с IDA) основано на принципе выбора только тех данных, которые будут отображаться из базы данных, и над которыми будут выполнять вычисления, агрегация и группировка на уровне базы данных.

Сдвиг парадигмы кода в базу данных

Парадигма Code-to-Data помогает повысить производительность кода ABAP в котором интенсивно используются запросы данных. Это достигается тем, что возможности SAP HANA in-memory позволяют выполнять вычисления на уровне базы данных, что помогает избежать ненужного перемещения данных. Мы должны учитывать тот факт, что SAP HANA и AS ABAP используют системы разных типов, когда мы следуем парадигме Code-to-Data с использованием Native SQL. Производительность также может быть увеличена за счет использования новых функций в Open SQL с использованием AMDP и с использованием объектов представления, предоставляемых расширенными возможностями определения представлений.

Core Data Services (CDS) и AMDP (ABAP управляемые процедуры базы данных) артефакты ABAP могут быть созданы и поддерживаться с помощью средств разработки ABAP для SAP NetWeaver.

Core Data Services (CDS)

CDS — это механизм для переноса логики в базу данных. Мы передаем эту эффективную инновацию, чтобы поместить код и выполнить логику в самой базе данных. Итак, простыми словами, CDS помогает нам управлять нашей логикой в ​​базе данных.

Теперь давайте рассмотрим формальное определение и объяснения. Core Data Services — это SQL более высокого порядка, который освобождает разработчиков приложений от написания низкоуровневого SQL-кода автоматически генерируя требуемый код, а также формирует основу для унифицированных моделей данных в контексте SAP HANA.

Предполагается, что SAP HANA сможет потреблять различные источники данных на одном и том же семантическом уровне независимо от того, поставляются ли они программой ABAP или моделью SAP BusinessObjects. Основные сервисы данных включены как часть расширенных приложений приложений SAP HANA, сервер приложений, поставляемый с SAP NetWeaver 7.4 SPS 05 и SAP HANA с SPS 06.

CDS View собой набор языков и сервисов для определения и потребления семантически богатых моделей данных. Язык описания данных, язык управления данными и язык манипулирования данными включены в CDS. CDS можно использовать с помощью предварительного просмотра данных в инструментах разработки ABAP для SAP NetWeaver а также в качестве источника данных в объявлении FROM Open SQL запроса.

Условные выражения, такие как функции COALESCE и оператор CASE в списке проекций, могут использоваться в Core Data Services View (CDS). Поле из проекционного списка другого CDS View, используемого в предложении FROM и строковые константы, литеральные значения и функции агрегирования по полям таблиц ABAP Dictionary, используемых в предложении FROM, могут быть включены в проекционный список (CDS). Мы можем использовать статический метод use_features класса cl_abap_dbfeatures, чтобы проверить, могут ли Core Data Services View со скалярными входными параметрами использоваться в запросах Open SQL в системе. CDS теперь поддерживает LEFT OUTER JOIN и RIGHT OUTER JOIN. Целевой объект ассоциации является обязательным при определении ассоциации в CDS.

Опция «Map to Data source» в SAP NetWeaver Gateway Service Builder (транзакция SEGW) может использоваться для реализации потребления Core Data Services. Источник DDL (DDLS), в котором определено CDS View, включается в транспортный запрос, когда мы переносим Core Data Services (CDS). CDS View также могут быть расширены с помощью инструкции EXTEND VIEW программно.

Усовершенствования, включенные в CDS:

  • Ассоциации на концептуальном уровне, замена соединений с помощью простых выражений пути в запросах;
  • Аннотации для обогащения моделей данных дополнительными (предметными) метаданными;
  • Выражения, используемые для расчетов и запросов в модели данных.

По словам непрофессионала, аннотации и ассоциации — это расширения CDS для SQL.

Ассоциации в Core Data Services(CDS) View могут быть использованы в объявлении FROM, WHERE и HAVING и в списке проекций. Основной целью ассоциаций в Core Data Services является определение отношений между сущностями. Таблицы словаря, CDS View и Dictionary View могут использоваться в качестве источника данных в CDS View. Говоря простыми словами, в инструкции SELECT (Open SQL) можно указать таблицы словаря ABAP, CDS View, словарные представления.

При использовании Ассоциации в CDS используются выражения пути, JOIN создается в лежащей в основе базе данных.

Преимущества замены оператора JOIN Ассоциацией в представлении CDS состоят в том, что ассоциацию можно использовать с помощью простого выражения пути. При этом условия ON для объединения генерируются автоматически. Ассоциация также может быть раскрыта.

Аннотация «AbapCatalog.sqlViewName» является обязательной для определения CDS View. Аннотация AbapCatalog.Buffering применяется во всем CDS View. Другими словами, аннотации представляют собой метаданные, специфичные для домена. Символ @ (at) используется для маскировки аннотаций в CDS views.

Основным преимуществом использования CDS в SAP NetWeaver Application Server ABAP является то, что мы можем определить сложные модели данных, которые могут быть использованы в простой инструкции Open SQL SELECT, и мы можем использовать расширенную функциональность, чтобы перенести код в слой базы данных. Важно отметить, что скалярные входные параметры зависят от базы данных. Таким образом, если мы планируем использовать CDS View, используя объявление FROM Open SQL запроса со скалярным входным параметром, нам нужно иметь в виду, что запрос не может быть выполнен во всех сертифицированных SAP базах данных для зависимых от базы данных скалярных входных параметров.

Читайте также: HANA представления с разных углов.

Управление ABAP процедурами базы данных (AMDP)

ABAP процедуры базы данных — это новая функция AS ABAP, позволяющая разработчикам писать процедуры базы данных непосредственно в ABAP. AMDP можно рассматривать как функцию, сохраненную и выполняемую в базе данных. Язык реализации варьируется от одной базы данных к другой. В SAP HANA это SQL. Использование AMDP позволяет разработчикам создавать и выполнять эти процедуры базы данных в среде ABAP с использованием методов ABAP и типов данных ABAP.

Говоря простым языком, AMDP — это не что иное, как контейнер методов. Сама процедура развертывается и выполняется в базе данных HANA. Процедура управляемой базы данных ABAP следует принципу «сверху вниз». Чтобы реализовать метод AMDP нам необходимо реализовать (обязательно) интерфейс IF_AMDP_MARKER_HDB. Элементы языка ABAP LANGUAGE db_lang (db_lang = SQLSCRIPT …), FOR db (db = HDB …) и BY DATABASE PROCEDURE являются обязательными для реализации метода в качестве процедуры управляемой базы данных ABAP. AMDP также может улучшить производительность преобразования данных в процессе извлечения, преобразования и загрузки в BW. Мы можем использовать процедуру ABAP управляемой базы данных в вашем ABAP-коде, вызвав соответствующий метод класса ABAP. Управление исходными кодами с использованием транспортной инфраструктуры ABAP, статические синтаксические проверки кода базы данных и независимость базы данных — это преимущества использования AMDP.

AMDP имеет некоторые ограничения.

Параметры EXPPORT, IMPORT и CHANGED разрешены.

Методы с возвращаемыми (RETURNING) параметрами не могут быть реализованы как AMDP.

Параметры метода должны быть таблицами или скалярными типами.

Параметры метода должны передаваться по значению.

Подключение к базе данных ABAP (ADBC)

ABAP Database Connectivity (ADBC) — это API для собственного SQL-интерфейса AS ABAP, основанного на объектах ABAP. Методы ADBC ​​позволяют: отправлять специфичные SQL-команды в систему базы данных и обрабатывать результат; устанавливать и администрировать подключения к базе данных. Native SQL предоставляет исключительно статический доступ к интерфейсу Native SQL. ADBC ​​делает возможным объектно-ориентированный и динамический доступ.

API ADBC ​​использует классы CL_SQL_STATEMENT и CL_SQL_RESULT_SET. Нам нужно привязать ссылку на внутреннюю таблицу в качестве выходного параметра к экземпляру CL_SQL_RESULT_SET. Получить результат, используя метод next_package класса CL_SQL_RESULT_SET, для получения результирующего набора во внутреннюю таблицу после выполнения Native SQL-запроса. Далее, получить перечень информации можно используя соответствующий ADBC API метод.

Пожалуйста, следите за обновлениями о HANA. Я покажу вам, как получить бесплатный доступ к платформе SAP HANA Cloud. Да, это действительно бесплатно! Я уже проверил. Для этого я использовал Eclipse Studio. В следующих статьях я подробно расскажу Вам, как вы можете его легко настроить.

Спасибо большое за уделенное время!!

Подробнее о ABAP CDS можно почитать здесь: ABAP CDS (Core Data Services)

Серии статей о SAP HANA:

1. SAP HANA с космического уровня

2. SAP HANA. Взгляд изнутри

3. HANA представления с разных углов

4. ABAP для SAP HANA. Что следует помнить

Перечень будет обновляться…